diff --git a/adafruit_platformdetect/board.py b/adafruit_platformdetect/board.py index 745eca51..748a3cb7 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 anything but 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