--- tpfand/settings.py 2009-05-16 02:38:29.000000000 +0200 +++ tpfand/settings.py 2011-05-01 15:38:06.521993083 +0200 @@ -21,6 +21,7 @@ import sys, os, os.path import dbus, dbus.service, dbus.mainloop.glib, dbus.glib import gobject +import dmidecode from tpfand import build @@ -151,27 +152,28 @@ return files, profiles, id_match def read_model_info(self): - """reads model info from HAL""" + """reads model info using dmidecode module""" try: - bus = dbus.SystemBus() - computer_obj = bus.get_object('org.freedesktop.Hal', '/org/freedesktop/Hal/devices/computer') - computer = dbus.Interface(computer_obj, 'org.freedesktop.Hal.Device') - - product_id = computer.GetProperty('system.hardware.vendor') + "_" + computer.GetProperty('system.hardware.product') + current_system = dmidecode.system() + current_bios = dmidecode.bios() + hw_product = current_system['0x0001']['data']['Product Name'] + hw_vendor = current_system['0x0001']['data']['Manufacturer'] + hw_version = current_bios['0x0000']['data']['Version'] + product_id = hw_vendor + "_" + hw_product self.product_id = product_id.lower() - product_name = computer.GetProperty('system.hardware.vendor') + "_" + computer.GetProperty('system.hardware.version') + product_name = hw_vendor.lower() + "_" + hw_version.lower() self.product_name = product_name.lower().replace('/', '-').replace(' ', '_') - self.product_pretty_vendor = computer.GetProperty('system.hardware.vendor') - self.product_pretty_name = computer.GetProperty('system.hardware.version') - self.product_pretty_id = computer.GetProperty('system.hardware.product') + self.product_pretty_vendor = hw_vendor + self.product_pretty_name = hw_version + self.product_pretty_id = hw_product except: - print "Warning: unable to get your system model from HAL." - self.product_id = None - self.product_name = None - self.product_pretty_vendor = None - self.product_pretty_name = None - self.product_pretty_id = None + print "Warning: unable to get your system model from dmidecode" + self.product_id = '' + self.product_name = '' + self.product_pretty_vendor = '' + self.product_pretty_name = '' + self.product_pretty_id = '' @dbus.service.method("org.thinkpad.fancontrol.Settings", in_signature='', out_signature='a{is}') def get_sensor_names(self):