Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter 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)
commit022db68254762057dcf5b7aa8f4fe32d7791e558 (patch)
treec2c5e4ff10775ecb8062c3ac23fcade50f56c47e
parentc459dc92338caa55a8515460e42589f00377b0f0 (diff)
more robust hw detection
-rw-r--r--utils.py34
1 files changed, 20 insertions, 14 deletions
diff --git a/utils.py b/utils.py
index fc45b41..9a7db7a 100644
--- a/utils.py
+++ b/utils.py
@@ -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):