8/19/2014

iPXE, difficulty in picking xHCI hardware

Since the xHCI spec was produced by the PCI-SIG group out of Oregon in collaboration with a lot of vendors. One of the first and most commonly adopted (aka certified to work) Chipsets that supported an xHCI on a chip was produced by the NEC or 'Renesas' Corporation (who merged in April 2009).

Download of discoveries, and a conundrum. UHCI, OCHI and EHCI controllers were popular during the "Conventional or Legacy PCI era" they supported 10/100 USB to Ethernet adapters. Next Gen 10/100/1000 NICS and 10 Gig NICS needed more bandwidth and PCI Express became the bus of choice.

VMware emulation "pass thru" and Microsoft Windows 8 native xHCI driver tested with and support adapter cards which use the Renesas uPD720200 Chip, which then got later revised as the uPD720201. The major difference being the support of a Debug mode or Debug environment, useful for writing and debugging device drivers.

Renesas Electronics Worlds First Certified USB 3.0 Host Controller - 2009 - uPD720200

Renesas Electronics Worlds First Certified USB 3.0 Host Controller - 2012 - uPD720201

Reports in the early days were however that devices on both sides of the USB 3.0 bus were subject to burnout or "smoking". The candidate cause seemed to be related to the larger possible power draws and current surges through the USB 3.0 ports.

A few manufacturers seem to bolster the USB 3.0 ports by adding "Over Current" protection to their ports independent of the chipsets, SIIG for one.

Alternative chipsets from Intel, TI and others emerged, but not in time to be selected by several USB 3.0 technologies like Virtual Machine emulation pass through or various device drivers for native operating system drivers.

The Linux support for xHCI appeared in kernel 2.6.31 (2009) but is optional and less well known until 2.6.36 (2010) and more mainstream in the 3.0.x (2011) kernel lines.

Thus practically, development platforms for xHCI will require moving beyond CentOS 5.x:

CentOS 6.x - kernel base 2.6.32
CentOS 7.x - kernel base 3.10.0

Although xHCI strived for independent compatibility across the board, it appears there are enough variations in chipset implementation, that there are still different drivers for different chipsets.

Therefore I'm thinking while there are a wide variety of choices, the safest, most widespread (because its been on the market the longest) is probably the Renesas (NEC) chipset, with a bolstered over current port protection design like one of the SIIG Adapter cards.

The Linux kernel usb core support also apparently had to be revamped to support the "higher" possible speeds that USB 3.0 brought, meaning the current USB to Ethernet USB core support in iPXE may not be able to keep up with the data flow without modification to adopt some of the changes in the Linux implementation.

It is somewhat of a catch-22 in that iPXE downloads typically a small boot kernel and disk image in order to transition to a larger full fledged operating system in a steady state, or via an iSCSI or Http(s) or other secure network file system.. and the iPXE USB to Ethernet driver support is long abandonned for native operating system support by the time USB 3.0 Superspeed support is actually used.

But it is the wave of the future, and any unique properties of a PCIe bus driver need to be investigated and accomodated. we cannot even envision why native USB 3.0 speeds of 5 Gbs or higher might be necessary in iPXE in the future.. so it should be incorporated as soon as possible.

Then also, while today USB 2.0 adapters and busses are common. In the future, they will be less common and USB 3.0 will be more common. So the xHCI will be more common, even if used with USB 2.0 Ethernet devices, and then USB 3.0 Ethernet devices. So it would seem to be the right course to take.

With that in mind this card looks particularly well suited:

4-Port USB 3.0 PCIe - JU-P40311-S1


uPD720202
uPD720202