2020-10-04 09:59:47

by Leonid Bloch

[permalink] [raw]
Subject: [PATCH] USB: serial: option: Add Telit FT980-KS composition

This commit adds the following Telit FT980-KS composition:

0x1054: rndis, diag, adb, nmea, modem, modem, aux

AT commands can be sent to /dev/ttyUSB5.

Signed-off-by: Leonid Bloch <[email protected]>
---

The full composition is not tested, and it is the default one according
to Telit support. What is tested, is that this commit makes
/dev/ttyUSB{1..7} appear upon connection of the FT980-KS, and allows
sending AT commands to /dev/ttyUSB5.

drivers/usb/serial/option.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 0c6f160a214a..e7a98435ac29 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -301,6 +301,7 @@ static void option_instat_callback(struct urb *urb);
#define TELIT_PRODUCT_LE920A4_1212 0x1212
#define TELIT_PRODUCT_LE920A4_1213 0x1213
#define TELIT_PRODUCT_LE920A4_1214 0x1214
+#define TELIT_PRODUCT_FT980_KS 0x1054

/* ZTE PRODUCTS */
#define ZTE_VENDOR_ID 0x19d2
@@ -1164,6 +1165,7 @@ static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) },
{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) },
{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UE910_V2) },
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_FT980_KS) },
{ USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1031, 0xff), /* Telit LE910C1-EUX */
.driver_info = NCTRL(0) | RSVD(3) },
{ USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1033, 0xff), /* Telit LE910C1-EUX (ECM) */
--
2.28.0


2020-10-04 11:00:19

by Lars Melin

[permalink] [raw]
Subject: Re: [PATCH] USB: serial: option: Add Telit FT980-KS composition

On 10/4/2020 16:57, Leonid Bloch wrote:
> This commit adds the following Telit FT980-KS composition:
>
> 0x1054: rndis, diag, adb, nmea, modem, modem, aux
>
> AT commands can be sent to /dev/ttyUSB5.
>

Please submit a verbose lsusb listing for the device, I can't imagine
that the adb interface should be handled by the option serial driver so
there will never be a ttyUSB5.


thanks
Lars

2020-10-04 13:31:27

by Leonid Bloch

[permalink] [raw]
Subject: Re: [PATCH] USB: serial: option: Add Telit FT980-KS composition

On 10/4/20 1:58 PM, Lars Melin wrote:
> On 10/4/2020 16:57, Leonid Bloch wrote:
>> This commit adds the following Telit FT980-KS composition:
>>
>> 0x1054: rndis, diag, adb, nmea, modem, modem, aux
>>
>> AT commands can be sent to /dev/ttyUSB5.
>>
>
> Please submit a verbose lsusb listing for the device, I can't imagine
> that the adb interface should be handled by the option serial driver so
> there will never be a ttyUSB5.

Please see below.

Thanks,
Leonid.

```
Bus 001 Device 005: ID 1bc7:1054 Telit Wireless Solutions
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.10
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1bc7 Telit Wireless Solutions
idProduct 0x1054
bcdDevice 4.14
iManufacturer 1 Telit Wireless Solutions
iProduct 2 FT980-KS
iSerial 3 cb42f61
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x013d
bNumInterfaces 8
bConfigurationValue 1
iConfiguration 4 RNDIS_DIAG_ADB_NMEA_DUN_DUN_SER
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 239 Miscellaneous Device
bFunctionSubClass 4
bFunctionProtocol 1
iFunction 7 RNDIS
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 239 Miscellaneous Device
bInterfaceSubClass 4
bInterfaceProtocol 1
iInterface 5 RNDIS Communications Control
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 01
** UNRECOGNIZED: 04 24 02 00
** UNRECOGNIZED: 05 24 06 00 01
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 9
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 6 RNDIS Ethernet Data
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x8e EP 14 IN
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 0x0f EP 15 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 48
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 0
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 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 66
bInterfaceProtocol 1
iInterface 8 ADB Interface
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 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 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 4
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 00
** UNRECOGNIZED: 04 24 02 02
** UNRECOGNIZED: 05 24 06 00 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x000a 1x 10 bytes
bInterval 9
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 0
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 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 5
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 00
** UNRECOGNIZED: 04 24 02 02
** UNRECOGNIZED: 05 24 06 00 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x87 EP 7 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x000a 1x 10 bytes
bInterval 9
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 0
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 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 6
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 00
** UNRECOGNIZED: 04 24 02 02
** UNRECOGNIZED: 05 24 06 00 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x89 EP 9 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x000a 1x 10 bytes
bInterval 9
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
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 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 7
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 00
** UNRECOGNIZED: 04 24 02 02
** UNRECOGNIZED: 05 24 06 00 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x8b EP 11 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x000a 1x 10 bytes
bInterval 9
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x8a EP 10 IN
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 0x06 EP 6 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x002a
bNumDeviceCaps 3
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000006
BESL Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000f
Device can operate at Low Speed (1Mbps)
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 1 micro seconds
bU2DevExitLat 500 micro seconds
SuperSpeedPlus USB Device Capability:
bLength 20
bDescriptorType 16
bDevCapabilityType 10
bmAttributes 0x00000001
Sublink Speed Attribute count 1
Sublink Speed ID count 0
wFunctionalitySupport 0x1100
bmSublinkSpeedAttr[0] 0x000a4030
Speed Attribute ID: 0 10Gb/s Symmetric RX SuperSpeedPlus
bmSublinkSpeedAttr[1] 0x000a40b0
Speed Attribute ID: 0 10Gb/s Symmetric TX SuperSpeedPlus
Device Status: 0x0000
(Bus Powered)

```

>
>
> thanks
> Lars
>

2020-10-04 14:19:44

by Lars Melin

[permalink] [raw]
Subject: Re: [PATCH] USB: serial: option: Add Telit FT980-KS composition

On 10/4/2020 20:29, Leonid Bloch wrote:
> On 10/4/20 1:58 PM, Lars Melin wrote:
>> On 10/4/2020 16:57, Leonid Bloch wrote:
>>> This commit adds the following Telit FT980-KS composition:
>>>
>>> 0x1054: rndis, diag, adb, nmea, modem, modem, aux
>>>
>>> AT commands can be sent to /dev/ttyUSB5.
>>>
>>
>> Please submit a verbose lsusb listing for the device, I can't imagine
>> that the adb interface should be handled by the option serial driver so
>> there will never be a ttyUSB5.
>
> Please see below.
>
> Thanks,
> Leonid.
>
> ```
> Bus 001 Device 005: ID 1bc7:1054 Telit Wireless Solutions
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               2.10
>   bDeviceClass            0
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0        64
>   idVendor           0x1bc7 Telit Wireless Solutions
>   idProduct          0x1054
>   bcdDevice            4.14
>   iManufacturer           1 Telit Wireless Solutions
>   iProduct                2 FT980-KS
>   iSerial                 3 cb42f61
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength       0x013d
>     bNumInterfaces          8
>     bConfigurationValue     1
>     iConfiguration          4 RNDIS_DIAG_ADB_NMEA_DUN_DUN_SER
>     bmAttributes         0xa0
>       (Bus Powered)
>       Remote Wakeup
>     MaxPower              500mA
>     Interface Association:
>       bLength                 8
>       bDescriptorType        11
>       bFirstInterface         0
>       bInterfaceCount         2
>       bFunctionClass        239 Miscellaneous Device
>       bFunctionSubClass       4
>       bFunctionProtocol       1
>       iFunction               7 RNDIS
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           1
>       bInterfaceClass       239 Miscellaneous Device
>       bInterfaceSubClass      4
>       bInterfaceProtocol      1
>       iInterface              5 RNDIS Communications Control
>       ** UNRECOGNIZED:  05 24 00 10 01
>       ** UNRECOGNIZED:  05 24 01 00 01
>       ** UNRECOGNIZED:  04 24 02 00
>       ** UNRECOGNIZED:  05 24 06 00 01
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0008  1x 8 bytes
>         bInterval               9
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        1
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass        10 CDC Data
>       bInterfaceSubClass      0
>       bInterfaceProtocol      0
>       iInterface              6 RNDIS Ethernet Data
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x8e  EP 14 IN
>         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     0x0f  EP 15 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0200  1x 512 bytes
>         bInterval               0
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        2
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass       255 Vendor Specific Class
>       bInterfaceSubClass    255 Vendor Specific Subclass
>       bInterfaceProtocol     48
>       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               0
>       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               0
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        3
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass       255 Vendor Specific Class
>       bInterfaceSubClass     66
>       bInterfaceProtocol      1
>       iInterface              8 ADB Interface
>       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               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               0

//snip

Interface #3 for ADB must be blacklisted in the option entry for the
device, by using .driver_info = RSVD(3)


thanks
Lars

2020-10-04 14:34:20

by Lars Melin

[permalink] [raw]
Subject: Re: [PATCH] USB: serial: option: Add Telit FT980-KS composition

On 10/4/2020 21:16, Lars Melin wrote:
> On 10/4/2020 20:29, Leonid Bloch wrote:
>> On 10/4/20 1:58 PM, Lars Melin wrote:
>>> On 10/4/2020 16:57, Leonid Bloch wrote:
>>>> This commit adds the following Telit FT980-KS composition:
>>>>
>>>> 0x1054: rndis, diag, adb, nmea, modem, modem, aux
>>>>
>>>> AT commands can be sent to /dev/ttyUSB5.
>>>>
>>>
>>> Please submit a verbose lsusb listing for the device, I can't imagine
>>> that the adb interface should be handled by the option serial driver so
>>> there will never be a ttyUSB5.
>>
>> Please see below.
>>
>> Thanks,
>> Leonid.
>>
>> ```
>> Bus 001 Device 005: ID 1bc7:1054 Telit Wireless Solutions
>> Device Descriptor:
>>    bLength                18
>>    bDescriptorType         1
>>    bcdUSB               2.10
>>    bDeviceClass            0
>>    bDeviceSubClass         0
>>    bDeviceProtocol         0
>>    bMaxPacketSize0        64
>>    idVendor           0x1bc7 Telit Wireless Solutions
>>    idProduct          0x1054
>>    bcdDevice            4.14
>>    iManufacturer           1 Telit Wireless Solutions
>>    iProduct                2 FT980-KS
>>    iSerial                 3 cb42f61
>>    bNumConfigurations      1
>>    Configuration Descriptor:
>>      bLength                 9
>>      bDescriptorType         2
>>      wTotalLength       0x013d
>>      bNumInterfaces          8
>>      bConfigurationValue     1
>>      iConfiguration          4 RNDIS_DIAG_ADB_NMEA_DUN_DUN_SER
>>      bmAttributes         0xa0
>>        (Bus Powered)
>>        Remote Wakeup
>>      MaxPower              500mA
>>      Interface Association:
>>        bLength                 8
>>        bDescriptorType        11
>>        bFirstInterface         0
>>        bInterfaceCount         2
>>        bFunctionClass        239 Miscellaneous Device
>>        bFunctionSubClass       4
>>        bFunctionProtocol       1
>>        iFunction               7 RNDIS
>>      Interface Descriptor:
>>        bLength                 9
>>        bDescriptorType         4
>>        bInterfaceNumber        0
>>        bAlternateSetting       0
>>        bNumEndpoints           1
>>        bInterfaceClass       239 Miscellaneous Device
>>        bInterfaceSubClass      4
>>        bInterfaceProtocol      1
>>        iInterface              5 RNDIS Communications Control
>>        ** UNRECOGNIZED:  05 24 00 10 01
>>        ** UNRECOGNIZED:  05 24 01 00 01
>>        ** UNRECOGNIZED:  04 24 02 00
>>        ** UNRECOGNIZED:  05 24 06 00 01
>>        Endpoint Descriptor:
>>          bLength                 7
>>          bDescriptorType         5
>>          bEndpointAddress     0x81  EP 1 IN
>>          bmAttributes            3
>>            Transfer Type            Interrupt
>>            Synch Type               None
>>            Usage Type               Data
>>          wMaxPacketSize     0x0008  1x 8 bytes
>>          bInterval               9
>>      Interface Descriptor:
>>        bLength                 9
>>        bDescriptorType         4
>>        bInterfaceNumber        1
>>        bAlternateSetting       0
>>        bNumEndpoints           2
>>        bInterfaceClass        10 CDC Data
>>        bInterfaceSubClass      0
>>        bInterfaceProtocol      0
>>        iInterface              6 RNDIS Ethernet Data
>>        Endpoint Descriptor:
>>          bLength                 7
>>          bDescriptorType         5
>>          bEndpointAddress     0x8e  EP 14 IN
>>          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     0x0f  EP 15 OUT
>>          bmAttributes            2
>>            Transfer Type            Bulk
>>            Synch Type               None
>>            Usage Type               Data
>>          wMaxPacketSize     0x0200  1x 512 bytes
>>          bInterval               0
>>      Interface Descriptor:
>>        bLength                 9
>>        bDescriptorType         4
>>        bInterfaceNumber        2
>>        bAlternateSetting       0
>>        bNumEndpoints           2
>>        bInterfaceClass       255 Vendor Specific Class
>>        bInterfaceSubClass    255 Vendor Specific Subclass
>>        bInterfaceProtocol     48
>>        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               0
>>        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               0
>>      Interface Descriptor:
>>        bLength                 9
>>        bDescriptorType         4
>>        bInterfaceNumber        3
>>        bAlternateSetting       0
>>        bNumEndpoints           2
>>        bInterfaceClass       255 Vendor Specific Class
>>        bInterfaceSubClass     66
>>        bInterfaceProtocol      1
>>        iInterface              8 ADB Interface
>>        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               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               0
>
> //snip
>
> Interface #3 for ADB must be blacklisted in the option entry for the
> device, by using .driver_info = RSVD(3)
>


When looking at the entries for other Telit deices in the option driver
I see that their diag interface always has
the NCTRL flag so it is likely that you need that for this device also.
See the entry for PID 1052


thanks
Lars

2020-10-04 16:05:30

by Leonid Bloch

[permalink] [raw]
Subject: Re: [PATCH] USB: serial: option: Add Telit FT980-KS composition

Lars,


Thank you for your review! The changes which you have suggested also
made ModemManager to recognize the device (which it didn't do before).
Please check out the v2.


Cheers,
Leonid.

___

On 10/4/20 5:32 PM, Lars Melin wrote:
> On 10/4/2020 21:16, Lars Melin wrote:
>> On 10/4/2020 20:29, Leonid Bloch wrote:
>>> On 10/4/20 1:58 PM, Lars Melin wrote:
>>>> On 10/4/2020 16:57, Leonid Bloch wrote:
>>>>> This commit adds the following Telit FT980-KS composition:
>>>>>
>>>>> 0x1054: rndis, diag, adb, nmea, modem, modem, aux
>>>>>
>>>>> AT commands can be sent to /dev/ttyUSB5.
>>>>>
>>>>
>>>> Please submit a verbose lsusb listing for the device, I can't imagine
>>>> that the adb interface should be handled by the option serial driver so
>>>> there will never be a ttyUSB5.
>>>
>>> Please see below.
>>>
>>> Thanks,
>>> Leonid.
>>>
>>> ```
>>> Bus 001 Device 005: ID 1bc7:1054 Telit Wireless Solutions
>>> Device Descriptor:
>>>    bLength                18
>>>    bDescriptorType         1
>>>    bcdUSB               2.10
>>>    bDeviceClass            0
>>>    bDeviceSubClass         0
>>>    bDeviceProtocol         0
>>>    bMaxPacketSize0        64
>>>    idVendor           0x1bc7 Telit Wireless Solutions
>>>    idProduct          0x1054
>>>    bcdDevice            4.14
>>>    iManufacturer           1 Telit Wireless Solutions
>>>    iProduct                2 FT980-KS
>>>    iSerial                 3 cb42f61
>>>    bNumConfigurations      1
>>>    Configuration Descriptor:
>>>      bLength                 9
>>>      bDescriptorType         2
>>>      wTotalLength       0x013d
>>>      bNumInterfaces          8
>>>      bConfigurationValue     1
>>>      iConfiguration          4 RNDIS_DIAG_ADB_NMEA_DUN_DUN_SER
>>>      bmAttributes         0xa0
>>>        (Bus Powered)
>>>        Remote Wakeup
>>>      MaxPower              500mA
>>>      Interface Association:
>>>        bLength                 8
>>>        bDescriptorType        11
>>>        bFirstInterface         0
>>>        bInterfaceCount         2
>>>        bFunctionClass        239 Miscellaneous Device
>>>        bFunctionSubClass       4
>>>        bFunctionProtocol       1
>>>        iFunction               7 RNDIS
>>>      Interface Descriptor:
>>>        bLength                 9
>>>        bDescriptorType         4
>>>        bInterfaceNumber        0
>>>        bAlternateSetting       0
>>>        bNumEndpoints           1
>>>        bInterfaceClass       239 Miscellaneous Device
>>>        bInterfaceSubClass      4
>>>        bInterfaceProtocol      1
>>>        iInterface              5 RNDIS Communications Control
>>>        ** UNRECOGNIZED:  05 24 00 10 01
>>>        ** UNRECOGNIZED:  05 24 01 00 01
>>>        ** UNRECOGNIZED:  04 24 02 00
>>>        ** UNRECOGNIZED:  05 24 06 00 01
>>>        Endpoint Descriptor:
>>>          bLength                 7
>>>          bDescriptorType         5
>>>          bEndpointAddress     0x81  EP 1 IN
>>>          bmAttributes            3
>>>            Transfer Type            Interrupt
>>>            Synch Type               None
>>>            Usage Type               Data
>>>          wMaxPacketSize     0x0008  1x 8 bytes
>>>          bInterval               9
>>>      Interface Descriptor:
>>>        bLength                 9
>>>        bDescriptorType         4
>>>        bInterfaceNumber        1
>>>        bAlternateSetting       0
>>>        bNumEndpoints           2
>>>        bInterfaceClass        10 CDC Data
>>>        bInterfaceSubClass      0
>>>        bInterfaceProtocol      0
>>>        iInterface              6 RNDIS Ethernet Data
>>>        Endpoint Descriptor:
>>>          bLength                 7
>>>          bDescriptorType         5
>>>          bEndpointAddress     0x8e  EP 14 IN
>>>          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     0x0f  EP 15 OUT
>>>          bmAttributes            2
>>>            Transfer Type            Bulk
>>>            Synch Type               None
>>>            Usage Type               Data
>>>          wMaxPacketSize     0x0200  1x 512 bytes
>>>          bInterval               0
>>>      Interface Descriptor:
>>>        bLength                 9
>>>        bDescriptorType         4
>>>        bInterfaceNumber        2
>>>        bAlternateSetting       0
>>>        bNumEndpoints           2
>>>        bInterfaceClass       255 Vendor Specific Class
>>>        bInterfaceSubClass    255 Vendor Specific Subclass
>>>        bInterfaceProtocol     48
>>>        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               0
>>>        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               0
>>>      Interface Descriptor:
>>>        bLength                 9
>>>        bDescriptorType         4
>>>        bInterfaceNumber        3
>>>        bAlternateSetting       0
>>>        bNumEndpoints           2
>>>        bInterfaceClass       255 Vendor Specific Class
>>>        bInterfaceSubClass     66
>>>        bInterfaceProtocol      1
>>>        iInterface              8 ADB Interface
>>>        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               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               0
>>
>> //snip
>>
>> Interface #3 for ADB must be blacklisted in the option entry for the
>> device, by using .driver_info = RSVD(3)
>>
>
>
> When looking at the entries for other Telit deices in the option driver
> I see that their diag interface always has
> the NCTRL flag so it is likely that you need that for this device also.
> See the entry for PID 1052
>
>
> thanks
> Lars
>

2020-10-05 02:05:42

by Lars Melin

[permalink] [raw]
Subject: Re: [PATCH] USB: serial: option: Add Telit FT980-KS composition

On 10/4/2020 23:03, Leonid Bloch wrote:
> Lars,
>
>
> Thank you for your review! The changes which you have suggested also
> made ModemManager to recognize the device (which it didn't do before).
> Please check out the v2.
>
>
> Cheers,
> Leonid.

The v2 looks good to me

br
Lars

2020-10-19 17:07:09

by tip-bot2 for Jacob Pan

[permalink] [raw]
Subject: [tip: perf/urgent] USB: serial: option: Add Telit FT980-KS composition

The following commit has been merged into the perf/urgent branch of tip:

Commit-ID: da6f40842515774026d5bfad297491eb513c40cc
Gitweb: https://git.kernel.org/tip/da6f40842515774026d5bfad297491eb513c40cc
Author: Leonid Bloch <[email protected]>
AuthorDate: Sun, 04 Oct 2020 18:58:13 +03:00
Committer: Greg Kroah-Hartman <[email protected]>
CommitterDate: Sat, 17 Oct 2020 08:31:21 +02:00

USB: serial: option: Add Telit FT980-KS composition

commit 924a9213358fb92fa3c3225d6d042aa058167405 upstream.

This commit adds the following Telit FT980-KS composition:

0x1054: rndis, diag, adb, nmea, modem, modem, aux

AT commands can be sent to /dev/ttyUSB2.

Signed-off-by: Leonid Bloch <[email protected]>
Cc: [email protected]
Link: https://lore.kernel.org/r/[email protected]
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Johan Hovold <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/usb/serial/option.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index a65e620..2a3bfd6 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -1187,6 +1187,8 @@ static const struct usb_device_id option_ids[] = {
.driver_info = NCTRL(2) | RSVD(3) },
{ USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1053, 0xff), /* Telit FN980 (ECM) */
.driver_info = NCTRL(0) | RSVD(1) },
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1054, 0xff), /* Telit FT980-KS */
+ .driver_info = NCTRL(2) | RSVD(3) },
{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910),
.driver_info = NCTRL(0) | RSVD(1) | RSVD(3) },
{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),