diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b51d15dd..4a7307d91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ Features: * TerminalSize, TerminalTheme * Detect more ARM microarchitectures (CPU, Linux) * Detect the number of online cores (CPU, FreeBSD) +* Support board name detection for Asahi Linux (Board, Linux) Bugfixes: * Fix tests building when system yyjson is used (#1244) diff --git a/src/detection/board/board_linux.c b/src/detection/board/board_linux.c index 380db6c14..0165df2e1 100644 --- a/src/detection/board/board_linux.c +++ b/src/detection/board/board_linux.c @@ -6,9 +6,21 @@ const char* ffDetectBoard(FFBoardResult* board) { - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_name", "/sys/class/dmi/id/board_name", &board->name); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_serial", "/sys/class/dmi/id/board_serial", &board->serial); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_vendor", "/sys/class/dmi/id/board_vendor", &board->vendor); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_version", "/sys/class/dmi/id/board_version", &board->version); + if (ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_name", "/sys/class/dmi/id/board_name", &board->name)) + { + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_serial", "/sys/class/dmi/id/board_serial", &board->serial); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_vendor", "/sys/class/dmi/id/board_vendor", &board->vendor); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_version", "/sys/class/dmi/id/board_version", &board->version); + } + else if (ffReadFileBuffer("/proc/device-tree/compatible", &board->vendor)) + { + // use model name as board name + uint32_t comma = ffStrbufFirstIndexC(&board->vendor, ','); + if (comma < board->vendor.length) + { + ffStrbufSetS(&board->name, board->vendor.chars + comma + 1); + ffStrbufSubstrBefore(&board->vendor, comma); + } + } return NULL; }