Realtek

From LinuxReviews
Jump to navigationJump to search

Realtek Semiconductor Corp (Chinese: 瑞昱半導體股份有限公司; pinyin: Ruìyù Bàndǎotǐ Gǔfèn Yǒuxiàn Gōngsī) is a Taiwan-based company best known by GNU/Linux users for their decent audio codec chips and their cheap, unstable and borderline useless network chips. Realtek is a fabless semiconductor company, they do not make their chips themselves. Realtek is headquartered in the Hsinchu Science Park in Hsinchu, Taiwan.

Network Products

Wired Relatek network cards are overall fine, but they do have very little on-board RAM and some need a workaround to avoid issues.

Most wired Realtek network cards, both those found on motherboards and separate PCI-Express cards like the TP-LINK TG-3468 PCIe Gigabit Adapter, use a variant either the RTL8168 or the RTL8111 network chips. These chips use the r8169 kernel module which is mostly stable. However, even the latest Linux kernels - like 5.6 - have issues with many of these cheap network cards where they temporarily stop working with a kernel ring buffer message (r8169): transmit queue 0 timed out. This problem with Realtek cards seems to be a) mostly (only?) a problem with on-board Realtek chips and b) a problem when the PHY is identified as "[Generic FE-GE Realtek PHY]"[1][2] There is a workaround, see below.

Wireless Realtek network cards are mostly supported by the Linux kernel. Their quality is so-so.

Realtek network products should, overall, be avoided.

Ramlets Never Learn

Wired Realtek network cards tend to have very little RAM compared to network cards from Intel and Qualcomm. Even 10 year old Intel cards have 10 times the amount of RAM Realtek cards have. RTL8111, 8168 and 8411 all have a mere 4k non-prefetchable memory and just 16k prefetchable memory. In contrast, the Qualcomm Atheros Killer E2500 has 256k non-prefetchable memory and the Intel I221 has 128k+16k non-prefetchable memory. The lack of memory on Realtek products makes a difference for both stability and CPU interrupt use.

Common Solutions To Realtek Woes

If you get transmit queue 0 timed out in your kernels ring bugger (dmesg) when sending larger amounts of data (50-100+bmit, but nowhere near the Gigabit speeds a modern NIC dna do) to the Internet then hardware segmentation offloading may be the cause of your woes[3].

TCP Segmentation Offloading can be turned off using ethtool by using -K to change offload parameters. The parameter you want to change is tso which should be set to off. The actual command would be ethtool -K INTERFACE tso off as in

# Turns of fragmentation off-loading. Fixes problems with some Realtek NICs.
ethtool -K enp6s0 tso off

if the Realtek interface is seen by the system as enp6s0

This needs to be placed in some script executed at startup for it to be permanent. ethtool -k INTERFACE as in ethtool -k enp6s0 will show the current status of tcp-segmentation-offload and a lot of other features.

A patch in the kernel net.git tree will disable hardware segmentation offloading on all Realtek chips sometime in the future (perhaps Linux 5.7, perhaps a later kernel)[4]. The description for that patch is as follows:

"There has been a number of reports that using SG/TSO on different chip versions results in tx timeouts. However for a lot of people SG/TSO works fine. Therefore disable both features by default, but allow users to enable them. Use at own risk!"

Heiner Kallweit,
r8169: change back SG and TSO to be disabled by default

Affected users should add a script that turns tco off using ethtool until that patch reaches the mainline kernel tree.

Audio Products

Realtek audio has pretty much become the standard on both cheap and high-end motherboards. Realtek offers a variety of chips for most price-points. Cheaper motherboards may have a chip like the ALC887 while more expensive motherboards will typically have the more expensive ACL1220. Both are more than good enough for all but the most insanely expensive audio setups. How on-board audio performs is entirely irrelevant for such setups since those who want the best audio performance will use a HDMI cable to feed a digital signal directly into a good surround receiver. Realtek audio chips, even the cheaper ones, are more than good enough for all setups where you don't do that and they are more than good enough for most headphones. And it makes no difference if you get a board with the cheaper ALC887 or the more expensive ALC1220 in the vast majority of cases. If you have a pair of headphones worth more than an average car then perhaps the ACL1220 will have some benefit over the ACL887.

Footnotes

  1. CentOS bug tracker: 0016815: r8169 stops working after receiving `NETDEV WATCHDOG: enp2s0 (r8169): transmit queue 0 timed out`
  2. Happens with the on-board Realtek nic on PRIME B350M-A where the kernel identifies the PHY as "Generic FE-GE Realtek PHY". Using a Realtek RTL8211E PCIe card on the same machine (same network cable/switch/etc) works fine.
  3. bugzilla.kernel.org: Bug 207049 - Realtek RTL8211E network card is unstable
  4. r8169: change back SG and TSO to be disabled by default

Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.