Re: Serial ports for Septentrio USB GNSS receiver

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

 



On Thu, May 30, 2013 at 04:00:17PM +0200, Ben Adler wrote:
> Hello list!
> 
> I'm using a
> http://www.septentrio.com/products/receivers/asterx2i-oem INS/GNSS
> receiver. When connected via USB to a windows-host, there's two (or
> even three, don't remember exactly) virtual serial ports to talk to
> it.

Why do you want to talk to the other ports?  What is on those
connections?

> When connected to a 3.8.0-19-generic #30-Ubuntu SMP i686 GNU/Linux
> system, I only see /dev/ttyACM0. I'd really like to get access to
> the second virtual com port, so I tried setting

Why?

> options usbserial vendor=0x152a product=0x8230

Ick, no, don't do that.  It's an acm device, use the correct driver for
it.

> usbserial_generic 3-2:1.0: Generic device with no bulk out, not
> allowed.
> 
> 
> usbserial_generic: probe of 3-2:1.0 failed with error -5

Exactly, it's not a "normal" generic usb serial device :)


> usb 3-2: generic converter now attached to ttyUSB0
> 
> ttyUSB0 does work for communicating with the device, but there's no
> second port (this trick did work with some NovAtel receivers).
> 
> Is there a way to make the other virtual COM port appear?
> 
> # lsusb -d 152a:8230 -v
> 
> Bus 003 Device 002: ID 152a:8230
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               1.10
>   bDeviceClass            2 Communications
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0         8
>   idVendor           0x152a
>   idProduct          0x8230
>   bcdDevice            1.10
>   iManufacturer           1 Septentrio
>   iProduct                2 Septentrio USB Device
>   iSerial                 0
>   bNumConfigurations      2
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           91
>     bNumInterfaces          4
>     bConfigurationValue     2
>     iConfiguration          0
>     bmAttributes         0xc0
>       Self Powered
>     MaxPower                2mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           0
>       bInterfaceClass         2 Communications
>       bInterfaceSubClass      2 Abstract (modem)
>       bInterfaceProtocol    255 Vendor Specific (MSFT RNDIS?)
>       iInterface              0
>       CDC Header:
>         bcdCDC               1.01
>       CDC ACM:
>         bmCapabilities       0x0e
>           connection notifications
>           sends break
>           line coding and serial state
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        1
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass        10 CDC Data
>       bInterfaceSubClass      0 Unused
>       bInterfaceProtocol    255 Vendor specific
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         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     0x82  EP 2 IN
>         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           0
>       bInterfaceClass         2 Communications
>       bInterfaceSubClass      2 Abstract (modem)
>       bInterfaceProtocol    255 Vendor Specific (MSFT RNDIS?)
>       iInterface              0
>       CDC Header:
>         bcdCDC               1.01
>       CDC ACM:
>         bmCapabilities       0x0e
>           connection notifications
>           sends break
>           line coding and serial state
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        3
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass        10 CDC Data
>       bInterfaceSubClass      0 Unused
>       bInterfaceProtocol    255 Vendor specific
>       iInterface              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               1
>       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               1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           62
>     bNumInterfaces          2
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0xc0
>       Self Powered
>     MaxPower                2mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           1
>       bInterfaceClass         2 Communications
>       bInterfaceSubClass      2 Abstract (modem)
>       bInterfaceProtocol      1 AT-commands (v.25ter)
>       iInterface              0
>       CDC Union:
>         bMasterInterface        0
>         bSlaveInterface         1
>       CDC Header:
>         bcdCDC               1.01
>       CDC ACM:
>         bmCapabilities       0x0e
>           connection notifications
>           sends break
>           line coding and serial state
>       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               1
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        1
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass        10 CDC Data
>       bInterfaceSubClass      0 Unused
>       bInterfaceProtocol      0
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               1
>       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               1
> Device Status:     0x0001
>   Self Powered
> 
> Even though I don't really understand the interfaces and endpoints,
> I get the impression there's multiple CDC-Data interfaces.

Yes, there are, but the cdc-acm driver binds to them all (you can see
this by running 'usbdevices' from the usbutils package.

> How can I use them?

The network should connect to the device just fine through the single
port, right?

> Also, is there a way to influence the latency? As I'm using the
> receiver's data for flight control, I'd prefer to achieve low
> latency in data transfer from receiver->host on at least one port. I
> see the Transfer Type for most endpoints is bulk, not interrupt, but
> maybe there's a few tricks to make bulk-transfers faster? Right now
> I'm seeing latencies between 5 and 70ms.

There is no difference in "speed" or "latency" between the bulk and
interrupt endpoints, it just is how the data is transferred from the USB
device (they really are the same, just that interrupt is smaller packets
more often, and bulk is larger packets whenever there is some data.)

USB devices are well known for having latency issues, that's due to the
cheap chip in them, plus the usb protocol overhead, plus whatever is on
the other side of the USB device sending data.  It almost never is the
host OS issue here.

greg k-h
--
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