A New Driver for Realtek RTL8111 Due to the lack of an OS X driver that makes use of the advanced features of the Realtek RTL series I started a new project with the aim to create a state of the art driver that gets the most out of those NICs which can be found on virtually any cheap board on the market today. Based on Realtek's Linux driver (version 8.035.0) I have written a driver that is optimized for performance while making efficient use of system resources and keeping the CPU usage down under heavy load. Key Features of the Driver. Supports Realtek RTL8111/8168 B/C/D/E/F/G 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 under IPv4. Support for TCP/IPv6 and UDP/IPv6 checksum offload. Fully optimized for Mountain Lion (64bit architecture) but should work with Lion too. As of now there is no support for Snow Leopard but it can be added if someone will create the necessary patches.
Supports Wake on LAN. 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. Limitations. As checksum offload doesn't work with jumbo frames they are currently unsupported and will definitely never be. No support for 32bit kernels.
Installation Before you install the driver you have to remove any installed driver for RTL8111/8168. Goto /S/L/E and delete the old driver (Lnx2mac, AppleRealtekRTL8169, etc.). Recreate the kernel cache. Open System Preferences and delete the corresponding network interface, e. If you forget this step you might experience strange problems with certain Apple domains, iTunes and iCloud later.
Realtek Device Driver Download
Install the new driver and recreate the kernel cache. I recommend to use Kext Wizard or a similar utility for the installation. Reboot. Open System Preferences again, select Network and check if the new network interface has been created automatically or create it manually now.
Configure the interface. 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 found in /var/log/system.log. For Sierra and above use ' 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.
Check your BIOS settings. You might want to disable Network Boot and the UEFI Network Stack as these can interfere with the driver.
Double check that you have removed any other Realtek kext from your system because they could prevent the driver from working properly. Verify your bootloader configuration, in particular the kernel flags. Avoid using npci=0x2000 or npci=0x3000. 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. FAQ. How can I retrieve the kernel logs?. In Terminal type 'grep kernel /var/log/system.log'.
I want to disable Energy Efficient Ethernet (EEE) but I don't know how?. Take a look at the driver's Info.plist file. There you will find an option named enableEEE. Change its value from to. Don't forget to recreate the kernel cache after changing the value.. WoL from S5 doesn't work with this driver but under Windows it's working.
Is this a driver bug?. No it isn't, the driver is working as it should because OS X doesn't support WoL from S5. Current status. The driver has been successfully tested under 10.8.x and 10.9 with the B, C, D, E, F and G versions of the RTL8111/8168 and is known to work stable on these devices. Changelog. Version 2.2.2 (2018-01-21).
Force ASPM state to disabled/enabled according to the config parameter setting. Requires 10.12 or newer. Version 2.2.1 (2016-03-12):. Updated underlying linux sources from Realtek to 8.041.00. Added support for RTL8111H.
Implemented Apple’s polled receive driver model (RXPOLL). Requires 10.11 or newer. Support for older versions of OS X has been dropped. Version 2.0.0 (2015-06-21):. Uses Apple's private driver interface introduced with 10.8. Supports packet scheduling with QFQ.
Please note that 2.0.0 is identical to 2.0.0d2. Only the version number has changed. Version 1.2.3 (2014-08-23):. Reworked TSO4 and added support for TSO6. Version 1.2.2 (2014-08-44):. Added an option to disable Active State Power Management (ASPM, default disabled) as ASPM seems to result in unstable operation of some chipsets. Resolved a problem with Link Aggregation after reboot.
Added a workaround for the multicast filter bug of chipset 17 (RTL8111F) which prevented Bonjour from working properly. Version 1.2.0 (2014-04-24):.
Updated underlying linux sources from Realtek to 8.037.00. Improved interrupt mitigate to use a less aggressive value for 10/100 MBit connections. Version 1.1.3 (2013-11-29):. Improved transmit queue handling made it possible to reduce CPU load during packet transmission. Improved deadlock detection logic in order to avoid false positives due to lost interrupts. Version 1.1.2 (2013-08-03):. Improved SMB performance in certain configurations.
Faster browsing of large shares. Version 1.1.0 (2013-06-08):.
Support for TCP/IPv6 and UDP/IPv6 checksum offload added (can be disabled in Info.plist). Maximum size of the scatter-gather-list has been increased from 24 to 40 segments to resolve performance issues with TSO4 when offloading large packets which are highly fragmented. TSO4 can be disabled in Info.plist without rebuild. Statistics gathering has been improved to deliver more detailed information (resource shortages, transmitter resets, transmitter interrupt count). The interrupt mitigate settings has been changed to improve performance with SMB and to reduce CPU load. Configuration option added to allow for user defined interrupt mitigate settings without rebuild. Version 1.0.4 (2013-05-04):.
Moved setLinkStatus(kIONetworkLinkValid) from start to enable. Cleaned up getDescCommand. Version 1.0.3 (2013-04-25):. The issue after a reboot from Windows has been eliminated. Version 1.0.2 (2013-04-22):. Added support for rx checksum offload of TCP and UDP over IPv6.
Version 1.0.1 (2013-03-31):. Improved behavior when rx checksum offload isn't working properly. Adds the chipset's model name to IORegistry so that it will show up in System Profiler. Known Issues.
There are still performance problems with regard to SMB in certain configurations. My tests indicate that Apple's Broadcom driver shows the same behavior with those configurations. Obviously it's a more general problem that is not limited to my driver.
WoL does not work in certain configurations. Old systems with 3 and 4 series chipsets exhibit performance issues in recent versions of macOS because there is no optimized power management for these systems in macOS anymore as Apple dropped support for the underlying hardware a long time ago. In case you are affected, please upgrade your hardware or find an alternative solution because I have no plans for a workaround. Sorry, but I don't think that it's worth the effort. Getting the driver. The source code can be found here:. There is also a pre-build binary for Mavericks and Yosemite: Building from Source I'm using XCode 4.6.3 for development.
You can get a free copy of XCode after becoming a member of the Apple developer program. The free membership is sufficient in order to get access to development tools and documentation. Edited January 30 by Mieze. I've installed it in my hack (RTL8111E) and it loaded fine and detected the disconnected cable (I'm not using the LAN right now, just wifi).
Recently I've been testing Slice's new kext but had some issues with the latest version so I'll try yours a couple of days and report here. Kernel0: Ethernet RealtekRTL8111: EEE support enabled kernel0: Ethernet RealtekRTL8111: RTL8168E-VL/8111E-VL: (Chipset 16) at 0xffffff, xx:xx:xx:xx:xx:xx kernel0: RTL8111: Ethernet address xx:xx:xx:xx:xx:xx. In fact, there is a Linux driver that includes support for the 8105, and Slice even included it in the sources for his driver. I even tried to do something with it, since i'm familiar to C programming, but i lack the necessary knowledge of how to port it to OSX, so i got stuck. My driver has a clear cut separation between the OS X code and the linux code.
There are only a few interconnections, mainly when the driver calls hardware initialization routines. Assuming that Realtek's linux driver for their Fast Ethernet NICs has a similar architecture it shouldn't be a big deal for you to take my OS X code as a starting point for your development.
You would only have to rewrite the hardware dependent parts, like the outputPacket function and the interrupt handling routines. Maybe you'll also find a leaked datasheet of the 8105E at www.realtek.cz helping you to implement the transmit and receive routines. Finally I can use WOL!! My system have RTL8111E (GA X58A-UD3R motherboard) chip, it works perfectly now. First time when I try this kext follow your guide in post #1. It shows connected in system profiler and System Preference, but when I try to use internet it's not connect to internet. One of my friend informed me to shutdown the system instead of restart after install this kext.
I shutdown system couple minutes after install new kext and boot again, now it works perfectly. New kext makes my system use WOL. I couldn't use WOL when I use old kext. Thanks, Mieze!!
This could be a problem with the kernel cache, because /Extra/Extensions is usually not taken into account when the kernel cache is recreated by Apple provided tools. Better install it in /S/L/E to avoid trouble! Mieze Thanks for posting this.
I just added the information to the troubleshooting section. Mieze On my installer USB, i have the kexts in /extra, with the kernel patcher module. My problem is that on the first boot, osx uses the audio kext, fakesmc, sata (all inside /extra) only realtek kexts does not load, only after i copy it to s/l/e. My wish was to have the internet on first boot, to configure osx from the initial wizard. I've tried your driver, the download is perfect, but i have around 20kb/s upload if i try to put a file on a server or on my network, something is wrong with the upload.
I want to patch AppleHDA but I cannot find any post talking about ALC3220, I Tried AppleALC (ALC280 - layout-id 11), and AppleHDA Patcher v1.9 (ALC280 - layout-id 5) with no luck. I Also Tried VodooHDA but it is very buggy an unstable! Hello everyone, as you can see in the title, I'm having problems with the graphics driver card (I think). Because when I log in for example, the screen start showing to me like some blank lines and then they go away. I think it could be some problem related to drivers, but when I go to (Apple Icon), About this Mac it told me the right graphics card, Gigabyte 210 1024MB. What could I do to solve this problem?, when I browse in the internet it happens those glitches in my screen.
If you want the specifications of my computer are these: HP Compaq 8000 elite sff Intel Core Duo E7500 Gigabyte GeForce 210 4GB RAM 1333MHz Thank you for all your help, regards. KX AUDIO DRIVER MOD Hi guys i am a small developer, i really like to use my sound blaster cards on my machines and i love also coding, so when i find the source code for the kx audio driver on git hub and then Eugene, the creator of kx audio driver decided to no longer maintain the project, i decided to start working on a mod of this driver. With my mod, created starting from the sources of the last version of kx audio driver, and also by using apple developer documentation for pci and audio drivers as reference, i am working to achieve 2 things mainly: get all the cards supported by the driver to work with all the recent versions os macOS and add support for other cards that are not officially supported by the driver that works or could, but needs to be more properly supported. This driver is made to support cards based on the E-mu 10k1, 10k2 and similars (like what is used by audigy rx and audigy 4 cards). Supported cards are: - most of the sound blaster live!, live! 5.1 and live! Up guys, I've been hockintoshing for a long while, since Leopard to be exact and last week I replaced my Nvidia 9600GT with a brand new 1050 Ti.
I have a Lion and El Capitan both were running fine before the 1050 Ti arrived, I read that my new Geforce needs new drivers that are readily supported by Sierra and High sierra. So I deleted Capitano and installed High Sierra 10.13 using Niresh distro. All went well and smooth and all my hardware was recognized the only problem left is this: My Nvidia driver 'WebDriver-378.10.10.10.15.121' installs well with SIP enabled (aka 0x0 with clover) and after reboot the system is perfect with Nvidia web driver running fine However after rebooting the Default slow OSX graphics driver is loaded and stays that way until I resinstall the web driver. It's very annoying, I just can't make it work, I've been reading posts and tutorials for more that a week, nothing works, help is needed Things I've tried already: 1.
Boot using different clover revisions as old as 3911 and as new as 3509 (the latest) 2. Tried with clover in the EFI partion and/or Boot partition 3. Tried using different combos of nvdadrv, nvidia webdriver, inject stuff (all possible combos in boot and graphics settings) 4. Tried all available kext (Lilu, Nvidia fixup, Nvidiaegpusupport, NVlibvalfix.) single and combos - in clover kext folder and L/E folder 5.
Tried all different NVram recommendation - problem persisted even when nvram.plist is present or not 6. Tried running the postscripts from the driver installer pkg 7. Tried installing the driver via webdriver.sh 8.