The behavior is pretty confusing. The story is about my Ethernet adapter on my retro computing ASUS laptop (2011 model). It currently has Windows 7 and Windows XP on two HDDs respectively. The problematic Ethernet adapter is RTL8168 (PCI, VEN_10EC, DEV_8168). It appears as "Realtek PCIe GbE Family Controller" in my Windows 7. Note that the name indicates that it is a Gigabit Ethernet adapter, and it actually is, when working properly (noted as Behavior A or Normal Behavior).
It entered some abnormal/faulty state, that the Ethernet was barely usable - two different behavior patterns found, see details below. I used the same method to get it out of such state what I call a "mitigation" since it does not look like a normal solution.
When in faulty state, the problem persists even after rebooting into different OS. It looks almost like that there is some non volatile memory on the network adapter that persisted some wrong configuration.
Goal
- If someone can explain why this could happen.
- Find a better way to either fix it completely, so it does not happen again; or fix it more elegantly when it happens.
How did the problem start
Previously, I installed the Ethernet driver downloaded from ASUS website for this laptop for Windows 7, version 7.038.0113.2011. It was not working correctly. "Not working correctly" in this post's context means that the network adapter seemingly randomly behaves in EITHER of the following ways:
- Behavior B: It shows "network cable unplugged" when cable is plugged, and it does not show this message but instead tries to connect when the cable is actually unplugged. In other words, cable plugged/unplugged status is reversed. Of course, in this way I am not able to connect to my LAN. My Gbps switch LED shows yellow (usually meaning that it is not at Gbps speed) for this laptop when this happens.
- Behavior C: It detects the cable correctly, but cannot work at 1.0 Gbps; Windows 7 LAN connection shows speed at 100 Mbps.. My Gbps switch LED shows yellow for this laptop (meaning that it is not at Gbps speed). The connection is also not stable and often gets interrupted for no reason for several seconds when transmitting continuous data like a big file copied over SMB.
Then I installed driver version 7.118.0511.2018, downloaded from some unofficial Realtek driver archive website (realtek.cz). It magically solves the problem and turned it back into Normal Behavior, and my Gbps switch shows green LED for this laptop.
Mitigation I found
Recently I decided to dual boot my old laptop with Windows XP. I install Windows XP and apparently it lacked a lot of drivers, including the Ethernet adapter driver, since Windows XP was released in 2001. When searching for drivers, I switched between Windows 7 and Windows XP multiple times, and its Ethernet adapter never had any issue (still in Normal Behavior).
After I installed the drivers I found, including the Realtek network adapter driver version 5.830.1204.2014, the Ethernet adapter shows Behavior B in Windows XP. What is more troublesome is that, after I reboot into Windows 7, it is still in Behavior B in Windows 7.
After many different attempts to fix it from software/hardware, here is the mitigation that I found that guarantees to work:
- Boot into Windows 7.
- Run
setup.exe
that comes with the 7.038.0113.2011 Windows 7 driver, and run "repair". It replaces the driver (rolls it back) with version 7.038.0113.2011. At this moment, my switch LED for this laptop turns green and it seems to start working, and Windows 7 LAN connection shows speed at 1.0 Gbps. Without rebooting (it does not ask for rebooting either), directly do the next step. - Run
setup.exe
that comes with the 7.118.0511.2018 Windows 7 driver, and run "repair". It replaces the driver (upgrades) with version 7.118.0511.2018. At this moment, my switch LED still shows green for this laptop, and Windows 7 LAN connection shows speed at 1.0 Gbps. It is functioning in Normal Behavior now. - I can reboot into Windows XP and back into Windows 7 as I wish, and both systems can show LAN at 1.0 Gbps speed, also tested working in Normal Behavior.
What I tried but did not work
When in Behavior B or Behavior C, what I have tried, but did not work:
- Just reboot into either Windows 7 or Windows XP.
- Turn off laptop power and turn it back on.
- In Windows 7, manually delete the Ethernet adapter from Device Manager, and invoke scan to let it discover it again.
- In Windows 7, manually delete the Ethernet adapter and check "remove driver" in Device Manager, and manually install the 7.118.0511.2018 driver.
What else I did that brought it into faulty state
When in Normal Behavior, what could break it into Behavior B or Behavior C:
- Reboot into a USB portable Linux OS called Porteus to perform operations irrelevant with network at all; then reboot back into Windows 7.
My guess
Not sure if this makes sense: The network adapter (built-in on the laptop motherboard) may have some non volatile memory, that gets written when an operating system installs a driver for the adapter. It happened in Porteus probably because such portable Linux always finds and configures hardware when it starts.
Other context
- This Ethernet adapter used to work perfectly in Windows 10, with the Windows 10 built-in driver.
- Never tested it in any Linux OS.