Skip to content

Instantly share code, notes, and snippets.

@MadLittleMods
Last active March 11, 2024 05:19
Star You must be signed in to star a gist
Save MadLittleMods/3005bb13f7e7178e1eaa9f054cc547b0 to your computer and use it in GitHub Desktop.

Realtek 8153

Download

Current version: 1.0.19 1.0.15 (as of 2018-12-10)

https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-usb-3-0-software

http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=56&Level=5&Conn=4&DownTypeID=3&GetDown=false

Realtek GBE USB

  • Gigabit ethernet
  • USB hub

Gather Info




  • 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

Reload OSX driver (kext)

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 and use the native driver

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

@LeDominik
Copy link

LeDominik commented May 4, 2022

I had exactly those sudden hangs with the Anker 1Gbit RT8153 based adapter (ECM driver) and just couldn't figure out the source of the problem... As I couldn't get the Plugable over here in continental Europe, I got one from wavlink with RTL8156B for ~ €30. Driver is now NCM and everything looks smooth... I'm on Monterey (x86 MBP)

@eduardox23
Copy link

this shit is annoying as fuck, I got a Baseus hub with this realtek chipset on a MacBook Pro intel 2018 running monterey and its overheating the hub, its so hot that I barely can remove it with my own hands. Already tried the Realtek website driver and nothing

@alin-simionoiuDE
Copy link

I can confirm that Anket 2.5 Gbit Adapter breaks Airplay 2.....in Music app. i can send the system sound to my HomePod, I just can't select my HomePod in Music app. I don't know what in the world the Music app is doing different than what the system sound is doing.

same exact problem with Plugable adapter. running 12.4

yes, this shit is very annoying.

@omgdevops
Copy link

omgdevops commented May 21, 2022

@43n79w
Stumbling across this a few months later; this is tremendously helpful. Thanks for taking the time to write this up.

@dylanneild
Copy link

I can confirm that Anket 2.5 Gbit Adapter breaks Airplay 2

Same issue here. Pluggable 2.5Gbps adapter works fine for most applications but breaks Airplay 2.

@rfpm
Copy link

rfpm commented Jul 22, 2022

Incompatible architecture: Binary is for x86_64, but needed arch arm64e
MacOs M1 Monterey 12.1

Exact same issue but on 12.5

@tobsen
Copy link

tobsen commented Jul 24, 2022

I tried the Anker 2.5 Gbit Adapter, wich also uses the Realtek. All works fine, except Airplay 2. Selecting a HomePod in Music immediately throws an error dialog without hitting play. This happens on may M1 and Intel MacBook. AirPlay 1 seems to work.

This is also not fixed on 12.5

@sarabveer
Copy link

sarabveer commented Aug 20, 2022

I am using a Dell U2723QE monitor which has an Ethernet port on the USB bus. It is a Realtek RTL8153 (0x0bda 0x8153) and the driver in use is the NCM driver (com.apple.driver.usb.cdc.ncm).

image

A bit of a downgrade from the Intel I210 chip in my Thunderbolt dock, but since its NCM it should be okay.

EDIT: Seems like VLANs are not supported.

@ghazel
Copy link

ghazel commented Aug 20, 2022

Instead of screenshots, the command line for that is: system_profiler SPEthernetDataType

    USB 10/100/1000 LAN:

      Bus: USB
      Vendor Name: Realtek
      Product Name: USB 10/100/1000 LAN
      Vendor ID: 0x0bda
      Product ID: 0x8153
      USB Link Speed: Up to 5 Gb/s
      Driver: com.apple.DriverKit.AppleUserECM
      BSD Device Name: en6
      MAC Address: 00:00:00:00:00:00
      AVB Support: No

@dani190
Copy link

dani190 commented Aug 22, 2022

Anyone noticing on 12.5.1 with Realtek 8153 chips that internet speeds are improved? I am basically no longer seeing a bottleneck like I did in the past and can nearly max out my gig connection now.

@43n79w
Copy link

43n79w commented Aug 22, 2022

@dani190 throughput does appear to be better for the ECM driver in 12.5.1 but it still can't quite saturate my gigabit connection like the NCM driver can. But it's substantially improved and is within 80-100 Mbps of the NCM driver now. On my M1 Mac, CPU utilization is still a lot heavier in 12.5.1 with an 8153 chipset running the ECM driver compared to an 8156 chipset running the NCM driver. That would be expected given the difference between ECM and NCM. The impact may not make a practical difference to some people so it's great that throughput has increased. On my end, the CPU spikes with the ECM driver were causing audio glitches (e.g., small audio blips and dropouts) when trying to do other tasks that taxed the CPU heavily. These audio issues go away entirely for me when running the NCM driver.

@dani190
Copy link

dani190 commented Aug 22, 2022

@43n79w I wonder what they did to improve it but yes agreed. Practically speaking you probably won't notice it. I was going to try that pluggable 2.5g adapter until I saw comments above about airplay 2 issues.

@dylanneild
Copy link

@dani190 As an FYI - the Pluggable 2.5Gbps has other issues. I was seeing streams of interface level errors while watching a netstat stream with the Pluggable 2.5Gbps units; specifically I had a machine where Time Machine backups over SMB (to a Synology NAS) wouldn't complete successfully. As soon as the Pluggable was removed (for an Intel chipset Thunderbolt 3 gigabit adapter) the errors went away and the backup succeeded.

I think the Pluggable unit and the associated 8156 chipset devices "work" only in so much as they load web pages and do basic networking. Any load or complex networking seems to expose major issues with them. Not sure if it's the Apple NCM driver or the hardware.

@ghazel
Copy link

ghazel commented Aug 22, 2022

an Intel chipset Thunderbolt 3 gigabit adapter

@simplepanda could you share the make and model of that adapter?

@spmacdonald
Copy link

Thanks so much for taking the time to do this analysis. I was lead to this thread after my Belkin Thunderbolt 3 pro dock USB ports would randomly stop working: ethernet, mouse, keyboard stop responding. Displays continue to work. Has anyone else experienced this as well? My theory is it is related to the Realtek drivers.

Just wondering if anyone knows how I can completely disable the Ethernet? Unload the kext?

Also has anyone found a reliable ethernet dongle? Preferably PCIe instead of USB?

@knutsenm
Copy link

I was lead to this thread after my Belkin Thunderbolt 3 pro dock USB ports would randomly stop working: ethernet, mouse, keyboard stop responding. Displays continue to work. Has anyone else experienced this as well? My theory is it is related to the Realtek drivers.

@spmacdonald I think you are experiencing a broader problem. Back when I reported on 22nd April, my "Belkin Thunderbolt 3 Express Dock HD" was only giving me grief from its Ethernet port.

However, its Ethernet has been quite reliable of late. It's using the "...AppleEthernetE1000" driver. I'm confused. Could that have changed from the ECM driver? I can't be sure that I checked the driver back in April - only that it was unreliable:

the network would periodically stop working. Undock / redock was required to get it restarted

@spmacdonald
Copy link

It is my best theory currently... any thoughts on what logs to check when it does happen? I have searched the system logs but have yet to find any smoking guns...

The driver I am using is

scott@m1pro ~ % system_profiler SPEthernetDataType
Ethernet:

    USB 10/100/1000 LAN:

      Bus: USB
      Vendor Name: Realtek
      Product Name: USB 10/100/1000 LAN
      Vendor ID: 0x0bda
      Product ID: 0x8153
      USB Link Speed: Up to 5 Gb/s
      Driver: com.apple.DriverKit.AppleUserECM
      BSD Device Name: en4
      MAC Address: e8:9f:80:1f:82:2d
      AVB Support: No

and

scott@m1pro ~ % kmutil showloaded |grep -i com.apple.driver.usb.cdc
No variant specified, falling back to release
  242    2 0xfffffe0007406560 0x4000     0x4000     com.apple.driver.usb.cdc (5.0.0) 86D85933-06EB-39C9-8412-6617EE430E11 <213 128 56 5 4 3 1>
  250    0 0xfffffe00074027e0 0x4000     0x4000     com.apple.driver.usb.cdc.acm (5.0.0) CC3A2E2B-0B0A-3071-9F8F-965FD21EDD0A <249 242 213 128 56 44 5 4 3 1>
  251    0 0xfffffe0007409ff0 0x4000     0x4000     com.apple.driver.usb.cdc.ecm (5.0.0) DDEC13AD-8186-35E5-A006-251C61501398 <242 213 56 55 45 5 4 3 1>

scott@m1pro ~ % kmutil showloaded |grep -i patch
No variant specified, falling back to release
  244    0 0xfffffe000740ee30 0x4000     0x4000     com.apple.driver.usb.realtek8153patcher (5.0.0) B2CC159C-E9DC-37BB-A6D9-8B0C6B980324 <56 5 4 3 1>

Today I tried to follow https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-usb-3-0-software and manually load the driver, but it refuses because it is x86 and I am on arm64.

For what its worth, this is my second Belkin dock, they replaced the first one, second one has exactly the same issue.

@sarabveer
Copy link

sarabveer commented Aug 30, 2022

Before I bought the monitor, I used to use this Cable Matters portable Thunderbolt dock (the DisplayPort version): https://www.amazon.com/Certified-Cable-Matters-Thunderbolt-Compatible/dp/B08DYDV5DD

It has an Intel i210 chip, never had a problem and even supports VLANs.

Another option is the use the Apple Thunderbolt 2 Ethernet dongle with the Apple Thunderbolt 2 to Thunderbolt 3 dongle. I bought them on eBay and it also works well.

@spmacdonald
Copy link

Thanks for the responses guys. I bought one of the pluggable 2.5g dongles and so far working well, much faster than before.

The USB ports freezing still happening though, today I made an effort to try and identify the log entries right around time of event and see:

2022-08-31 10:03:03.369994-0600 0xced      Default     0x0                  0      0    kernel: (com.apple.DriverKit.AppleUserECM.dext) <private>
2022-08-31 10:03:03.372126-0600 0xcaf      Default     0x0                  236    0    mDNSResponder: [com.apple.mDNSResponder:Default] <private>
2022-08-31 10:03:03.372132-0600 0xcaf      Default     0x0                  236    0    mDNSResponder: [com.apple.mDNSResponder:Default] <private>
2022-08-31 10:03:03.372135-0600 0xcaf      Default     0x0                  236    0    mDNSResponder: [com.apple.mDNSResponder:Default] <private>
2022-08-31 10:03:03.373084-0600 0x14a06e   Default     0x0                  1      0    launchd: [system/com.apple.DriverKit.AppleUserECM.data-0x100000b2d [276]:] exited due to exit(0)
2022-08-31 10:03:03.373103-0600 0x14a06e   Default     0x0                  1      0    launchd: [system/com.apple.DriverKit.AppleUserECM.data-0x100000b2d [276]:] service only configured to run once, removing
2022-08-31 10:03:03.373106-0600 0x14a06e   Default     0x0                  1      0    launchd: [system/com.apple.DriverKit.AppleUserECM.data-0x100000b2d [276]:] service state: exited
2022-08-31 10:03:03.373113-0600 0x14a06e   Default     0x0                  1      0    launchd: [system/com.apple.DriverKit.AppleUserECM.data-0x100000b2d [276]:] internal event: EXITED, code = 0
2022-08-31 10:03:03.373117-0600 0x14a06e   Default     0x0                  1      0    launchd: [system/com.apple.DriverKit.AppleUserECM.data-0x100000b2d [276]:] job state = exited
2022-08-31 10:03:03.373120-0600 0x14a06e   Default     0x0                  1      0    launchd: [system:] service inactive: com.apple.DriverKit.AppleUserECM.data-0x100000b2d
2022-08-31 10:03:03.373131-0600 0x14a06e   Default     0x0                  1      0    launchd: [system:] removing service: com.apple.DriverKit.AppleUserECM.data-0x100000b2d
2022-08-31 10:03:03.373174-0600 0x14a06e   Default     0x0                  1      0    launchd: [system/com.apple.DriverKit.AppleUserECM.data-0x100000b2d [276]:] internal event: PETRIFIED, code = 0
2022-08-31 10:03:03.373184-0600 0x14a06e   Default     0x0                  1      0    launchd: [system/com.apple.DriverKit.AppleUserECM.data-0x100000b2d [276]:] job state = removed
2022-08-31 10:03:03.373188-0600 0x14a06e   Default     0x0                  1      0    launchd: [system/com.apple.DriverKit.AppleUserECM.data-0x100000b2d [276]:] service state: not running

Not sure this will help anyone, just trying to add to the conversation in case it is useful

@thomasjpr
Copy link

Just seeing the comments here about AirPlay 2 and the Realtek chipset. This issue is years old, and not strictly a Realtek issue. Thunderbolt 10GbE adapters which use the Aquantia chipset exhibit the same issues with AirPlay. It does not affect Macs which have the Aquantia chip built-in (like the Mac mini, or the Mac Pro.) Some sort of bug exists that prevents macOS from using AirPlay 2 with certain ethernet chipsets.

@melyux
Copy link

melyux commented Sep 14, 2022

@thomasjpr I switched to an AX88179A chipset adapter (gigabit) and it works great with an NCM driver on Macs, but I noticed it didn't discover some of the mDNS/Bonjour services that Wi-Fi and ECM driver-using ethernet adapters can discover. I wonder if it's related.

@sarabveer
Copy link

mDNS/Bonjour is working fine for me on the NCM driver.

@tobsen
Copy link

tobsen commented Sep 14, 2022

@sarabveer This seems not to be a Bounjour issue. This only happens with AirPlay 2 targets and immediately by selecting the target in the Music/iTunes/QuickTime menu without playing any media. AirPlay 1 targets work without any problem.

@whip1ash
Copy link

whip1ash commented Oct 7, 2022

What works for me to install the latest Realtek driver:

  1. Disable SIP: Hold down Command-R during startup - Once started, open Terminal - type "csrutil disable" - Reboot
  2. Install RTUNICv1.0.22.dmg
  3. During installation it will ask for alleviated privileges: Open System Preferences -> Security & Privacy -> Click "Allow"
  4. Enable SIP: Reboot and Hold down Command-R during startup - Once started, open Terminal - type "csrutil enable" - Reboot

Having installed the Realtek driver also solved the issue of my Philips monitor (with built-in RTL8153 NIC) locking-up my network while going into sleep mode.

You can check if the driver loaded well by running: System Information -> Hardware -> Ethernet Cards -> Realtek... It should say "/Library/Extensions/AppleRTL815XEthernet110.kext" on "Location".

I met same situation but not solved. I have 'system extension blocked ' pop iteam when installation but not "Allow" buttoun in "Security & Privacy".
MacOs version: 12.5.1 (21G83)
rtl8153 in dell dell u2723qx

@spmacdonald
Copy link

Are you on a m1 Mac? that driver is x86 only

@whip1ash
Copy link

whip1ash commented Oct 7, 2022

Are you on a m1 Mac? that driver is x86 only

@spmacdonald I'm on m1 pro. I have to wait for the official update.

@simongcc
Copy link

I have just got a Realtek 8153 chipset based external lan card in type-c interface. The connection and system information shows that it is in giga lan connection. But the practical test indicated that it is actually around 100 speed of transfer.
The official realtek have no driver yet for macOS 12.6.1 with M1

Most likely the speed limitation or differ is due to the driver limitation.

@briantopping
Copy link

@simongcc There's a lot of details missing in your inquiry, but I can advise you that I have been using the Apple driver that ships with the operating system with no problem since ~12.5.

I'm wondering if you've tried it and if so, whether you might have some conflicting configuration that is stopping the Apple driver from working properly?

@simongcc
Copy link

@briantopping Thanks for your reply. After posting that, I just found out that I could have run a couple of other tests.
Because the tests I run was for the Lan connection speed transferring files to network NAS. The result could be falsy because there are many factors affecting this. I have done a few tests today with different lan cables by plugging in to the broadband modem directly and bypassing the router to eliminate all the factors. I use speedtest Mac App to get the result. It is around 900mpbs so it is quite acceptable with small loss and nearly 90% of the giga lan for an internet network with a giga lan broadband.

Sorry for using your time and making troubles.
The new type-c USB land card with Realtek 8153B proved to be working properly with the default Apple driver in macOS 12.6.1 M1
The brand that I have bought is from Taobao. I bought its usb type-c connector before which is of good quality so I give a try for other peripherals. My suspect was due to the to the negative comments that I have read in the product feedback during the purchase and diverted the integrity of the thinking and doing a rightful test.

@briantopping
Copy link

briantopping commented Nov 19, 2022

I use speedtest Mac App to get the result.

This isn't terrible, but remember that your test results will be at the whim of your upstream provider. The best way to do this test is with something like netcat between two machines on the same network. Then compare that to the speedtest results you get. It doesn't mean that speedtest can always be discounted by the same amount though, your WAN provider will have good and bad days.

I bought its usb type-c connector before which is of good quality so I give a try for other peripherals.

That's the biggest problem I've found is the connector quality on the cheap dongles. I had one dongle ruin a motherboard port on an older MacBook pro. Fortunately there were other ports, but it was disappointing.

Sorry for using your time and making troubles.

Not at all! We've all learned how to do this together. :-)

@jxcang
Copy link

jxcang commented Jan 10, 2023

I have a very weird observation here.
I tested my RTL8153 against RTL8156B, and consistently got 700/600.
I recently bought a Banana-Pi R2 Pro to play. The board has an eth0 using RTL8211F transceiver. When I iperf3'ed across them, I got 940/920 consistently. I am wondering whether the problem is in the underlying hardware instead of the software.

@guillaumekh
Copy link

guillaumekh commented Jan 19, 2023

Another upset nerd here 🙋 who can reliably make his system burst into flames with Airplay2 & RTL8153.

It's pretty clear little improvement from either Apple or Realtek should be reasonably expected but I cannot help myself:

  • Has anyone noticed any improvement w/ Ventura?
  • Has Realtek ever released DriverKit macOS drivers for any part?

@tobsen
Copy link

tobsen commented Jan 25, 2023

Seems that 13.2 fixes the Airplay 2 problem. 🥳

@dylanneild
Copy link

Seems that 13.2 fixes the Airplay 2 problem. 🥳

Seeing this as well - 8156 chipset (NCM) AirPlay works in 13.2 / Ventura.

@guillaumekh
Copy link

Seems that 13.2 fixes the Airplay 2 problem. 🥳

Oh that's nice! Thank you @tobsen @simplepanda for the report

On to upgrading to Ventura and some now due hat-eating…

@rfpm
Copy link

rfpm commented Feb 6, 2023

I'm on an Apple Silicon machine on macOS Ventura 13.2 using an adapter with an RTL8156BG. It is using the NCM driver in macOS but as Realtek still have yet to get the finger out I cannot install Realtek's driver as it would need to be arm64e. Ventura just warns how the driver is legacy and needs to be updated by Realtek, changing the machines settings to reduced security, disabling SIP, etc doesn't work and it doesn't matter anyway as the binary is x86_64.

Due to this I am not able to take full advantage of the device as I can't enable Jumbo Frames or select any other Duplex modes bar Full with the NCM driver. On a previous Intel Machine running Monterey 12.6.3 I could get the Realtek driver to work by disabling SIP, etc. This would allow Jumbo Frames, etc to work. There is now no option on an Apple Silicon machine running the latest version of macOS to take full advantage of the chip.

It's unacceptable that Realtek haven't provided an updated firmware for this chip in the last 2+ years, they've had more than 2.5 years to prepare one for Apple Silicon. They shouldn't be allowed to sell or profit off of this latest chip of theirs if they can't even allow it to work with all advertised features on non-legacy machines.

There are two options;

  • Either Realtek update their driver for modern systems to finally address this issue.
  • Or Apple eventually update the NCM driver in an OS update which will allow the NCM driver to full take advantage of all of the RTL8156's features thus covering for Realtek's unacceptable incompetence.

@lslqtz
Copy link

lslqtz commented Mar 12, 2023

I use a belkin adapter, macos shows it seems to be an 8153 chip, everything works fine... (This product is also sold in the Apple Store)
I believe it depends on whether the adapter is a better match to apple's driver implementation.
However, it does not appear to be designed for use with jumbo frame.
(Work on Apple Silicon)

lslqtz@asdde-MacBook-Pro-16 ~ % system_profiler SPEthernetDataType
Ethernet:

    Belkin USB-C LAN:

      Bus: USB
      Vendor Name: Belkin
      Product Name: Belkin USB-C LAN
      Vendor ID: 0x0bda
      Product ID: 0x8153
      USB Link Speed: Up to 5 Gb/s
      Driver: com.apple.DriverKit.AppleUserECM
      BSD Device Name: en7
      MAC Address: 24:f5:a2:8b:9d:32
      AVB Support: No

lslqtz@asdde-MacBook-Pro-16 ~ % kextstat | grep -i realtek
Executing: /usr/bin/kmutil showloaded
No variant specified, falling back to release
  251    0 0xfffffe000757e440 0x28e4     0x28e4     com.apple.driver.usb.realtek8153patcher (5.0.0) D57D3D6D-B08A-37A6-A2AB-CE14556927D7 <58 5 4 3 1>
lslqtz@asdde-MacBook-Pro-16 ~ % 

@saschabratton
Copy link

everything works fine...

it does not appear to be designed for use with jumbo frame.

I think "everything" doesn't work fine if you can't increase MTU size above 1500.

@agala68
Copy link

agala68 commented Apr 15, 2023

Hi,
I have a Realtek USB and Ventura 13.3, after installing the driver APPLERTL815XEthernet is seemed to work (with the Apple standard one it continuosly go online/offline) with the 1Gbs ports, now it looks stable, but after some GB of trasnfer it hangs, what is the issue of MTU? If I can set it to a vlaue higher than 1500 would be better?

@lfrisk
Copy link

lfrisk commented May 8, 2023

I have a 2019 Macbook Pro 16" that does not recognize the AppleRTL815XEthernet upon system startup. However, when I unplug and plug in while the system is running, the ethernet driver launches and works very well. Any thoughts as to why Loadable shows as unsupported?

AppleRTL815XComposite109:

Version: 1.0.22
Last Modified: 12/17/20, 4:10 AM
Bundle ID: com.realtek.driver.AppleRTL815XComposite
Notarized: Yes
Loaded: Yes
Obtained from: Identified Developer
Kind: Intel
Architectures: x86_64
64-Bit (Intel): Yes
Location: /Library/Extensions/AppleRTL815XComposite109.kext
Kext Version: 1.0.22
Load Address: 18446743522245874000
Loadable: Yes
Dependencies: Satisfied
Signed by: Developer ID Application: Realtek Semiconductor Corp (ZYM2ETK3E7), Developer ID Certification Authority, Apple Root CA

AppleRTL815XEthernet110:

Version: 1.0.22
Last Modified: 12/17/20, 4:10 AM
Bundle ID: com.realtek.driver.AppleRTL815XEthernet
Notarized: Yes
Loaded: No
Obtained from: Identified Developer
Kind: Intel
Architectures: x86_64
64-Bit (Intel): Yes
Location: /Library/Extensions/AppleRTL815XEthernet110.kext
Kext Version: 1.0.22
Loadable: Unsupported
Dependencies: Unsupported

Signed by: Developer ID Application: Realtek Semiconductor Corp (ZYM2ETK3E7), Developer ID Certification Authority, Apple Root CA

@lkvapil
Copy link

lkvapil commented Jul 20, 2023

@michelderu

What works for me to install the latest Realtek driver:

Disable SIP: Hold down Command-R during startup - Once started, open Terminal - type "csrutil disable" - Reboot
Install RTUNICv1.0.22.dmg
During installation it will ask for alleviated privileges: Open System Preferences -> Security & Privacy -> Click "Allow"
Enable SIP: Reboot and Hold down Command-R during startup - Once started, open Terminal - type "csrutil enable" - Reboot
Having installed the Realtek driver also solved the issue of my Philips monitor (with built-in RTL8153 NIC) locking-up my network while > going into sleep mode.

You can check if the driver loaded well by running: System Information -> Hardware -> Ethernet Cards -> Realtek... It should say "/Library/Extensions/AppleRTL815XEthernet110.kext" on "Location".

Thanks a lot !!
Worked on MacBook Pro (13-inch, M1, 2020), macOS Monterey 12.2.1 (21D62) with 27" Samsung ViewFinity S60UA (LS27A600UUUXEN)

@panin-s
Copy link

panin-s commented Jul 23, 2023

I'm on an Apple Silicon machine on macOS Ventura 13.2 using an adapter with an RTL8156BG. It is using the NCM driver in macOS but as Realtek still have yet to get the finger out I cannot install Realtek's driver as it would need to be arm64e. Ventura just warns how the driver is legacy and needs to be updated by Realtek, changing the machines settings to reduced security, disabling SIP, etc doesn't work and it doesn't matter anyway as the binary is x86_64.

Due to this I am not able to take full advantage of the device as I can't enable Jumbo Frames or select any other Duplex modes bar Full with the NCM driver. On a previous Intel Machine running Monterey 12.6.3 I could get the Realtek driver to work by disabling SIP, etc. This would allow Jumbo Frames, etc to work. There is now no option on an Apple Silicon machine running the latest version of macOS to take full advantage of the chip.

It's unacceptable that Realtek haven't provided an updated firmware for this chip in the last 2+ years, they've had more than 2.5 years to prepare one for Apple Silicon. They shouldn't be allowed to sell or profit off of this latest chip of theirs if they can't even allow it to work with all advertised features on non-legacy machines.

There are two options;

  • Either Realtek update their driver for modern systems to finally address this issue.
  • Or Apple eventually update the NCM driver in an OS update which will allow the NCM driver to full take advantage of all of the RTL8156's features thus covering for Realtek's unacceptable incompetence.

I agree with this helpful comment. I spent a long time trying to improve the performance of my Sabrent 2.5Gb Ethernet adapter while using it directly between my MBP and Synology DS220+ devices. However, I eventually discovered that the adapter's Realtek RTL8156B chipset can only operate using Apple's default driver (com.apple.driver.usb.cdc.ncm).

Any attempts to install Realtek's official driver would fail due to differences in architecture. The adapter works well with my MacBook Pro M1 Max, but it can only achieve a maximum speed of around 1.7–2.0 Gbit/s due to the MTU being limited to 1500.

@LeuschkeTressa
Copy link

macOS Ventura 13.4, MBP M1:

I got the Realtek 8153 chipset working without downloading any new drivers.

All I needed was

sudo kextload -b com.apple.driver.usb.realtek8153patcher

and possibly removing service + adding it back and unplugging+re-plugging the cable.

Full details

name printed on the physical unit: Plexgear USB-C Multiport adapter IK113230 62099

Initial state/problem

  • Settings -> Network: listed USB 10/100/1000 LAN, but "not connected"
  • System information ->
    • -> Hardware -> USB: the tree shows USB 3.1 Bus -> USB 3.1 Hub, but nothing under that
    • -> Network:
      • the list at the top does show USB 10/100/1000 LAN
      • selecting it, shows some basic info, including BSD Device Name: en7 (however ifconfig en7 gives error about no such network interface)
    • -> Software -> Extensions
      • AppleUSBRealtek8153Patcher is in the list, but selecting it includes the text Loaded: No
  • also, kextstat | grep -i realtek prints nothing

Fix: load realtek8153patcher manually

$ sudo kextload -b com.apple.driver.usb.realtek8153patcher
Executing: /usr/bin/kmutil load -b com.apple.driver.usb.realtek8153patcher

$ kextstat | grep -i realtek
248    0 0xfffffe0007589690 0x28e4     0x28e4     com.apple.driver.usb.realtek8153patcher (5.0.0) 7619D2B8-25E0-3C81-8901-0D8B73A7C9BE <56 5 4 3 1>

Now: Settings -> Network still lists the interface as "not connected"

I now did this:

  1. Settings -> Network, deleted the service
  2. (now: Add service... shows no interface USB 10/100/1000 LAN in the dropdown)
  3. unplugged the cable, the plugged it back in
  4. Add Service..., the interface now shows up in the dropdown
  5. continued to add it

After that, it came up with the green dot, said "connected", and does work.

I measured the speed to 190/220 [Mbit/s], which is more than my ISP promises.

I did this only a few hours ago, so I don't know how stable it will be or what will happen upon reboot.

SE SuperUser question

https://superuser.com/q/1042661/203848

@lelvisl
Copy link

lelvisl commented Sep 12, 2023

is it any option to change mac address on m1/m2 macbook?

@zenczykowski
Copy link

USB CDC NCM (and ECM & EEM) are protocols.
They're meant to be plug and play.
The USB device (the USB ethernet dongle) reports itself as being a USB CDC NCM capable device, and the OS provided NCM driver just works.

If both the device (whatever it may be) and the OS implement the protocol correctly that's it - things just work.

Similar to how you plug in a USB keyboard or USB mouse and it just works.
(normal USB keyboards/mice/joysticks all use USB HID protocol)
USB HID does actually require a driver - it's just that all modern OSes have one built-in.

Now, technically you could build a USB keyboard/mice/joystick that doesn't report itself as a HID device, and requires an extra driver, but why would you ever want to subject yourself to the pain of installing drivers in your OS (and your BIOS for the BIOS setup screen)?
So, of course, no keyboard/... manufacturer does that. It would be suicide.

(note: there are most likely some manufacturer specific extensions to support things like programming a gaming mouse's extra buttons, or led lighting - that may need an extra driver/program)

The device side of the NCM spec is something basically implemented inside of the (firmware of the) usb/ethernet chip.
Now, technically it could be outside of the ethernet chip, but solutions minimize the number of programmable chips to cut costs...
so (for usb ethernet dongles) you (will basically always) end up with just the main chip...

AFAIK the USB ethernet 2.5/5gbps dongle market is covered by 3 chips (and their revisions) from Realtek (2.5gbps) and Aquantia (2.5gbps, 5gbps). I'm hearing rumours there may also be some ASIX chip - I've yet to run into one, in spite of having dozens of 2.5+ gbps usb ethernet dongles.

Also worth mentioning: Standard 5gbps USB is really only 4Gbps capable (20% loss due to use of 8b10b coding). 10Gbps USB is actually capable of 9.6969Gbps (much more efficient 128b132b coding). However, I'm not (yet) aware of any USB 10gbps capable usb ethernet chips, so in practice any 'USB 5Gbps ethernet dongle' is limitted to the 4Gbps speed of the USB connection. Add in some extra required/unavoidable USB protocol framing overhead, and it's more like 3.6 Gbps tops. Combined with the 5Gbps stuff requiring much more power and running hot, and you're usually better off just sticking with the 2.5Gbps stuff - at least until proper "SuperSpeed USB 10Gbps" capable usb ethernet chips materlize. See the table on https://en.wikipedia.org/wiki/USB_3.0 for the gory details.

This [using a single chip] is not the case if you're connecting something 'big' / 'complex' - like tethering over USB off of a Pixel 6+ - in which case the 'device side' is the phone, and the device (a.k.a. gadget) side of the NCM protocol is actually implemented by the phone's Linux kernel's ncm gadget driver.

NCM is a much better protocol than ECM/EEM (and I can't remember which of those two is better),
but it still doesn't provide real hardware offload.
This is why you'll often find custom drivers for something that works just fine as NCM/ECM/EEM.
Many USB devices (really read: usb ethernet chips, or their firmware) will actually implement multiple alternative USB configurations.
The client side (ie. your OS) is free to choose any one of them.
For example you could have a device with:

  • a native mode, which requires a manufacturer supplied native kernel driver, and provides all bells and whistles
  • NCM mode, which requires an OS supplied driver
  • ECM or EEM mode, which requires an OS supplied driver (as further fallback for non NCM capable OSes)

Normally (assuming the driver is good) you'll get best performance (higher throughput, more functionality, lower cpu use) with the native driver - as this will support all functionality and offloads. Similarly NCM will win over ECM/EEM because it supports better USB framing and more aggregation (even though it doesn't support trivial things like checksum offload or more advanced things like tso/lro).

@zenczykowski
Copy link

And I wrote all of the above to explain why 8153 NCM is unlikely to happen.
It's not a missing Apple 8153 NCM driver.
What's actually missing is NCM protocol support in the USB ethernet dongle itself.
Assuming the dongle's firmware is updateable (might not be... who knows), you'd need to load new firmware into it that supports NCM (probably doable at the factory, likely harder/more risky in a user's hands - sometimes firwmare is intentionally locked down [so you can't flash it over usb] and thus might require disassembling the dongle and/or soldering in [jtag or other] connectors).
Additionally someone (presumably at Realtek...) would need to write that firmware (there might not even be enough room for it...). etc.

That said... there is a rumour of there being an NCM capable 8153 chip... I'm not sure whether it should be believed, or if some manufacturer actually runs a more complex multi-chip setup, or if someone actually developed an NCM capable firmware for the chip, even though [at a cursory glance per the spec sheet] Realtek does not appear to provide one...

https://gist.github.com/MadLittleMods/3005bb13f7e7178e1eaa9f054cc547b0?permalink_comment_id=4273488#gistcomment-4273488

But do note that's a monitor not a dongle... maybe it's not actually a RTL8153???
or it's a newer version of the chip (8153 is old... there's lots of revs)? or a chip with a much newer firmware?
or maybe Dell put in more eeprom to support a large more full featured firmware with NCM support?

Who knows...

--

https://forums.macrumors.com/threads/usb-c-ethernet-unreliable.2287743/post-31376857 and previous/next pages claim that for RTL8156 the USB reported version depends on the chip subversion:
Version: 30.00 RTL8156
Version: 31.00 RTL8156B
Version: 31.04 RTL8156B(S)G (ie. both the RTL8156BG and the RTL8156BSG)
and that the later versions work much better with Mac.
I wonder why... perhaps subtle bugs in the NCM protocol implementation on the chip?

(also note that RTL8153 can also report Version: 30.00)

Maybe the chip version only affects the default firmware, and there's some way (for manufacturers) to load in newer fw?

https://www.realtek.com/en/products/connected-media-ics/item/rtl8156b-s-g-cg - ECM & NCM
https://www.realtek.com/en/products/connected-media-ics/item/rtl8153b-vb-cg - lists ECM, does not list NCM...

https://www.asix.com.tw/en/product/USBEthernet/Super-Speed_USB_Ethernet/AX88179A - NCM

Aquantia was bought by Marvell, and all signs of USB ethernet chips from them seem to have more or less vanished,
although I know they exist (I have some dongles), and from vague recollection they supported NCM too.

https://www.marvell.com/content/dam/marvell/en/psg/marvell_psg.pdf
lists USB AQC111U-B0-C and AQC112U-B0-C

@zenczykowski
Copy link

Final note: the r8153_ecm linux driver is really just a very minor extension to the standard generic linux cdc ecm driver.
That's why it's just 170 lines (and much of that is boilerplate).

If I'm reading it right, it uses the standard ECM driver for everything, except that it uses a vendor extension for MII - which IFIRC is a way to report (and or configure advertised) link speed/duplex (see https://linux.die.net/man/8/mii-tool ).

The normal Linux ECM driver is normally prevented from binding to an 8153 device, so that the more specific driver will be used instead.

https://github.com/torvalds/linux/blob/master/drivers/net/usb/Kconfig#L637 is pretty crazy.
The lack of a string doc on the tristate line means it is not actually user configurable (there is no build time option to choose whether the driver is enabled or not) - hence the kernel configuration file gets to automatically select whether it should be enabled during build time.

config USB_RTL8153_ECM
tristate
depends on USB_NET_CDCETHER && (USB_RTL8152 || USB_RTL8152=n)
default y

Roughly translates as:

  • define a tristate (No, Module, Yes=built-in) configuration option called USB_RTL8153_ECM, which is not user configurable (via .config).
  • it requires USB_NET_CDCETHER (becomes it's an extension of the CDCETHER, aka ECM driver)
  • it defaults to enabled (y)
    Here stuff gets really finicky.
  • because it depends on USB_NET_CDCETHER, it automatically demotes from 'y' to 'm' if CDCETHER (the ECM driver) is a module.
    (you can't have the driver extension be built into the kernel, if the driver it extends isn't built in itself)
    It gets worse:
  • it also depends on (USB_RTL8152 || USB_RTL8152=n) which actually always evaluates to true.
    This is because USB_RTL8152 is either Yes or Module or No.
    Yes and Module make the first half of the || true, while No makes the second half of the || true.
  • okay, so why do this? Because this is actually tristate logic, not normal boolean.
    USB_NET_CDCETHER && (USB_RTL8152 || USB_RTL8152=n)
    has the curious property that USB_NET_CDCETHER=y + USB_RTL8152=m results in the 'default y' being demoted to 'm'.
    (because we're depending on a module)
    Why do this? Because if you build the ECM driver into the kernel, and build the 'better' native 8152 driver as a module, you want to be able to easily load the 8152 driver and have it bind to the device, instead of having the built in driver win. This requires the extension to be a module, even though the thing it extends is builtin.
    Basically if both USB_NET_CDCETHER (ie. ECM) and R8153_ECM were builtin, but USB_RTL8152 was a module, the module would never load, since the builtin driver would bind the device when you plug it in.
    Linux does provide a way to manually unbind the built-in driver, and manually bind in the other one, but it's a hassle, and better to just make the extension a module.

This probably still isn't ideal... since I'm not sure what determines which of the 2 drivers wins if both are modular... likely it's random (or alphabetical sort order or something)

@Monstergerm
Copy link

Has anybody noticed dropped outgoing packets as well as Oerrs with the NCM driver?
I have three adapters but only the one using the Realtek 8153 chip set and thus ECM driver does not show these errors. Both 8156 and AX88179A chips using NCM driver have huge percentage of Oerrs (Terminal netstat -di -I en4 command; if your interface is en4).

Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll Drop
en4 1500 <Link#26> 00:XX:XX:XX:XX:XX 828846 0 88393 40649 0 9940

@april
Copy link

april commented Oct 26, 2023

That said... there is a rumour of there being an NCM capable 8153 chip... I'm not sure whether it should be believed, or if some manufacturer actually runs a more complex multi-chip setup, or if someone actually developed an NCM capable firmware for the chip, even though [at a cursory glance per the spec sheet] Realtek does not appear to provide one...

The RTL8153D uses the FIRMWARE_8156B_2 firmware, same as the RTL8156B; the Linux driver shows the only difference is that 56B supports 2.5G, while the 53D only does 1G. Presumably the new RTL8153E is NCM as well.

I wrote that Macrumors post about the RTL8156B(S)G, and certainly noticed better performance than the previous chip revisions. This was observed on Linux as well.

@web-xyz
Copy link

web-xyz commented Nov 12, 2023

Has anybody noticed dropped outgoing packets as well as Oerrs with the NCM driver? I have three adapters but only the one using the Realtek 8153 chip set and thus ECM driver does not show these errors. Both 8156 and AX88179A chips using NCM driver have huge percentage of Oerrs (Terminal netstat -di -I en4 command; if your interface is en4).

Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll Drop en4 1500 <Link#26> 00:XX:XX:XX:XX:XX 828846 0 88393 40649 0 9940

I have a similar issue with the Belkin USB-C to 2.5 Gb Ethernet Adapter (SKU: INC012btBK) with firmware version 31.04 (so supposedly using RTL8156B(S)G) on a MacBook Pro 16-inch, 2019 with Sonoma 14.1.1: there are Oerrs in the netstat output!

There are no Oerrs with the Thunderbolt to Gigabit Ethernet Adapter (with the Thunderbolt 3 (USB-C) to Thunderbolt 2 Adapter) on the same laptop.

Does everybody with an adapter using RTL8156 / RTL8156B / RTL8156B(S)G have Oerrs?

What do exactly output errors mean and entail?

Any idea on how to fix the issue?

Thanks.

@lcharette
Copy link

lcharette commented Mar 3, 2024

Bit of update as of March 2024 and macOS Sonoma 14.3.1. Look like this is still an issue. Considering business like OWC still sell Thunderbolt dock with the 8156 chipset without any warning about limited capability of the Gigabit port for Mac users, it's a bit frustrating to say the least.

After a bit a of research and trial and error, I found it is possible to achieve gigabit speed on MacOS with the Realtek 8156 chipset, but with a huge caveat, as far as my finding shows : (tl;dr) You need to install the Realtek driver with SIP disabled and keep SIP disabled.

Since this most sources on the Internet point to this Gist, I share below is my process and findings, in case it can help anyone. For my part, I'll most likely be returning the OWC dock and look for a better alternative, as the lack of warning/information from OWC left a bitter taste in my mouth...


As many pointed out, by default, MacOS will use the com.apple.DriverKit.AppleUserECM driver for any Ethernet port passed through USB using the Realtek 8156 chipset. This Apple supplied driver limits the overall speed of Ethernet connection through USB/Thundnerbolt to ~400 Mbps for some reason. The overall solution is to install the official driver from Realtek. However, it hasn't been updated since 2020 and does not appear to be compatible with Apple's new extension privacy feature introduced in Big Sur (11.0). This is why when googling this issue, you'll find a lot of people claiming installing the driver fix the issue, only to realized the comments are probably from 2021.

These are the steps I used on my Intel MacBook Air to get the driver to load, by disabling SIP :

  1. Reboot in Recovery mode : cmd+R
  2. Open Terminal
  3. Disable SIP : csrutil disable
  4. Close Terminal and reboot
  5. Install Realtek Drivers from their website, version 1.0.22 for "MAC OS 10.9 to 10.15". Accept any prompt in system preferences and REBOOT
  6. Plug-in Thunderbolt dock / adapter with 8153 chipset. This is important, as the next step will only be displayed when the adapter is connected. In other words, when you reboot, nothing is loaded. When you connect the adapter, all three extensions listed below will be loaded dynamically and stay loaded until next reboot.
  7. You can make sure com.realtek.driver.AppleRTL815XEthernet extension is loaded from terminal : sudo kmutil showloaded | grep -i realtek. You should see something similar:
$ kmutil showloaded | grep -i realtek
No variant specified, falling back to release
  203    0 0xffffff7f96289000 0xffc      0xffc      com.realtek.driver.AppleRTL815XComposite (1.0.22) BA984F53-C67B-31DB-82FA-9146A9680FCA <74 7 6 3 1>
  204    0 0xffffff8001dbc000 0x7ff4     0x7ff4     com.apple.driver.usb.realtek8153patcher (5.0.0) 1C97FD90-1304-3956-B4D6-272E31074AF6 <30 7 6 3 1>
  205    0 0xffffff7f96235000 0x51ff8    0x51ff8    com.realtek.driver.AppleRTL815XEthernet (1.0.22) E7B07C4A-4CF4-3B58-9027-B592E4A041F3 <119 54 30 7 6 3 1>
  1. System Information (Apple menu > System Settings, then click General in the sidebar. (You may need to scroll down.) Click About on the right, then click System Report) can also tell you which driver your Ethernet connection is currently using. Select "Ethernet" under "Hardware", and select "USB 10/100/1000 LAN". There you should see com.realtek.driver.AppleRTL815XEthernet under "Driver":
2024_03_03_SysInfo_Ethernet_RT110

At this point, everything should be good as you're actually using the Realtek driver and you should be able to run a speed test with ~Gigabit speed, even after a couple of reboots :
2024-03-03_Win

However, remember SIP is currently disabled on you Mac!. To re-enable it :

  1. Reboot in Recovery mode : cmd+R
  2. Open Terminal
  3. Disable SIP : csrutil disable
  4. Close Terminal and reboot

And now, you're back to square one. macOS will revert back to the com.apple.DriverKit.AppleUserECM driver.
2023_03_03_FAIL

SpepedTest_FAIL

$ sudo kmutil showloaded | grep -i realtek
No variant specified, falling back to release
  203    0 0xffffff7f9621d000 0xffc      0xffc      com.realtek.driver.AppleRTL815XComposite (1.0.22) BA984F53-C67B-31DB-82FA-9146A9680FCA <74 7 6 3 1>
  204    0 0xffffff8001dbc000 0x7ff4     0x7ff4     com.apple.driver.usb.realtek8153patcher (5.0.0) 1C97FD90-1304-3956-B4D6-272E31074AF6 <30 7 6 3 1>

I tried manually loading the kext located in /Library/Extensions/ using the Terminal (https://developer.apple.com/documentation/apple-silicon/installing-a-custom-kernel-extension), however the following error is displayed.

$ sudo kextload /Library/Extensions/AppleRTL815XEthernet*.kext

Executing: /usr/bin/kmutil load -p /Library/Extensions/AppleRTL815XEthernet110.kext
Error Domain=KMErrorDomain Code=71 "Unsupported Error: one or more extensions are unsupported to load: 	Kext com.realtek.driver.AppleRTL815XEthernet v1.0.22 in executable kext bundle com.realtek.driver.AppleRTL815XEthernet at /Library/StagedExtensions/Library/Extensions/AppleRTL815XEthernet110.kext" UserInfo={NSLocalizedDescription=Unsupported Error: one or more extensions are unsupported to load: 	Kext com.realtek.driver.AppleRTL815XEthernet v1.0.22 in executable kext bundle com.realtek.driver.AppleRTL815XEthernet at /Library/StagedExtensions/Library/Extensions/AppleRTL815XEthernet110.kext}

Same message with :

$ sudo kmutil clear-staging
$ sudo kmutil load -b com.realtek.driver.AppleRTL815XEthernet

You might even get a System Preference warning telling you the extension is out of date
WarningUpdate

Which is expected under SIP and macOS Sonoma. Disabling SIP and running the same command again does allow the kext to be loaded, and after a confirmation from System Preferences and a reboot, the driver is correctly loaded again. However, SIP is still disabled, so enabling it once again brings you back to square one.

Note that System Information does show the extensions as being present under Software -> Extensions -> AppleRTL815XEthernet110 when SIP is disabled, but still won't use it as a driver :
SysIno_NotLaoded

I believe at this point the driver *is* "installed", but somehow SIP prevent it from being used.

Side note, while @LeuschkeTressa comment was useful to understand the issue, it didn't solve the issue either (and appears to be for another issue altogether).


The most important piece of documentation from Apple can be found here: https://support.apple.com/en-ca/guide/deployment/depa5fb8376f/web

In macOS 11 or later, if third-party kernel extensions (kexts) are enabled, they can’t be loaded into the kernel on demand. They require the user’s approval and restarting of the macOS to load the changes into the kernel, and they also require that the secure boot be configured to Reduced Security on a Mac with Apple silicon.

When a new kext is installed and there’s an attempt to load it, a restart must be initiated by the user from the warning dialog in:

  • macOS 13 or later: Apple menu > System Settings > Privacy & Security.
  • macOS 12.0.1 or earlier: Apple menu > System Preferences, > Security & Privacy.
    This restart initiates the rebuild of the AuxKC before to the kernel booting.

If System Integrity Protection (SIP) is enabled, the signature of each kext is verified before being included in the AuxKC.
If SIP is disabled, the kext signature isn’t enforced.
This approach allows Permissive Security flows for developers or users who aren’t part of the Apple Developer Program to test kexts before they’re signed.

tl;dr Whatever you do, any extension must be approved from System Preference and won't ever be applied until reboot.

I didn't try to Change security settings on the startup disk, since I don't own an Apple Silicon Mac. However, this doesn't sound like a valid solution since you're lowering the security features of your Mac. As Apple mention themselves :

Important: Kexts are no longer recommended for macOS. Kexts risk the integrity and reliability of the operating system. Users should prefer solutions that don’t require extending the kernel and use system extensions instead.

So until Apple themselves fix this or Realtek release updated drivers, stay away from 8153 chipset.

References

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment