Realtek everywhere — when will it stop?

Every 4-5 months, I check on the current “motherboard scene” to see what sort of chipsets are available, and what motherboard manufacturers are including on their products.  Most decent boards these days cost over US$100, which makes me concerned over the quality of ASICs and board design in general.  Sure, I could go down to Fry’s Electronics and pick up some generic board for US$40, and then come home to random crashing, or (worse), “driver madness”.

There is a trend current motherboard manufacturers are following which disheartens me greatly: the extensive use of non-Intel Ethernet controllers on consumer Intel chipset motherboards.  Specifically Realtek, Marvell, Attansic/Atheros, and Broadcom NICs or PHYs are being used.

Here’s the current breakdown:

  • Abit: Marvell or Realtek.  Previously used any of the above, and (rarely) Intel
  • Asus: Attansic/Atheros.  Previously used any of the above, and (rarely) Intel
  • Biostar: Realtek or Attansic/Atheros
  • Elitegroup (ECS): Attansic/Atheros, Realtek, or Marvell.  Previously used Realtek
  • Foxconn: Broadcom, Realtek, or Marvell (occasionally Realtek NIC + Marvell PHY).  Previously used Realtek
  • DFI: Realtek
  • EPOX: Realtek
  • Gigabyte: Realtek (exclusively).  Previously used any of the above
  • MSI: Realtek.  A few older boards use Marvell.

The ultra-popular vendors don’t even disclose what brand of NIC/PHY is used on their “Specifications” section: you’re forced to wade through their Drivers page to find horrible truths.

Realtek has quite a history of releasing shoddy drivers, horrible technical specifications/documents (used by open-source developers as well as engineers who wish to use their ICs in their own products), and chipsets which are bug-ridden.  Worse — especially in recent days — the company continually releases new revisions of their ICs (no changes to the silkscreening, yet the actual chip ID revision returned off the PCI bus differs from that of a chip labelled identically, indicating a new revision) and does not document what has changed between hardware revisions, making the lives of driver authors quite miserable.  For full details of actual ASIC bugs, one should refer to the FreeBSD man pages for any of the Realtek drivers — I’m sure Linux has similar commentary.  And let’s not forget about Blizzard and many other software vendors recommending people disable TX/RX checksum offloading on Realtek NICs.

I can accept certain IC bugs, particularly ones which have software (driver-level) workarounds — as long as it doesn’t destroy performance or stability.  For example, if the bug drops my overall throughput rate from 80mbit/sec to 65mbit/sec, or causes data corruption, neither of those are acceptable, but people often accept these flaws by finding workarounds (see above, re: disable RX/TX offloading).  But the one thing I will not accept in this day and age are speed/duplex auto-negotiation bugs.

I’ve personally taken the time to look at Realtek’s driver ChangeLogs, and they contain absolutely no useful information; “fixing duplx probem” does not tell me anything about what was changed in the driver.  This is probably because the comment is written by someone whose first language is Chinese (which is fine, believe me; I took Mandarin for 5 years — that doesn’t give me the right to use shoddy Chinese if I choose to write something in GB/guobiao or BIG5).

What end-users don’t really understand is how all of this gets reflected in the driver itself.  The end-user only knows “it doesn’t work”, “it’s broken”, or “it doesn’t get high speeds!  It’s always 100mbit!”.

Of course, it doesn’t help that consumer networking vendors like D-Link, Linksys, and Netgear release products that aren’t compatible with some NIC/PHYs, too.  Every time I encounter a model of router or switch which doesn’t consistently do proper duplex/speed auto-neg, I make note to never recommend that product and try something else.  Otherwise I’ll open up the hardware to see what IC vendor is used.  “Ohh, Broadcom… sigh…”

Readers may be pondering the obvious question: “So why don’t you switch to using Intel motherboards?  Those all use Intel NIC/PHYs!”  True, but Intel’s boards have historically been expensive, and let’s just say I don’t like the overall feel of them.  I’m particularly fond of Asus motherboards these days, and I’d be going with Gigabyte boards if they offered ones with Intel Ethernet controllers.  At least Intel’s BIOSes on their consumer boards are getting better, offering more options (I don’t care for overclocking, but I do want the ability to control lots of features), and include a BIOS ChangeLog that is quite possibly the best in the industry.