A documented workaround for Realtek RTL8153 USB Ethernet adapters that enumerate on macOS but never become a usable network interface.
The short version: macOS sees the adapter, Apple's Realtek patcher runs, but
DriverKit AppleUserECM fails before creating a BSD Ethernet interface. This
workaround disables that DriverKit ECM path with a boot arg so macOS falls back
to the legacy AppleUSBECM kext path.
On the tested Mac, that turned a dead USB-C hub Ethernet port into a working
1000baseT <full-duplex> interface with DHCP and internet access.
- Status
- Warning
- When This May Apply
- Quick Diagnosis
- Enable The Workaround
- Verify Connectivity
- Undo
- What Happened
- Tested Environment
- Docs
Tested successfully on one Apple Silicon Mac.
Result after applying the workaround:
Hardware Port: USB 10/100/1000 LAN
Device: en5
media: autoselect (1000baseT <full-duplex>)
status: active
inet 192.168.2.75
Connectivity checks passed:
- default route via the USB Ethernet adapter
- LAN gateway ping with 0% packet loss
- public IP ping with 0% packet loss
- HTTPS request over the adapter returned
HTTP/2 200
This changes Apple Silicon boot/security policy.
You should only do this if:
- you own the Mac,
- you are comfortable using Recovery,
- you can tolerate recovering from a bad boot/security setting,
- and you understand that restoring full security may disable the workaround.
Known caveat: the legacy ECM path may report the adapter MAC address as
00:00:00:00:00:00. Some routers accept this. Some networks may reject it.
This workaround may apply if:
- your adapter is Realtek RTL8153 or compatible,
- macOS shows
USB 10/100/1000 LANin the USB tree, - the adapter VID:PID is
0x0bda:0x8153, - Network Settings never shows a usable USB Ethernet service,
AppleUSBRealtek8153Patcheris loaded,- logs show
AppleUserECMorAppleUserECMDatafailures.
It probably does not apply if the USB device does not enumerate at all.
Clone the repo and run:
./scripts/check-realtek-ethernet.shThings to look for:
USB 10/100/1000 LANin the Realtek USB section.com.apple.driver.usb.realtek8153patcherin loaded kexts.AppleUserECM...::start(...) failin recent logs.- No real
USB 10/100/1000 LANnetwork service before the workaround.
Do not assume en3 or en4 are the dongle. On the tested Apple Silicon Mac,
those were hidden Apple USB Device NCM interfaces, not the external adapter.
First boot into Recovery:
- Shut down the Mac.
- Hold the power button until startup options appear.
- Choose
Options>Continue. - Open
Utilities>Terminal. - Run:
bputil -a
csrutil enable --without nvramReboot normally.
Then in macOS, from this repo:
sudo sh scripts/enable-legacy-apple-usb-ecm.shReboot again, unplug/replug the USB-C adapter or hub, then run:
./scripts/check-realtek-ethernet.shIf it worked, you should see a hardware port like:
Hardware Port: USB 10/100/1000 LAN
Device: en5
Find the adapter IP:
ifconfig en5Then replace the source IP and gateway below with your own values:
route -n get default
ping -c 3 -S 192.168.2.75 192.168.2.1
ping -c 3 -S 192.168.2.75 1.1.1.1
curl --interface en5 -I https://www.apple.comIn normal macOS:
sudo sh scripts/disable-legacy-apple-usb-ecm.shThen boot into Recovery and restore normal security:
bputil -f
csrutil enableReboot normally.
On the tested machine:
- Apple's
AppleUSBRealtek8153Patcherkext was already loaded. - The RTL8153 adapter was in USB configuration
2, CDC ECM mode. - DriverKit
AppleUserECMlaunched for the control interface and failed. - DriverKit
AppleUserECMDatadid not produce a usable network interface. - Setting
AppleUserECM-debug=0x1made the DriverKit ECM path fail early. - The legacy
AppleUSBECMkext path then attached and created a BSD Ethernet interface.
See docs/investigation.md for the detailed trace.
- MacBookPro17,1
- Apple Silicon
- macOS 26.5 build 25F71
- Realtek RTL8153 USB Ethernet adapter,
0x0bda:0x8153 - Adapter inside a USB-C hub behind a GenesysLogic USB 3.1 hub
Reports from other macOS versions, adapters, hubs, and routers are welcome.
Please include sanitized check-realtek-ethernet.sh output when opening an
issue.
MIT. Use at your own risk.