Adding NovAtel USB vendor & device ID to Kernel

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

 



Hello,
We produce extremely high-end GNSS (GPS, etc) receivers that are often used for a very wide range of applications. Our receivers can be connected to via USB, which will provide 3 USB-to-serial ports that can be used to issue commands and get receiver data. 

We typically get Linux users to create a udev file so their systems attach the USB serial ports to /dev.

I just noticed that when my receiver enumerates, dmesg outputs:
[  414.374523] usb 1-1.1.3: new full-speed USB device number 8 using dwc_otg
[  414.508473] usb 1-1.1.3: New USB device found, idVendor=09d7, idProduct=0100
[  414.508488] usb 1-1.1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  414.508497] usb 1-1.1.3: Product: NovAtel GPS Receiver
[  414.508505] usb 1-1.1.3: Manufacturer: NovAtel Inc.
[  414.508514] usb 1-1.1.3: SerialNumber: DMGW18050122R
[  414.511608] usbserial_generic 1-1.1.3:1.0: The "generic" usb-serial driver is only for testing and one-off prototypes.
[  414.511624] usbserial_generic 1-1.1.3:1.0: Tell mailto:linux-usb@xxxxxxxxxxxxxxx to add your device to a proper driver.
[  414.511636] usbserial_generic 1-1.1.3:1.0: generic converter detected
[  414.512004] usb 1-1.1.3: generic converter now attached to ttyUSB0
[  414.512352] usb 1-1.1.3: generic converter now attached to ttyUSB1
[  414.512805] usb 1-1.1.3: generic converter now attached to ttyUSB2


The udev rules file I have, which I've arbitrarily placed at /etc/udev/rules.d/z90_novatel.rules contains:
SUBSYSTEM=="usb", SYSFS{idProduct}=="0100", SYSFS{idVendor}=="09d7",
PROGRAM="/sbin/modprobe usbserial vendor=0x09d7 product=0x0100"
  
BUS=="usb", SYSFS{idProduct}=="0100", SYSFS{idVendor}=="09d7",
SYSFS{product}=="NovAtel GPS Receiver", SYSFS{manufacturer}=="NovAtel Inc.", SYMLINK+="gps%n"


Note that the SYMLINK component of that appears non-functional. I was looking at correcting it when I noticed the dmesg output directing me to email you.

Below is some additional details that may be of use. Of note, the idVendor is wrong. We are "NovAtel Inc." By contrast, "Novatel Wireless" is an entirely unrelated company. Also, the idProduct in this case is also flawed and would ideally read as: "NovAtel FlexPak GNSS receiver" ("FlexPak" is not a typo). References to "GPS" may be changed to "GNSS", which is a broader scope term that applies to our products, though this is a minor point.

# lsusb -s 001:008 -v

Bus 001 Device 008: ID 09d7:0100 Novatel Wireless NovAtel FlexPack GPS receiver
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0
  bDeviceProtocol       255
  bMaxPacketSize0        64
  idVendor           0x09d7 Novatel Wireless
  idProduct          0x0100 NovAtel FlexPack GPS receiver
  bcdDevice            1.01
  iManufacturer           1 NovAtel Inc.
  iProduct                2 NovAtel GPS Receiver
  iSerial                 3 DMGW18050122R
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           60
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 UART via USB
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           6
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0
      bInterfaceProtocol    255
      iInterface              5 Bulk Data Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 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
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 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
      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     0x06  EP 6 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0001
  Self Powered


I think it would be "nice" if our receiver's USB-delivered serial ports attached to /dev as /dev/novatel0, .. /dev/novatelN or (/dev/gnss0 .. /dev/gnssN). Though if they continued to appear as /dev/ttyUSB0 .. /dev/ttyUSBN, that'd also be great.

I'm not entirely sure if the dmesg output that's directed me here is really intended for this sort of request. If not, I'm willing to make my own git merge request, though I've not toyed much with the Linux Kernel, so tips would be extremely appreciated.

Can we please get our Vendor ID (0x09d7) and Product ID (0x0100) added to the Kernel in a sensical manner?

James T Snell, P.Eng
Applications Engineer 
NovAtel, part of Hexagon.
E: mailto:james.snell@xxxxxxxxxxx

The information contained in this e-mail may contain confidential or privileged material and is intended only for the stated addressee(s). If you are not a valid addressee, the use, disclosure, copying or distribution of this information is prohibited and may be unlawful.  If you have received this message in error, please notify the sender immediately and delete all copies of the message from your computer.  Notwithstanding any applicable legislation which may provide for contracts to be formed from electronic communication, this email does not create, form part of, or vary any contract, nor is it otherwise intended to bind any Hexagon group company.





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

  Powered by Linux