This is an old revision of the document!
Date | Vendor | Certificate | Hardware | Driver (version) | Certified |
September 11, 2019 | Aeon Matrix Inc. | Yardian Pro PRO1902 (link dead) | ? | mt76 (pre mainline) | 2,4 GHz, 1 Spatial Stream 2.4 GHz, STA, b/g/n, WMM, WPA2/WPA Personal, Short Guard Interval, TX A-MPDU, STBC Receive, 40 MHz operation in 2.4 GHz with coexistence mechanisms |
January 14, 2019 | GARDENA GmbH | GARDENA smart Gateway (Art. 19005) | MT7688 | mt76 (pre mainline) | 2,4 GHz, 1 Spatial Stream 2.4 GHz, STA, b/g/n, WMM, WPA2/WPA Personal, Short Guard Interval, TX A-MPDU, STBC Receive, 40 MHz operation in 2.4 GHz with coexistence mechanisms, Greenfield Preamble, STAUT Power Management |
RealTek provides a GPLed Linux driver named “8192cu” for its RTL8188CUS hardware. While it has worked well enough to pass the Wi-Fi Alliance certification, the last release is from 2017, its code does not work well with modern kernels (FullMAC, and notoriously unstable) and does no longer receive any security updates. Luckily, it has been superseded by TWO mainlined kernel drivers:
Both, rtl8192cu and rtl8xxxu are worse than 8192cu when it comes to features and performance.
Given the code quality and stability, it is the goal of GARDENA to develop the rtl8xxxu driver as far as needed to pass the Wi-Fi Alliance certification.
Progress: Hardware is already on the market, nothing left to do or could be changed for that matter.
All driver development and the verification is getting done with firmware version 88.2, which is part of linux-wireless since release 20201118.
Before linux-wireless release 20201118, the provided firmware was version 80.0, which is known to hang on the GARDENA smart gateway as long-term tests have shown (and on other machines too - Google knows). Only a cold reset resolved the problem, which is easy to do for an USB WLAN stick but problematic (human intervention needed) on a embedded device that has no hardware reset capabilities for the USB device.
The rtl8xxxu driver performance (throughput) gets compared to the latest vendor driver release (8192cu), which has been patched to work on recent Linux versions (5.10+): https://github.com/husqvarnagroup/8192cu_rtl8188cus
Priority | Task | Wi-Fi Alliance Test Case | State | Optional |
1 | ACK #1: Fix Block ACKs to include (ack) recently sent frames | n/a (but a prerequisite) | WIP | n |
2 | ACK #2: Fix regular ACKs to work also with non-MCS2 packets | n/a (but a prerequisite) | WIP | n |
unknown | Allow setting TX power limit via iw | none, but needed for EMC | implemented, needs to be verified by GARDENA | n |
unknown | TX Power: power by rate. | none, but maybe required for EMC | not yet implemented | n |
unknown | A-MSDU (RX support) | 5.2.38 | not yet implemented | n |
unknown | WMM: Wi-Fi Multimedia | many | not yet implemented | n (but ASD?) |
unknown | 802.11n: STBC Receive | 5.2.46 | implemented, needs to be verified | n |
unknown | A-MPDU: #1. Handle ampdu_action properly on TX. Ex.ADDBA, DELBA, BAR | 5.2.47 | implemented, needs to be verified | n |
unknown | A-MPDU: #2. Make sure BAR to be handled correctly on RX | 5.2.47 | not yet implemented | n |
unknown | iw station dump: “tx bitrate: (unknown)” (n/a) | n/a | fixed | y |
unknown | iw output: “Available Antennas: TX 0 RX 0” (n/a) | n/a | fixed | y |
unknown | Reach MCS5 ~ MCS7 rate under rate control | n/a | not yet implemented | y |
unknown | Protected Management Frames (For WPA3 support) | unknown | not yet implemented, HW support unknown (RTL8188CUS) | y |
unknown | CRDA + RegDB support: Static TX power limit, global | unknown | not yet implemented | y |
unknown | CRDA + RegDB support: Country support (implement regd_notifier()) | unknown | not yet implemented | y |
none | Greenfield mode | 5.2.41 (no longer existing) | not yet implemented | y |
unknown | Regulatory domain: Hook the TX power set/get of the cfg80211 to the driver | none | not yet implemented | y |
none | Firmware upload failure | n/a | not yet fixed | y |
none | RX IQK failed | n/a | not yet fixed | y |
rtl8xxxu: During block ACK sessions, the STA does not ACK frames sent by the AP in time, causing the AP to resend them. It is unknown whether the frames have not been properly received by the STA or if the STA is “just” too slow to ACK them in time.
This results in retransmission percentages of 10-50%. While still yielding usable performance (10-40 MBit/s), this percentage is too high for passing the Wi-Fi Alliance certification.
8192cu: ACK-ing all sent frames in time, resulting in only 1-2% retransmitted frames and great performance (35+ MBit/s).
The following error happens frequently on Reto's machine, but does not happen on the GARDENA smart gateway:
kernel: usb 1-1.5.4: new high-speed USB device number 8 using ehci-pci kernel: usb 1-1.5.4: New USB device found, idVendor=7392, idProduct=7811, bcdDevice= 2.00 kernel: usb 1-1.5.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 kernel: usb 1-1.5.4: Product: 802.11n WLAN Adapter kernel: usb 1-1.5.4: Manufacturer: Realtek kernel: usb 1-1.5.4: SerialNumber: 00e04c000001 kernel: usb 1-1.5.4: Vendor: Realtek kernel: usb 1-1.5.4: Product: 802.11n WLAN Adapter kernel: usb 1-1.5.4: rtl8192cu_parse_efuse: dumping efuse (0x80 bytes): kernel: usb 1-1.5.4: 00: 29 81 00 74 cd 00 00 00 kernel: usb 1-1.5.4: 08: ff 00 92 73 11 78 03 41 kernel: usb 1-1.5.4: 10: 32 00 85 62 9e ad 08 be kernel: usb 1-1.5.4: 18: ac 0b 14 c4 0a 03 52 65 kernel: usb 1-1.5.4: 20: 61 6c 74 65 6b 00 16 03 kernel: usb 1-1.5.4: 28: 38 30 32 2e 31 31 6e 20 kernel: usb 1-1.5.4: 30: 57 4c 41 4e 20 41 64 61 kernel: usb 1-1.5.4: 38: 70 74 65 72 00 00 00 00 kernel: usb 1-1.5.4: 40: 00 00 00 00 00 00 00 00 kernel: usb 1-1.5.4: 48: 00 00 00 00 00 00 00 00 kernel: usb 1-1.5.4: 50: 00 00 00 00 00 00 00 00 kernel: usb 1-1.5.4: 58: 06 00 27 27 27 00 00 00 kernel: usb 1-1.5.4: 60: 29 29 29 00 00 00 00 00 kernel: usb 1-1.5.4: 68: 00 00 00 00 11 11 33 00 kernel: usb 1-1.5.4: 70: 00 00 00 00 00 02 00 00 kernel: usb 1-1.5.4: 78: 0f 00 00 00 36 00 00 00 kernel: usb 1-1.5.4: RTL8188CU rev A (TSMC) 1T1R, TX queues 2, WiFi=1, BT=0, GPS=0, HI PA=0 kernel: usb 1-1.5.4: RTL8188CU MAC: 08:be:ac:0b:14:c4 kernel: usb 1-1.5.4: rtl8xxxu: Loading firmware rtlwifi/rtl8192cufw_TMSC.bin kernel: usb 1-1.5.4: Firmware revision 88.2 (signature 0x88c1) kernel: usb 1-1.5.4: rtl8xxxu_writeN: Failed to write block at addr: 1c00 size: 0080 kernel: rtl8xxxu: probe of 1-1.5.4:1.0 failed with error -11
Unsure if this is a common issue.
The following error happens frequently on Reto's machine, but does not happen on the GARDENA smart gateway:
kernel: usb 1-1.5.4: Vendor: Realtek kernel: usb 1-1.5.4: Product: 802.11n WLAN Adapter kernel: usb 1-1.5.4: rtl8192cu_parse_efuse: dumping efuse (0x80 bytes): kernel: usb 1-1.5.4: 00: 29 81 00 74 cd 00 00 00 kernel: usb 1-1.5.4: 08: ff 00 92 73 11 78 03 41 kernel: usb 1-1.5.4: 10: 32 00 85 62 9e ad 08 be kernel: usb 1-1.5.4: 18: ac 0b 14 c4 0a 03 52 65 kernel: usb 1-1.5.4: 20: 61 6c 74 65 6b 00 16 03 kernel: usb 1-1.5.4: 28: 38 30 32 2e 31 31 6e 20 kernel: usb 1-1.5.4: 30: 57 4c 41 4e 20 41 64 61 kernel: usb 1-1.5.4: 38: 70 74 65 72 00 00 00 00 kernel: usb 1-1.5.4: 40: 00 00 00 00 00 00 00 00 kernel: usb 1-1.5.4: 48: 00 00 00 00 00 00 00 00 kernel: usb 1-1.5.4: 50: 00 00 00 00 00 00 00 00 kernel: usb 1-1.5.4: 58: 06 00 27 27 27 00 00 00 kernel: usb 1-1.5.4: 60: 29 29 29 00 00 00 00 00 kernel: usb 1-1.5.4: 68: 00 00 00 00 11 11 33 00 kernel: usb 1-1.5.4: 70: 00 00 00 00 00 02 00 00 kernel: usb 1-1.5.4: 78: 0f 00 00 00 36 00 00 00 kernel: usb 1-1.5.4: RTL8188CU rev A (TSMC) 1T1R, TX queues 2, WiFi=1, BT=0, GPS=0, HI PA=0 kernel: usb 1-1.5.4: RTL8188CU MAC: 08:be:ac:0b:14:c4 kernel: usb 1-1.5.4: rtl8xxxu: Loading firmware rtlwifi/rtl8192cufw_TMSC.bin kernel: usb 1-1.5.4: Firmware revision 88.2 (signature 0x88c1) kernel: usb 1-1.5.4: rtl8xxxu_iqk_path_a: Path A RX IQK failed! kernel: usb 1-1.5.4: rtl8xxxu_iqk_path_a: Path A RX IQK failed! kernel: usbcore: registered new interface driver rtl8xxxu
Unsure if this is a common issue.
iperf3 -c 10.42.0.1
iperf3 -c --reverse 10.42.0.1
DUT | AP | Driver | Throughput [Mbits/sec]; retries [%] | AP ↔ DUT | Notes | PCAP |
amd64, Edimax | Linksys | Linux v5.10.51, rtl8xxxu (vanilla) | 30.6 Mbits/s; 12% | 2m, two monitors in line of sight | Many “ghost MAC addresses” | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-1-Linux-5.10.51-2021-07-22-vanilla-rtl8xxxu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-12%25-retries-at-30.6MBps.pcapng.gz |
amd64, Edimax | Linksys | Linux v5.10.51, rtl8xxxu (vanilla) | 13.1 Mbits/s; 3% | 2m, two monitors in line of sight | Many “ghost MAC addresses”; unexplained performance/retry drop | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-3-Linux-5.10.51-2021-07-22-vanilla-rtl8xxxu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-3%25-retries-at-13.1MBps.pcapng.gz |
amd64, Edimax | Linksys | Linux v5.10.51, 8192cu (tag rs/2021-07-23) | 4.02 Mbits/s; 17.2% | 2m, two monitors in line of sight | No “ghost MAC addresses”; Surprisingly bad performance | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-5-Linux-5.10.51-2021-07-22-8192cu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-16%25-retries-at-4.02MBps.pcapng.gz |
amd64, Edimax | Linksys | Linux v5.10.51, 8192cu (tag rs/2021-07-23) | 3.91 Mbits/s; 18.8% | 2m, two monitors in line of sight | No “ghost MAC addresses”; Surprisingly bad performance | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-6-Linux-5.10.51-2021-07-22-8192cu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-18%25-retries-at-3.91MBps.pcapng.gz |
amd64, Edimax | Linksys | Linux v5.10.51, 8192cu (tag rs/2021-07-23) | 49.7 Mbits/s; 4.8% | 1m, direct line of sight | Some “ghost MAC addresses” | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-8-Linux-5.10.51-2021-07-22-8192cu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-4.8%25-retries-at-49.7MBps.pcapng.gz |
amd64, Edimax | Linksys | Linux v5.10.51, rtl8xxxu (vanilla) | 45.7 Mbits/s; 9.4% | 1m, direct line of sigh | No “ghost MAC addresses” | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-10-Linux-5.10.51-2021-07-22-vanilla-rtl8xxxu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-9.4%25-retries-at-45.7MBps.pcapng.gz |
ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, 8192cu (tag rs/2021-07-23) | 30.6 Mbits/s; 0.9% | 1m, direct line of sigh | Some “ghost MAC addresses”; This is the kind of performance wanted | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-3-Linux-5.10.52-8192cu-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-0.9%-retries-at-30.6MBps.pcapng.gz |
ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, 8192cu (tag rs/2021-07-23) | 42.5 Mbits/s; 2.4% | 1m, direct line of sigh | Some “ghost MAC addresses”; This is the kind of performance wanted | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-4-Linux-5.10.52-8192cu-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-2.4%-retries-at-42.5MBps.pcapng.gz |
ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (vanilla) | 12.5 Mbits/s; 17% | 1m, direct line of sigh | Many “ghost MAC addresses” | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-1-Linux-5.10.52-vanilla-rtl8xxxu-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-17%-retries-at-12.5MBps.pcapng.gz |
ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patch 10; tag gardena/rs/v5.10.52-rtl8xxxu-writeup-1-reduce-usb-interrupt-v1) | 20.6 Mbits/s; 12% | 1m, direct line of sigh | Few(er) “ghost MAC addresses”; Clear improvement over vanilla | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-9-Linux-5.10.52-rtl8xxxu-1-usb-interrupt-reduction-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-12.0%-retries-at-20.6MBps.pcapng.gz |
ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patches 10, 7; gardena/rs/v5.10.52-rtl8xxxu-writeup-3-tx-apdu-aggregation-v1) | 24.3 Mbits/s; 39.9% | 1m, direct line of sigh | Tons of “ghost MAC addresses”; Performance improved, but *terrible* retry rate | https://files.reto-schneider.ch/rtl8xxxu/2021-07-27-Testing/2021-07-27-1-Linux-5.10.52-rtl8xxxu-3-tx-apdu-aggregation-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-39.9%25-retries-at-24.3MBps.pcapng.gz |
ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patches 10, 8; tag gardena/rs/v5.10.52-rtl8xxxu-writeup-4-hw-rts-v1) | 15.2 Mbits/s; 17.7% | 1m, direct line of sigh | Few “ghost MAC addresses”; Throughout and retry percentage worsened | https://files.reto-schneider.ch/rtl8xxxu/2021-07-27-Testing/2021-07-27-3-Linux-5.10.52-rtl8xxxu-writeup-4-hw-rts-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-17.7%25-retries-at-15.2MBps.pcapng.gz |
ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patches 10, 8, 7; tag gardena/rs/v5.10.52-rtl8xxxu-writeup-5-ampdu-v1) | 20.8 Mbits/s; 46.5% | 1m, direct line of sigh | Many “ghost MAC addresses”; Terrible retry performance; Patch 9 does not change this. | https://files.reto-schneider.ch/rtl8xxxu/2021-07-27-Testing/2021-07-27-5-Linux-5.10.52-rtl8xxxu-writeup-5-ampdu-v1-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-46.5%25-retries-at-20.8MBps.pcapng.gz |
DUT | AP | Driver | Throughput [Mbits/sec]; retries [%] | AP ↔ DUT | Notes | PCAP |
amd64, Edimax | DLink | Linux v5.13.1 rtl8xxxu | 23~27 Mbits/s; 12~14% | 3m, direct line of sight | performance drop for a few seconds | https://mega.nz/folder/LI0ATTAK#0E2J5DHksD1jQi1oJCOJWg |
amd64, Edimax | DLink | Linux v5.13.1 rtl8xxxu | 7-14 Mbits/s; 16~20% | 6m, direct line of sight | performance drop to 0 sometimes | https://mega.nz/folder/vMdgADRD#XHljNHbzzlp63qqFsT-rkQ |
amd64, Edimax | DLink | Linux v5.12, 8192cu (https://github.com/mschiu77/rtl8188cus_vendor.git master) | 40~42 Mbits/s; 9% | 3m, direct line of sight | steady performance | https://mega.nz/folder/GAcwnDjY#Xf9lVMriWcPpIUACjuZiqg |
amd64, Edimax | DLink | Linux v5.12, 8192cu ((https://github.com/mschiu77/rtl8188cus_vendor.git master) | 13-16 Mbits/s; 20~23% | 6m, direct line of sight | steady throughput w/o sudden drop | https://mega.nz/folder/HZ8iQRqY#2ss6WW9u6oxInJvT2R6iCw |
DUT | AP | Driver | Throughput [Mbits/sec]; retries [%] | AP ↔ DUT | Notes | PCAP |
amd64, Edimax | DLink | Linux v5.13.1 rtl8xxxu | 23~27 Mbits/s; 12~14% | 3m, direct line of sight | performance drop for a few seconds | https://mega.nz/folder/LI0ATTAK#0E2J5DHksD1jQi1oJCOJWg |
amd64, Edimax | DLink | Linux v5.13.1 rtl8xxxu | 7-14 Mbits/s; 16~20% | 6m, direct line of sight | performance drop to 0 sometimes | https://mega.nz/folder/vMdgADRD#XHljNHbzzlp63qqFsT-rkQ |
amd64, Edimax | DLink | Linux v5.12, 8192cu (https://github.com/mschiu77/rtl8188cus_vendor.git master) | 40~42 Mbits/s; 9% | 3m, direct line of sight | steady performance | https://mega.nz/folder/GAcwnDjY#Xf9lVMriWcPpIUACjuZiqg |
amd64, Edimax | DLink | Linux v5.12, 8192cu ((https://github.com/mschiu77/rtl8188cus_vendor.git master) | 13-16 Mbits/s; 20~23% | 6m, direct line of sight | steady throughput w/o sudden drop | https://mega.nz/folder/HZ8iQRqY#2ss6WW9u6oxInJvT2R6iCw |