On Thu, 2023-04-06 at 18:49 +1000, David Gwynne wrote: > On Wed, Apr 05, 2023 at 11:22:34PM +0000, Mikolaj Kucharski wrote: > > On Wed, Apr 05, 2023 at 11:16:55PM +0000, miko...@kucharski.name wrote: > > > > Synopsis: Sierra Wireless MC7750 attaches as ugen(4) > > > > Category: kernel > > > > Environment: > > > System : OpenBSD 7.3 > > > Details : OpenBSD 7.3 (GENERIC.MP) #1125: Sat Mar 25 10:36:29 > > > MDT 2023 > > > > > > dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP > > > Architecture: OpenBSD.amd64 > > > Machine : amd64 > > > > Description: > > > Sierra Wireless MC7750 attaches as ugen(4) on PC Engines APU3, > > > running OpenBSD. Modem is mini-PCIe device. > > > > How-To-Repeat: > > > No specific steps. Plug in the device, boot up OpenBSD. > > > > Fix: > > > Unknown. > > > > > > > Forgot to also add lsusb output. > > > > # lsusb -vvv -d 1199:68a2 > > > > Bus 002 Device 003: ID 1199:68a2 Sierra Wireless, Inc. > > Device Descriptor: > > bLength 18 > > bDescriptorType 1 > > bcdUSB 2.00 > > bDeviceClass 0 (Defined at Interface level) > > bDeviceSubClass 0 > > bDeviceProtocol 0 > > bMaxPacketSize0 64 > > idVendor 0x1199 Sierra Wireless, Inc. > > idProduct 0x68a2 > > bcdDevice 0.06 > > iManufacturer 3 Sierra Wireless, Incorporated > > iProduct 2 MC7750 > > iSerial 4 001027009999999 > > bNumConfigurations 1 > > Configuration Descriptor: > > bLength 9 > > bDescriptorType 2 > > wTotalLength 115 > > bNumInterfaces 4 > > bConfigurationValue 1 > > iConfiguration 1 Sierra Configuration > > bmAttributes 0xe0 > > Self Powered > > Remote Wakeup > > MaxPower 0mA > > Interface Descriptor: > > bLength 9 > > bDescriptorType 4 > > bInterfaceNumber 0 > > bAlternateSetting 0 > > bNumEndpoints 2 > > bInterfaceClass 255 Vendor Specific Class > > bInterfaceSubClass 255 Vendor Specific Subclass > > bInterfaceProtocol 255 Vendor Specific Protocol > > iInterface 0 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x81 EP 1 IN > > bmAttributes 2 > > Transfer Type Bulk > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0200 1x 512 bytes > > bInterval 32 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x01 EP 1 OUT > > bmAttributes 2 > > Transfer Type Bulk > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0200 1x 512 bytes > > bInterval 32 > > Interface Descriptor: > > bLength 9 > > bDescriptorType 4 > > bInterfaceNumber 2 > > bAlternateSetting 0 > > bNumEndpoints 2 > > bInterfaceClass 255 Vendor Specific Class > > bInterfaceSubClass 255 Vendor Specific Subclass > > bInterfaceProtocol 255 Vendor Specific Protocol > > iInterface 0 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x82 EP 2 IN > > bmAttributes 2 > > Transfer Type Bulk > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0200 1x 512 bytes > > bInterval 32 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x02 EP 2 OUT > > bmAttributes 2 > > Transfer Type Bulk > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0200 1x 512 bytes > > bInterval 32 > > Interface Descriptor: > > bLength 9 > > bDescriptorType 4 > > bInterfaceNumber 3 > > bAlternateSetting 0 > > bNumEndpoints 3 > > bInterfaceClass 255 Vendor Specific Class > > bInterfaceSubClass 255 Vendor Specific Subclass > > bInterfaceProtocol 255 Vendor Specific Protocol > > iInterface 0 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x83 EP 3 IN > > bmAttributes 3 > > Transfer Type Interrupt > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0040 1x 64 bytes > > bInterval 5 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x84 EP 4 IN > > bmAttributes 2 > > Transfer Type Bulk > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0200 1x 512 bytes > > bInterval 32 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x03 EP 3 OUT > > bmAttributes 2 > > Transfer Type Bulk > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0200 1x 512 bytes > > bInterval 32 > > Interface Descriptor: > > bLength 9 > > bDescriptorType 4 > > bInterfaceNumber 8 > > bAlternateSetting 0 > > bNumEndpoints 3 > > bInterfaceClass 255 Vendor Specific Class > > bInterfaceSubClass 255 Vendor Specific Subclass > > bInterfaceProtocol 255 Vendor Specific Protocol > > iInterface 0 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x85 EP 5 IN > > bmAttributes 3 > > Transfer Type Interrupt > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0040 1x 64 bytes > > bInterval 5 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x86 EP 6 IN > > bmAttributes 2 > > Transfer Type Bulk > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0200 1x 512 bytes > > bInterval 32 > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x04 EP 4 OUT > > bmAttributes 2 > > Transfer Type Bulk > > Synch Type None > > Usage Type Data > > wMaxPacketSize 0x0200 1x 512 bytes > > bInterval 32 > > Device Qualifier (for other device speed): > > bLength 10 > > bDescriptorType 6 > > bcdUSB 2.00 > > bDeviceClass 0 (Defined at Interface level) > > bDeviceSubClass 0 > > bDeviceProtocol 0 > > bMaxPacketSize0 64 > > bNumConfigurations 1 > > Device Status: 0x0001 > > Self Powered > > this is almost certainly a qualcomm msm interface (qmi) device. > making umsm(4) attach to it is a good first start. > > hopefully you'll be able to talk AT commands to one of the interfaces. > > qmi devices are notoriously inconsistent and complicated, so what to do > next isnt clear. i would be trying to tell the modem to switch to mbim > mode and then figure out how to get umb(4) to attach. this is similar to > the changes i made to umsm and umb for quectel devices, but they > actually provided a decent manual.
The Sierra Wireless documentation is available. Alas, switching the mode seems far too complex and error prone to perform this inside a driver. When the AT (modem) interface is available, you would have to: 1) enter password protected command mode with "AT!ENTERCND=passwd" 2) query the list of modes with "AT!UDUSBCOMP=?". Example result: 0 - reserved NOT SUPPORTED 1 - DM AT SUPPORTED 2 - reserved NOT SUPPORTED 3 - reserved NOT SUPPORTED 4 - reserved NOT SUPPORTED 5 - reserved NOT SUPPORTED 6 - DM NMEA AT QMI SUPPORTED 7 - DM NMEA AT RMNET1 RMNET2 RMNET3 SUPPORTED 8 - DM NMEA AT MBIM SUPPORTED 9 - MBIM SUPPORTED 10 - NMEA MBIM SUPPORTED 11 - DM MBIM SUPPORTED 12 - DM NMEA MBIM SUPPORTED 13 - Config1: comp6 Config2: comp8 NOT SUPPORTED 14 - Config1: comp6 Config2: comp9 SUPPORTED 15 - Config1: comp6 Config2: comp10 NOT SUPPORTED 16 - Config1: comp6 Config2: comp11 NOT SUPPORTED 17 - Config1: comp6 Config2: comp12 NOT SUPPORTED 18 - Config1: comp7 Config2: comp8 NOT SUPPORTED 19 - Config1: comp7 Config2: comp9 SUPPORTED 20 - Config1: comp7 Config2: comp10 NOT SUPPORTED 21 - Config1: comp7 Config2: comp11 NOT SUPPORTED 22 - Config1: comp7 Config2: comp12 NOT SUPPORTED There is no guarantee that the table doesn't change. And every device has a differnt set of supported modes. 3) select the desired mode with "AT!UDUSBCOMP=X" 4) wait for the device to reset itself > > Index: umsm.c > =================================================================== > RCS file: /cvs/src/sys/dev/usb/umsm.c,v > retrieving revision 1.125 > diff -u -p -r1.125 umsm.c > --- umsm.c 2 Apr 2023 23:57:57 -0000 1.125 > +++ umsm.c 6 Apr 2023 08:40:30 -0000 > @@ -271,6 +271,7 @@ static const struct umsm_type umsm_devs[ > {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_AIRCARD_340U}, 0}, > {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_AIRCARD_770S}, 0}, > {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_MC7455}, 0}, > + {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_MC7700}, 0}, > > {{ USB_VENDOR_SIMCOM, USB_PRODUCT_SIMCOM_SIM5320}, 0}, > {{ USB_VENDOR_SIMCOM, USB_PRODUCT_SIMCOM_SIM7600E}, 0}, >
smime.p7s
Description: S/MIME cryptographic signature