Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Cameron <quozl@laptop.org>2014-09-22 01:35:13 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2014-09-24 11:45:04 (GMT)
commitba891758a26816a1adfcd30b1f804bdf6bc491e3 (patch)
treef051f225099960f42e22b49afcec91da85829bc8
parent6daadb2460dac5dcc2e16e11f39b89ce898e1f8b (diff)
logcollect: collect firmware version not BV
Log collections showed wrong firmware version. Cause was use of the BV tag instead of openprom/model. The BV tag is the base version of firmware used in manufacturing. openprom/model is the current version of firmware. Also separated null trimming into a separate method.
-rw-r--r--logcollect.py36
1 files changed, 29 insertions, 7 deletions
diff --git a/logcollect.py b/logcollect.py
index 5d6e683..10c57b1 100644
--- a/logcollect.py
+++ b/logcollect.py
@@ -113,6 +113,11 @@ class MachineProperties:
if line.find('MemFree:') > -1:
return line[8:].strip()
+ def _trim_null(self, v):
+ if v != '' and ord(v[len(v)-1]) == 0:
+ v = v[:len(v)-1]
+ return v
+
def _mfg_data(self, item):
"""Return mfg data item from mfg-data directory"""
@@ -124,13 +129,9 @@ class MachineProperties:
if mfg_path == None:
return ''
- v = self.__read_file(mfg_path)
- # Remove trailing 0 character, if any:
- if v != '' and ord(v[len(v)-1]) == 0:
- v = v[:len(v)-1]
-
+ v = self._trim_null(self.__read_file(mfg_path))
return v
-
+
def laptop_serial_number(self):
return self._mfg_data('SN')
@@ -158,7 +159,28 @@ class MachineProperties:
return self._mfg_data('WM')
def laptop_bios_version(self):
- return self._mfg_data('BV')
+ try:
+ d = open('/proc/device-tree/openprom/model', 'r').read()
+ v = self._trim_null(d)
+ return v
+ except:
+ pass
+
+ try:
+ d = open('/ofw/openprom/model', 'r').read()
+ v = self._trim_null(d)
+ return v
+ except:
+ pass
+
+ try:
+ d = open('/sys/class/dmi/id/bios_version', 'r').read()
+ v = self._trim_null(d)
+ return v
+ except:
+ pass
+
+ return ''
def laptop_country(self):
return self._mfg_data('LA')