Protocol Interfaces
PC Peripherals

Programmable USB Hub

A USB hub with per-port power and data disconnects + dev board + I²C, GPIO, and SPI bridges

$35,816 raised

of $10,000 goal

358% Funded! Order Below

Limited items in stock. Order below.

$12 - $275

View Purchasing Options

Recent Updates

You'll be notified about news and stock updates for this project.

In addition to being a 4-port USB 2 High-Speed hub, this Programmable USB hub is also:

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 I²C 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.

Blue: Connectors & IOGreen: Functional areas of the board
1. Upstream USBA. 5V 6A Regulator
2. USB UART & GPIOB. Input Protection
3. 12 V / 24 v DC InC. Programmable Microcontroller
4. MCU I²CD. 1 of 5 USB Data Disconnects
5. USB Hub I²CE. USB Hub
6. MCU USBF. Downstream USB Power Protection & Switching
7. 4x Downstream USBG. RGB Status LEDs
8. mikroBUS Header

Features and Specifications

Data and Power LEDs showing Hub State.

With the default firmware behavior, the Data LEDs show per-port data state with the following meaning:

Likewise, the Power LEDs show per-port power draw in blue, with higher port power displayed as a brighter blue. Ports which have power turned off are lit orange and any over-current condition is shown by lighting the LED red.

DeviceData LEDPower LED
Port 1: JTAG DebuggerWhite : High Speed Device106 mA
Port 2: TinyFPGA BXGreen : Full Speed Device13 mA
Port 3: USB MouseBlue : Low Speed Device80 mA
Port 4: PhoneOrange : Data Lines Disabled492 mA

The CircuitPython firmware is easy to modify to change how these RGB LEDs display Hub state.

Control and Monitor with Open Source Python Drivers

The Programmable USB Hub is proudly open source. You can use MIT-licensed Python drivers to control and monitor your USB Hub the way you want to. The Hub can be easily integrated into hardware-in-the-loop (HITL) test systems and its’ in-built IO expansion allows the Hub itself to control or stimulate the Device Under Test (DUT). You can also automate testing of embedded USB devices - simulating USB unplug events and unexpected loss of USB power. Use the upstream USB port or the MCU USB port to control and monitor the USB hub.

Runs Adafruit CircuitPython

An ATSAMD51 microcontroller configures the USB Hub IC and is available for you to reprogram to change the behavior of your hub. The microcontroller ships with open source CircuitPython firmware, which is updatable over the MCU USB connector. No drivers or reflashing hardware is needed — Python firmware shows up as files on a small flash hard drive when connected to your computer and code can be immediately edited.

Physically and Logically Expandable

USB Hub controlling and I2C OLED Display from the upstream host.

Here, CircuitPython software running on the upstream Mac OS Host (not the internal MCU) is controlling this OLED display, which is attached to the Hub via the rear Qwiic I²C port. The Driver Repository includes a Bridge, allowing unmodified CircuitPython libraries to run on Mac OS, Linux, & Windows and communicate with devices attached to the Hub.

Alternatively, the MCU’s CircuitPython firmware can be modified to communicate with external sensors or devices to create automatic behaviors which do not require host driver control.

IMU sensor installed into MikroBUS.

Here, an IMU board has been installed into the mikroBUS port and the built-in CircuitPython firmware changed to detect and respond to tap events.

How the Hub responds to these events is up to you, instead of displaying text on the OLED screen, the hub could:

Robust Design

The Programmable USB Hub is designed to be durable and robust. The OEM version (board only) has corner mounting holes for easy integration into a custom enclosure. The Micro-USB connectors are reinforced, and the IO is protected from ESD strikes (exact specification TBD).

The locking input power connector features reverse polarity protection and over-voltage protection. The extruded aluminum enclosure for the Hub can be fitted with optional rubber bumper end caps or optional flange mounts.

USB Hub with optional Rubber Bumpers (left) & Mounting Flanges (right).

Support & Documentation

Currently, there are two GitHub repositories which have relevant software and documentation for the USB Hub.

Please open a GitHub issue if you have a suggestion for the product or run into any problems using it, or use the “Ask a Question” link below.

If you have a question about ordering, paying, or shipping, please refer to The Crowd Supply Guide.

Comparisons

Capable Robot: Programmable Hub Acroname: S77-USBHUB-2X4Moxa Uport 404Digi HubPort 4C
Control API Python, Open SourceC++ & Python via BrainStem APINoneNone
Firmware CircuitPython, Open Source Closed Source NoneNone
USB Monitoring & Control
Upstream Port Data Enable / Disconnect; Host Swapping & Sharing via FlexConnect Two Upstream, SwitchableNone None
Per-Port Control Data Enable / Disconnect Data Enable / Disconnect None None
Per-Port Monitoring Speed of Attached Device Device PresenceNone None
Boost Data Signal Yes Yes No No
Power Monitoring & Control
5 Volt Regulation 6 A10 A2 A2 A
5 Volt Voltage Monitoring 1.6 mV 1.2 mV None None
Supply Voltage Monitoring 9.5 mV 8 mV None None
Per-Port Power Control Yes Yes None None
Per-Port Current Limit 500mA to 2.5A500mA to 2.5A500mA500mA
Per-Port Current Monitoring 13.3 mA resolution 9.8 mA resolution None None
IO Expansion
ConnectorsQwiic, mikroBUS, JST GH None None None
UART1 0 0 0
I²C 1 via USB, 1 via MCU 0 0 0
GPIO 2 via USB, 4 via I²C Expander 0 0 0
SPI 1 (USB or MCU Master) 0 0 0
ADC 1 via MCU 0 0 0
Physical
Input Power 9 V to 25 VDC9 V to 24 VDC12 to 40 VDC5.5 to 30 VDC
Power Connector Molex MiniFit JrDC Barrel Locking DC Barrel / Terminal BlockLocking DC Barrel
Mounting Optional Side FlangesOptional DIN Rail KitOptional DIN Rail and Wall KitsNone
LEDs 10x RGB on front panel 18x on case top9x on front panel5x
Size 108 x 88 x 30 mm86 x 97 x 28 mm130 x 80 x 35 mm66 x 76 x 25 mm

Programmable USB Hub is part of the Microchip Get Launched design competition!

In the Press

Adafruit Industries

"The programmer, the hacker's USB hub."

Electronics-Lab.com

"A USB hub that’s also a dev board and an I2C, GPIO, and SPI bridge."


Ask a Question

Produced by Capable Robot Components in Exeter, NH .

Sold and shipped by Crowd Supply.

Programmable USB Hub

Fully assembled Programmable USB Hub PCBA in a custom metal enclosure with light pipes and rubber feet.

$225 $8 US Shipping / $18 Worldwide

Programmable USB Hub Kit

Fully assembled Programmable USB Hub PCBA in a custom metal enclosure with light pipes and rubber feet. Also includes a power supply, Aux cable, I²C cable, and USB cable.

$275 $8 US Shipping / $18 Worldwide

Rubber Bumpers

$12 $8 US Shipping / $18 Worldwide

Mounting Flanges

$12 $8 US Shipping / $18 Worldwide

About the Team

Capable Robot Components

Exeter, NH  ·  capablerobot.com

Capable Robot Components enables rapid development of autonomous robots by providing technological building blocks to system integrators. Right now, integrators have to develop things they would rather purchase because the right robot-first products don't currently exist. CRC provides proven products which are domain-agnostic, but configurable and adaptable to the integrator's market needs. This allows autonomous system developers to spend more time and effort on domain-specific engineering and testing.

See Also

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects