OK. iPXE USB Support. This took some time for me to get, so don’t be upset if you read this blog entry and don’t get the awesomeness. I am with you, I was lost for a while but then I got how cool this really is, and remember, you read about it here first!

So, booting machines with a physical NIC with ethernet is plain ol’ easy, plug and play. EFI & and IPv6 makes it a bit trickier but still straight forward. So, if a new piece of HW, lets say a tablet has a built in NIC with an etherport things are easy, the only problem here is, they dont. What to do? Enter the USB Ethernet to USB cable. This allows for two types of adapters, the ones with a built in ROM allowing PXE from the adapter itself (Like the Microsoft Surface), or the ones depending on PXE ROM in bios or EFI of some sort. Needless to say, the latter is more common. There is also the third, most common situation, there is no PXE ROM at all, anywhere… nada… none… zilch. What to do?

Well, if the device has the ability to add a USB NIC, it probably also has the option to add a normal USB stick to it, and you should possibly be able to boot from that one. This means that you can then boot iPXE from the USB stick, ok, we can do that today, not an issue. Since we are not really PXE booting there is no underlying UNDI networking capapbilites, which means that we need a native NIC driver in iPXE to support it, oh what a nightmare.

The real problem is that PXE is old and the new zippity zap generation seems to think its not needed, or maybe the HW manufacturers are just plain old cRaZy or low budgeted where they seem to forget to include PXE support? iPXE to the rescue!

So here is where the newly integrated nice-ness begins, with the new USB support a driver in iPXE will for the usb nic there. At present you’ll need a USB controller (i.e. xHCI) and a device supporting either ECM or NCM, which probably means a USB3 NIC, but then again you dont want to build over a 100 Mb/s USB2 adapter anyway. So this means we are not depending on certain HW manufacturers at all. Most adapters should work as long as they are xHCI and supports either ECM and NCM. Hurrah! Anyone interested can read more about ECM and NCM on WikiPedia

If you want something permanent then you’ll have to modify your bios and/or ROM and use that to boot from and then iPXE would kick in and enable the USB controller. Using either ipxe.usb or ipxe.efi depending on your bios environment, most modern tablets are EFI today.

This means that this scenario will work for tablets without PXE capabilites as well, or any other device that cannot boot from PXE but has a USB port to boot from. It also helps with devices you cannot burn a ROM into, but still want to allow boots from anywhere in the world. Inject the dongle in any supported hardware, anywhere in the world, and boot iPXE. iPXE will then use the USB NIC, or even WIFI to do the rest, bypassing the requirements of PXE at all.

So lets explain a few scenarios where the USB will help, so take a look at what type of devices we can boot then:

If you have a machine that can PXE boot from dongle today you can chainload using UNDI, but also use the native USB driver. Where it really comes into play is for those locations where there are no PXE servers available as iPXE can load from ROM and then connect via WIFI and download boot media over HTTP (the internet). We think this is so fantastically fantastic that we almost soiled our PXE pants just thinking about it!

There are some even cooler items that we will cover in the upcoming months, like how to boot from your phone, both as a USB storage device as well as PXE booting over WIFI from your phone. Bare metal rebuild a laptop over your phones data connection with only your phone and a USB cable, while charging your phone. Awesomeness in a can!

Another really nice thing about it, is that it will also allow for building not only Windows boxes, it can boot and deploy pretty much anything, even MacBooks! To find out more what 2Pint Software is doing with iPXE head over to the iPXE Anywhere page and read up on it.