def init(self, scl, sda, frequency):
         self.deinit()
-        if board_id == "raspi_3" or board_id == "raspi_2":
-            from adafruit_blinka.microcontroller.raspi_23.i2c import I2C as _I2C
+        if board_id in ("raspi_3", "raspi_2", "beaglebone_black", "orangepipc"):
+            from adafruit_blinka.microcontroller.generic_linux.i2c import I2C as _I2C
         else:
             from machine import I2C as _I2C
         from microcontroller.pin import i2cPorts
 class SPI(Lockable):
     def __init__(self, clock, MOSI=None, MISO=None):
         self.deinit()
-        if board_id == "raspi_3" or board_id == "raspi_2":
-            from adafruit_blinka.microcontroller.raspi_23.spi import SPI as _SPI
+        if board_id in ("raspi_3", "raspi_2", "beaglebone_black", "orangepipc"):
+            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
         else:
             from machine import SPI as _SPI
         from microcontroller.pin import spiPorts
 
     def configure(self, baudrate=100000, polarity=0, phase=0, bits=8):
         if board_id == "raspi_3" or board_id == "raspi_2":
-            from adafruit_blinka.microcontroller.raspi_23.spi import SPI as _SPI
             from adafruit_blinka.microcontroller.raspi_23.pin import Pin
+            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
+        elif board_id == "beaglebone_black":
+            # reuse the raspberry pi class as both boards use Linux spidev
+            from adafruit_blinka.microcontroller.beaglebone_black.pin import Pin
+            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
+        elif board_id == "orangepipc":
+            from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin
+            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
         else:
             from machine import SPI as _SPI
             from machine import Pin