Mieze Posted February 6 Share Posted February 6 (edited) This project is dedicated to Lucy, my lovely little indoor tiger. RTL812xLucy is a new open source macOS driver for the Realtek RTL812x family of 2.5Gbit and 5Gbit Ethernet Controllers. Key Features of RTL812xLucy Supports all versions of Realtek's RTL8125 2.5GBit and RTL8126 5Gbit Ethernet Controllers: RTL8125A RTL8125B(G) RTL8125BP RTL8125CP RTL8125D RTL8126A Support for AppleVTD (Tahoe included), but also works without it. Support for TCP/IPv4, UDP/IPv4, TCP/IPv6 and UDP/IPv6 checksum offload. Large Receive Offload: TCP/IPv4 packet streams are identified by the NIC and reassembled to large packets for handover to the network stack eliminating the overhead of packet header processing. Supports jumbo frames up to 9000 bytes (since version 1.0.1). Fully optimized for Catalina and newer. Note that older versions of macOS might not support 2.5Gbit and 5Gbit Ethernet. Support for Energy Efficient Ethernet (EEE). VLAN support confirmed to be working since version 1.0.2. Wake on LAN (WoL) has been tested successfully (since version 1.0.1). Supports hardware monitoring with rtl812xtool in Terminal. The driver is published under GPLv2. Current Status The driver has been successfully tested with Tahoe, Sequoia and Monterey but should work fine with Catalina and above. Full TSO4 and TSO6 support has been added with version 1.1.0. A word on AppleVTD Although RTL812x supports AppleVTD, there is no guarantee that your mainboard also does. In case you are unsure if you need AppleVTD, leave it disabled and you'll be on the safe side. When you enable AppleVTD and experience one of the following issues, it's most likely that your board doesn't support AppleVTD: Kernel Panics. The machine suddenly reboots, freezes and/or the fans speed up. No network connection at all. The link status keeps going up and down. Very low connection throughput. What can you do to resolve the issue? Check your board's DMAR table and see if there are any reserved memory regions in it. If there are reserved memory regions, you might want to patch your DMAR removing these regions. If it resolves the issue, congratulations! Be careful, because the board's manufacturer did add these regions with intention. Removing them may produce unexpected results too, like the problems described above. Otherwise you have to keep AppleVTD disabled, because it is incompatible with your board and there is no way to make it compatible. Installation Use OpenCore to inject the driver. Getting the Driver Download a prebuilt binary from the Download section: RTL812xLucy Source code can be found on GitHub: https://github.com/Mieze/RTL812xLucy/tree/main Changelog Version 1.1.1 build 1.1.100 ()2026-04-03) Added IOUserClient for hardware monitoring. Created rtl812xtool to retrieve hardware monitoring data. Version 1.1.0 build 1.1.004 (2026-03-13) Full TSO4 and TSO6 support added. Rebased project on the source code of LucyRTL8125Ethernet. Version 1.0.3 build 1.0.300 (2026-02-28) Support for the RTL8126A added. Small bugfixes. Version 1.0.2 build 1.0.200 (2026-02-13) VLAN support confirmed to be working. Software interrupt throttling improved. Version 1.0.1 build 1.0.100 (2026-02-06) Added full jumbo frame support up to 9000 bytes. WoL has been successfully tested. Version 1.0.0 build 1.0.55 (2026-02-06) First public development version for testing. TSO temporarily disabled due to performance problems under Tahoe. RTL812xLucy-1.0.3-build-1.0.300.zip RTL812xLucy-V1.1.0-build-1.1.004.zip Edited April 7 by Mieze Update to version 1.1.1 10 6 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/ Share on other sites More sharing options...
Mieze Posted February 8 Author Share Posted February 8 (edited) Here is a first speed test I ran with version 1.0.1 using jumbo frames (MTU 9000). The remote machine is my Ubuntu 24.04.3 LTS server with an Intel X520 NIC. The results are as expected, but see for yourself: 😺 dmin@Lucy ~ % ifconfig en1 en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 9000 options=40b<RXCSUM,TXCSUM,VLAN_HWTAGGING,CHANNEL_IO> ether 04:7c:16:d6:63:ac inet6 fe80::106d:2d21:5666:8e61%en1 prefixlen 64 secured scopeid 0xa inet6 fd68:bcb3:f983::179 prefixlen 64 inet 192.168.10.179 netmask 0xffffff00 broadcast 192.168.10.255 nd6 options=201<PERFORMNUD,DAD> media: 2500Base-T <full-duplex> status: active admin@Lucy ~ % iperf3-darwin -c gato.lan -4 Connecting to host gato.lan, port 5201 [ 6] local 192.168.10.179 port 49181 connected to 192.168.10.32 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd RTT [ 6] 0.00-1.00 sec 299 MBytes 2.51 Gbits/sec 0 8.00 MBytes 14ms [ 6] 1.00-2.00 sec 295 MBytes 2.47 Gbits/sec 0 8.00 MBytes 14ms [ 6] 2.00-3.00 sec 295 MBytes 2.48 Gbits/sec 0 8.00 MBytes 14ms [ 6] 3.00-4.00 sec 295 MBytes 2.47 Gbits/sec 0 8.00 MBytes 14ms [ 6] 4.00-5.00 sec 295 MBytes 2.48 Gbits/sec 0 8.00 MBytes 14ms [ 6] 5.00-6.00 sec 295 MBytes 2.48 Gbits/sec 0 8.00 MBytes 14ms [ 6] 6.00-7.00 sec 295 MBytes 2.47 Gbits/sec 0 8.00 MBytes 14ms [ 6] 7.00-8.00 sec 295 MBytes 2.47 Gbits/sec 0 8.00 MBytes 14ms [ 6] 8.00-9.00 sec 295 MBytes 2.48 Gbits/sec 0 8.00 MBytes 14ms [ 6] 9.00-10.00 sec 295 MBytes 2.47 Gbits/sec 0 8.00 MBytes 14ms - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 6] 0.00-10.00 sec 2.89 GBytes 2.48 Gbits/sec 0 sender [ 6] 0.00-10.01 sec 2.88 GBytes 2.47 Gbits/sec receiver iperf Done. admin@Lucy ~ % iperf3-darwin -c gato.lan -4 -R Connecting to host gato.lan, port 5201 Reverse mode, remote host gato.lan is sending [ 6] local 192.168.10.179 port 49183 connected to 192.168.10.32 port 5201 [ ID] Interval Transfer Bitrate Rwnd [ 6] 0.00-1.00 sec 295 MBytes 2.47 Gbits/sec 866 KBytes [ 6] 1.00-2.00 sec 295 MBytes 2.48 Gbits/sec 866 KBytes [ 6] 2.00-3.00 sec 295 MBytes 2.48 Gbits/sec 866 KBytes [ 6] 3.00-4.00 sec 295 MBytes 2.48 Gbits/sec 866 KBytes [ 6] 4.00-5.00 sec 295 MBytes 2.48 Gbits/sec 866 KBytes [ 6] 5.00-6.00 sec 295 MBytes 2.48 Gbits/sec 866 KBytes [ 6] 6.00-7.00 sec 295 MBytes 2.48 Gbits/sec 866 KBytes [ 6] 7.00-8.00 sec 295 MBytes 2.48 Gbits/sec 866 KBytes [ 6] 8.00-9.00 sec 295 MBytes 2.48 Gbits/sec 866 KBytes [ 6] 9.00-10.00 sec 295 MBytes 2.48 Gbits/sec 866 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 6] 0.00-10.00 sec 2.88 GBytes 2.48 Gbits/sec 3010 sender [ 6] 0.00-10.00 sec 2.88 GBytes 2.48 Gbits/sec receiver iperf Done. admin@Lucy ~ % iperf3-darwin -c gato.lan -6 Connecting to host gato.lan, port 5201 [ 7] local fd68:bcb3:f983::179 port 49189 connected to fd68:bcb3:f983::32 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd RTT [ 7] 0.00-1.00 sec 279 MBytes 2.34 Gbits/sec 0 4.07 MBytes 8ms [ 7] 1.00-2.00 sec 277 MBytes 2.32 Gbits/sec 0 4.07 MBytes 7ms [ 7] 2.00-3.00 sec 277 MBytes 2.32 Gbits/sec 0 4.07 MBytes 8ms [ 7] 3.00-4.00 sec 277 MBytes 2.32 Gbits/sec 0 4.07 MBytes 8ms [ 7] 4.00-5.00 sec 277 MBytes 2.32 Gbits/sec 0 4.07 MBytes 8ms [ 7] 5.00-6.00 sec 277 MBytes 2.32 Gbits/sec 0 4.07 MBytes 8ms [ 7] 6.00-7.00 sec 277 MBytes 2.32 Gbits/sec 0 4.07 MBytes 8ms [ 7] 7.00-8.00 sec 277 MBytes 2.32 Gbits/sec 0 4.07 MBytes 8ms [ 7] 8.00-9.00 sec 277 MBytes 2.32 Gbits/sec 0 4.07 MBytes 8ms [ 7] 9.00-10.00 sec 277 MBytes 2.32 Gbits/sec 0 4.07 MBytes 8ms - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 7] 0.00-10.00 sec 2.70 GBytes 2.32 Gbits/sec 0 sender [ 7] 0.00-10.00 sec 2.70 GBytes 2.32 Gbits/sec receiver iperf Done. admin@Lucy ~ % iperf3-darwin -c gato.lan -6 -R Connecting to host gato.lan, port 5201 Reverse mode, remote host gato.lan is sending [ 7] local fd68:bcb3:f983::179 port 49198 connected to fd68:bcb3:f983::32 port 5201 [ ID] Interval Transfer Bitrate Rwnd [ 7] 0.00-1.00 sec 276 MBytes 2.32 Gbits/sec 418 KBytes [ 7] 1.00-2.00 sec 276 MBytes 2.31 Gbits/sec 424 KBytes [ 7] 2.00-3.00 sec 277 MBytes 2.32 Gbits/sec 452 KBytes [ 7] 3.00-4.00 sec 276 MBytes 2.32 Gbits/sec 452 KBytes [ 7] 4.00-5.00 sec 276 MBytes 2.32 Gbits/sec 452 KBytes [ 7] 5.00-6.00 sec 276 MBytes 2.32 Gbits/sec 452 KBytes [ 7] 6.00-7.00 sec 277 MBytes 2.32 Gbits/sec 450 KBytes [ 7] 7.00-8.00 sec 275 MBytes 2.31 Gbits/sec 452 KBytes [ 7] 8.00-9.00 sec 275 MBytes 2.31 Gbits/sec 452 KBytes [ 7] 9.00-10.00 sec 277 MBytes 2.32 Gbits/sec 466 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 7] 0.00-10.00 sec 2.70 GBytes 2.32 Gbits/sec 5232 sender [ 7] 0.00-10.00 sec 2.70 GBytes 2.32 Gbits/sec receiver iperf Done. Edited February 8 by Mieze 2 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2847213 Share on other sites More sharing options...
cfmwan Posted February 9 Share Posted February 9 This is really Good news My friend GA z690 ud ax D4 Perfect😀 1 1 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2847223 Share on other sites More sharing options...
Mieze Posted February 13 Author Share Posted February 13 I just wanted to let you know that version 1.02 is available for download now in the first post of this thread. Major improvements are VLAN support, which has been successfully tested, and a slight reduction in CPU load thanks to improved software interrupt throttling because the RTL8125 hardware interrupt throttling is broken and has to be disabled for stable operation. Have fun testing! Mieze 😺 3 1 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2847378 Share on other sites More sharing options...
Alpha22 Posted February 15 Share Posted February 15 Test: Gigabyte Z690 Gaming X with RTL812xLucy.kext V1.0.2 Spoiler Last login: Sun Feb 15 16:19:10 on ttys006 fabiomn@Mac-Pro ~ % ifconfig en0 en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=40b<RXCSUM,TXCSUM,VLAN_HWTAGGING,CHANNEL_IO> ether d8:5e:d3:e7:xx:xx inet6 fe80::1877:cfea:f04c:14df%en0 prefixlen 64 secured scopeid 0x5 inet 192.168.1.xxx netmask 0xffffff00 broadcast 192.168.1.xxx nd6 options=201<PERFORMNUD,DAD> media: autoselect (1000baseT <full-duplex>) status: active fabiomn@Mac-Pro ~ % networksetup -getMedia en0 Current: autoselect Active: 1000baseT <full-duplex> fabiomn@Mac-Pro ~ % iperf3 -c 192.168.1.123 -4 -R Connecting to host 192.168.1.xxx, port 5201 Reverse mode, remote host 192.168.1.xxx is sending [ 5] local 192.168.1.xxx port 49324 connected to 192.168.1.xxx port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 8.40 GBytes 72.1 Gbits/sec [ 5] 1.00-2.00 sec 7.99 GBytes 68.6 Gbits/sec [ 5] 2.00-3.00 sec 7.96 GBytes 68.4 Gbits/sec [ 5] 3.00-4.00 sec 8.66 GBytes 74.2 Gbits/sec [ 5] 4.00-5.00 sec 8.21 GBytes 70.7 Gbits/sec [ 5] 5.00-6.00 sec 8.43 GBytes 72.3 Gbits/sec [ 5] 6.00-7.00 sec 8.78 GBytes 75.8 Gbits/sec [ 5] 7.00-8.00 sec 8.68 GBytes 74.4 Gbits/sec [ 5] 8.00-9.00 sec 8.49 GBytes 73.1 Gbits/sec [ 5] 9.00-10.00 sec 8.59 GBytes 73.8 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 84.2 GBytes 72.3 Gbits/sec sender [ 5] 0.00-10.00 sec 84.2 GBytes 72.3 Gbits/sec receiver iperf Done. fabiomn@Mac-Pro ~ % iperf3 -c 192.168.1.123 -6 -R Connecting to host 192.168.1.xxx, port 5201 Reverse mode, remote host 192.168.1.xxx is sending [ 5] local 192.168.1.xxx port 49326 connected to 192.168.1.xxx port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 8.37 GBytes 71.6 Gbits/sec [ 5] 1.00-2.00 sec 8.31 GBytes 71.7 Gbits/sec [ 5] 2.00-3.00 sec 8.41 GBytes 72.3 Gbits/sec [ 5] 3.00-4.00 sec 8.67 GBytes 74.4 Gbits/sec [ 5] 4.00-5.00 sec 8.54 GBytes 73.3 Gbits/sec [ 5] 5.00-6.00 sec 8.58 GBytes 73.7 Gbits/sec [ 5] 6.00-7.00 sec 8.43 GBytes 72.4 Gbits/sec [ 5] 7.00-8.00 sec 8.56 GBytes 73.2 Gbits/sec [ 5] 8.00-9.00 sec 8.56 GBytes 73.9 Gbits/sec [ 5] 9.00-10.00 sec 8.46 GBytes 72.4 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 84.9 GBytes 72.9 Gbits/sec sender [ 5] 0.00-10.00 sec 84.9 GBytes 72.9 Gbits/sec receiver iperf Done. fabiomn@Mac-Pro ~ % iperf3 -c 192.168.1.xxx -6 Connecting to host 192.168.1.xxx, port 5201 [ 5] local 192.168.1.xxx port 49328 connected to 192.168.1.xxx port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 6.48 GBytes 55.6 Gbits/sec [ 5] 1.00-2.00 sec 6.25 GBytes 53.5 Gbits/sec [ 5] 2.00-3.00 sec 6.10 GBytes 52.5 Gbits/sec [ 5] 3.00-4.00 sec 7.67 GBytes 65.8 Gbits/sec [ 5] 4.00-5.00 sec 7.65 GBytes 65.8 Gbits/sec [ 5] 5.00-6.00 sec 7.67 GBytes 65.8 Gbits/sec [ 5] 6.00-7.00 sec 7.64 GBytes 65.9 Gbits/sec [ 5] 7.00-8.00 sec 7.61 GBytes 65.4 Gbits/sec [ 5] 8.00-9.00 sec 7.67 GBytes 65.9 Gbits/sec [ 5] 9.00-10.00 sec 7.62 GBytes 65.4 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 72.4 GBytes 62.2 Gbits/sec sender [ 5] 0.00-10.00 sec 72.4 GBytes 62.2 Gbits/sec receiver iperf Done. fabiomn@Mac-Pro ~ % 1 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2847423 Share on other sites More sharing options...
Mieze Posted February 28 Author Share Posted February 28 These are the results of a speed test with a RTL8126A using version 1.0.3 with MTU 9000 under Tahoe with AppleVTD enabled. The remote machine is my Ubuntu 24.04.3 LTS server with an Intel X520 NIC. You might wonder about the TCP/IPv6 tx speed, which is limited to 3.94Gbit/s by the CPU preparing the packets for transmission. With AppleVTD you may get better results but keep in mind that even a Comet Lake CPU core is not fast enough to send TCP/IPv6 with line speed without the help of TSO. That's why it is so important to make it work and that will be the next step in development. admin@Lucy Desktop % ifconfig en5 en5: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 9000 options=40b<RXCSUM,TXCSUM,VLAN_HWTAGGING,CHANNEL_IO> ether 00:e0:4c:68:b8:7c inet6 fe80::452:8e82:968:c86a%en5 prefixlen 64 secured scopeid 0x9 inet6 2a00:6020:48d1:ae00::126 prefixlen 64 inet 192.168.10.126 netmask 0xffffff00 broadcast 192.168.10.255 nd6 options=201<PERFORMNUD,DAD> media: 5000Base-T <full-duplex> status: active admin@Lucy Desktop % iperf3-darwin -c gato.lan -4 Connecting to host gato.lan, port 5201 [ 6] local 192.168.10.126 port 49203 connected to 192.168.10.32 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd RTT [ 6] 0.00-1.00 sec 593 MBytes 4.98 Gbits/sec 0 7.99 MBytes 7ms [ 6] 1.00-2.00 sec 590 MBytes 4.95 Gbits/sec 0 7.99 MBytes 6ms [ 6] 2.00-3.00 sec 590 MBytes 4.95 Gbits/sec 0 7.99 MBytes 7ms [ 6] 3.00-4.00 sec 590 MBytes 4.95 Gbits/sec 0 7.99 MBytes 7ms [ 6] 4.00-5.00 sec 590 MBytes 4.95 Gbits/sec 0 7.99 MBytes 7ms [ 6] 5.00-6.00 sec 590 MBytes 4.95 Gbits/sec 0 7.99 MBytes 7ms [ 6] 6.00-7.00 sec 590 MBytes 4.95 Gbits/sec 0 7.99 MBytes 7ms [ 6] 7.00-8.00 sec 590 MBytes 4.95 Gbits/sec 0 7.99 MBytes 7ms [ 6] 8.00-9.00 sec 590 MBytes 4.95 Gbits/sec 0 7.99 MBytes 7ms [ 6] 9.00-10.00 sec 590 MBytes 4.95 Gbits/sec 0 7.99 MBytes 7ms - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 6] 0.00-10.00 sec 5.76 GBytes 4.95 Gbits/sec 0 sender [ 6] 0.00-10.00 sec 5.76 GBytes 4.95 Gbits/sec receiver iperf Done. admin@Lucy Desktop % iperf3-darwin -c gato.lan -4 -R Connecting to host gato.lan, port 5201 Reverse mode, remote host gato.lan is sending [ 6] local 192.168.10.126 port 49205 connected to 192.168.10.32 port 5201 [ ID] Interval Transfer Bitrate Rwnd [ 6] 0.00-1.00 sec 590 MBytes 4.95 Gbits/sec 4.00 MBytes [ 6] 1.00-2.00 sec 590 MBytes 4.95 Gbits/sec 4.00 MBytes [ 6] 2.00-3.00 sec 590 MBytes 4.95 Gbits/sec 4.00 MBytes [ 6] 3.00-4.00 sec 590 MBytes 4.95 Gbits/sec 4.00 MBytes [ 6] 4.00-5.00 sec 590 MBytes 4.95 Gbits/sec 3.92 MBytes [ 6] 5.00-6.00 sec 590 MBytes 4.95 Gbits/sec 3.94 MBytes [ 6] 6.00-7.00 sec 590 MBytes 4.95 Gbits/sec 4.00 MBytes [ 6] 7.00-8.00 sec 590 MBytes 4.95 Gbits/sec 4.00 MBytes [ 6] 8.00-9.00 sec 590 MBytes 4.95 Gbits/sec 4.00 MBytes [ 6] 9.00-10.00 sec 590 MBytes 4.95 Gbits/sec 4.00 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 6] 0.00-10.00 sec 5.77 GBytes 4.95 Gbits/sec 249 sender [ 6] 0.00-10.00 sec 5.76 GBytes 4.95 Gbits/sec receiver iperf Done. admin@Lucy Desktop % iperf3-darwin -c gato.lan -6 Connecting to host gato.lan, port 5201 [ 7] local 2a00:6020:48d1:ae00::126 port 49207 connected to 2a00:6020:48d1:ae00::32 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd RTT [ 7] 0.00-1.00 sec 466 MBytes 3.91 Gbits/sec 0 4.22 MBytes 4ms [ 7] 1.00-2.00 sec 468 MBytes 3.92 Gbits/sec 0 4.22 MBytes 5ms [ 7] 2.00-3.00 sec 470 MBytes 3.95 Gbits/sec 0 4.24 MBytes 5ms [ 7] 3.00-4.00 sec 470 MBytes 3.94 Gbits/sec 0 4.24 MBytes 4ms [ 7] 4.00-5.00 sec 469 MBytes 3.93 Gbits/sec 0 4.24 MBytes 5ms [ 7] 5.00-6.00 sec 472 MBytes 3.96 Gbits/sec 0 4.24 MBytes 5ms [ 7] 6.00-7.00 sec 468 MBytes 3.93 Gbits/sec 0 4.24 MBytes 5ms [ 7] 7.00-8.00 sec 468 MBytes 3.92 Gbits/sec 0 4.24 MBytes 4ms [ 7] 8.00-9.00 sec 472 MBytes 3.96 Gbits/sec 0 4.24 MBytes 4ms [ 7] 9.00-10.00 sec 471 MBytes 3.95 Gbits/sec 0 4.24 MBytes 5ms - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 7] 0.00-10.00 sec 4.58 GBytes 3.94 Gbits/sec 0 sender [ 7] 0.00-10.00 sec 4.58 GBytes 3.94 Gbits/sec receiver iperf Done. admin@Lucy Desktop % iperf3-darwin -c gato.lan -6 -R Connecting to host gato.lan, port 5201 Reverse mode, remote host gato.lan is sending [ 7] local 2a00:6020:48d1:ae00::126 port 49209 connected to 2a00:6020:48d1:ae00::32 port 5201 [ ID] Interval Transfer Bitrate Rwnd [ 7] 0.00-1.00 sec 552 MBytes 4.63 Gbits/sec 1.53 MBytes [ 7] 1.00-2.00 sec 553 MBytes 4.64 Gbits/sec 1.98 MBytes [ 7] 2.00-3.00 sec 553 MBytes 4.64 Gbits/sec 1.93 MBytes [ 7] 3.00-4.00 sec 553 MBytes 4.64 Gbits/sec 1.93 MBytes [ 7] 4.00-5.00 sec 553 MBytes 4.64 Gbits/sec 1.98 MBytes [ 7] 5.00-6.00 sec 553 MBytes 4.64 Gbits/sec 1.99 MBytes [ 7] 6.00-7.00 sec 553 MBytes 4.64 Gbits/sec 1.99 MBytes [ 7] 7.00-8.00 sec 553 MBytes 4.64 Gbits/sec 1.99 MBytes [ 7] 8.00-9.00 sec 553 MBytes 4.64 Gbits/sec 1.99 MBytes [ 7] 9.00-10.00 sec 553 MBytes 4.64 Gbits/sec 1.99 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 7] 0.00-10.00 sec 5.41 GBytes 4.64 Gbits/sec 98 sender [ 7] 0.00-10.00 sec 5.40 GBytes 4.64 Gbits/sec receiver iperf Done. Have fun! Mieze 😺 2 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2847832 Share on other sites More sharing options...
MaLd0n Posted February 28 Share Posted February 28 Thanks for that, Mieze! 1 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2847833 Share on other sites More sharing options...
Mieze Posted March 12 Author Share Posted March 12 I have good news to report. Finally, I managed to solve the performance problem with TSO and I'm going to release version 1.1.0 of RTL812xLucy with full TSO support this weekend. I'm running final tests at the moment to ensure that everything is working as expected. After having lost almost the whole February trying to find the reason of the TSO related tx performance, which resulted in a 15% lower tx speed with TSO on, I decided to start from scratch and rebase RTL812xLucy on the source code of LucyRTL8125Ethernet, because this driver is known to work perfectly with TSO activated. This was a laborious and error prone task, because I had to merge two different code bases piece by piece. After every piece of code from RTL812xLucy, which has been added to the code of LucyRTL8125Ethernet, I had to verify that TSO is still working without the performance penalty, but finally I managed to get the code right, so that RTL812xLucy is now working with line speed and low CPU load thanks to TSO. Mieze 😺 5 2 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2848139 Share on other sites More sharing options...
Mieze Posted March 13 Author Share Posted March 13 As announced yesterday, I published version 1.1.0 of RTL812xLucy this afternoon. The new release fully supports TSO improving throughput and lowering CPU load while sending large amounts of data. You'll find the binary attached to the first post of this thread. Good luck testing and have fun! Mieze 😺 2 3 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2848151 Share on other sites More sharing options...
Alpha22 Posted March 15 Share Posted March 15 (edited) Test: Gigabyte Z690 Gaming X with RTL812xLucy.kext V1.1.0 Spoiler Last login: Sun Mar 15 14:47:27 on ttys001 fabio@Pro-di-Fabio ~ % ifconfig en0 en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=46b<RXCSUM,TXCSUM,VLAN_HWTAGGING,TSO4,TSO6,CHANNEL_IO> ether d8:5e:d3:e7:52:f6 inet6 fe80::1455:9f38:e06c:e8e6%en0 prefixlen 64 secured scopeid 0x5 inet 192.168.1.xxx netmask 0xffffff00 broadcast 192.168.1.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect (1000baseT <full-duplex>) status: active fabio@Pro-di-Fabio ~ % networksetup -getMedia en0 Current: autoselect Active: 1000baseT <full-duplex> fabio@Pro-di-Fabio ~ % iperf3 -c 192.168.1.xxx -4 -R Connecting to host 192.168.1.xxx, port 5201 Reverse mode, remote host 192.168.1.xxx is sending [ 5] local 192.168.1.122 port 49428 connected to 192.168.1.xxx port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 8.89 GBytes 76.4 Gbits/sec [ 5] 1.00-2.00 sec 8.97 GBytes 76.8 Gbits/sec [ 5] 2.00-3.00 sec 8.98 GBytes 77.3 Gbits/sec [ 5] 3.00-4.00 sec 8.94 GBytes 77.0 Gbits/sec [ 5] 4.00-5.00 sec 9.11 GBytes 77.9 Gbits/sec [ 5] 5.00-6.00 sec 8.95 GBytes 77.3 Gbits/sec [ 5] 6.00-7.00 sec 9.01 GBytes 77.1 Gbits/sec [ 5] 7.00-8.00 sec 8.95 GBytes 77.0 Gbits/sec [ 5] 8.00-9.00 sec 9.04 GBytes 77.5 Gbits/sec [ 5] 9.00-10.00 sec 8.98 GBytes 77.5 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 89.8 GBytes 77.2 Gbits/sec sender [ 5] 0.00-10.00 sec 89.8 GBytes 77.2 Gbits/sec receiver iperf Done. fabio@Pro-di-Fabio ~ % iperf3 -c 192.168.1.xxx -6 -R Connecting to host 192.168.1.xxx, port 5201 Reverse mode, remote host 192.168.1.xxx is sending [ 5] local 192.168.1.122 port 49430 connected to 192.168.1.xxx port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 8.16 GBytes 70.0 Gbits/sec [ 5] 1.00-2.00 sec 8.21 GBytes 70.5 Gbits/sec [ 5] 2.00-3.00 sec 8.09 GBytes 69.6 Gbits/sec [ 5] 3.00-4.00 sec 8.43 GBytes 72.4 Gbits/sec [ 5] 4.00-5.00 sec 8.18 GBytes 70.1 Gbits/sec [ 5] 5.00-6.00 sec 7.80 GBytes 67.2 Gbits/sec [ 5] 6.00-7.00 sec 8.16 GBytes 70.0 Gbits/sec [ 5] 7.00-8.00 sec 8.88 GBytes 76.4 Gbits/sec [ 5] 8.00-9.00 sec 8.97 GBytes 76.9 Gbits/sec [ 5] 9.00-10.00 sec 8.84 GBytes 76.0 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 83.7 GBytes 71.9 Gbits/sec sender [ 5] 0.00-10.00 sec 83.7 GBytes 71.9 Gbits/sec receiver iperf Done. fabio@Pro-di-Fabio ~ % iperf3 -c 192.168.1.xxx -6 Connecting to host 192.168.1.xxx, port 5201 [ 5] local 192.168.1.122 port 49432 connected to 192.168.1.xxx port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 7.60 GBytes 65.2 Gbits/sec [ 5] 1.00-2.00 sec 7.59 GBytes 65.1 Gbits/sec [ 5] 2.00-3.00 sec 7.60 GBytes 65.4 Gbits/sec [ 5] 3.00-4.00 sec 7.56 GBytes 65.0 Gbits/sec [ 5] 4.00-5.00 sec 7.56 GBytes 65.0 Gbits/sec [ 5] 5.00-6.00 sec 7.61 GBytes 65.3 Gbits/sec [ 5] 6.00-7.00 sec 7.63 GBytes 65.5 Gbits/sec [ 5] 7.00-8.00 sec 7.60 GBytes 65.3 Gbits/sec [ 5] 8.00-9.00 sec 7.62 GBytes 65.2 Gbits/sec [ 5] 9.00-10.00 sec 7.58 GBytes 65.4 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 76.0 GBytes 65.2 Gbits/sec sender [ 5] 0.00-10.00 sec 76.0 GBytes 65.2 Gbits/sec receiver iperf Done. fabio@Pro-di-Fabio ~ % Edited March 15 by Alpha22 1 1 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2848176 Share on other sites More sharing options...
Mieze Posted April 3 Author Share Posted April 3 (edited) Well, for an Easter egg it is too early, but I decided to publish version 1.1.1 of RTL812xLucy this afternoon. The only change since version 1.1.0 is the addition of an IOUserClient, which allows the driver to communicate with the user land utility rtl812xtool, a small command line tool to retrieve hardware monitoring data of the RTL812x family members. Don't forget to call it with sudo as it needs root privileges to communicate with the IOUserClient in kernel space. I uploaded the prebuilt binary to the Download section of insamelymac.com. After installing the new version of the driver, I recommend to copy rtl812xtool to /usr/local/bin/ to install it on your system. At the moment rtl812xtool supports two functions: Retrieve the chips hardware statistics. The network interface statistics of macOS is quite limited and does not include all the hardware data collected by the chip, which might be helpful to debug problems or watch the chip in action. To access that data, open Terminal and call rtl812xtool with -s and don't forget to use sudo: admin@Lucy Desktop % sudo rtl812xtool -s en5 txPackets: 65009548 rxPackets: 50317511 txErrors: 0 rxErrors: 0 rxMissed: 0 alignErrors: 0 txOneCollision: 0 txMultiCollision: 0 rxUnicast: 50316925 rxBroadcast: 255 rxMulticast: 331 txAborted: 0 txUnderun: 0 txOctets: 87098909593 rxOctets: 74121610908 rxMulticast64: 331 txUnicast64: 65009294 txBroadcast64: 126 txMulticast64: 128 txPauseOn: 0 txPauseOff: 0 txPauseAll: 0 txDeferred: 0 txLateCollision: 0 txAllCollision: 0 txAborted32: 0 alignErrors32: 0 rxFrame2Long: 38 rxRunt: 0 rxPauseOn: 0 rxPauseOff: 0 rxPauseAll: 0 rxUnknownOpcode: 0 rxMacError: 0 txUnderrun32: 0 rxMacMissed: 1151 rxTcamDropped: 0 tdu: 0 rdu: 0 Most members of the RTL812x family have an integrated thermal sensor. Only the RTL8125A lacks this feature. The chip's temperature can be retrieved using rtl812xtool -t. Calling this command on an RTL8125A will result in an error. admin@Lucy Desktop % sudo rtl812xtool -t en5 Temperature of device en5: 51°C This tool is not made for continuous thermal monitoring, because it doesn't make much sense for these chips. The temperature mostly depends on the link speed and is changing slowly. On my machines the temperature settles at ~30°C with the link down, ~40°C with a 2.5Gbit and for a 5Gbit link at ~50°C. Heavy load doesn't seem to have much influence on the temperature, as running iperf3-darwin for about 2 minutes results in no temperature change. Therefore the thermal monitoring makes only sense when you are optimising your machines cooling system. If the chip's temperature gets too high while in use, in particular in summer, you might want to install an additional fan to blow some cool air on the chip. Have fun! Mieze 😺 Edited April 3 by Mieze Fixed a typo 1 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2848690 Share on other sites More sharing options...
Alpha22 Posted May 16 Share Posted May 16 (edited) Utility rtl812xtool Spoiler fabio@Pro-di-Fabio ~ % sudo rtl812xtool -s en0 txPackets: 7100 rxPackets: 11760 txErrors: 0 rxErrors: 0 rxMissed: 0 alignErrors: 0 txOneCollision: 0 txMultiCollision: 0 rxUnicast: 10423 rxBroadcast: 577 rxMulticast: 760 txAborted: 0 txUnderun: 0 txOctets: 2935558 rxOctets: 10956570 rxMulticast64: 0 txUnicast64: 7014 txBroadcast64: 15 txMulticast64: 71 txPauseOn: 0 txPauseOff: 0 txPauseAll: 0 txDeferred: 0 txLateCollision: 0 txAllCollision: 0 txAborted32: 0 alignErrors32: 0 rxFrame2Long: 0 rxRunt: 0 rxPauseOn: 0 rxPauseOff: 0 rxPauseAll: 0 rxUnknownOpcode: 0 rxMacError: 0 txUnderrun32: 0 rxMacMissed: 1056 rxTcamDropped: 0 tdu: 0 rdu: 0 Edited May 16 by Alpha22 1 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2850370 Share on other sites More sharing options...
Mieze Posted May 31 Author Share Posted May 31 Here is Version 1.1.2 (build 1.1.200) of RTL812xLucy, which implements a few number of changes to improve compatibility with AMD-based hackintoshs: Also enables PCIe I/O space of the RTL812x chip to resolve an issue with MMIO not working on certain socket AM5 systems. Fine grained control of ASPM, so that states L0s and L1 can be enabled/disbaled individually in the kext's Info.plist. RTL812xLucy-V1.1.2-build-1.1.200.zip 3 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2850771 Share on other sites More sharing options...
Alpha22 Posted June 1 Share Posted June 1 tested and working kextstat | grep RTL812xLucy Executing: /usr/bin/kmutil showloaded No variant specified, falling back to release 78 0 0xffffff80041e5000 0x66000 0x66000 com.insanelymac.RTL812xLucy (1.1.200) 52B1F25A-28BB-32BB-974F-8D78C4D9AC70 <52 19 7 6 3 1> 1 Link to comment https://www.insanelymac.com/forum/topic/362326-rtl812xlucy-for-the-realtek-rtl812x-family/#findComment-2850787 Share on other sites More sharing options...
Recommended Posts