Jump to content

LucyRTL8125Ethernet.kext for Realtek RTL8125


Mieze
 Share

114 posts in this topic

Recommended Posts

This project is dedicated to Lucy, my lovely little Tyrannofelis Rex. :lol:

 

IMG_0581.jpeg.5d6e2d081b5c38b197428b62667ee4ae.jpeg

 

LucyRTL8125Ethernet is an open source driver for the Realtek RTL8125 family of 2.5GBit Ethernet controllers.

 

Key Features of the Driver

  • Supports all versions of Realtek's RTL8125 2.5GBit Ethernet Controllers found on recent boards.
  • Support for multisegment packets relieving the network stack of unnecessary copy operations when assembling packets for transmission.
  • No-copy receive and transmit. Only small packets are copied on reception because creating a copy is more efficient than allocating a new buffer. TCP, UDP and IPv4 checksum offload (receive and transmit).
  • TCP segmentation offload over IPv4 and IPv6.
  • Support for TCP/IPv4, UDP/IPv4, TCP/IPv6 and UDP/IPv6 checksum offload.
  • Supports jumbo frames up to 9000 bytes (strongly recommended for 2.5GBit operation).
  • Fully optimized for Mojave and above. Note that older versions of macOS might not support 2.5GB Ethernet.
  • Supports Wake on LAN (untested).
  • Supports VLAN (untested).
  • Support for Energy Efficient Ethernet (EEE) which can be disabled by setting enableEEE to NO in the drivers Info.plist without rebuild. The default is YES.
  • The driver is published under GPLv2.

 

Current Status

  • The driver has been tested successfully under Catalina (10.15.4 and above) and, according to first tests, is working stable. I haven't experienced any Kernel Panics during my tests and is working stable on my primary work machine.
  • The driver has been designed to work with Catalina but might also work with Mojave, provided you build from source with Xcode 10..
  • Please keep in mind that support for 2.5GBit Ethernet was introduced in Mojave (or maybe High Sierra?) so that there is no way to make it work with Sierra or below.

 

Known Issues

  • Using autoselect medium it seems to prefer negotiating a connection speed of 1Gbit with my switch so that I had to select 2.5GBit/s manually in order to achieve this speed but it might be different with other switches. This problem has been resolved in version 1.1.0.
  •  

Installation

  • You might want to install the driver to /L/E as usual but it's also ok to use Clover's or OC's injection function (installation in the EFI folder).
  • Use your favorite kext installation tool for installation or perform the installation manually (for Clover or OC injection). It's your call!

 

Help - I'm getting kernel panics!

Well, before you start complaining about bugs after you upgraded macOS and ask me to publish a driver update, you should first try to resolve the issue on your own by cleaning the system caches.

As the driver uses macOS's private network driver interface, which is supposed to be used by Apple provided drivers only, you might run into problems after an OS update because the linker may fail to recognize that IONetworking.kext has been updated and that the driver needs to be linked against the new version (Apple provided drivers avoid this problem because they are always updated together with IONetworking.kext). As a result, the linking process produces garbage and the driver may call arbitrary code when trying to call functions from IONetworking.kext. This usually results in unpredicted behavior or a kernel panic. In order to recover from such a situation, you should clean the System Caches forcing the linker to recreate it's caches:

  1. Delete all the files in /System/Library/Caches and it's subdirectories but leave the directories and the symbolic links intact. This is very important!
  2. Reboot.
  3. Recreate the kernel cache.
  4. Reboot again.

 

Troubleshooting

  • Make sure you have followed the installation instructions especially when you have issues with certain domains while the others are working fine.
  • Use the debug version to collect log data when trying to track down problems. The kernel log messages can be retrieved with "log show --predicate "processID == 0" --debug" in order to retrieve kernel logs. Include the log data when asking for support or giving feedback. I'm an engineer, not a clairvoyant.
  • Don't copy and paste large amounts of log data to your post. Create an archive with the log data and attach it to your post. In case you don't want to make your log data publicly accessible, contact me via PM and I will provide you a mail address to send it directly to me. 
  • Delete the following files:
  • /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
  • /Library/Preferences/SystemConfiguration/preferences.plist
  • In Terminal run netstat -s in order to display network statistics. Carefully examine the data for any unusual activity like a high number of packets with bad IP header checksums, etc.
  • In case auto-configuration of the link layer connection doesn't work it might be necessary to select the medium manually in System Preferences under Network for the interface.
  • Use Wireshark to create a packet dump in order to collect diagnostic information.
  • Keep in mind that there are many manufacturers of network equipment. Although Ethernet is an IEEE standard, different implementations may show different behavior causing incompatibilities. In case you are having trouble try a different switch or a different cable.

 

Changelog

  • Version 1.1.0 (2021-04-29)
    • Changed version number to 1.1.0 to make it an official release.

 

  • Version 1.1.0d12 (2021-04-25)
    • Updated Linux sources to 9.005.01.
    • Fixed auto-negotiation for all speeds (including 2.5 Gigabit).
    • Added support for adaptive poll interval in 2.5 Gigabit mode.
  • Version 1.0.0 (2020-08-14)
    • Changed version number to make this the first official release.
  • Version 1.0.0d6 (2020-06-14)
    • Fixed chip recognition.
  • Version 1.0.0d3 (2020-04-20)
    • First working development release.

 

Getting the driver

 

 

Edited by Mieze
Update to version 1.1.0.
  • Like 17
  • Thanks 1
Link to comment
Share on other sites

In case there is a problem, please send me kernel logs. By the way, if the NIC doesn't get a link, try to select the medium manually as this seems to help.

  • Thanks 1
Link to comment
Share on other sites

Thank you...

Also on MSI Unify x570


Having trouble using the kext in OpenCore. Have loaded it to EFI/OC/Kexts and have it in config.plist, but when i load up the installer, the computer still doesn't connect to the internet and I’m unable to install the MacOS. Network Utility shows the RTL8125

 

how do I show you the kernel log?

9343D331-0F94-4BAD-BBFF-F21DB4552C14.jpeg

Edited by luckyducky8676
Link to comment
Share on other sites

@luckyducky8676 Goto System Preferences and choose the "Network" control panel. Please see the screenshots below and follow the instructions:

617537288_Bildschirmfoto2020-04-26um23_05_06.thumb.png.25bd2e6946c469e65b188dc1fd34ccb6.png

1774650180_Bildschirmfoto2020-04-26um23_05_20.thumb.png.64401d5dce6167c0d0b3dc9bab42d824.png

After clicking "OK" you also have to click "Apply" on the main screen of the "Network" control panel in order to activate the changes you made.

 

Mieze :cat:

  • Like 2
Link to comment
Share on other sites

I checked the code for auto-negotiation of the medium and found a stupid mistake which is now fixed in version 1.0.0d4. On my test machine, auto-negotiation works fine now. Attached to this post you'll find a prebuilt binary. Good luck testing!

 

Mieze :cat:

LucyRTL8125Ethernet-V1.0.0d4zip.zip

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...

I have a killer E3000 and I was able to use your kext to get my ethernet device to find under system preferences, but It say that there is no device even when its plugged in.

 

I tried to include everything you stated above. Thank you so much for making this kext, I hope we can figure out how to make it work!

 

Let me know if there is anything more that I need to add

 

Killer E3000.zip

Link to comment
Share on other sites

@Alectardy98 There is a simple solution: the driver isn't installed properly! By the way, there are a lot of ACPI errors in your logs which might result in hardware not working as expected.

Link to comment
Share on other sites

As your kernel logs show lots of ACPI errors, it's most likely an ACPI related error preventing the driver from being matched with the hardware. You should fix that first!

 

Mieze

Link to comment
Share on other sites

I am not sure how to send debug information, kernel seems to install and is present but disabled, I have tried to set to Manual with no progress. I would like to know how to compile from your download?

Screenshot 2020-05-16 at 23.56.12.png

Screenshot 2020-05-16 at 22.40.37.png

Screenshot 2020-05-17 at 01.01.44.png

 

Did you compile your version from the linux  

2.5G Ethernet LINUX driver r8125 for kernel up to 4.15 9.003.04 2020/03/11

 

and was this in linux os?

Edited by osxone
Link to comment
Share on other sites

Hello Mieze,

 

big thanks for this Kext... it´s flawless working here with MSI X299 Pro (https://de.msi.com/Motherboard/X299-PRO). 

But only with Catalina... is it possible to get it work under Mojave? In 10.14.6 the RTL8125 Port under "Ethernet Cards" or "Network" is non-existent, with Cat it´s there (like the other Mieze-driven Intel I219V ;-)). 

 

Thank you very much,

Zig

  • Like 1
Link to comment
Share on other sites

Please stop flooding me with useless screenshots. In case the driver doesn't work under Mojave, try to load it manually in Terminal with the command:

sudo kextutil -v 5 LucyRTL8125Ethernet.kext

and take a look at the messages. I assume that's a link error because I built the driver for Catalina.

 

Mieze :cat:

Link to comment
Share on other sites

 Share

×
×
  • Create New...