Current version: 1.0.19 1.0.15 (as of 2018-12-10)
Realtek GBE USB
- Gigabit ethernet
- USB hub
- Launch
System Preferences
->Network
- See
USB 10/100/1000 LAN
- https://i.imgur.com/Bm7D0Ld.png (mirror)
- https://i.imgur.com/wcMZFh8.png (mirror)
- Launch
System Information
(also known asSystem Profiler
) ->Hardware
->USB
- https://i.imgur.com/NJi9yC4.png (mirror)
- Launch
System Information
(also known asSystem Profiler
) ->Software
->Extensions
- https://i.imgur.com/64QCxxS.png (mirror)
- Launch a terminal/shell
ioreg -p IOUSB -w0
ioreg -p IOUSB -w0 -l
: For more info
+-o Root <class IORegistryEntry, id 0x100000100, retain 14>
+-o Root Hub Simulation Simulation@14000000 <class AppleUSBRootHubDevice, id 0x1000002fa, registered, matched, active, busy 0 (6 ms), retain 13>
+-o USB2.0 Hub @14100000 <class AppleUSBDevice, id 0x1000002fb, registered, matched, active, busy 0 (43 ms), retain 14>
+-o Apple Internal Keyboard / Trackpad@14400000 <class AppleUSBDevice, id 0x1000002ff, registered, matched, active, busy 0 (96 ms), retain 22>
+-o USB3.0 Hub @14500000 <class AppleUSBDevice, id 0x100000363, registered, matched, active, busy 0 (54 ms), retain 15>
| +-o USB 10/100/1000 LAN@14540000 <class AppleUSBDevice, id 0x100000418, registered, matched, active, busy 0 (73 ms), retain 18>
+-o Bluetooth USB Host Controller@14300000 <class AppleUSBDevice, id 0x1000003d8, registered, matched, active, busy 0 (58 ms), retain 24>
Terminal output snippet from `ioreg -p IOUSB -w0 -l`
+-o USB3.0 Hub @14500000 <class AppleUSBDevice, id 0x100000363, registered, matched, active, busy 0 (54 ms), retain 15>
| | {
| | "sessionID" = 2480892594
| | "iManufacturer" = 1
| | "bNumConfigurations" = 1
| | "idProduct" = 2066
| | "bcdDevice" = 37009
| | "Bus Power Available" = 900
| | "USB Address" = 5
| | "bMaxPacketSize0" = 9
| | "iProduct" = 2
| | "iSerialNumber" = 0
| | "bDeviceClass" = 9
| | "Built-In" = No
| | "locationID" = 340787200
| | "bDeviceSubClass" = 0
| | "bcdUSB" = 768
| | "USB Product Name" = "USB3.0 Hub "
| | "PortNum" = 5
| | "non-removable" = "no"
| | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| | "bDeviceProtocol" = 3
| | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
| | "IOPowerManagement" = {"DevicePowerState"=0,"CurrentPowerState"=3,"CapabilityFlags"=65536,"MaxPowerState"=4,"DriverPowerState"=3}
| | "Device Speed" = 3
| | "USB Vendor Name" = "VIA Labs, Inc. "
| | "idVendor" = 8457
| | "IOGeneralInterest" = "IOCommand is not serializable"
| | "IOClassNameOverride" = "IOUSBDevice"
| | }
| |
| +-o USB 10/100/1000 LAN@14540000 <class AppleUSBDevice, id 0x100000418, registered, matched, active, busy 0 (73 ms), retain 18>
| {
| "sessionID" = 3379212797
| "iManufacturer" = 1
| "bNumConfigurations" = 2
| "idProduct" = 33107
| "bcdDevice" = 12288
| "Bus Power Available" = 900
| "USB Address" = 8
| "bMaxPacketSize0" = 9
| "iProduct" = 2
| "iSerialNumber" = 3
| "bDeviceClass" = 0
| "Built-In" = No
| "locationID" = 341049344
| "bDeviceSubClass" = 0
| "bcdUSB" = 768
| "USB Product Name" = "USB 10/100/1000 LAN"
| "PortNum" = 4
| "non-removable" = "no"
| "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| "bDeviceProtocol" = 0
| "IOUserClientClass" = "IOUSBDeviceUserClientV2"
| "IOPowerManagement" = {"ChildrenPowerState"=4,"DevicePowerState"=0,"CurrentPowerState"=4,"CapabilityFlags"=32768,"MaxPowerState"=4,"DriverPowerState"=4}
| "Device Speed" = 3
| "USB Vendor Name" = "Realtek"
| "idVendor" = 3034
| "IOGeneralInterest" = "IOCommand is not serializable"
| "USB Serial Number" = "002427FE48F6"
| "IOClassNameOverride" = "IOUSBDevice"
| }
|
- Launch a terminal/shell
ifconfig
en4: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=2b<RXCSUM,TXCSUM,VLAN_HWTAGGING,TSO4>
ether 00:24:27:fe:48:f6
inet 192.168.1.135 netmask 0xffffff00 broadcast 192.168.1.255
media: autoselect (1000baseT <full-duplex,flow-control>)
status: active
The driver is located at
/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleRTL815X*.kext
/Library/Extensions/AppleRTL815X*.kext
Here are the namespaces:
com.realtek.driver.AppleRTL815XEthernet
com.realtek.driver.AppleRTL815XComposite
See http://osxdaily.com/2015/06/24/load-unload-kernel-extensions-mac-os-x/
With normal operation with only the network cable plugged in, I only see com.realtek.driver.AppleRTL815XEthernet
loaded.
# Unload
sudo kextunload /Library/Extensions/AppleRTL815XEthernet109.kext
sudo kextunload /Library/Extensions/AppleRTL815XComposite109.kext
# Load
sudo kextload /Library/Extensions/AppleRTL815XEthernet109.kext
sudo kextload /Library/Extensions/AppleRTL815XComposite109.kext
# Find if loaded
kextstat | grep com.realtek.driver.AppleRTL815XEthernet
kextstat | grep com.realtek.driver.AppleRTL815XComposite
Perhaps clear the Kernel cache
sudo rm -rf /System/Library/Caches/com.apple.kext.caches
I got a new USB ethernet adapter because the old one had lots of issues (hence the gist in the first place). But it still uses the same Realtek 8153 chip although am using the native driver though now, AppleUSBECM.kext
In terms of my previous issues, I remember that when I clicked the little lock in the browser to view the cert, it would crash my computer. But the disconnects that required a restart were the bigger issue. (personal reference link)
I'm currently running macOS Mojave 10.14
There might be something Apple can do. I’m not an expert on this kind of systems programming. But my sneaking suspicion is that a few conditions are being conflated to make performance with CDC-ECM Ethernet not much better than simply using WiFi on macOS particularly when used with Apple Silicon.
CDC-ECM is definitely more inefficient than CDC-NCM and offloads quite a bit of processing to the CPU. This would be the case on all operating systems. But some operating systems may implement the protocols in such a way that CDC-ECM devices aren’t impacted enough to hinder gigabit speeds.
Additionally, on Apple Silicon where we have Performance and Efficiency cores, it appears that the Efficiency cores are heavily utilized — intentionally — by the CDC-ECM driver, with 2 of the performance cores getting moderate activity as well. Again, I’m not an expert here so I’m just speculating. But it’s possible that the Efficiency cores are simply not powerful enough to handle CDC-ECM at gigabit speeds whereas a Windows/Linux system, presumably also running Intel/AMD CPUs, would be fine using regular CPU cores.
In general, the move to Apple Silicon has produced a few performance peculiarities for USB drivers in certain areas. I have two Thunderbolt docks: one TB3 and one TB4. I’ve also confirmed that the TB4 dock connects in USB4 mode (confirmed by System Information) whereas my TB3 dock connects in Thunderbolt mode. TB3/TB4 and USB4 are closely related but absolutely not the same thing even though most online sources say Thunderbolt 3/Thunderbolt 4 = USB4. Not quite… they don’t even use the same underlying signalling rate. I’m not certain what the situation is on the M1 Pro/Max which fully support Thunderbolt 4 unlike the original M1. It’s possible that they would work in Thunderbolt mode. Anyhow, I’ve noticed that external SSDs connected via USB to my TB4 dock fail to utilize a protocol called UASP. This is similar to the ECM/NCM situation. UASP was added to USB in order to prevent excessive CPU overhead so that full USB 3.0 speeds could be reached by external drives. Without UASP, the performance of these external SSDs suffers. Interestingly enough, if I use the TB3 dock the USB drivers do work in UASP mode and performance is substantially better. This may seem off-topic, but it’s an indicator that perhaps there are other USB driver issues in macOS with Apple Silicon. I’m just not holding my breath that they will fix this Ethernet issue given there are workarounds, it is such a niche problem to them, and the problem may go away as the Efficiency cores become more powerful.