From 68fbb3943aa39f5b2743cd8e01fa887a3171eb8f Mon Sep 17 00:00:00 2001 From: bgigous <4702168+bgigous@users.noreply.github.com> Date: Wed, 11 Dec 2024 19:23:10 -0700 Subject: [PATCH 1/3] Find EEPROM device more reliably on BeagleBones - Use glob builtin to find device on i2c address 0x50 matching `0-0050*` instead of checking paths one at a time --- adafruit_platformdetect/board.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/adafruit_platformdetect/board.py b/adafruit_platformdetect/board.py index 745eca51..e69f682b 100644 --- a/adafruit_platformdetect/board.py +++ b/adafruit_platformdetect/board.py @@ -20,6 +20,7 @@ """ +import glob import os import re @@ -321,20 +322,23 @@ def _beaglebone_id(self) -> Optional[str]: if "beaglev-starlight" in board_value: return boards.BEAGLEV_STARLIGHT + # find device alias at i2c address 0x50 (0-00500, 0-00501, etc) + nvmem_devices = glob.glob('/sys/bus/nvmem/devices/0-0050*') + # do not expect there to be more than one eeprom + if len(nvmem_devices) > 1: + return None + + eeprom_dir = nvmem_devices[0] try: - with open("/sys/bus/nvmem/devices/0-00500/nvmem", "rb") as eeprom: + with open(f"{eeprom_dir}/nvmem", "rb") as eeprom: eeprom_bytes = eeprom.read(16) except FileNotFoundError: try: - with open("/sys/bus/nvmem/devices/0-00501/nvmem", "rb") as eeprom: + # Special Case for AI64 + with open("/sys/bus/nvmem/devices/2-00500/nvmem", "rb") as eeprom: eeprom_bytes = eeprom.read(16) except FileNotFoundError: - try: - # Special Case for AI64 - with open("/sys/bus/nvmem/devices/2-00500/nvmem", "rb") as eeprom: - eeprom_bytes = eeprom.read(16) - except FileNotFoundError: - return None + return None if eeprom_bytes[:4] != b"\xaaU3\xee": return None From acaf6e68f4f1fcb17462999de48dc2b26e48a40b Mon Sep 17 00:00:00 2001 From: bgigous <4702168+bgigous@users.noreply.github.com> Date: Wed, 11 Dec 2024 19:34:20 -0700 Subject: [PATCH 2/3] BeagleBone: Fix logical error --- adafruit_platformdetect/board.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adafruit_platformdetect/board.py b/adafruit_platformdetect/board.py index e69f682b..748a3cb7 100644 --- a/adafruit_platformdetect/board.py +++ b/adafruit_platformdetect/board.py @@ -324,8 +324,8 @@ def _beaglebone_id(self) -> Optional[str]: # find device alias at i2c address 0x50 (0-00500, 0-00501, etc) nvmem_devices = glob.glob('/sys/bus/nvmem/devices/0-0050*') - # do not expect there to be more than one eeprom - if len(nvmem_devices) > 1: + # do not expect there to be anything but one eeprom + if len(nvmem_devices) != 1: return None eeprom_dir = nvmem_devices[0] From af15c7b84fe34163e7c37b148f74cef94548490d Mon Sep 17 00:00:00 2001 From: Melissa LeBlanc-Williams Date: Wed, 2 Jul 2025 10:58:21 -0700 Subject: [PATCH 3/3] Ran pre-commit --- adafruit_platformdetect/board.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_platformdetect/board.py b/adafruit_platformdetect/board.py index 4020ee2c..d2de03b6 100644 --- a/adafruit_platformdetect/board.py +++ b/adafruit_platformdetect/board.py @@ -335,7 +335,7 @@ def _beaglebone_id(self) -> Optional[str]: return boards.BEAGLEV_STARLIGHT # find device alias at i2c address 0x50 (0-00500, 0-00501, etc) - nvmem_devices = glob.glob('/sys/bus/nvmem/devices/0-0050*') + nvmem_devices = glob.glob("/sys/bus/nvmem/devices/0-0050*") # do not expect there to be anything but one eeprom if len(nvmem_devices) != 1: return None