Download raw body.
if_urndis: match USB RNDIS (ef/04/01) [Mudi 7 router]
I can connect from my OpenBSD laptop to a new Mudi 7 travel router
using its wired ethernet port and wireless mode, but not via urndis
using the USB-C cable. The device showed in dmesg as:
ugen2 at uhub1 port 4 "GL.iNet Mudi 7 (GL-E5800)" rev 3.20/5.15 addr 5
I looked at the USB descriptors for the device, it had a class of
"ef", a subclass of "04", and a protocol of "01" which was not being
matched and falling back to ugen.
Below are patches for /usr/src/sys/dev/usb/usb.h and
/usr/src/sys/dev/usb/if_urndis.c to match the additional subclass and
protocol, similar to what currently exists in NetBSD. After patching,
rebuilding the kernel, and rebooting, dmesg shows:
urndis0 at uhub1 port 4 configuration 1 interface 0 "GL.iNet Mudi 7
(GL-E5800)" rev 3.20/5.15 addr 5
urndis0: using RNDIS over Ethernet, address 7c:84:c1:xx:xx:xx
ugen2 at uhub1 port 4 configuration 1 "GL.iNet Mudi 7 (GL-E5800)" rev
3.20/5.15 addr 5
Adding "dhcp" to /etc/hostname.urndis0 and running sh /etc/netstart
urndis0, the interface receives an address allocated by the Mudi and I
can successfully connect to its upstream networks. Tested on a
Thinkpad X1 Carbon Gen 6 running OpenBSD-CURRENT with Mudi 7 router
(firmware 4.10.0, September 2026) set to USB Tethering mode.
v/r
Nick
--- sys/dev/usb/usb.h.original Thu Oct 15 16:29:35 2026
+++ sys/dev/usb/usb.h Thu Oct 15 16:30:29 2026
@@ -588,6 +588,8 @@ typedef struct usb_port_status usb_port_status_t;
#define UICLASS_MISC 0xef
#define UISUBCLASS_SYNC 0x01
#define UIPROTO_ACTIVESYNC 0x01
+#define UISUBCLASS_RNDIS 0x04
+#define UIPROTO_RNDIS_ETHERNET 0x01
#define UICLASS_APPL_SPEC 0xfe
#define UISUBCLASS_FIRMWARE_DOWNLOAD 1
--- sys/dev/usb/if_urndis.c.original Sun Oct 11 17:15:41 2026
+++ sys/dev/usb/if_urndis.c Thu Oct 15 16:31:29 2026
@@ -124,7 +124,8 @@ const struct urndis_class {
} urndis_class[] = {
{ UICLASS_CDC, UISUBCLASS_ABSTRACT_CONTROL_MODEL, 0xff, "Vendor" },
{ UICLASS_WIRELESS, UISUBCLASS_RF, UIPROTO_RNDIS, "RNDIS" },
- { UICLASS_MISC, UISUBCLASS_SYNC, UIPROTO_ACTIVESYNC, "Activesync" }
+ { UICLASS_MISC, UISUBCLASS_SYNC, UIPROTO_ACTIVESYNC, "Activesync" },
+ { UICLASS_MISC, UISUBCLASS_RNDIS, UIPROTO_RNDIS_ETHERNET, "RNDIS
over Ethernet"}
};
usbd_status
if_urndis: match USB RNDIS (ef/04/01) [Mudi 7 router]