iPXE discussion forum

Full Version: ASIX USB to Ethernet
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
Hi,

Ubuntu comes with the ASIX USB to Ethernet dongle Driver. I would like to use that with iPXE so I can PXE boot using this dongle.

Any Ideas on how to put the driver into a bootable USB iPXE build?

Or, any idea how to burn the rom onto the ASIX dongle?

http://www.asix.com.tw this is the site for ASIX

Thanks,

Callum
iPXE doesn't currently support any USB adapter with native drivers. You might be able to get it to work if you use the undionly.kpxe compile target together with chainloading, if your USB-to-Ethernet adapter provides its own PXE option ROM.
(2012-10-15 15:31)robinsmidsrod Wrote: [ -> ]You might be able to get it to work if you use the undionly.kpxe compile target together with chainloading, if your USB-to-Ethernet adapter provides its own PXE option ROM.

How do you compile with that target, I've cloned the git server.
See the documentation at http://ipxe.org/download about halfway down the page (chainloading heading).

The file you need is undionly.kpxe, which makes the command this:
Code:
git clone git://git.ipxe.org/ipxe.git
cd ipxe/src
make bin/undionly.kpxe
It says this:

make: *** No rule to make target `/bin/undionly.kpxe'. Stop.

??
(2012-10-15 16:18)no1_melman Wrote: [ -> ]It says this:

make: *** No rule to make target `/bin/undionly.kpxe'. Stop.

??

You have an extra / in there. It's just
Code:
make bin/undionly.kpxe

not
Code:
make /bin/undionly.kpxe

From within your <ipxegit>/src directory.
Hi,

Balaji Rao already completed the code for gpxe to boot from USB network adapters back in 2008 - did that not get ported over to ipxe?

http://etherboot.org/wiki/soc/2008/balaj...plan/start

br,
Quinn
@qiet72: From what I've heard, the quality of the code was not good enough to be included. If you'd like to help out, feel free to join the mailing-list and start working on it.
(2013-01-07 13:21)qiet72 Wrote: [ -> ]Hi,

Balaji Rao already completed the code for gpxe to boot from USB network adapters back in 2008 - did that not get ported over to ipxe?

http://etherboot.org/wiki/soc/2008/balaj...plan/start

br,
Quinn

The iPXE project does not have a device driver for the ASIX.

The gPXE project technically didn't have a device driver either, that is it did not support any USB connected Ethernet device.

However Balaji Rao created a personal Git repository here:

http://git.etherboot.org/people/balajirrao/gpxe.git/

On the main gPXE repository and branched the trunk and introduced a USB subsystem and drivers for several USB to Ethernet Adapters.

The results were never merged back into the main trunk, and even the latest gPXE official releases does not include the USB subsystem or the driver code.

He did keep a journal of his work here:

http://www.etherboot.org/wiki/soc/2008/balajirrao/start

The journal is fairly complete and detailed.

By week 4 he had a working driver for Davicom dm9601
By week 5 it appears he had a driver for Belkin F5D5050
By week 6 he had a driver for D-Link DUB-E100 (ASIX 88772A/B)

After week 11 he seems to have disappeared.

Rom-o-matic only produces boot images for code in the main trunk, so it never produced, nor will ever produce images that include his drivers.

To my knowledge no one else has attempted creating a USB subsystem for gPXE or iPXE, which would be a prerequisite to writing a driver specific to a chipset.

The driver design changed in later versions of gPXE and perhaps iPXE, so a restart might be necessary to get a USB-2-Ethernet driver set back on track. USB is a different bus architecture from PCI and requires the subsystem to get started. Something has to initialize the USB hardware.

A couple of directions you could take.

1. check out his specific git tree

http://git.etherboot.org/people/balajirrao/gpxe.git/

2. compile it abiding by whatever the compile rules were for that generation, and see if it works.. maybe add some device ids

3. perhaps "lift" the drivers from the branched gPXE project and use them with GRUB to create a PXEgrub that will support your USB2 Ethernet device.

4. see if you can get the old driver to merge with the iPXE code

5. Argon made a press release in 2007 that said:

Argon Technology Releases USB2 PXE on Disk for Asix USB2 AX88772 Fast Ethernet Controllers

This is not free code, its a proprietary solution, however it indicates they wrote a boot image that would start from a floppy disk image and initiate the USB2 Ethernet hardware and perform a PXE Boot.

IF that is still available at a reasonable price point, you may be able use it to start a PXEChain loading other PXE bootloaders to get you back into a familiar environment.

Their website is confusing and the only purchase option currently posted directly related to PXE boot from Disk explicitly says it is for PCI cards only. I plan to look into what that means tomorrow.

The whole thing about all these nice projects, PXELinux/Syslinux, gPXE, iPXE, PXEGrub is that they pretty much go into effect "after" the hardware has been initialized by a driver written specifically for that hardware. Without the hardware setup you can't just boot into PXElinux if there is nothing left from the UNDI driver to build upon, or some previous PXE boot agent that setup the hardware.

It would be nice to use the Linux kernel to set everything up and then daisy chain into booting a PXElinux kernel, then we could leverage UNDI, but something has to setup the UNDI memory space, load the PXElinux kernel and turn everything over to it. Kexec sounds like something that might do that, but I'm not sure it was ever envisioned to do something like that.
(2013-01-07 13:21)qiet72 Wrote: [ -> ]Hi,

Balaji Rao already completed the code for gpxe to boot from USB network adapters back in 2008 - did that not get ported over to ipxe?

http://etherboot.org/wiki/soc/2008/balaj...plan/start

br,
Quinn

The tree can still be cloned and it does compile at least on Centos 5.9 i386.

I plan to test the driver for its functionality then see if it can be added to the iPXE tree.

The path is git://git.etherboot.org/people/balajirrao/gpxe.git

The branch is called "usb"
Hey guys, did anything ever eventuate from this? Looking at much the same problem with the new notebook machines coming out sans onboard NIC.
Co-incidentally the adapters I've just ordered in for some of the PE based work are also ASIX 88772 based.

Appreciate it's an old thread, but still looks to be the most recent on the subject, and covered the subject reasonably thoroughly.

Thx.
Jp.
(2014-06-24 10:17)jpwise Wrote: [ -> ]Hey guys, did anything ever eventuate from this? Looking at much the same problem with the new notebook machines coming out sans onboard NIC.
Co-incidentally the adapters I've just ordered in for some of the PE based work are also ASIX 88772 based.

Appreciate it's an old thread, but still looks to be the most recent on the subject, and covered the subject reasonably thoroughly.

Thx.
Jp.

I looked at it pretty seriously for several months, but then my job had me changing the Operating Systems I was supporting (at the moment) and I lost interest.

I continued to work on the problem from a different perspective. (Windows 7/ OSX). I infrequently post to a blog here: http://www.johnwillis.com
on 4/2014 posted an entry on getting PXE over Ethernet to work with hardware in a Dell XPS laptop.

The summary is, the BIOS needs to have [both] a USB chipset unique driver to start that bus and then a BIOS driver for the specific USB dongle plugged into the BUS. After that the OS needs to be able to reinitialize both during and after installation.

Since there are now [three] USB chipset styles based on USB 1.0, USB 2.0 and USB 3.0 and not all dongle hardware worked with each. The problem became one of many and just got very complicated.

I'm not sure the problem cannot be solved.. but it just looked more and more like there would be a lot of desupported [hardware wise] dead alleys.

I will say the combination of SMSC and the available USB chipsets looks the most universal for USB 2.0 and the RTL8183 the most universal for USB 3.0

http://www.johnwillis.com/2014_03_01_archive.html

There is a lot to take in, one legacy USB 2.0 port seems to be included with most hardware for backwards supporting provisoning, and its often hard to identify which port that is, the rest will be USB 3.0 ports.

Provisoning at USB 2.0 speeds is often practically limited to 100 Mb/s

Provisioning at USB 3.0 speeds is often practically limited to 1000 Mb/s

One of the most practical scenarios, even for installing Linux, might be to use Macrium with a WinPE based recovery ISO, CD or usb/disk which leverages WinPE 2.0 or 3.0 to get USB 2.0 or USB 3.0 support for laying down a captured raw partition with the Linux install image that you need.. then booting from that to complete the installation.. but its just a random thought. If your not that familiar with Windows TFTP or Serv-U or WDS.. or Netboot on OSX for that matter a pure Linux path to installation might need more time to work out. I only mention this path because it has worked for me.. i.e it is proven.

I maintain a keen interest in this topic.. but really have no more to contribute at the moment.

I'd really like to write a Universal BIOS stack for supporting 1.0, 2.0 and 3.0 but Linux isn't my full time job at present.
jwillis84: You didn't by any chance publish a git repo with the USB patches modified to work with the newer iPXE codebase? As you said, you worked on it for a few months. You did some of the legwork in getting it closer to compiling with the new architecture, didn't you?
(2014-06-29 20:21)robinsmidsrod Wrote: [ -> ]jwillis84: You didn't by any chance publish a git repo with the USB patches modified to work with the newer iPXE codebase? As you said, you worked on it for a few months. You did some of the legwork in getting it closer to compiling with the new architecture, didn't you?

I just happened to be looking at USB NIC PXE issues for Dell XPS systems and found that John had a post about it on his blog. I contacted him and he updated his blog with the info he had.

http://www.johnwillis.com/2014/07/ipxe-s...oting.html
https://github.com/johntwillis/ipxe

the driver works with minor modification over in the gpxe tree

the driver does not complete compilation in the ipxe tree, the include/tables.h file has redefined the __tables method for adding items to the Linker list.. I don't understand how to adapt that yet
I've not given up trying to port the asix.c driver to iPXE, just slowed down a bit.

Forgive my newness to complicated C Macros, but I'm finding them every bit as complex as C Libraries, and a dizzing array of informal "standard Macro" libraries to read through.
jwillis84: It would be very beneficial if you were able to get on IRC and chat with the other core developers to move the USB support forward. Hopefully you'll be able to get some help in understanding all the conventions used in the iPXE codebase.

I've also added your blog to the networkboot.org planet. Hope you don't mind.
(2014-07-29 01:44)jwillis84 Wrote: [ -> ]I've not given up trying to port the asix.c driver to iPXE, just slowed down a bit.

Forgive my newness to complicated C Macros, but I'm finding them every bit as complex as C Libraries, and a dizzing array of informal "standard Macro" libraries to read through.

Hi jwillis84,

You may want to come on our IRC channel #ipxe@Freenode if you need some help with iPXE codebase !
Here is a video demonstrating the checkout and compile of an iPXE branch with USB Ethernet Adapter support, then booting a Tomrtbt image over the network using an attached USB Ethernet Adapter:

iPXE demo of USB Ethernet Adapter support

You need to execute [ # make bin/<target>.iso ] to get a bootable image with the USB device driver you need.

In this case that would be [ # make bin/asix.iso ] or [ # make bin/asix.usb ] or other image types.
Major puzzle solved.

I just figured out what /ipxe/src/util/parserom.pl was doing. Corrected the USB_ROM entries and now the USB Ethernet drivers are getting pulled in automatically.

Now the infamous problem, driver works with debug build, does not as a production build.. joy
Pages: 1 2 3
Reference URL's