Fwd: Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2019-05-15 Thread Denis
Any progress in OpenBSD 6.5 to have umsm(4) and umb(4) recognition for
the same composite USB device according to USB descriptors dumped for
MC7304 and MC7455?

6.4 doesn't recognize mbim device umb(4) when umsm(4) ports enabled on
one physical device simultaneously.

I'm getting messages like below:

umsm8: missing endpoint
umsm9: missing endpoint

for each umb(4) port on MC7304.

Denis


 Forwarded Message 
Subject: Re: umsm(4) and umb(4) separate loading for the same composite
USB modem device
Date: Wed, 15 Aug 2018 16:51:23 +0300
From: Denis 
To: Bryan Vyhmeister 
CC: tech@openbsd.org

umsm(4) patch is needed to recognize MC7304 by umsm(4) and to have both
NMEA and AT ports enabled.

Especially, I'm using MC7304's (MC7455 on another platform) NMEA port
for NTP time corrections from GLO/GPS. AT port is needed for mode
changes by AT commands. Very useful.

umb(4) is a good one for modern fast data transmit over MBIM port.
So the advantages of simultaneous running umsm(4) and umb(4) drivers for
single physical device are:

- having NMEA + AT serial discipline working by umsm(4);
(any rather 'old' serial discipline functionality can be used like SMS,
modem's mode changes by AT commands etc.)
- MBIM for fast LTE Cat-3 / Cat-6 data connections by modern umb(4) driver.

Denis

On 8/15/2018 4:43 AM, Bryan Vyhmeister wrote:
> On Tue, Aug 14, 2018 at 05:53:43PM +0300, Denis wrote:
>> Most of modern modems have serial discipline ports and USB Mobile
>> Broadband Interface Model (MBIM) interface in some port compositions
>> simultaneously. It seems very useful to have different disciplines
>> supported by umsm(4) and umb(4) drivers on the same device.
>>
> 
>>
>> Does it possible to have simultaneously operated AT + NMEA ports by
>> umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
>> device in 6.3?
> 
> What is the advantage in having a device attach to both umsm(4) and
> umb(4)? What are you trying to accomplish? The EM7455 worked perfectly
> with umb(4) until your previous umsm(4) diff and now it only attaches as
> umsm(4). Are you wanting to send SMS messages or something like that
> with your devices?
> 
> Bryan
> 



Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-20 Thread Denis
I've done USB descriptors dump for MC7304 with two firmware variants:
- modem SWI9X15C_05.05.67.00
- voice enambled SWI9X15C_06.03.32.02

as well as descriptors for EM/MC7455 modem firmware.

Denis

On 8/15/2018 5:41 PM, Mark Kettenis wrote:
>> Date: Wed, 15 Aug 2018 09:56:50 +0100
>> From: Stuart Henderson 
>>
>> On 2018/08/14 18:43, Bryan Vyhmeister wrote:
>>> On Tue, Aug 14, 2018 at 05:53:43PM +0300, Denis wrote:
 Most of modern modems have serial discipline ports and USB Mobile
 Broadband Interface Model (MBIM) interface in some port compositions
 simultaneously. It seems very useful to have different disciplines
 supported by umsm(4) and umb(4) drivers on the same device.

>>> 

 Does it possible to have simultaneously operated AT + NMEA ports by
 umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
 device in 6.3?
>>>
>>> What is the advantage in having a device attach to both umsm(4) and
>>> umb(4)? What are you trying to accomplish? The EM7455 worked perfectly
>>> with umb(4) until your previous umsm(4) diff and now it only attaches as
>>> umsm(4). Are you wanting to send SMS messages or something like that
>>> with your devices?
>>>
>>> Bryan
>>>
>>
>> Denis has a good point because umsm is needed for GPS and as you
>> suggest SMS.
>>
>> What determines which driver attaches when a device is supported by
>> multiple drivers? Perhaps the simplest option without more complex work
>> to support different interfaces on different drivers would be to have
>> the device attach to umb by default but attach to umsm instead if umb is
>> disabled in the kernel. Then at least a standard kernel could be used
>> with "disable umb" from boot config.
> 
> The return value from the "match" function determines which driver
> attaches.  The driver that returns the highest value wins.
> 
> However, matching for USB devices is complicated.  Drivers already use
> different return values (the UMATCH_* constants).  On top of that
> drivers can claim a whole device or claim just a particular interface
> of a device.  This requires some careful though to make sure the right
> driver attaches.
> 
> What we really need is a full dump of the usb device descriptors,
> preferably in all the different UDUSBCOMP modes.
> 



Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-18 Thread Denis
Sierra Wireless MC7304 firmware with voice support (VoLTE):
SWI9X15C_06.03.32.02 r26426 CNSHZ-AR-BUILD 2015/01/16 01:32:41

AT!UDUSBCOMP=?

1   - DM AT
23  - DM NMEA MODEM RMNET1 RMNET2 RMNET3 AUDIO
24  - DM NMEA MODEM RMNET1 RMNET2 RMNET3
25  - DM NMEA MODEM AT AUDIO

***
AT!UDUSBCOMP=1 (DM, AT)

MC7304 VID=0x1199 PID=0x68C0
firmware with voice support (VoLTE)
SWI9X15C_06.03.32.02 r26426 CNSHZ-AR-BUILD 2015/01/16 01:32:41

Device Descriptor:
--
0x12bLength
0x01bDescriptorType
0x0200  bcdUSB
0x00bDeviceClass
0x00bDeviceSubClass
0x00bDeviceProtocol
0x40bMaxPacketSize0   (64 bytes)
0x1199  idVendor
0x68C0  idProduct
0x0006  bcdDevice
0x01iManufacturer   "Sierra Wireless, Incorporated"
0x02iProduct   "MC7304"
0x03iSerialNumber   "0123456789ABCDEF"
0x01bNumConfigurations

Device Qualifier Descriptor:
--
0x0AbLength
0x06bDescriptorType
0x0200  bcdUSB
0x00bDeviceClass
0x00bDeviceSubClass
0x00bDeviceProtocol
0x40bMaxPacketSize0   (64 bytes)
0x01bNumConfigurations
0x00bReserved

Configuration Descriptor:
--
0x09bLength
0x02bDescriptorType
0x0051  wTotalLength   (81 bytes)
0x02bNumInterfaces
0x01bConfigurationValue
0x00iConfiguration
0xE0bmAttributes   (Self-powered Device, Remote-Wakeup)
0xFAbMaxPower  (500 mA)

Interface Descriptor:
--
0x09bLength
0x04bDescriptorType
0x00bInterfaceNumber
0x00bAlternateSetting
0x02bNumEndPoints
0xFFbInterfaceClass  (Vendor specific)
0xFFbInterfaceSubClass
0xFFbInterfaceProtocol
0x00iInterface

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x81bEndpointAddress  (IN endpoint 1)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x01bEndpointAddress  (OUT endpoint 1)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Interface Descriptor:
--
0x09bLength
0x04bDescriptorType
0x04bInterfaceNumber
0x00bAlternateSetting
0x03bNumEndPoints
0xFFbInterfaceClass  (Vendor specific)
0x00bInterfaceSubClass
0x00bInterfaceProtocol
0x00iInterface

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x00 0x10 0x01

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x01 0x00 0x00

Unknown Descriptor:
--
0x04bLength
0x24bDescriptorType
Hex dump:
0x04 0x24 0x02 0x02

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x06 0x00 0x00

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x83bEndpointAddress  (IN endpoint 3)
0x03bmAttributes  (Transfer: Interrupt / Synch: None / Usage: Data)
0x000C  wMaxPacketSize(1 x 12 bytes)
0x09bInterval (256 microframes)

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x82bEndpointAddress  (IN endpoint 2)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x02bEndpointAddress  (OUT endpoint 2)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Other Speed Configuration Descriptor:
--
0x09bLength
0x07bDescriptorType
0x0051  wTotalLength   (81 bytes)
0x02bNumInterfaces
0x01bConfigurationValue
0x00iConfiguration
0xE0bmAttributes   (Self-powered Device, Remote-Wakeup)
0xFAbMaxPower  (500 mA)

Interface Descriptor:
--
0x09bLength
0x04bDescriptorType
0x00bInterfaceNumber
0x00bAlternateSetting
0x02bNumEndPoints
0xFFbInterfaceClass  (Vendor specific)
0xFFbInterfaceSubClass
0xFFbInterfaceProtocol
0x00iInterface

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x81bEndpointAddress  (IN endpoint 1)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0040  wMaxPacketSize(64 bytes)
0x00bInterval

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x01bEndpointAddress  (OUT endpoint 1)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0040  wMaxPacketSize(64 bytes)
0x00bInterval

Interface Descriptor

Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-18 Thread Denis
... continuation for AT!UDUSBCOMP=[10-12,14,19]

Sierra Wireless MC7304 ordinary firmware (no voice support):
SWI9X15C_05.05.67.00 r31378 CARMD-EV-FRMWR1 2016/03/11 14:58:53

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  ATQMI SUPPORTED
7  - DM   NMEA  ATRMNET1 RMNET2 RMNET3SUPPORTED
8  - DM   NMEA  ATMBIMSUPPORTED
9  - MBIM SUPPORTED
10 - NMEA MBIMSUPPORTED
11 - DM   MBIMSUPPORTED
12 - DM   NMEA  MBIM  SUPPORTED
13 - Config1: comp6Config2: comp8 NOT SUPPORTED
14 - Config1: comp6Config2: comp9 SUPPORTED
15 - Config1: comp6Config2: comp10NOT SUPPORTED
16 - Config1: comp6Config2: comp11NOT SUPPORTED
17 - Config1: comp6Config2: comp12NOT SUPPORTED
18 - Config1: comp7Config2: comp8 NOT SUPPORTED
19 - Config1: comp7Config2: comp9 SUPPORTED
20 - Config1: comp7Config2: comp10NOT SUPPORTED
21 - Config1: comp7Config2: comp11NOT SUPPORTED
22 - Config1: comp7Config2: comp12NOT SUPPORTED

***
AT!UDUSBCOMP=10 (NMEA, MBIM)

MC7304 VID=0x1199 PID=0x68C0
Ordinary firmware (no voice support):
SWI9X15C_05.05.67.00 r31378 CARMD-EV-FRMWR1 2016/03/11 14:58:53

Device Descriptor:
--
0x12bLength
0x01bDescriptorType
0x0200  bcdUSB
0x00bDeviceClass
0x00bDeviceSubClass
0x00bDeviceProtocol
0x40bMaxPacketSize0   (64 bytes)
0x1199  idVendor
0x68C0  idProduct
0x0006  bcdDevice
0x01iManufacturer   "Sierra Wireless, Incorporated"
0x02iProduct   "MC7304"
0x03iSerialNumber   ""
0x01bNumConfigurations

Device Qualifier Descriptor:
--
0x0AbLength
0x06bDescriptorType
0x0200  bcdUSB
0x00bDeviceClass
0x00bDeviceSubClass
0x00bDeviceProtocol
0x40bMaxPacketSize0   (64 bytes)
0x01bNumConfigurations
0x00bReserved

Configuration Descriptor:
--
0x09bLength
0x02bDescriptorType
0x0090  wTotalLength   (144 bytes)
0x03bNumInterfaces
0x01bConfigurationValue
0x00iConfiguration
0xE0bmAttributes   (Self-powered Device, Remote-Wakeup)
0xFAbMaxPower  (500 mA)

Interface Descriptor:
--
0x09bLength
0x04bDescriptorType
0x02bInterfaceNumber
0x00bAlternateSetting
0x03bNumEndPoints
0xFFbInterfaceClass  (Vendor specific)
0x00bInterfaceSubClass
0x00bInterfaceProtocol
0x00iInterface

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x00 0x10 0x01

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x01 0x00 0x00

Unknown Descriptor:
--
0x04bLength
0x24bDescriptorType
Hex dump:
0x04 0x24 0x02 0x02

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x06 0x00 0x00

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x82bEndpointAddress  (IN endpoint 2)
0x03bmAttributes  (Transfer: Interrupt / Synch: None / Usage: Data)
0x000C  wMaxPacketSize(1 x 12 bytes)
0x09bInterval (256 microframes)

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x81bEndpointAddress  (IN endpoint 1)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x01bEndpointAddress  (OUT endpoint 1)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Interface Association Descriptor:
--
0x08bLength
0x0BbDescriptorType
0x0CbFirstInterface
0x02bInterfaceCount
0x02bFunctionClass  (Communication Device Class)
0x0EbFunctionSubClass
0x00bFunctionProtocol
0x00iFunction

Interface Descriptor:
--
0x09bLength
0x04bDescriptorType
0x0CbInterfaceNumber
0x00bAlternateSetting
0x01bNumEndPoints
0x02bInterfaceClass  (Communication Device Class)
0x0EbInterfaceSubClass
0x00bInterfaceProtocol
0x00iInterface

CDC Header Functional Descriptor:

Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-17 Thread Denis
Sierra Wireless EM/MC7455

AT!USBCOMP=?
!USBCOMP:
AT!USBCOMP=,,
- configuration index to which the composition
applies, sould be 1

 - 1:Generic, 2:USBIF-MBIM, 3:RNDIS
config type 2/3 should only be used for specific
SierraPIDs: 68B1, 9068
customized VID/PID should use config type 1

   - DIAG - 0x0001,
NMEA - 0x0004,
MODEM- 0x0008,
RMNET0   - 0x0100,
RMNET1   - 0x0400,
MBIM - 0x1000,

***
AT!USBCOMP=1,1,100D (DIAG, NMEA, MODEM/AT, MBIM) - required preferred
configuration

Sierra Wireless MC7455 Qualcomm® Snapdragon™ X7 LTE-A
VID=0x1199 PID=0x9071

Device Descriptor:
--
0x12bLength
0x01bDescriptorType
0x0210  bcdUSB
0x00bDeviceClass
0x00bDeviceSubClass
0x00bDeviceProtocol
0x40bMaxPacketSize0   (64 bytes)
0x1199  idVendor
0x9071  idProduct
0x0006  bcdDevice
0x01iManufacturer   "Sierra Wireless, Incorporated"
0x02iProduct   "Sierra Wireless MC7455 Qualcomm® Snapdragon™ X7 LTE-A"
0x03iSerialNumber   "LQ63925174367653"
0x01bNumConfigurations

Device Qualifier Descriptor:
--
0x0AbLength
0x06bDescriptorType
0x0210  bcdUSB
0x00bDeviceClass
0x00bDeviceSubClass
0x00bDeviceProtocol
0x40bMaxPacketSize0   (64 bytes)
0x01bNumConfigurations
0x00bReserved

Configuration Descriptor:
--
0x09bLength
0x02bDescriptorType
0x00D8  wTotalLength   (216 bytes)
0x05bNumInterfaces
0x01bConfigurationValue
0x00iConfiguration
0xA0bmAttributes   (Bus-powered Device, Remote-Wakeup)
0xFAbMaxPower  (500 mA)

Interface Descriptor:
--
0x09bLength
0x04bDescriptorType
0x00bInterfaceNumber
0x00bAlternateSetting
0x02bNumEndPoints
0xFFbInterfaceClass  (Vendor specific)
0xFFbInterfaceSubClass
0xFFbInterfaceProtocol
0x00iInterface

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x81bEndpointAddress  (IN endpoint 1)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x01bEndpointAddress  (OUT endpoint 1)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Interface Descriptor:
--
0x09bLength
0x04bDescriptorType
0x02bInterfaceNumber
0x00bAlternateSetting
0x03bNumEndPoints
0xFFbInterfaceClass  (Vendor specific)
0x00bInterfaceSubClass
0x00bInterfaceProtocol
0x00iInterface

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x00 0x10 0x01

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x01 0x00 0x00

Unknown Descriptor:
--
0x04bLength
0x24bDescriptorType
Hex dump:
0x04 0x24 0x02 0x02

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x06 0x00 0x00

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x83bEndpointAddress  (IN endpoint 3)
0x03bmAttributes  (Transfer: Interrupt / Synch: None / Usage: Data)
0x000A  wMaxPacketSize(1 x 10 bytes)
0x09bInterval (256 microframes)

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x82bEndpointAddress  (IN endpoint 2)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x02bEndpointAddress  (OUT endpoint 2)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Interface Descriptor:
--
0x09bLength
0x04bDescriptorType
0x03bInterfaceNumber
0x00bAlternateSetting
0x03bNumEndPoints
0xFFbInterfaceClass  (Vendor specific)
0x00bInterfaceSubClass
0x00bInterfaceProtocol
0x00iInterface

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x00 0x10 0x01

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x01 0x00 0x00

Unknown Descriptor:
--
0x04bLength
0x24bDescriptorType
Hex dump:
0x04 0x24 0x02 0x02

Unknown Descriptor:
--
0x05bLength
0x24bDes

Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-17 Thread Denis
Sierra Wireless MC7304 ordinary firmware (no voice support):
SWI9X15C_05.05.67.00 r31378 CARMD-EV-FRMWR1 2016/03/11 14:58:53

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  ATQMI SUPPORTED
7  - DM   NMEA  ATRMNET1 RMNET2 RMNET3SUPPORTED
8  - DM   NMEA  ATMBIMSUPPORTED
9  - MBIM SUPPORTED
10 - NMEA MBIMSUPPORTED
11 - DM   MBIMSUPPORTED
12 - DM   NMEA  MBIM  SUPPORTED
13 - Config1: comp6Config2: comp8 NOT SUPPORTED
14 - Config1: comp6Config2: comp9 SUPPORTED
15 - Config1: comp6Config2: comp10NOT SUPPORTED
16 - Config1: comp6Config2: comp11NOT SUPPORTED
17 - Config1: comp6Config2: comp12NOT SUPPORTED
18 - Config1: comp7Config2: comp8 NOT SUPPORTED
19 - Config1: comp7Config2: comp9 SUPPORTED
20 - Config1: comp7Config2: comp10NOT SUPPORTED
21 - Config1: comp7Config2: comp11NOT SUPPORTED
22 - Config1: comp7Config2: comp12NOT SUPPORTED

***
AT!UDUSBCOMP=8 (DM, NMEA, MODEM/AT, MBIM) - required preferred configuration

MC7304 VID=0x1199 PID=0x68C0
Ordinary firmware (no voice support):
SWI9X15C_05.05.67.00 r31378 CARMD-EV-FRMWR1 2016/03/11 14:58:53

Device Descriptor:
--
0x12bLength
0x01bDescriptorType
0x0200  bcdUSB
0x00bDeviceClass
0x00bDeviceSubClass
0x00bDeviceProtocol
0x40bMaxPacketSize0   (64 bytes)
0x1199  idVendor
0x68C0  idProduct
0x0006  bcdDevice
0x01iManufacturer   "Sierra Wireless, Incorporated"
0x02iProduct   "MC7304"
0x03iSerialNumber   ""
0x01bNumConfigurations

Device Qualifier Descriptor:
--
0x0AbLength
0x06bDescriptorType
0x0200  bcdUSB
0x00bDeviceClass
0x00bDeviceSubClass
0x00bDeviceProtocol
0x40bMaxPacketSize0   (64 bytes)
0x01bNumConfigurations
0x00bReserved

Configuration Descriptor:
--
0x09bLength
0x02bDescriptorType
0x00D8  wTotalLength   (216 bytes)
0x05bNumInterfaces
0x01bConfigurationValue
0x00iConfiguration
0xE0bmAttributes   (Self-powered Device, Remote-Wakeup)
0xFAbMaxPower  (500 mA)

Interface Descriptor:
--
0x09bLength
0x04bDescriptorType
0x00bInterfaceNumber
0x00bAlternateSetting
0x02bNumEndPoints
0xFFbInterfaceClass  (Vendor specific)
0xFFbInterfaceSubClass
0xFFbInterfaceProtocol
0x00iInterface

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x81bEndpointAddress  (IN endpoint 1)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x01bEndpointAddress  (OUT endpoint 1)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Interface Descriptor:
--
0x09bLength
0x04bDescriptorType
0x02bInterfaceNumber
0x00bAlternateSetting
0x03bNumEndPoints
0xFFbInterfaceClass  (Vendor specific)
0x00bInterfaceSubClass
0x00bInterfaceProtocol
0x00iInterface

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x00 0x10 0x01

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x01 0x00 0x00

Unknown Descriptor:
--
0x04bLength
0x24bDescriptorType
Hex dump:
0x04 0x24 0x02 0x02

Unknown Descriptor:
--
0x05bLength
0x24bDescriptorType
Hex dump:
0x05 0x24 0x06 0x00 0x00

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x83bEndpointAddress  (IN endpoint 3)
0x03bmAttributes  (Transfer: Interrupt / Synch: None / Usage: Data)
0x000C  wMaxPacketSize(1 x 12 bytes)
0x09bInterval (256 microframes)

Endpoint Descriptor:
--
0x07bLength
0x05bDescriptorType
0x82bEndpointAddress  (IN endpoint 2)
0x02bmAttributes  (Transfer: Bulk / Synch: None / Usage: Data)
0x0200  wMaxPacketSize(512 bytes)
0x00bInterval

Endpoint Descriptor:
--
0x07bLength
0x05 

Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-16 Thread Gerhard Roth
On Thu, 16 Aug 2018 13:56:13 +0300 Denis  wrote:
> I can change AT!UDUSBCOMP modes for MC7304 and MC7455 I have in production.
> 
> But how to make full dump of all the USB device descriptors for each
> UDUSBCOMP mode? Can I make it by usbdevs - or how?

Hi Denis,

no that won't work. You could switch the module to each one of the supported
modes and query the descriptors. Unfortunately, some of the modes are one
way streets, i.e. for the offered APIs of the mode there is no known method
to change it back again to some different mode (although I'm quite sure that
Sierra Wireless knows how to do it).

So to get that information, it's much easier to read the documentation:
https://source.sierrawireless.com/resources/airprime/minicard/airprime_mc73xx_usb_driver_developers_guide/#
 (registration required).
In chapter 3.1 "AirPrime MC73xx USB Interfaces" you'll find what you're
looking for.

Gerhard

> 
> Denis
> 
> On 8/15/2018 5:41 PM, Mark Kettenis wrote:
> >> Date: Wed, 15 Aug 2018 09:56:50 +0100
> >> From: Stuart Henderson 
> >>
> >> On 2018/08/14 18:43, Bryan Vyhmeister wrote:  
> >>> On Tue, Aug 14, 2018 at 05:53:43PM +0300, Denis wrote:  
>  Most of modern modems have serial discipline ports and USB Mobile
>  Broadband Interface Model (MBIM) interface in some port compositions
>  simultaneously. It seems very useful to have different disciplines
>  supported by umsm(4) and umb(4) drivers on the same device.
>   
> >>>   
> 
>  Does it possible to have simultaneously operated AT + NMEA ports by
>  umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
>  device in 6.3?  
> >>>
> >>> What is the advantage in having a device attach to both umsm(4) and
> >>> umb(4)? What are you trying to accomplish? The EM7455 worked perfectly
> >>> with umb(4) until your previous umsm(4) diff and now it only attaches as
> >>> umsm(4). Are you wanting to send SMS messages or something like that
> >>> with your devices?
> >>>
> >>> Bryan
> >>>  
> >>
> >> Denis has a good point because umsm is needed for GPS and as you
> >> suggest SMS.
> >>
> >> What determines which driver attaches when a device is supported by
> >> multiple drivers? Perhaps the simplest option without more complex work
> >> to support different interfaces on different drivers would be to have
> >> the device attach to umb by default but attach to umsm instead if umb is
> >> disabled in the kernel. Then at least a standard kernel could be used
> >> with "disable umb" from boot config.  
> > 
> > The return value from the "match" function determines which driver
> > attaches.  The driver that returns the highest value wins.
> > 
> > However, matching for USB devices is complicated.  Drivers already use
> > different return values (the UMATCH_* constants).  On top of that
> > drivers can claim a whole device or claim just a particular interface
> > of a device.  This requires some careful though to make sure the right
> > driver attaches.
> > 
> > What we really need is a full dump of the usb device descriptors,
> > preferably in all the different UDUSBCOMP modes.
> >   



Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-16 Thread Denis
I can change AT!UDUSBCOMP modes for MC7304 and MC7455 I have in production.

But how to make full dump of all the USB device descriptors for each
UDUSBCOMP mode? Can I make it by usbdevs - or how?

Denis

On 8/15/2018 5:41 PM, Mark Kettenis wrote:
>> Date: Wed, 15 Aug 2018 09:56:50 +0100
>> From: Stuart Henderson 
>>
>> On 2018/08/14 18:43, Bryan Vyhmeister wrote:
>>> On Tue, Aug 14, 2018 at 05:53:43PM +0300, Denis wrote:
 Most of modern modems have serial discipline ports and USB Mobile
 Broadband Interface Model (MBIM) interface in some port compositions
 simultaneously. It seems very useful to have different disciplines
 supported by umsm(4) and umb(4) drivers on the same device.

>>> 

 Does it possible to have simultaneously operated AT + NMEA ports by
 umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
 device in 6.3?
>>>
>>> What is the advantage in having a device attach to both umsm(4) and
>>> umb(4)? What are you trying to accomplish? The EM7455 worked perfectly
>>> with umb(4) until your previous umsm(4) diff and now it only attaches as
>>> umsm(4). Are you wanting to send SMS messages or something like that
>>> with your devices?
>>>
>>> Bryan
>>>
>>
>> Denis has a good point because umsm is needed for GPS and as you
>> suggest SMS.
>>
>> What determines which driver attaches when a device is supported by
>> multiple drivers? Perhaps the simplest option without more complex work
>> to support different interfaces on different drivers would be to have
>> the device attach to umb by default but attach to umsm instead if umb is
>> disabled in the kernel. Then at least a standard kernel could be used
>> with "disable umb" from boot config.
> 
> The return value from the "match" function determines which driver
> attaches.  The driver that returns the highest value wins.
> 
> However, matching for USB devices is complicated.  Drivers already use
> different return values (the UMATCH_* constants).  On top of that
> drivers can claim a whole device or claim just a particular interface
> of a device.  This requires some careful though to make sure the right
> driver attaches.
> 
> What we really need is a full dump of the usb device descriptors,
> preferably in all the different UDUSBCOMP modes.
> 



Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-15 Thread Mark Kettenis
> Date: Wed, 15 Aug 2018 09:56:50 +0100
> From: Stuart Henderson 
> 
> On 2018/08/14 18:43, Bryan Vyhmeister wrote:
> > On Tue, Aug 14, 2018 at 05:53:43PM +0300, Denis wrote:
> > > Most of modern modems have serial discipline ports and USB Mobile
> > > Broadband Interface Model (MBIM) interface in some port compositions
> > > simultaneously. It seems very useful to have different disciplines
> > > supported by umsm(4) and umb(4) drivers on the same device.
> > > 
> > 
> > > 
> > > Does it possible to have simultaneously operated AT + NMEA ports by
> > > umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
> > > device in 6.3?
> > 
> > What is the advantage in having a device attach to both umsm(4) and
> > umb(4)? What are you trying to accomplish? The EM7455 worked perfectly
> > with umb(4) until your previous umsm(4) diff and now it only attaches as
> > umsm(4). Are you wanting to send SMS messages or something like that
> > with your devices?
> > 
> > Bryan
> > 
> 
> Denis has a good point because umsm is needed for GPS and as you
> suggest SMS.
> 
> What determines which driver attaches when a device is supported by
> multiple drivers? Perhaps the simplest option without more complex work
> to support different interfaces on different drivers would be to have
> the device attach to umb by default but attach to umsm instead if umb is
> disabled in the kernel. Then at least a standard kernel could be used
> with "disable umb" from boot config.

The return value from the "match" function determines which driver
attaches.  The driver that returns the highest value wins.

However, matching for USB devices is complicated.  Drivers already use
different return values (the UMATCH_* constants).  On top of that
drivers can claim a whole device or claim just a particular interface
of a device.  This requires some careful though to make sure the right
driver attaches.

What we really need is a full dump of the usb device descriptors,
preferably in all the different UDUSBCOMP modes.



Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-15 Thread Denis
umsm(4) patch is needed to recognize MC7304 by umsm(4) and to have both
NMEA and AT ports enabled.

Especially, I'm using MC7304's (MC7455 on another platform) NMEA port
for NTP time corrections from GLO/GPS. AT port is needed for mode
changes by AT commands. Very useful.

umb(4) is a good one for modern fast data transmit over MBIM port.
So the advantages of simultaneous running umsm(4) and umb(4) drivers for
single physical device are:

- having NMEA + AT serial discipline working by umsm(4);
(any rather 'old' serial discipline functionality can be used like SMS,
modem's mode changes by AT commands etc.)
- MBIM for fast LTE Cat-3 / Cat-6 data connections by modern umb(4) driver.

Denis

On 8/15/2018 4:43 AM, Bryan Vyhmeister wrote:
> On Tue, Aug 14, 2018 at 05:53:43PM +0300, Denis wrote:
>> Most of modern modems have serial discipline ports and USB Mobile
>> Broadband Interface Model (MBIM) interface in some port compositions
>> simultaneously. It seems very useful to have different disciplines
>> supported by umsm(4) and umb(4) drivers on the same device.
>>
> 
>>
>> Does it possible to have simultaneously operated AT + NMEA ports by
>> umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
>> device in 6.3?
> 
> What is the advantage in having a device attach to both umsm(4) and
> umb(4)? What are you trying to accomplish? The EM7455 worked perfectly
> with umb(4) until your previous umsm(4) diff and now it only attaches as
> umsm(4). Are you wanting to send SMS messages or something like that
> with your devices?
> 
> Bryan
> 



Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-15 Thread Stuart Henderson
On 2018/08/15 09:56, Stuart Henderson wrote:
> On 2018/08/14 18:43, Bryan Vyhmeister wrote:
> > On Tue, Aug 14, 2018 at 05:53:43PM +0300, Denis wrote:
> > > Most of modern modems have serial discipline ports and USB Mobile
> > > Broadband Interface Model (MBIM) interface in some port compositions
> > > simultaneously. It seems very useful to have different disciplines
> > > supported by umsm(4) and umb(4) drivers on the same device.
> > > 
> > 
> > > 
> > > Does it possible to have simultaneously operated AT + NMEA ports by
> > > umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
> > > device in 6.3?
> > 
> > What is the advantage in having a device attach to both umsm(4) and
> > umb(4)? What are you trying to accomplish? The EM7455 worked perfectly
> > with umb(4) until your previous umsm(4) diff and now it only attaches as
> > umsm(4). Are you wanting to send SMS messages or something like that
> > with your devices?
> > 
> > Bryan
> > 
> 
> Denis has a good point because umsm is needed for GPS and as you
> suggest SMS.
> 
> What determines which driver attaches when a device is supported by
> multiple drivers? Perhaps the simplest option without more complex work
> to support different interfaces on different drivers would be to have
> the device attach to umb by default but attach to umsm instead if umb is
> disabled in the kernel. Then at least a standard kernel could be used
> with "disable umb" from boot config.
> 

(In case it's not clear I definitely agree with backing out the change
for now, the above is me considering ways forward because it definitely
seems reasonable to want to use the GPS ..)



Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-15 Thread Stuart Henderson
On 2018/08/14 18:43, Bryan Vyhmeister wrote:
> On Tue, Aug 14, 2018 at 05:53:43PM +0300, Denis wrote:
> > Most of modern modems have serial discipline ports and USB Mobile
> > Broadband Interface Model (MBIM) interface in some port compositions
> > simultaneously. It seems very useful to have different disciplines
> > supported by umsm(4) and umb(4) drivers on the same device.
> > 
> 
> > 
> > Does it possible to have simultaneously operated AT + NMEA ports by
> > umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
> > device in 6.3?
> 
> What is the advantage in having a device attach to both umsm(4) and
> umb(4)? What are you trying to accomplish? The EM7455 worked perfectly
> with umb(4) until your previous umsm(4) diff and now it only attaches as
> umsm(4). Are you wanting to send SMS messages or something like that
> with your devices?
> 
> Bryan
> 

Denis has a good point because umsm is needed for GPS and as you
suggest SMS.

What determines which driver attaches when a device is supported by
multiple drivers? Perhaps the simplest option without more complex work
to support different interfaces on different drivers would be to have
the device attach to umb by default but attach to umsm instead if umb is
disabled in the kernel. Then at least a standard kernel could be used
with "disable umb" from boot config.



Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-14 Thread Theo de Raadt
Bryan Vyhmeister  wrote:

> On Tue, Aug 14, 2018 at 05:53:43PM +0300, Denis wrote:
> > Most of modern modems have serial discipline ports and USB Mobile
> > Broadband Interface Model (MBIM) interface in some port compositions
> > simultaneously. It seems very useful to have different disciplines
> > supported by umsm(4) and umb(4) drivers on the same device.
> > 
> 
> > 
> > Does it possible to have simultaneously operated AT + NMEA ports by
> > umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
> > device in 6.3?
> 
> What is the advantage in having a device attach to both umsm(4) and
> umb(4)? What are you trying to accomplish? The EM7455 worked perfectly
> with umb(4) until your previous umsm(4) diff and now it only attaches as
> umsm(4). Are you wanting to send SMS messages or something like that
> with your devices?

umb is better.

If this causes a regression, it should be backed out.



Re: umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-14 Thread Bryan Vyhmeister
On Tue, Aug 14, 2018 at 05:53:43PM +0300, Denis wrote:
> Most of modern modems have serial discipline ports and USB Mobile
> Broadband Interface Model (MBIM) interface in some port compositions
> simultaneously. It seems very useful to have different disciplines
> supported by umsm(4) and umb(4) drivers on the same device.
> 

> 
> Does it possible to have simultaneously operated AT + NMEA ports by
> umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
> device in 6.3?

What is the advantage in having a device attach to both umsm(4) and
umb(4)? What are you trying to accomplish? The EM7455 worked perfectly
with umb(4) until your previous umsm(4) diff and now it only attaches as
umsm(4). Are you wanting to send SMS messages or something like that
with your devices?

Bryan



umsm(4) and umb(4) separate loading for the same composite USB modem device

2018-08-14 Thread Denis
Hello there,

Most of modern modems have serial discipline ports and USB Mobile
Broadband Interface Model (MBIM) interface in some port compositions
simultaneously. It seems very useful to have different disciplines
supported by umsm(4) and umb(4) drivers on the same device.

For instance, Sierra Wireless MC7304 EM/MC7455 wireless cards can be
configured to have both MBIM + AT + NMEA ports (AT!UDUSBCOMP=8):

AT!UDUSBCOMP=?
...
8  - DM   NMEA  ATMBIMSUPPORTED
9  - MBIM SUPPORTED
10 - NMEA MBIMSUPPORTED
11 - DM   MBIMSUPPORTED
12 - DM   NMEA  MBIM  SUPPORTED
...

Currently in OpenBSD 6.3 if AT!UDUSBCOMP=8 was enabled for MC7304 all
the ports recognized by umsm(4) driver, so MBIM port return error in
this case.

If AT!UDUSBCOMP=9 so MBIM interface recognized successfully by umb(4)
driver but there is no NMEA+AT ports enabled.

Does it possible to have simultaneously operated AT + NMEA ports by
umsm(4)driver and MBIM interface by umb(4) driver on the same MC7304
device in 6.3?