Hi, Thank you for your support. I had overlooked qmi_wwan. I did some digging and it seems the modem indeed has a QMI interface (i/f number 4). I added the interface to blacklist in option, and added it to qmi_wwan. Now I get /dev/cdc-wdm0 and wwan0 devices. Querying various device information through qmicli on /dev/cdc-wdm0 works and I get meaningful responses from the device. Connecting with qmi-network shows success, but I didn't get connection to internet working quite yet with it. I don't have much time to mess with this at the moment, will use the good old ttyUSB interfaces to connect for the time being, but when we'll get modemmanager and networkmanager combination supporting QMI well in Ubuntu, I'll see for real. I think the patches should be now correct, but make your own decisions about including them in the official kernel. Testing and opinions are of course nice. I'm sending the updated patches in separate messages. Here's info from the windows .infs: diag: VID_19D2&PID_0412&MI_00 nmea: VID_19D2&PID_0412&MI_01 at: VID_19D2&PID_0412&MI_02 modem: VID_19D2&PID_0412&MI_03 net: VID_19D2&PID_0412&MI_04 Here's some information and outputs from various commands, if you're interested... lsusb -v: Bus 002 Device 004: ID 19d2:0412 ZTE WCDMA Technologies MSM Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x19d2 ZTE WCDMA Technologies MSM idProduct 0x0412 bcdDevice 0.00 iManufacturer 3 iProduct 2 iSerial 4 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 161 bNumInterfaces 6 bConfigurationValue 1 iConfiguration 1 bmAttributes 0xc0 Self Powered MaxPower 500mA 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 1 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 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 0x83 EP 3 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 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 0x84 EP 4 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 0x85 EP 5 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 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 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 0x86 EP 6 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 0x87 EP 7 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 0x05 EP 5 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 5 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x88 EP 8 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 usb-devices: T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 12 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=19d2 ProdID=0412 Rev=00.00 S: Manufacturer=ZTE,Incorporated S: Product=LTE Technologies MSM S: SerialNumber=MF821TEWEL020000 C: #Ifs= 6 Cfg#= 1 Atr=c0 MxPwr=500mA I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option I: If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan I: If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage -T On 01.05.2013 20:28, Bjørn Mork wrote: > Dan Williams <dcbw@xxxxxxxxxx> writes: >> On Wed, 2013-05-01 at 07:53 +0200, Teppo Kotilainen wrote: >>> I've been testing this device for some time and it seems to work fine. >>> >>> some information about the device: >>> https://telewell.fi/en/product/3g4glte-products/TW-LTE4G/tw-lte-4g3g-modem >>> >>> Acked-By: Matthias Urlichs <matthias@xxxxxxxxxx> >> >> While you're at it, can you post full lsusb -v output for this device? >> Given it's an LTE device, there's a good chance it's got a Qualcomm >> chipset, and thus there's a good chance it speaks QMI too. >> >> Does it provide a network interface, eg wwan0 or usb0? > > The lsusb -v output will be useful, but I'm afraid we'll need more. > > I don't know what the idea is, but ZTE hide as much information as they > can. All functions are ff/ff/ff and there are usually no associated > string descriptors or functional descriptors which can help us guess. > And just to top it all off: We've registered ZTE devices with the QMI > function on interface number 1, 2, 3, 4, 5 and 6. There just is no > system... > > So we either need probing or Windows *.inf files to be able to guess > where the (possible) QMI function is. If you have a Windows > installation then it is easies to let the modem install its drivers > there and then fetch the *.inf files. You might also find these files > on the embedded driver CD, but ZTE are often making things annoyingly > difficult here as well, hiding the driver files inside an installer > application. > > If you want to try probing, a recent ModemManager should do most of the > job automatically. Run it in debug mode with the option driver bound to > all interfaces first (like your patch will do). MM will likely find one > or more AT ports, a QCDM port and possibly more serial functions. Note > which interfaces MM were unable to detect, and unbind the option driver > from them, using > > echo x-y:z.w >/sys/bus/usb/drivers/option/unbind > > (replacing "x-y:z.w" with the actual interface device name for each > interface). After that, add the device dynamically to qmi_wwan, using > > modprobe qmi_wwan > echo 19d2 0412 >/sys/bus/usb/drivers/qmi_wwan/new_id > > Hopefully qmi_wwan will now bind to one or more of the interfaces you > unbound above. This is still no definite sign of success. Rerun > ModemManager (with QMI support enabled) in debug mode to probe > them. Take note of which interface was successfully probed as QMI and > send the result here. Or just prepare and submit a patch for qmi_wwan > and a matching blacklist patch for option. > > BTW, Greg will need a Signed-off-by for your option patch. Please see > https://www.kernel.org/doc/Documentation/SubmittingPatches > > > Bjørn > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html