@@ -65,7 +65,7 @@ def id(self):
6565
6666 try :
6767 return os .environ ["BLINKA_FORCEBOARD" ]
68- except KeyError : # no forced board, continue with testing!
68+ except ( AttributeError , KeyError ) : # no forced board, continue with testing!
6969 pass
7070
7171 chip_id = self .detector .chip .id
@@ -80,7 +80,7 @@ def id(self):
8080 elif chip_id == chips .GENERIC_X86 :
8181 board_id = boards .GENERIC_LINUX_PC
8282 elif chip_id == chips .SUN8I :
83- board_id = self ._armbian_id ()
83+ board_id = self ._armbian_id () or self . _allwinner_variants_id ()
8484 elif chip_id == chips .SAMA5 :
8585 board_id = self ._sama5_id ()
8686 elif chip_id == chips .IMX8MX :
@@ -93,6 +93,8 @@ def id(self):
9393 board_id = boards .FEATHER_M0_EXPRESS
9494 elif chip_id == chips .STM32F405 :
9595 board_id = boards .PYBOARD
96+ elif chip_id == chips .RP2040 :
97+ board_id = boards .RASPBERRY_PI_PICO
9698 elif chip_id == chips .S805 :
9799 board_id = boards .ODROID_C1
98100 elif chip_id == chips .S905 :
@@ -134,9 +136,9 @@ def id(self):
134136 elif chip_id == chips .H6 :
135137 board_id = self ._pine64_id ()
136138 elif chip_id == chips .H5 :
137- board_id = self ._armbian_id ()
139+ board_id = self ._armbian_id () or self . _allwinner_variants_id ()
138140 elif chip_id == chips .H616 :
139- board_id = self ._armbian_id ()
141+ board_id = self ._armbian_id () or self . _allwinner_variants_id ()
140142 elif chip_id == chips .A33 :
141143 board_id = self ._clockwork_pi_id ()
142144 elif chip_id == chips .RK3308 :
@@ -432,6 +434,27 @@ def _asus_tinker_board_id(self):
432434 board = boards ._ASUS_TINKER_BOARD_IDS
433435 return board
434436
437+ def _allwinner_variants_id (self ):
438+ """Try to detect the id of allwinner based board. (orangepi, nanopi)"""
439+ board_value = self .detector .get_device_model ()
440+ board = None
441+ if not board_value :
442+ return board
443+ board_value = board_value .lower ()
444+ chip_id = self .detector .chip .id
445+ if "nanopi" in board_value :
446+ if "neo" in board_value and "SUN8I" in chip_id :
447+ board = boards .NANOPI_NEO_AIR
448+ # TODO: Add other specifc board contexts here
449+ elif "orange pi" in board_value :
450+ if "zero" in board_value :
451+ if "H5" in chip_id :
452+ board = boards .ORANGE_PI_ZERO_PLUS_2H5
453+ elif "H616" in chip_id :
454+ board = boards .ORANGE_PI_ZERO_2
455+ # TODO: Add other specifc board contexts here
456+ return board
457+
435458 @property
436459 def any_nanopi (self ):
437460 """Check whether the current board is any defined Nano Pi."""
0 commit comments