I wonder would it be possible to support Mudita Pure phone
(https://mudita.com/products/) Internet thethering.
After enabling USB thethering, the phone it identifies itself as
vendor 0x2c7c and product 0x0125, so Quectel EG25-G.
The umb driver fails to attach:
umb0 at uhub0 port 1 "Quectel EG25-G" rev 2.00/3.18 addr 2
umb0: switching to config #1
umb0: missing MBIM descriptor
Disabling umb makes umsm to match it, but not attach:
umsm0 at uhub0 port 1 configuration 1 interface 0 "Quectel EG25-G" rev
2.00/3.18 addr 2
umsm0: missing endpoint
umsm1 at uhub0 port 1 configuration 1 interface 2 "Quectel EG25-G" rev
2.00/3.18 addr 2
ucom0 at umsm1
umsm2 at uhub0 port 1 configuration 1 interface 3 "Quectel EG25-G" rev
2.00/3.18 addr 2
ucom1 at umsm2
umsm3 at uhub0 port 1 configuration 1 interface 4 "Quectel EG25-G" rev
2.00/3.18 addr 2
ucom2 at umsm3
umsm4 at uhub0 port 1 configuration 1 interface 5 "Quectel EG25-G" rev
2.00/3.18 addr 2
ucom3 at umsm4
The device is supported on macOS via a third party urndis driver.
On OpenBSD I was able to use it with this diff and after
disabling both umsm and umb in kernel config:
Index: dev/usb/if_urndis.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_urndis.c,v
retrieving revision 1.73
diff -u -p -r1.73 if_urndis.c
--- dev/usb/if_urndis.c 5 Nov 2021 11:38:52 -0000 1.73
+++ dev/usb/if_urndis.c 26 Oct 2022 20:28:21 -0000
@@ -129,6 +129,7 @@ const struct urndis_class {
const char *typestr;
} urndis_class[] = {
{ UICLASS_CDC, UISUBCLASS_ABSTRACT_CONTROL_MODEL, 0xff, "Vendor" },
+ { UICLASS_CDC_DATA, UISUBCLASS_DATA, UIPROTO_DATA_VENDOR, "Vendor" },
{ UICLASS_WIRELESS, UISUBCLASS_RF, UIPROTO_RNDIS, "RNDIS" },
{ UICLASS_MISC, UISUBCLASS_SYNC, UIPROTO_ACTIVESYNC, "Activesync" }
};