Taking apart a very cheap USB to Ethernet adapter and pondering on the parts found inside.
Here are two USB to Ethernet adapters:
One of them is sold on ebay for $3.85 AU ($3.99 US), including postage to Australia. The other is sold at Apple Stores for $29.1
In Linux they both use the driver for an “ASIX AX88772A” USB to Ethernet converter, even though the Apple one reports as “Apple” and is sold only for the MacBook Air.2
The cheap adapter comes with drivers for OS X & Windows, as well.
When I ran a TCP throughput test with iperf, they both performed well. The Apple adapter measured throughput of 94.3Mbps. The cheap adapter measured 87.4Mbps. By comparison, the builtin ethernet on my laptop measured 94.8Mbps (after being set from gigabit to 100Mbps.)
Oddities
There are a few unusual things about the cheap adapter, though. The Linux kernel log says:
usb 3-2.1.2: New USB device found, idVendor=0b95, idProduct=772a
usb 3-2.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-2.1.2: Product: AX88x72A
usb 3-2.1.2: Manufacturer: ASIX Elec. Corp.
usb 3-2.1.2: SerialNumber: 000002
eth1: register 'asix' at usb-0000:0e:00.0-2.1.2, ASIX AX88772 USB 2.0 Ethernet, 00:8a:8d:8a:39:2b
Serial number “000002″? Hmm…
Also, the hardware MAC address prefix (00:8a:8d) isn’t any known vendor OUI (organisationally unique identifier.) Seems odd, although chipset vendors (like ASIX) often require the device manufacturer to register their own OUI (for instance the Apple adapter uses an Apple prefix.) For a no-name vendor, it makes sense to just make one up.
Spot the difference
Here’s a view inside the cheap adapter:
Inside the Apple adapter:
It seems $29 buys you shielding from interference. Underneath the cover:
Some similarities are visible:
- Both adapters have a 512 byte EEPROM onboard (Atmel AT93C66B.)3
- Both adapters have an Ethernet transformer to isolate the ethernet signals from the rest of the board (MEC TM1701M & LFE8423, respectively.)
The biggest difference is this: the Apple adapter contains a clearly labelled ASIX AX88772ALF USB to Ethernet bridge, the other adapter has an unmarked chip that is not made by ASIX.
ASIX don’t make any USB/Ethernet devices in a 32 pin package, their smallest package has 64 pins, same as the genuine one above.
It’s a clone!
A clever clone
Cloning ASICs isn’t new to the computer world. They’ve been around since the early 80s, maybe earlier.
This is not a simple copy, though. It’s been modified to make it much cheaper to produce. It might even be a brand new ASIC, created from scratch to be compatible.
To know if it is a modified knockoff or made from scratch we could dissolve the chip packages in acid (“decapping” them) and then look at the exposed silicon die under a microscope. Not quite that keen yet, though.
Clock Sync
The genuine AX88772A requires two crystal oscillators for accurate timing – a 25MHz oscillator for the ethernet interface clock, and a 12MHz oscillator for the USB interface clock. The cheap adapter only has a single 25MHz crystal.
How much does this save? A lot. The Apple adapter has two “TXC” brand oscillators (the shiny silver packages.) These cost around $1.33 each if you buy 15,0004. This wholesale cost alone is nearly the retail price of the cheap adapter on taobao.com.
By comparison, a single large crystal resonator like the one on the cheap adapter costs $0.16 from the same source (6% 20%, see below, of the cost.)
EDIT: Someone on reddit pointed out that I was using ‘oscillator’ incorrectly to refer to the large crystal, which is only the resonator part of an oscillator circuit. Fixed!
EDIT 2: Gerard points out in the comments that the two TXC chips are probably just crystal resonators (not full oscillators) as well. I checked the reference schematic for ASIX’s Demoboard and he’s right. Thanks Gerard! So the cheapest ones they could be are around $0.40 each (12MHz/25MHz), the cheaper board’s single crystal is then closer to 20% of the cost.
In the genuine chip, the 12MHz frequency would be used to derive 480MHz for USB 2.0 High Speed by using a PLL frequency multipler circuit. 12 x 40 = 480.
In the cheap one, I’m guessing the host’s packet sync must be used to synchronise the 480MHz clock. Without a high speed oscilloscope or a USB 2.0 logic analyser it’d be hard to tell how well this goes at meeting the 480MHz +/-500ppm requirement of the USB High Speed spec.5 ASIX themselves warn that if their precision 12MHz clock source has an incorrect capacitor it “can cause some problem during USB High Speed mode enumeration. For example, during the 100 times of repeatedly plug-and-unplug test, there may be 1 time that AX88772 may not be initialized properly“. You’d imagine this kind of problem is potentially much worse in the cheap adapter, although I haven’t yet noticed anything.
Parts Count
The Apple adapter also has many more small components – two inductors (the cheap adapter has none), over twenty five capacitors (the cheap adapter has only nineteen), more resistors. For the cheap adapter design, every fraction of a cent saved is important!
One thing that surprised me is that the cheap adapter has a functioning blue activity LED, that glows through the enclosure. The Apple adapter actually has a space on the PCB for this, but no LED in place (Apple’s designers presumably nixed it for aesthetic reasons.) I’m surprised the manufacturer paid the few cents to add this feature.
Software
For the manufacturer of cloned/compatible ASICs, an interesting bonus6 is driver support. The CD that came with the cheap adapter contains ASIX’s own drivers for Windows and OS X.
The Windows drivers are the exact same digitally signed ones that Microsoft distributes through Windows Update, meaning the adapters appear to have “passed” Windows Hardware Quality Labs testing. Something the actual device manufacturer surely couldn’t have afforded.
Reliability
In my simple tests both adapters seemed perfectly reliable, moving data back and forth quickly without any measurable errors. I ran an eight hour two-way ping flood (assuring plenty of collisions) with zero lost packets.
However, the cheap adapter is probably susceptible to (and a producer of) electrical noise. The Apple adapter is protected from an electrically noisy environment by its metal shielding, and extra decoupling capacitors on the board.
On the other hand, both USB and Ethernet contain mechanisms for dealing with errors introduced by interference. It’s possible the protocols are well engineered enough that you’ll never notice the difference.
It is also possible that the cloned ASIC will display hardware bugs that aren’t in the legitimate adapter. So far I haven’t found any (I tested some of the uncommon features like forcing 10Mbps, forcing half duplex, adjusting MTU.) I’d be interested to hear of any, though.
Conclusion
I’m probably unusual in that I find this world of cheap clone “shanzhai” hardware amazing. I’m fascinated that someone is out there redesigning existing silicon to make a knockoff that is smaller, cheaper but otherwise near-equivalent – to be used in devices that retail for less than $3.
I’d love to learn more about these secretive industries and the engineers who work in them.
How about you? Do you have any experience with dirt cheap hardware devices? How do you feel about shanzhai competing with regular firms’ R&D by cloning their hardware? Please leave a comment and let me know what you think.
- Model MC704ZM / A1277 [↩]
- Internet lore seems to agree that any Mac running OS X 10.5.2 or later can use it. [↩]
- Actually the part markings on the cheap adapter’s EEPROM don’t match Atmel’s datasheet, so it’s possible that one is a clone, rebadged, or old stock. [↩]
- Not the same oscillators but the same brand, meeting the spec that ASIX requires: 25MHz & 12MHz. Of course both Apple and our noname manufacturer would pay less than Digikey’s prices, but it gives you some idea. [↩]
- I think the Linux kernel could know the raw USB bit error rate, giving some idea of how precise the timing was, but the kernel doesn’t record it anywhere [↩]
- Assuming you can ignore copyright law, and have no qualms about reproducing other companies’ intellectual property for profit [↩]











Given that the ethernet chip will need to make 100MHz internally to do the 100-BaseTX interface they may then be dividing that down to 20MHz and doing the multiply by 24 from there to get 480MHz for USB. Shouldn’t be any farther off than the crystal is otherwise though jitter might be an issue.
If you can get a decap of the chip it’d be interesting to see.
Hi AS,
Thanks for commenting! This is a good point about manipulating the 25MHz clock through multiple stages to get 480MHz.
I’m not an expert on ethernet physical layer, but for what it’s worth I think the PHY/PCS actually needs 125MHz due to the 5/4 coding (which then becomes 31.25MHz on the twisted pairs), as described here.
However I think the approach you describe is very possible, maybe attaching multiple stages of frequency multiply/divide is what happens internally.
I really want a USB 2.0 logic analyser now! I backed “OpenViszla” years ago but they still haven’t shipped anything. :(
Thanks Guy, now I need to buy some. Can you email me your eBay link?
Hi Madox,
Well, I actually bought mine from a vendor in Australia, so I paid the princely sum of $7.95 for mine.
I can’t actually find the $3.85 listing now! :/ Best I can see is this one for $4.99. $1.14 too much!
In general I think anyone advertising Windows 7, Mac & Linux support is probably selling the model I have. There is another set of listings (even cheaper still) advertising ones that only work with Windows 2000,XP & Vista. I suspect that’s a different chipset.
If you’re buying a lot then you could always try the taobao vendor I linked in the post, try and get a really good deal. :)
The two TXC packages are probably just SMD crystals, not oscillators. Depending on the size I’d guess the 7B or 7M series. Price somewhere around $0.25.
http://www.txccorp.com/en/c_products/01_1.asp
I think you did an amazing job here!
Gerard,
Thanks! I looked at the schematic again, you’re entirely right. Post updated.
The cheapest TXCs that seem to meet spec on Digikey are the 7V series, that are about $0.40 in the quantities I was checking. 7M are a massive $0.47. ;)
Thanks again,
Angus
I bought a similar pair of these from dealextreme (dx.com) for $1.60 shipped, each (SKU: 142016)! They are about 1/3rd shorter in length, but I don’t know if they are the same manufacturer. I haven’t actually tried them on my Android tablet yet.
Wow Bob, that is cheap.
I noticed on the DX page there’s a “Customer Photo” showing a picture of the inside, indicating it’s just a cable adapter with no actual circuitry inside.
If that’s true it’s really just for passing USB signals over cheaper CAT5 cables. Some commenters seem to claim they’ve used it for Ethernet access but I don’t see how unless there are multiple products being shipped from the same SKU.
Please let us know if yours turns out to have USB/Ethernet circuitry in it or not!
- Angus
http://www.ebay.com/itm/New-USB-to-RJ45-Lan-10-100Mbps-Ethernet-Adapter-For-Windows-2000-XP-Vista-/350748056963?pt=AU_Gadgets&hash=item51aa369d83 here is ~$3.30
I bought same looking usb ethernet adapter for Raspberry pi and looks working with linux. Here is picture inside of it: http://kuvaton.com/k/YqZ6.jpg
Mar 23 06:59:46 archive kernel: [384047.297045] usb 4-1: new full-speed USB device number 2 using uhci_hcd
Mar 23 06:59:46 archive kernel: [384047.439166] usb 4-1: New USB device found, idVendor=0fe6, idProduct=9700
Mar 23 06:59:46 archive kernel: [384047.439172] usb 4-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
Mar 23 06:59:46 archive kernel: [384047.439176] usb 4-1: Product: USB 2.0 10/100M Ethernet Adaptor
Mar 23 06:59:49 archive kernel: [384050.869394] dm9601 4-1:1.0 eth0: register ‘dm9601′ at usb-0000:00:1a.1-1, Davicom DM9601 USB Ethernet, 00:e0:4c:53:44:58
Mar 23 06:59:49 archive kernel: [384050.869430] usbcore: registered new interface driver dm9601
Mar 23 06:59:50 archive NetworkManager[627]: failed to allocate link cache: (-10) Operation not supported
Mar 23 06:59:50 archive NetworkManager[627]: (eth0): carrier is OFF
Mar 23 06:59:50 archive NetworkManager[627]: [1364014790.447553] [nm-device-ethernet.c:456] real_update_permanent_hw_address(): (eth0): unable to read permanent MAC address (error 0)
Mar 23 06:59:50 archive NetworkManager[627]: (eth0): new Ethernet device (driver: ‘dm9601′ ifindex: 3)
Mar 23 06:59:50 archive NetworkManager[627]: (eth0): exported as /org/freedesktop/NetworkManager/Devices/1
Mar 23 06:59:50 archive NetworkManager[627]: (eth0): now managed
Mar 23 06:59:50 archive NetworkManager[627]: (eth0): device state change: unmanaged -> unavailable (reason ‘managed’) [10 20 2]
Mar 23 06:59:50 archive NetworkManager[627]: (eth0): bringing up device.
Mar 23 06:59:50 archive kernel: [384051.555169] dm9601 4-1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xFFFF
Mar 23 06:59:50 archive NetworkManager[627]: (eth0): carrier now ON (device state 20)
Mar 23 06:59:50 archive NetworkManager[627]: (eth0): preparing device.
Mar 23 06:59:50 archive NetworkManager[627]: (eth0): deactivating device (reason ‘managed’) [2]
Mar 23 06:59:50 archive NetworkManager[627]: Added default wired connection ‘Wired connection 1′ for /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.0/net/eth0
Mar 23 06:59:50 archive NetworkManager[627]: (eth0): carrier now OFF (device state 20)
[...] Gratton] recently cracked open a pair of USB to Ethernet converters to see what’s inside. One was an Apple branded device, the other a no-name from eBay. The [...]
Oh yeah, Windows 7 doesn’t have “build in” drivers for it and it shows up as “USB 2.0 10/100M Ethernet Adaptor” with hardware ID: USB\VID_0FE6&PID_9700&REV_0101
anounyym1 – that’s really interesting, looks almost identical outside and very similar parts inside.
I saw a few on ebay in that cheaper tier, advertised as only for “Windows XP 2000 Vista” – I wonder if they’re all the same chipset? I didn’t buy one specifically because they didn’t mention Linux compatibility or a chipset name, though it looks like they work in Linux after all.
Is there a date marked on the PCB anywhere? The one I have is dated October 2012, maybe the one I have is a newer revision? (to get better compatibility with Windows 7 & 8.) Or maybe they are totally separate?
- Angus
At least this is a functional product, unlike those 12 volt USB vehicle power adapters that connected 12 volts directly to the USB port.
Don’t recall where I read that, some company designed a product for vehicle use and the engineers specified a certain 12V lighter socket adapter. Some bean counter saw that the 12V adapter used a standard USB plug and decided that any such 12V adapter would be fine, found the most rock bottom price and made the change in the order. Saved a lot of money. Fortunately the company had the engineers test some samples of the product before shipping! POP POP FIZZ FIZZ! I can just imagine the language was as blue and smelly as the smoke from the product.
Using a single crystal and circuitry to derive two or more timing signals has a long history in electronics. Apple’s official dongle is basically just applying gold leaf to the cake by using two. Doesn’t make the cake function better but it looks pretty. ;-)
How about adding an LED to the Apple adapter since it has the spot for one? Better yet, a small piece of PCB with a rainbow row of LEDs matching the old Apple logo colors.
Can’t find any date mark. Only text on PCB is KY-9700, that crystal looks to be same 25MHz (NKG25.000), and on ethernet transformer reads: (Pulse, T1144NL, 0819-J). I bought this one on May 2012.
When I look ebay, this one got same sticker than I got http://www.ebay.com/itm/White-USB-2-0-LAN-Ethernet-Adapter-10-100Mbps-For-Apple-Mac-MacBook-Air-PC-/300841347075?pt=AU_Laptop_Accessories&hash=item460b8aa803
In your picture there is two lines of text on sticker, like on this one http://www.ebay.com/itm/New-USB-2-0-Ethernet-10-100M-RJ45-Network-LAN-Adapter-Card-/310559436903?pt=UK_Computing_Plugs_Jacks_Wall_Plates&hash=item484ec8f067
Picture of other side PCB: http://kuvaton.com/k/YqZe.jpg
And packaging: http://kuvaton.com/k/YqZc.jpg
Interesting. The driver CD’s exactly the same too.
Thanks for posting these details.
A simple RFI / EMI test that is often useful is to place an AM band “transistor radio’” immediately adjacent to the device and tune across the while band. while listening for “spuries”. When placed hard against the device almost anything will produce some signal somewhere. Now move the receiver away progressively while checking for the level of major signals found initially. A device that will meed Class B certification will usually “quiet up” reasonably rapidly. If you can detect it from 10 feet away “you may have problems”. Obviously such a test has an immense degree of variability depending on equipment used, variability of environment and how you hold your tongue. It’[s still quite useful as a subjective indication.
- Tuning the FM band is usually not such a good indicator as AM.
- Interesting & useful results can be had from the low cost small screen (7″ or so?) monochrome CRT tube “cube shaped” televisions still available from Asia. These usually have continuously tunable frequency input. Tuning these across their several bands gives both visual and audible indications of spurious outputs and can allow actual harmonics of on board components to be detected. (Continuous tuning makes them much more useful for this purpose than fixed channel units). Possible example only
http://upload.ecvv.com/upload/Product/20118/China_5_5_B_W_TV_TV_50920118142129553.JPG
Russell – thanks for the tips about measuring RFI/EMI. I don’t know how much use I’d get out of such a testbed, even such a readily available one, but it’d definitely be interesting to play around with.
I have a load of research on this crap, because I needed to build a high speed interface to a project I was working on.
One of the most interesting facts, is that these devices are sold as 10/100
When in fact the chips internally are not capable of anything more than USB 1.1 standard.
Basically many of these chips are built around a reltek macro library they sell the products as being USB 2.0 compatible, which some are, but the actual internal Ethernet core is interfaced with USB 1.1…
Which means :
1. That anything you plug it into gets downgraded to 1.1 speed….
2. You can never come close to saturating the link.
you will see this time and time again , if you take a look into actual chipsets used on some products (RPie for example)
The SOC will have two distinct USB infrastructure ports, but then some idiot designs a hub chip between one of them to give say 2-4 ports, but does not route the other port off the PCB.
The net effect is that you plug in one of these devices, the hub sees 1.1 standard and BANG… all of your USB traffic hits the 1.1 wall.
Ideally you have to ensure that all your 1.1 standard devices are off one of the SOC USB ports and that all the 2.0 are off the other.
The sad thing is to get USB working properly, you need to be a systems engineer as regards to which devices you plug in externally to the equipment……
and in some cases it means pulling the chipset data sheets and looking at the INTERNAL spec of the chips..
Hardcoreforensics – I’ve heard that some of the cheap devices only implement USB 1.1 “Full Speed” devices, It seems to me like these ones are getting less common now than they were a year or two ago, though. Which is good. :)
I think you might be misunderstood about hub-related slowdowns, though. As long as the hub is a 2.0 hub, devices on downstream ports can be either USB 1.1 or 2.0 without any slowdown. It’s only if you have all the traffic going through a USB 1.1 hub somewhere in the line that everything gets slowed down. USB 2.0 hubs actually contain what’s called a “transaction translator” that means they speak USB 1.1 to slow downstream ports, but combine those downstream connections into the 2.0 upstream link (see the previous link for a description.)
For example, you mention the Raspberry Pi. It’s SMSC LAN9512 definitely contains a USB 2.0 hub, USB 2.0 devices should run at high speed (480Mbps) no matter what is plugged into the other hub port.
- Angus
@Galane mentions a story about how some straight through cheap 12V to USB (adapters) came about.
I don’t know anything about that particular story and it’s validity but perhaps part of the reason this happens is that the USB spec says that it should be ok… sort of.
My understanding anyway is that the spec for USB hosts does say 5V and only 5V. However for clients it is written that they are supposed to accept a wide range of voltages (I forget how high) and not blow up.
I guess the people making the spec knew that knockoffs would cut corners and tried to make the device manufacturers build their devices to survive that kind of ‘abuse’.
However, that doesn’t mean it is ok to use an adapter like that. First off, just like you can’t trust the knockoff cigarette plug to usb adapters to do the right thing you can’t trust device makers to fully follow the spec. They might not actually take the higer voltages well. Also.. car power is very very dirty. There are huge spikes in there, especially every time you start your engine. Without a good regulator and filtering in the adapter you can still kill or shorten the life of your device even if it does handle 12 volts.
One other thing you could run into is the following : future updates of the driver software won’t work anymore.The guys who made the knockoff chip, actually do not know of all quirks around in the real chip,so they implement only the nescessary functionality.But the guys at ASIX, who know their own software and hardware inside and out can easily build-in some functionality to test if there is a genuine ASIX chip fitted.
I’ve seen this happening with USB-RS232 bridges from prolific.The knockoff hardware only works with a very old driver which they supply on a CD.
I bought something similar at the ANU in Canberra, Australia. It even knocked off a Linksys USB ID.
New USB device found, idVendor=066b, idProduct=20f9
New USB device strings: Mfr=1, Product=2, SerialNumber=3
Product: HG20F9 USB2.0
Manufacturer: USBLINK
SerialNumber: 000003
A look for complaints on the web about it not working on Linux showed people from the USA and UK. The kernel people were happy to take a patch, despite the hijaaked but non-conflicting ID.