From fa5a990bee7e9d43ce30afd5eeb1e616485f34f2 Mon Sep 17 00:00:00 2001 From: Piclaw Date: Wed, 22 Apr 2026 14:02:01 -0700 Subject: [PATCH] Fix Orange Pi detection on non-Armbian systems (Debian) Add _orange_pi_id() to H616 and H6 chip detection paths so that Orange Pi boards are detected via device-tree model strings on non-Armbian OS distributions (e.g. Debian). Expand _orange_pi_id() to handle Orange Pi Zero 2, Zero 3, Zero 2W (with space variant), and 3 LTS model strings from /proc/device-tree/model. Fixes #285 --- adafruit_platformdetect/board.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/adafruit_platformdetect/board.py b/adafruit_platformdetect/board.py index c78da0c..0010bf5 100644 --- a/adafruit_platformdetect/board.py +++ b/adafruit_platformdetect/board.py @@ -157,7 +157,10 @@ def id(self) -> Optional[str]: board_id = self._pine64_id() elif chip_id == chips.H6: board_id = ( - self._pine64_id() or self._armbian_id() or self._repka_variants_id() + self._pine64_id() + or self._armbian_id() + or self._orange_pi_id() + or self._repka_variants_id() ) elif chip_id == chips.H5: board_id = ( @@ -174,7 +177,11 @@ def id(self) -> Optional[str]: or self._orange_pi_id() ) elif chip_id == chips.H616: - board_id = self._armbian_id() or self._allwinner_variants_id() + board_id = ( + self._armbian_id() + or self._allwinner_variants_id() + or self._orange_pi_id() + ) elif chip_id == chips.A33: board_id = self._clockwork_pi_id() elif chip_id == chips.K1: @@ -569,8 +576,14 @@ def _orange_pi_id(self) -> Optional[str]: return boards.ORANGE_PI_5 if "Orange Pi 3B" in board_value: return boards.ORANGE_PI_3B - if "OrangePi Zero 2W" in board_value: + if "OrangePi Zero 2W" in board_value or "Orange Pi Zero 2W" in board_value: return boards.ORANGE_PI_ZERO_2W + if "OrangePi Zero2" in board_value or "Orange Pi Zero 2" in board_value: + return boards.ORANGE_PI_ZERO_2 + if "OrangePi Zero3" in board_value or "Orange Pi Zero 3" in board_value: + return boards.ORANGE_PI_ZERO_3 + if "Orange Pi 3 LTS" in board_value or "OrangePi 3 LTS" in board_value: + return boards.ORANGE_PI_3_LTS return None # pylint: enable=too-many-return-statements