A USB hub with per-port power and data disconnects + dev board + I²C, GPIO, and SPI bridges
Aug 09, 2019
There is one more week to go on the Programmable USB Hub campaign! That means there is only one more week to purchase your Hub before prices increase.
Pre Order Price
USB Hub PCBA (no housing)
USB Hub (housed)
USB Hub Kit
Behind the scenes, a lot of work has been occurring to get ready for FCC testing, the production build, and production testing.
New Hardware Revision
To support certification and production, the Programmable USB Hub has gone a minor design revision.
Revised USB Hub PCB
The main power connector has changed from a Molex MicroFit Jr to Molex MiniFit Jr; this connector supports 16 AWG wire standard on AC-DC supplies.
Footprints on the USB connectors were changed to reduce angular skew during soldering.
Test points for various internal voltage buses, control signals, and IO signals have been added to the bottom of the PCB to support a flashing & testing jig.
A switchable 10-ohm resistor was added to the MISO net. This was required because during chip initialization that pin is sensed to determine which downstream ports should be advertised to support USB Battery Charging. Unfortunately, there is no way to tell the USB4715 this information via a control register (like most other features of the chip). The resistor advertises that all ports are high power, and after the "configuration strapping" period the in-built MCU disconnects this resistor from the MISO net to allow the SPI bus to operate normally.
The 5v DC-DC regulator section was relaid out to support the new larger input connector and reduce the trace length between the 5v regulator and the downstream ports. I'm happy to announce that the trace length is now down to 40mm (from 100mm) and is also twice as wide -- so voltage loss along the trace will be much lower on this revision.
The auxiliary connector with UART and GPIO now has an ESD and EMI filter on the four signals.
One edge of the board has exposed copper which touches the metal enclosure and connects the chassis to ether the upstream USB cable shield, system ground, or both.
And on the software side of things:
The open-source USB Hub Driver was expanded to allow control & monitoring of multiple Hubs. Devices can be addressed via either enumeration order or serial number.
A 'power reset' command was added to the command-line tool, which toggles port power off & on after a configurable delay. Previously, two commands (off & on) would have had to be issued.
Firmware now supports the switchable 10-ohm resistor for Battery Change advertising (see above).
A repository has been created showing some CircuitPython Examples for the USB Hub. Examples are divided into firmware (e.g. which run on the in-built MCU) and host (e.g. the CircuitPython code runs on the upstream computer and communicates with devices attached to the I2C bus of the Hub).
Driver support for SPI reading and writing from the upstream host is in progress. A support ticket has been opened with Microchip to resolve a lingering issue.
Thanks to each and every one of you who has helped us get here! Without your support, the Programmable USB Hub would not have become a reality, and we are so grateful!