Programmable USB Hub

by Capable Robot Components

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

$16,956 raised

of $10,000 goal

169% Funded! Order Below

Product Choices

$160

Programmable USB Hub PCB (unhoused)

The Programmable USB Hub PCBA, assembled but un-housed.


$200

Programmable USB Hub

Programmable USB Hub PCBA, with a custom metal enclosure, light pipes, and rubber feet.


$240

Programmable USB Hub Kit

Programmable USB Hub PCBA, with a custom metal enclosure, light pipes, and rubber feet. Also includes a power supply, Aux cable, I2C cable, and USB cable.


$12

Rubber Bumpers


$12

Mounting Flanges

Details

Recent Updates


As Featured In

Hackster News

"Another exciting board....capable of a myriad of applications"

Adafruit Industries

"In addition to being a 4-port USB 2 High-Speed hub, this programmable USB hub is also a CircuitPython based development board!"

MickMake

"A programmable USB hub? Cool. Hang on, CircuitPython, Sparkfun Qwiic, mikroBUS, 6 A power for all USB ports? I definitely need to get my hands on one of these."

Adafruit Industries

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

industriaembebidahoy

"Además de trabajar como tal, este hub USB programable también ha sido concebido para desempeñar labores de placa de desarrollo, y bridge I2C, GPIO y SPI."

CNXSoft - Embedded Systems News

"A feature rich and component rich USB hub that has a dev board built-in."

Geeky Gadgets

"Capable Robot Components has created a new programmable USB hub with per-port power and data disconnects + dev board + I2C, GPIO, SPI bridges and a rugged compact design."

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

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 mikroBUS header).
  • 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.

Blue: Connectors & IO Green: Functional areas of the board
1. Upstream USB A. 5V 6A Regulator
2. USB UART & GPIO B. Input Protection
3. 12 V / 24 v DC In C. Programmable Microcontroller
4. USB Hub I2C D. 1 of 5 USB Data Disconnects
5. MCU I2C E. USB Hub
6. MCU USB F. Downstream USB Power Protection & Switching
7. 4x Downstream USB G. RGB Status LEDs
8. mikroBUS Header

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.
  • Physical IO
    • mikroBUS header to add additional sensors and connectivity. Solder jumpers allow the UART and SPI pins to connect to either the USB hub or the MCU.
    • JST GH connector with UART and 2x GPIO, controlled by the USB hub.
    • 2x Sparkfun Qwiic connectors enable easy attachment of I2C sensors to the USB hub or to the internal MCU.
    • 5x RGB status LEDs to visualize port power draw
    • 5x RGB status LEDs to visualize port connection types

Data and Power LEDs showing Hub State.

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

  • White : High speed device detected
  • Green : Full speed device detected
  • Blue : Low speed device detected
  • Off : No downstream device detected
  • Orange : Port data lines internally disabled / disconnected

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.

Device Data LED Power LED
Port 1: JTAG Debugger White : High Speed Device 106 mA
Port 2: TinyFPGA BX Green : Full Speed Device 13 mA
Port 3: USB Mouse Blue : Low Speed Device 80 mA
Port 4: Phone Orange : Data Lines Disabled 492 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 I2C 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:

  • Power cycle a downstream port
  • Disconnect data lines to a downstream port
  • Change current limits of downstream ports
  • Change the behavior of the front panel RGB LEDs
  • Control external I2C devices

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.

  • The Firmware Repository holds the CircuitPython-based firmware which configures the main USB Hub chip upon boot, and runs the monitoring loop which controls the RGB LEDs on the Hub’s front panel. This repository is a great starting place to customize the automatic behavior of your USB Hub.
  • The Driver Repository holds a host-side library which allows communication and control of an attached Hub. The repository includes example Python scripts & programs which allow you to read & control Port Data State, Port Power, and other functions. The repository also includes a Bridge which allows unmodified CircuitPython code to run on the host computer and communicate with I2C devices attached to the 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-2X4 Moxa Uport 404 Digi HubPort 4C
Control API Python, Open Source C++ & Python via BrainStem API None None
Firmware CircuitPython, Open Source Closed Source None None
Price $220 $325 $223 $241
USB Monitoring & Control
Upstream Port Data Enable / Disconnect; Host Swapping & Sharing via FlexConnect Two Upstream, Switchable None None
Per-Port Control Data Enable / Disconnect Data Enable / Disconnect None None
Per-Port Monitoring Speed of Attached Device Device Presence None None
Boost Data Signal Yes Yes No No
Power Monitoring & Control
5 Volt Regulation 6 A 10 A 2 A 2 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.5A 500mA to 2.5A 500mA 500mA
Per-Port Current Monitoring 13.3 mA resolution 9.8 mA resolution None None
IO Expansion
Connectors Qwiic, mikroBUS, JST GH None None None
UART 1 0 0 0
I2C 1 via USB, 1 via MCU 0 0 0
GPIO 2 via USB, 4 via I2C 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 VDC 9 V to 24 VDC 12 to 40 VDC 5.5 to 30 VDC
Power Connector Molex MiniFit Jr DC Barrel Locking DC Barrel / Terminal Block Locking DC Barrel
Mounting Optional Side Flanges Optional DIN Rail Kit Optional DIN Rail and Wall Kits None
LEDs 10x RGB on front panel 18x on case top 9x on front panel 5x
Size 108 x 88 x 30 mm 86 x 97 x 28 mm 130 x 80 x 35 mm 66 x 76 x 25 mm

Manufacturing Plan

Programmable USB Hub printed circuit boards will be assembled in the USA by a contract manufacturer who’s been involved in prototype production. The aluminum enclosure and custom front & rear connector panels will be made in China by BOX Enclosures. We’re doing the final flashing, assembly, and testing of every unit here in Exeter, New Hampshire, USA.

Fulfillment & Logistics

All orders will be shipped using Crowd Supply’s fulfillment services, from the United States.

We want to make sure the Programmable USB Hub is available to everyone, but unfortunately shipping internationally from the US is expensive and complicated. Because of this, we must include an international shipping fee for backers outside the US.

For more information, you can refer to this useful guide to ordering, paying, and shipping.

Risks & Challenges

During the campaign, final rounds of prototype testing will be completed as well as any required design changes. A short run of production boards will be ordered to verify these changes prior to the full production order.

Currently, design changes to be made include:

  • Change the input power connector from a Molex MicroFit Jr to a MiniFit Jr. The MiniFit Jr can only accept 20 AWG and smaller wires, and low-cost AC to DC converters have 16 AWG wires. The MiniFit Jr fits in the existing enclosure and can be directly attached to the selected AC to DC converter.

This list will be updated with any other changes being made to the pre-production design.

Creating physical objects is always risky and challenging. For example, parts currently in stock may go out of stock before the production run. However, there are ways to mitigate production risk - like returning to proven and familiar PCB assembly houses.

We will provide updates explaining how we are addressing any delays of any kind. We know that many of you are interested in the manufacturing process, and that includes learning about any problems we might run into and how we solve them.


Credits

Capable Robot Components

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.


Chris Osterwood

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