Useful device when you work with an embedded development board
For our Embedded Linux training sessions, I was looking for a USB to Ethernet device. Since Linux supported devices are often difficult to find, I’m glad to share my investigations here.
When you use an embedded development board, you must connect it to your computer with an Ethernet cable, for example to transfer a new kernel image to U-boot through tftp, or to make your board boot on a directory on your workstation, exported with NFS.
You could connect both the board and computer to your local network, which would still allow your computer to connect to the Internet while you work with the board. However, you may create conflicts on your local network if you don’t use DHCP to assign an IP address to your board (if your DHCP server even accepts this new device on the network). In a training environment, you are also likely to run out of Ethernet outlets in the training room if you have to connect 8 such boards. Hence, a direct connection between the board and your workstation’s Ethernet port is often the most convenient solution.
If you can’t use WIFI to keep your computer connected to the outside world, a good solution is to add an extra Ethernet port to your computer by using an USB-to-Ethernet device.
My colleague Thomas and I started looking for such devices that would be supported by Linux. Here are a few that we found:
- D-Link DUB-E100. Supported by the USB_NET_AX8817X driver. However, this product is bulky and quite heavy (at least 100 grams).
- TRENDnet TU2-E100. Supported by the same driver, but still bulk (August 2015 update: now replaced by a more recent version, now almost as small as the Apple one, and supported out of the box in Linux. See the comment about this device.)
- Linksys USB 200m. Supported by the same Linux driver and has a much more acceptable size, but customer reviews complain that its connector can break easily.
- Apple USB Ethernet Adapter. This should be working out of the box in Linux. At least the MB442Z/A or MC704ZM/A references did, but Apple now sells a new reference that might have a different chipset. It is beautiful, small and light. Support for this device (at least the references I mentioned) was added to Linux 2.6.26 through the same driver. You should be able to use it in recent distros.
So, I recommend the Apple device. I event posted a comment on the Apple Store, titled “Perfect for Linux”! I hope the Apple droids won’t censor it. Don’t hesitate to buy it, so that we can confirm that the latest reference is supported too.
I can’t tell whether this could happen with Apple. This was the first Apple device I ever bought…
41 thoughts on “USB-Ethernet device for Linux”
Yes, it is really nice.
Apple Store is also really efficient!!
A question: does u-boot support this device?
By looking at the source code, U-boot doesn’t. It’s true it would be a nice feature.
With U-Boot 2015.07 I was able to use USB Eth adapter (D-Link DUB-E100) with TFTP or NFS.
I own both the linksys and apple one and I must say that the linksys one is extremely flimsy and wider than a standard usb plug, so for ‘horizontal’ hub you loose 3 slots. The apple one is sturdy and only takes one usb slot in ‘horizontal’ hubs.
Good news. Apple accepted my “Perfect for Linux” comment (Webmaster note: page no longer available). Well, Apple may not see Linux as a direct threat as Microsoft does, but I didn’t expect them to accept Linux related comments on their websites.
I absolutely agree that Apple Ethernet adapter works very well under Linux (running on MIPS in our case). We’ve tested others, but none worked as well as Apple’s.
Is it necessary to connect the ethernet cable when I use an embedded board??????
Not at all. Only when you need networking.
What is the best GigE USB adapter to use with Linux (RHLE 5.x)?
Will Linksys USB1000 work?
What I expected from the article titled “USB-Ethernet device for Linux” was using a USB port on the target device such as Mini-B/Mini-A that connects to a USB Series “A” plug on the Host machine using USB Gadget Support. This method ofcourse does not require the Apple USB to Ethernet converter and works well if the right config option is enabled in the target kernel along with the correct ifcfg-usb0 settings on the Host machine.
Right, this method can be used if your target has a USB device port. However, the USB to Ethernet converter has the advantage that it works in U-boot too. It is still rare that U-boot has USB gadget support.
What do you think of this product? :
I wanna use it for bare metal programming and also for busybox/ ARM-Linux.
According to the Amazon comments, this “Cubeternet USB 2.0 Hi-Speed Fast Ethernet Adapter for PC, Mac and Linux” device indeed works out of the box with Linux.
If you buy it, it would be nice if you could share the output of the
lsusbcommand when it is plugged in. This way, we will know what chipset it has.
I’m working with a client right now on a system that uses a USB-to-Ethernet to add an additional interface to a Beagleboard Black.
We got one of these (lsusb says “ID 0b95:772b ASIX Electronics Corp.”), one of the “I/O Crest” dongles referenced below, and an Edimax (which just arrived today, so it hasn’t been tested yet).
I used socat to pump 10Mb chunks of data back and forth between the SBC and a desktop box for several hours. The I/O Crest ran clean, the Cubeternet had dozens of dropped packets.
This is, of course, a very crude test with a single exemplar of each type, so take it with several grains of salt. But my choice is to do the “final showdown” between the I/O Crest and the Edimax.
Hey Guys. I am not new but just not a guru by a long way. Is there a possible driver that will allow this adapter to be used on kernel 2.6.22-14 (Ubuntu 7.1) or am I going to have to get a later distro (8.04)?. I was given a IBM Think Pad 600x with 30 Gig hd which I would like to get running on line. It only has 1 USB and no ethernet.
The driver existed before 2.6.25 but didn’t declare this particular device. You could recompile your 2.6.22 kernel with the original patch (https://lkml.org/lkml/2008/5/13/470), and this should work.
In other words it would be best to get later version of Kubuntu and reinstall the whole thing. I am not set up for recompiling.
I know this article is old, but I wanted to say thanks for it. I needed a couple adapters for a multilink-PPP setup I am trying to do using an older Eee netbook. I decided to go the Apple route as there is a store close to me. To confirm, as of this date (Oct. 21, 2010), Apple is still using the ‘MB442Z/A’ part number and my Fedora 13 i386 install (2.6.35) worked perfectly, even at install time.
Thanks again for the info. I was about to go and buy an ITX system. 🙂
The MB442Z/A is being replaced with the MC704ZM/A, which is very similar but you can tell them apart because the corners of the USB are now more angular. Does anyone know if this new model is supported in current Linux kernel/distros?
As of today, they don’t seem to have the MB442Z/A in Cami stores in Belgium.
I sent my wife at the store as she was nearby. The sales girl insured that it was absolutely the same device and that it was working great 🙂
I said : “ask the girl the chipset reference then”.
My wife didn’t proceed 🙁
MC704ZM/A does not work when trying to install the latest Ubuntu 10.10
I hate engineers.
Have anyone comfirmed that the chipset have changed from MB442Z/A to MC704ZM/A?
If so, what did it change into?
Thank you for the valuable info!
Does anybody know if the D-Link DUB E-100 works with the Popcorn Hour C-200 Networked Media Tank?
Do any of the above?
I can confirm the newer MC704ZM/A is still using the same chipset, and USB device IDs. Plugged it into an Ubuntu 10.10 box and it recognized it right away.
To help out others who are struggling to get this working I did the following to get a bunch of USB ethernet cards (Apple, Sabrent 10/100/1000 Mbps and Plugable 10/100/1000) to work:
1) unplug the USB ethernet dongle
2) at the command prompt –>uname -r
3) go to http://www.asix.com.tw/ and download the appropriate driver for the version that shows from the uname -r. I an running Ubuntu 10.10 with kernel 2.6.38-10-generic which is considered 2.6.38.
4) make sure you have kernel headers downloaded for your kernel. Search around for
5) After unzipping and untaring at the command prompt enter –>make
6) then enter at the command prompt –>make install
plug the dongle back in. If you have a cable plugged in, bonus. You should see Ubuntu auto detect the dongle and update the network icon at the top right. You can then connect to the internet to verify.
This article and its comments were very helpful; thanks!
Thanks for the nice review!
BTW whats the USBID of this device (Modelnumber: MC704ZM/A
ASIN: B00486070K, as seen on amazon)?
Since I’m stuck with an old 2.6.18-128.el5 kernel and can’t update!
Which module is loaded on linux when you insert this Apple USB2Ethernet dongle?
Thanks in advance,
It’s the ‘asix’ module that gets loaded.
Thanks for this informative article. As it is easy to find using search engines, I want to add an update with more recent USB-Ethernet adapters working under Linux:
Digitus DN-10050: ID 9710:7830 MosChip Semiconductor MCS7830
D-Link DUB-E100: ID 2001:1a02 D-Link Corp.
LevelOne USB-0301: ID 0b95:7720 ASIX Electronics Corp. AX88772
Digitus DN-10050-1: ID 0b95:772a ASIX Electronics Corp. AX88772A
Edimax EU-4208: ID 0b95:772b ASIX Electronics Corp. AX88772B
IDs and manufacturer info obtained from lsusb. All except the first use the asix kernel module; the Digitus DN-10050 uses the mcs7830 driver. The D-link DUB-E100 seems to be a completely updated version – though the link in the original article points to the current product page, it is not bulky any more and uses a different driver.
Thank you very much for this update.
Updates like this one are most welcome here! So, if you read this and have a USB-Ethernet adaptor that works on your Linux box, don’t hesitate to let us know!
ThinkPenguin ships a USB 10/100 network adapter with the AX88772A chipset. It works perfectly with GNU/Linux and they are one of the few companies which are actually supporting GNU/Linux and free software. They’ve worked with Atheros to get code released for newer USB N chipsets, the Free Software Foundation, Linux Mint, Trisquel, and various other GNU/Linux and free software projects. Everything the company ships works out of the box with most recent distributions. There is mainline kernel support or at least some significant project behind everything so there isn’t anything to compile. What is even better is they are taking things a step further and making sure even the source code for device firmware is available under a free software license.
Apple USB is OK but like most of the products it looks pretty but is 3 or 4 times the price of other similar devices !
I’ve just bought a new device. It’s called “Afunta Apple-style USB 2.0 Ethernet Adapter”. It is sold on Amazon.com under the “I/O Crest SY-ADA24005 USB 2.0 Ethernet Adapter” name. The current price is about 8 USD instead of 26 USD for the Apple one.
I actually bought it from Amazon.fr for 14 EUR (instead of 29 USD)
This product works great on Linux (tested on Ubuntu 12.10, Linux 3.5 kernel), being an attractive replacement for Apple’s one, at least twice as cheaper, and keeping the same slim and attractive shape. In addition, it has a nice blue LED under the white plastic (invisible when it’s not on) that indicates network activity. Apple’s product doesn’t have it.
I had no throughput problem, but I just tested it with my Internet connection (2 MB/s), but not yet with two PCs as I should do:
Here is the output of the
Bus 001 Device 003: ID 0b95:772a ASIX Electronics Corp. AX88772A Fast Ethernet
The only drawback is that it is a “generic” product and the brand is not even shown on it. The specifications and the chipset may change without notice.
I got a USB to Ethernet adaptor which has DM9601 chip set. I figured out that there is no support for this chip set in Uboot. My intention is to set NFS and i am using beagle board.
can someone help me with the driver for uboot.?
The TRENDnet TU2-E100 (v3) you link to is out of production.
There is now a TU2-E100 v4 which looks exactly like the Apple converter and works out of the box on Debian Wheezy
ID 0b95:7720 ASIX Electronics Corp. AX88772
Confirmed that this one works out of the box. Here’s what the product looks like: http://trendnet.com/products/proddetail.asp?prod=280_TU2-ET100
Here’s how the Linux kernel detects it:
[242048.594003] usb 1-2: new high-speed USB device number 3 using xhci_hcd
[242048.791769] usb 1-2: New USB device found, idVendor=0b95, idProduct=7720
[242048.791780] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[242048.791785] usb 1-2: Product: AX88x72A
[242048.791788] usb 1-2: Manufacturer: ASIX Elec. Corp.
[242048.791791] usb 1-2: SerialNumber: BF18AA
[242050.776403] asix 1-2:1.0 eth1: register 'asix' at usb-0000:00:14.0-2, ASIX AX88772 USB 2.0 Ethernet, d8:eb:97:bf:18:aa
[242050.776573] usbcore: registered new interface driver asix
[242050.859488] asix 1-2:1.0 eth7: renamed from eth1
[242050.889511] asix 1-2:1.0 eth7: link down
[242052.613450] asix 1-2:1.0 eth7: link up, 100Mbps, full-duplex, lpa 0xCDE1
Thanks a lot for giving this information. Initially I was very confused and wasted money on buying other devices but they didn’t worked on Linux. It was needed urgently. This information saved me and I just got one Apple USB Ethernet Adapter. Its working well.
Thanks once more
Another option is to use “internet sharing” in conjunction with your host’s Wi-Fi port.
I have successfully used both Windows 8 and Ubuntu 14.04 hosts, connected to the internet via Wi-Fi, to share their internet connection to my ARM board via Ethernet.
The ARM target board gets an IP address via DHCP from the “internet sharing” support of the OS.
The MC704ZM/A Apple adapter is still available everywhere and works without a hitch.
Needed network access to upgrade the kernel to support the i218v NIC in my new intel NUC.
Pluggable makes a USB ethernet adaptor (USB3-E1000) that is supported by Linux Kernel 3.9+