Jump to content

New Driver for Realtek RTL8111


Mieze
1,593 posts in this topic

Recommended Posts

Hello Mieze.
A curious behaviour of my rig, here's the scenario:
Hardware

  • Asus PRIME Z490-P Bios v1602 (Realtek® RTL8111H)
  • Intel i9 10900K
  • M.2 Samsung 1TB
  • Intel® UHD Graphics 630 (waiting for AMD RX 5700 XT)

Software

  • Opencore 0.6.7
  • Big Sur 11.2.2
  • Sys Def iMac20,2
  • Latest Realtek RTL8111.kext release (Debug version)

A brief timeline of the events:

  • phase0 - Fresh install, a few restart, install Wireshark, reset NVRAM a couple of reboot and shut down
  • phase1 - Power ON, wireshark capture1, netstat1, ioreg1, log show --predicate "processID == 0" --debug1, then shut down
  • phase2 - Wake on lan, wireshark capture2, netstat2, ioreg2, log show --predicate "processID == 0" --debug2, start wireshark capture3, then sleep
  • phase3 - wol from sleep, save wireshark capture3, netstat3, ioreg3, log show --predicate "processID == 0" --debug3, then shut down
  • phase4 - Power ON (NOT from wol), wireshark capture4, netstat4, ioreg4, log show --predicate "processID == 0" --debug4

From phase1 to phase2 wol from shut down works.
From phase3 to phase4 wol from shut down doesn't work.

 

At this link you can have:

  • Wireshark capture.pcapng (one for each phase)
  • IOReg (one for each phase)
  • log show --predicate "processID == 0" --debug (one for each phase)
  • netstat -s (one for each phase)
  • EFI folder
  • Ethernet and energy saver screenshots
  • UEFI Settings
  • pmset -g

Did you ever noticed something like this?
Thank you!

g.

Link to comment
Share on other sites

Hello giacomoleopardo,

 

WoL has always been a troublemaker. As macOS only supports WoL from S3, the driver doesn't support WoL from S5 officially and as I normally activate the ErP option in BIOS, WoL form S5 has never been a concern of mine.

 

When the machine is going to sleep, the OS tells the driver to enable or disable WoL. It's the driver's responsibility to program the hardware to generate a wakeup event on reception of a magic packet. This includes negotiation of a reduced link speed (10Mbit or 100Mbit), which is an operation that might fail. For WoL to work as expected, it's also crucial to have proper ACPI tables. Although the NIC generates wakeup events, the event itself gets handled by the UEFI / OS which is the reason why UEFI settings may come into play.

 

In your case, there might be a race condition between the driver, which disables WoL when the system is shutting down or restarting, and the UEFI trying to enable it.

 

Mieze 

Link to comment
Share on other sites

Thanks! This is something totally new to me. I mean, I've never dealt with wol before, and now I'm curious.

What is, in your opinion, the difference between a shut down after a wake from sleep rather than a shut down arriving from a session without sleep/wake? I'm asking because that seems to be the only variable that influences full wol from shut down.

And I know: maybe the question itself would be nonsense to you, but that's because I really am new to all of this!

PS: I might add that with ErP Disabled, ErP Enabled in S4+S5 or ErP Enabled in S5, the system behavior is always the same, because the Power On By PCI-E option doesn't go in disable state automatically after enabling ErP

Edited by giacomoleopardo
Link to comment
Share on other sites

@giacomoleopardo Sorry for the delay, but I've been busy with the preparations for a seminar during the last days and forgot to answer. Well, after checking the code, the difference between both scenarios is the fact that when WoL is enabled and the machine goes to sleep, the driver programs the NIC's WoL related registers for WoL while the driver doesn't touch them at all, if there's no sleep/wake-cycle between boot and shutdown. Unfortunately, there is no public documentation of the NIC available, so that I don't know exactly what these operations do to the chip and in which way they influence WoL from S5 having been enabled by the UEFI.

 

Mieze :cat:

Link to comment
Share on other sites

I know it sounds stupid to come here without debugs and all, but i just never thought it would be a widespread problem and never bothered, just kept using 2.2.2 ... i have never had success with any later version after that one on any machine i built / serviced in my life as hackintosher.

Now that 2.4 is out and still not working on my main rig i just wanted to share my experience. Still 2.2.2 works fine on catalina 'ill keep using that...

  • Like 1
Link to comment
Share on other sites

6 hours ago, WhenMusicAttacks said:

i have never had success with any later version after that one on any machine i built / serviced in my life as hackintosher.

I am aware of the fact that that there is a firmware issue with version 2.3.0 at above that's causing trouble sometimes. I investigated the problem, I did my best to mitigate the issue but after all it's still a firmware problem and resolving it is beyond my scope.

 

Sorry for being harsh, but if anybody comes up with such a general statement like the one above, I know that the cause of the problem is located in front of the computer.

 

Mieze :cat:

Link to comment
Share on other sites

6 hours ago, Mieze said:

I am aware of the fact that that there is a firmware issue with version 2.3.0 at above that's causing trouble sometimes. I investigated the problem, I did my best to mitigate the issue but after all it's still a firmware problem and resolving it is beyond my scope.

 

Sorry for being harsh, but if anybody comes up with such a general statement like the one above, I know that the cause of the problem is located in front of the computer.

 

Mieze :cat:


These two sentences contradict each other, but still - it's your own free contribution, just thanks for sharing a stable build in the past :)it's just funny how a programmer can be so unreasonable in real life!

Link to comment
Share on other sites

On 3/11/2021 at 11:06 PM, Mieze said:

@giacomoleopardo Sorry for the delay, but I've been busy with the preparations for a seminar during the last days and forgot to answer. Well, after checking the code, the difference between both scenarios is the fact that when WoL is enabled and the machine goes to sleep, the driver programs the NIC's WoL related registers for WoL while the driver doesn't touch them at all, if there's no sleep/wake-cycle between boot and shutdown. Unfortunately, there is no public documentation of the NIC available, so that I don't know exactly what these operations do to the chip and in which way they influence WoL from S5 having been enabled by the UEFI.

 

Mieze :cat:

Thanks for always being there!

  • Like 1
Link to comment
Share on other sites

@giacomoleopardo I've been thinking about a method to make WoL from S5 work when it has been enabled by the UEFI, but still haven't found a way to do this without causing trouble for other users. Besides that, it would only work for on-board NICs.

 

Mieze :cat:

Link to comment
Share on other sites

  • 4 weeks later...

@jinbingmao I'm not a full service provider and I have no time to explain everything to everybody over and over again, in particular if it's beyond the scope of the driver.

 

Mieze :cat:

Link to comment
Share on other sites

  • 2 weeks later...

Anybody having trouble with auto-configuration with version 2.3x or 2.4.x might want to try the attached build (version 2.4.2d0) in which I completely redesigned medium selection and it looks like I fixed the issue. Please report back, if it resolved your problems too! Good luck testing!

 

Mieze :cat:

RealtekRTL8111-V2.4.2d0.zip

  • Like 1
  • Thanks 4
Link to comment
Share on other sites

On 4/23/2021 at 5:08 PM, Mieze said:

Anybody having trouble with auto-configuration with version 2.3x or 2.4.x might want to try the attached build (version 2.4.2d0) in which I completely redesigned medium selection and it looks like I fixed the issue. Please report back, if it resolved your problems too! Good luck testing!

 

Mieze :cat:

RealtekRTL8111-V2.4.2d0.zip 138.98 kB · 29 downloads

Work 100%, thank you

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

I just wanted to let you know that I updated the prebuilt binary in the download section to version 2.4.2. Have fun!

 

Mieze :cat:

  • Thanks 4
Link to comment
Share on other sites

  • 4 weeks later...
On 4/23/2021 at 10:08 PM, Mieze said:

Please report back, if it resolved your problems too! Good luck testing!

@Mieze I have a strange behaviour here documented by this screen recording. The video is in HEVC so in the forum it might be not playable, QuickTime should be able to handle it (right click, save as)

 

At 00:57 you can see a strange disconnection. Could this be driver related? I'm on 2.4.2 and I've never had this issue before

 

 

 

 

Some additional context:

- In the test I'm pinging 192.168.2.1 which is the gateway

- I use Static IP configuration (usually on 192.168.2.15, there's no IP confict otherwise macOS would report that once it boots, but although I changed to 192.168.2.16 in the video the problem was persisting as it did with 192.168.2.15)

- The cable is working perfectly, I tested it on other OSes, it was untouched during the test

- I'm on a gigabit switch and router

- On my local network there's only one DHCP server (range is from 192.168.2.100 to 192.168.2.150)

- No other clients were trying to connect to the local network

Link to comment
Share on other sites

@1Ale1 Try to select the medium manually and find one which works. Basically it boils down to trial and error. I've got a similar issue with an original 2011 Mac mini attached to a Netgear R7800.

 

Mieze

Link to comment
Share on other sites

Thanks @Mieze I found that the issue happened on Linux too, I updated my router firmware and now everything is fine.

 

 

Little ot, I have an intel 8086:10de (Intel 82567-LM3) card, is it compatible with intelmausiethernet? Where can I find the specific device-ids?

 

Am I stuck with this driver since this is the only instance where the 10DE device-id is found?

https://github.com/chris1111/AppleIntelE1000e/blob/master/hw.h#L73

  • Thanks 1
Link to comment
Share on other sites

2 minutes ago, 1Ale1 said:

es that is an Onboard NIC, from an old HP Q43/Q45 chipset

This is a chipset from 2008. It's has never been supported because it's too old. Sorry!

 

Mieze :cat:

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour Mieze,

 

 I must confess that in spite of your great efforts to improve this extension, I am still in trouble with Ethernet

on my Asus Z490-P mobo with Catalina and OpenCore with an I9-10850K CPU.

Make the story short : even after a lot of trials and mistakes, the Ethernet card does not show up.

I run RealtekRTL8111.kext v2.4.2, the very last one, I think.

I was able to connect thru a WiFi dongle though, which is not so bad but slow anyway.

 

One simple question to begin with : should I remove any other Ethernet targeted extension like :

IntelMausi.kext, IntelMausiEthernet.kext, FakePCIID.kext, FakePCIID_Intel_I225-V.ktext,

or some *E2000* or *E1000* kext ?

 

If I have to keep one or some of them together with the Realtek, which one specifically ?

 

Many Thanks,  Regards,  G.G.

Link to comment
Share on other sites

×
×
  • Create New...