Adding a new USB CDMA modem (Celot CT-650)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello.

I know almost nothing about internals of usb and
linux kernel.. That should be a good start, rigth? :)

I've got a new USB CDMA modem from a local 3g retailer,
but apparently it does not work under linux.  Google
shows only other people like me - all in my region -
who got it but wasn't able to use it.

The device reports itself as

 usb 3-1: Product: CELOT CDMA Products
 usb 3-1: Manufacturer: CELOT Corporation

it's id 211f:6801, and the label tells us
it's "CT-650" model or, on the back side,
"CT-650 USB modem CDMA 450 1xEVDO".

Here's lsusb -v output:

Bus 003 Device 006: ID 211f:6801
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x211f
  idProduct          0x6801
  bcdDevice            0.00
  iManufacturer           1 CELOT Corporation
  iProduct                2 CELOT CDMA Products
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           85
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              3 Data Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval             128
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
    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              3 Data Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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     0x0040  1x 64 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    255 Vendor Specific Protocol
      iInterface              3 Data Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0000
  (Bus Powered)

Apparently, as shown in http://wl500g.info/showthread.php?t=24275
thread (in russian), the company provided a linux driver for the
device, -- http://wl500g.info/attachment.php?s=6b244d013439da0ee333d981d9122c59&attachmentid=6677&d=1277919509
Which turns out to be a renamed and "cleaned up" version of
drivers/usb/serial/option.c file.

So I added the device ID into existing option.c (2.6.34),
like this:

...
        { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) },

#define CELOT_VENDOR_ID         0x211f
#define CELOT_PRODUCT_CT680M    0x6801
        { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) },

        { } /* Terminating entry */
};

Now it is recognized by the driver, and even works, but it
creates 3 ttyUSB devices (0, 1 and 2), from which only
ttyUSB0 works, the rest 2 does not respond to AT commands.

[187658.087913] USB Serial support registered for GSM modem (1-port)
[187658.087913] option 3-1:1.0: GSM modem (1-port) converter detected
[187658.087913] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB0
[187658.087913] option 3-1:1.1: GSM modem (1-port) converter detected
[187658.087913] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB1
[187658.087913] option 3-1:1.2: GSM modem (1-port) converter detected
[187658.091245] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB2

I'm not sure what to do next.  The device works for me, but I'd
rather finish its support and submit it to the kernel properly.
What's missing now are the 2 extra, non-functional ports.

Thank you!

/mjt
--
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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux