diff options
author | Walter Bender <walter.bender@gmail.com> | 2013-02-15 13:06:34 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2013-02-15 13:06:34 (GMT) |
commit | 022db68254762057dcf5b7aa8f4fe32d7791e558 (patch) | |
tree | c2c5e4ff10775ecb8062c3ac23fcade50f56c47e | |
parent | c459dc92338caa55a8515460e42589f00377b0f0 (diff) |
more robust hw detection
-rw-r--r-- | utils.py | 34 |
1 files changed, 20 insertions, 14 deletions
@@ -32,25 +32,31 @@ def play_audio_from_file(file_path): def get_hardware(): - """ Determine whether we are using XO 1.0, 1.5, or "unknown" hardware """ - product = _get_dmi('product_name') - if product is None: - if os.path.exists('/sys/devices/platform/lis3lv02d/position'): - return XO175 # FIXME: temporary check for XO 1.75 - elif os.path.exists('/etc/olpc-release') or \ - os.path.exists('/sys/power/olpc-pm'): - return XO1 - else: - return UNKNOWN - if product != 'XO': - return UNKNOWN + ''' Determine whether we are using XO 1.0, 1.5, ... or 'unknown' + hardware ''' version = _get_dmi('product_version') + # product = _get_dmi('product_name') + if version is None: + hwinfo_path = '/bin/olpc-hwinfo' + if os.path.exists(hwinfo_path) and os.access(hwinfo_path, os.X_OK): + model = check_output([hwinfo_path, 'model'], 'unknown hardware') + version = model.strip() if version == '1': return XO1 elif version == '1.5': - return XO15 - else: + return XO15 + elif version == '1.75': return XO175 + elif version == '4': + return XO4 + else: + # Some systems (e.g. ARM) don't have dmi info + if os.path.exists('/sys/devices/platform/lis3lv02d/position'): + return XO175 + elif os.path.exists('/etc/olpc-release'): + return XO1 + else: + return UNKNOWN def _get_dmi(node): |