Summary of PROGRAMMABLE USB HUB HAS I2C, GPIO AND SPI
This article describes a versatile, programmable USB 2.0 hub that doubles as a CircuitPython development board and an I2C, GPIO, SPI, and UART bridge. Housed in aluminum, it features four downstream ports with individual power monitoring (13 mA resolution) and control, plus software-controlled data line switching for device emulation. It includes a robust enclosure, RGB status LEDs, and open-source drivers for flexible embedded testing.
Parts used in the Programmable USB Hub:
- 4-Port USB 2 High-Speed Hub
- CircuitPython based development board
- Sparkfun Qwiic connectors (for I2C)
- mikroBUS header (for SPI and GPIO)
- USB to TTL Serial adapter
- Robust extruded aluminum enclosure
- Internally mounted LED light pipes
- 10 RGB LEDs
- Upstream USB connection port
- Locking Molex connector (for input power)
- Onboard regulator (supports 12 V to 24 V input)
A USB hub that’s also a dev board and an I2C, GPIO, and SPI bridge
In Addition To Being A 4-Port USB 2 High-Speed Hub, This Programmable USB Hub Is Also:

- A CircuitPython based development board.
- A bridge between your computer and I2C (via Sparkfun Qwiic connectors), GPIO, and SPI (via its mikroBUSheader).
- A power supply, providing 6 A of 5 V power to downstream devices and 13 mA resolution monitoring (per-port). Port power is individually limitable and switchable.
- A USB to TTL Serial adapter.
- A flexible embedded electronics test and development tool. USB data pairs are individually switchable, allowing you to emulate device removal and insertion via software.
- Mountable.
- Functionally flexible. Open source python drivers on the upstream host and Python firmware on the internal MCU allow the behavior of this USB hub to be easily changed to suit your application and environment.
The Capable Robot Programmable USB hub is housed in a robust extruded aluminum enclosure.
Internally mounted LED light pipes direct status information from 10 RGB LEDs to the front panel for easy observation of hub state.
The rear of the enclosure exposes the upstream USB connection and a USB port to re-program and communicate with the internal MCU. Also exposed are two I2C buses (via Sparkfun Qwiic connectors), the Programmable USB hub’s UART, and 2x GPIO. Input power is provided to the hub by a locking Molex connector.
Features And Specifications
- USB2 High-Speed Hub
- 4x USB2 High Speed (480 mbps) downstream ports
- 1x USB2 High Speed (480 mbps) upstream port
- 5th endpoint on USB hub exposes I2C, SPI, UART, and 2x GPIO
- Data lines to each USB port can be disconnected via software commands. This allows errant USB devices to be “unplugged” virtually and re-enumerated.
- USB digital signals can be boosted to help drive long cables.
- Power Monitoring & Control
- 5 V power on each downstream port can be individually turned on and off
- Monitor the power consumed by each port at up to 200 Hz at a resolution of 13 mA
- Adjustable (per-port) current limits between 0.5 A and 2.6 A
- Onboard regulator supports 12 V to 24 V power input and generates 6 A of 5 V power for downstream USB devices; both voltages can be monitored by the internal MCU. No power is drawn from the upstream USB port.
- Input power is protected from over-voltage events and reverse-polarity connection.
Read more: PROGRAMMABLE USB HUB HAS I2C, GPIO AND SPI
-
What functions does this device perform besides being a USB hub?
It acts as a CircuitPython development board, an I2C/GPIO/SPI bridge, a power supply, and a USB to TTL Serial adapter. -
Can the power on each USB port be controlled individually?
Yes, 5 V power on each downstream port can be turned on or off individually with adjustable current limits. -
How is power consumption monitored on the ports?
The hub monitors power consumed by each port at up to 200 Hz with a resolution of 13 mA. -
Is it possible to emulate device removal via software?
Yes, USB data pairs are individually switchable, allowing devices to be virtually unplugged and re-enumerated. -
What input voltage range does the onboard regulator support?
The onboard regulator supports 12 V to 24 V power input. -
How is status information displayed on the device?
Internally mounted LED light pipes direct status information from 10 RGB LEDs to the front panel. -
Does the device draw power from the upstream USB port?
No, no power is drawn from the upstream USB port; it uses the external locking Molex connector.
