Hello everyone,
I’m new to the Haiku community and I’ve recently been experimenting with running it on my Surface Go (1st gen).
When my Microsoft USB Ethernet adapter (RTL8153 chipset) is connected before boot, Haiku detects the device but never brings the interface up — no IP, no connectivity.
If I unplug and replug the dongle after the desktop appears, it works perfectly every single time.
I need this fixed for a headless Surface Go setup (before I can finish writing a native driver for its Atheros Wi-Fi), so a manual replug is not an option.
Has anyone found a way to simulate a USB replug in software or force the driver to reload automatically during startup?
Full details
Problem
On Haiku (R1/Beta5), my Microsoft-branded USB Ethernet dongle (VID 0x045e
, PID 0x07c6
, RTL8153 GigE) works flawlessly only when plugged in after the system reaches the desktop.
If it’s plugged in at boot, the device appears in /dev/net/usb_ecm/0
but never acquires an IP address. ifconfig auto-config
has no effect in this state.
Observations
-
Hotplug works 100%: unplug → replug → instant connection.
-
At boot, the interface node is present, but the stack behaves as if the device is half-initialised.
-
The
/dev/net/usb_ecm/
index changes (0
→1
) after a manual replug.
Attempts so far
-
Startup scripts in
UserBootscript
to callifconfig auto-config
→ no effect. -
Scripts to poll
/dev/net/usb_ecm/*
and retryifconfig
until IP → fails when the device is in this “half-initialised” state. -
Manual
launch_roster restart net_server
after boot → works, but doing it automatically at boot viaUserBootscript
doesn’t seem to help (likely timing-related). -
Attempted to use
usb_raw
for low-level replug simulation, but the raw device node never appeared early enough. -
Tried
load_driver
/unload_driver
approach, but couldn’t locate working userland hooks for kernel driver reload.
Why I need it
This system is intended to run headless on a Surface Go (1st gen) where I’m also developing a Haiku Wi-Fi driver for the onboard Atheros card.
For now, the USB Ethernet dongle is my only way to get networking on this machine, so physically replugging it is not an option.
Example device info (from listusb -v
)
Vendor ID …………… 0x045e (Microsoft Corp.)
Product ID …………… 0x07c6 (RTL8153 GigE [Surface Ethernet Adapter])
Product Version ……… 0x3000
Manufacturer String …. “Microsoft”
Product String ………… “Ethernet Adapter”
Any hints on scripting a USB replug in software, forcing a network driver reload at boot, or fixing this initialisation timing problem would be greatly appreciated.