Would anyone be interested in a breadboard-friendly USB hub?

Status
Not open for further replies.

MuShoo

Well-known member
Apologies if this is the wrong place to post something like this!

Along the way towards making a device that uses two customized Teensy processor layouts, I realized I needed an integrated USB hub (mainly for firmware updates, so each Teensy needs to be a separate device). Annoyingly, I couldn't find any breadboard friendly USB hubs to prototype with - I ended up doing a series of prototype boards through Oshpark instead. The last one was an integrated USB hub, one of the Teensy processor setups, and a TFT screen - all of which work great.

It got me thinking though, maybe others would benefit from a breadboard-friendly USB hub board. Something with one upstream port, and 2-4 downstream ports. Each port would have both a USB connector (through-hole, not SMD), as well as breadboard pins for the four USB pins. And maybe a companion 'board' which is just a USB cable broken out to breadboard spacing, for plugging into a Teensy 3.0/3.1.

Are there any features that are 'must have' for a board like this? My initial instinct is to keep it simple - no LEDs, no user definable settings like vendor/ID code, etc. Much of that kind of stuff gets complicated quickly with the chip I'm using (a Cypress H2VXL-TQFP), and would just make the board balloon in size.

Is this something anyone would be interested in?
 
So, you're going to build a USB hub including it's own firmware?
Why aren't you using a of-the-shelf hub-controller like the Microchip USB2412? This way, only a PCB would be neccessary to made.

Just saying ;)
 
No, I wouldn't be building my own firmware or anything for it! The Cypress chip does everything necessary. It's actually surprisingly easy to use (though it requires a number of components to be on the board with it). I'd mostly just be making and designing the PCB - wouldn't need to touch the software. The chip is capable of reading from an I2C *or* an SPI EEPROM for custom vendor/device IDs, but if you don't include that, it just defaults to using the Cypress vendor/device IDs. For my board, I'd toyed with writing some Teensy code that would respond to the hub chip like an EEPROM would (the memory layout for their "custom-ID eeprom" is well documented) but didn't find it necessary.

Like I'd said, I've already got a board with this chip on it working. I didn't have to write any kind of firmware for it. This would really just be a PCB with some SMD components pre-populated, and a few through hole components for the end user to assemble.
 
Hmmm, for microprocessor work, having the ability to auto-switch between inputs is a useful feature, such as with the Pololu FPF1320: http://www.pololu.com/product/2594

Each port should have an on/off toggle switch to cut power without unplugging things.

I keep a Sparkfun Cerberus https://www.sparkfun.com/products/12016 by each computer, but I wish it had 4/5 output ports (with a standard USB male/female port), to make it easy to switch between different microprocessors.

It should have an option to give 2A (possibly 1A and 500mA) of power without having to wire up resistors on D+/D- lines so we can just get the maximum power for projects. Perhaps a voltage regulator on each port to tweak the voltage.
 
If you make this, I hope you'll consider per-port power switching. Few, if any, consumer oriented USB hubs have this feature, probably because it involves adding extra P-channel mosfet transistors for each downstream port (many have the feature in the chip, but not the transistors needed to actually switch the power on/off).

Per-port power control would be really useful. ;)

Here's an old article with some detailed info and source code.

http://hackaday.com/2014/02/05/software-controlled-per-port-power-switching-for-usb-hubs/

If you use a USB 2.0 capable chip, please implement a multi-TT hub. The single-TT chips aren't much cheaper, and single-TT really sucks if you have multiple Teensy or other 12 or 1.5 Mbit/sec devices active.

For example, here's a hub chip with multi-TT. The small 28 pin version lacks per-port power control, but the 48 pin version has a "PWR#" signal for each downstream port.

http://www.cypress.com/?docID=39272

If you make this product, I know I'll buy a few. If it has a unique VID/PID, I might even add special code for it....
 
Last edited:
With the CY7C65642 chip, it looks like you'd need to use a SPI EEPROM to hold the VID/PID, since the LED pins double as SPI bus for config. The I2C option reuses one of the PWR# pins.
 
Oooh, lots of responses. Let me go through them:

Steve: A small power switch per port (that just break the connection for the power pin on the USB/breadboard connections) would be easy enough.

Paul: The CY7C65642 chip is actually the exact chip I use. I use the Micrel MIC2026 (http://www.micrel.com/_PDF/mic2026.pdf) for circuit protection - so no overloading (hopefully - I haven't actually tried overloading it yet). For the SPI EEPROM, it wouldn't be TOO hard to have the socket for the chip - but I'm not sure that's the best option. I'm probably wrong on this, but everyone would have to program that chip somehow. I'm assuming Cypress just thinks their end-users will buy a lot of preprogrammed eeproms to use. But it would probably be worthwhile to break the pins for it out to the breadboard, to attempt using a Teensy to write the VID/PID at boot. That was something I'd mulled over briefly, but I'm honestly not sure it's possible; I think the chip reads from the EEPROM before it actually sends power to anything, so it probably wouldn't work too well.

Michael: The CY7C65642 works as a self-powered (500mA per port) or bus-powered (100mA per port) chip. I've been using it as a bus-powered chip, as I don't need a full 500mA per port for what I've been doing (which is actually surprising to me, as I'm running 30 LEDs on one port, and a TFT screen on another). It wouldn't be too difficult at all (they have it built into their evaluation boards) to make it auto-switch based on if a power adapter is connected.

I'll have to look into how to 'trick' the chip into pumping power along all channels. If I do that, it would likely involve some jumpers. I'm not completely sold on the idea, though - depends on just how difficult it is to cram it into this board. I think it might get very messy with the PPPS setup, and possibly trigger overloads when there aren't any?

With all this stuff on the board, though, it will likely be pretty wide. I don't like the Uno form factor, but it'll probably be just about as wide (but without the weird offset pins on one side). The (very rough!) width I'm thinking about now is about 2.6 inches wide - which is two standard breadboard widths, straddling power+ground rails. I'll definitely be trying to get it thinner, but it strikes me as something you'd keep near the top of a large breadboard anyway.

But! I'm glad there's interest! Definitely going to start puttering around with all this stuff now. :D
 
Status
Not open for further replies.
Back
Top