linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH] gnss: usb: add support for U-Blox NEO-M9N
@ 2021-12-27  1:23 Peter Robinson
  2022-01-31 10:16 ` Johan Hovold
  0 siblings, 1 reply; 2+ messages in thread
From: Peter Robinson @ 2021-12-27  1:23 UTC (permalink / raw)
  To: linux-usb, linux-kernel; +Cc: Peter Robinson, Johan Hovold

Add support for the USB interface of the SparkFun NEO-M9N
GPS Breakout receiver.

Bus 001 Device 005: ID 1546:01a9 U-Blox AG u-blox GNSS receiver
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            2 Communications
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x1546 U-Blox AG
  idProduct          0x01a9
  bcdDevice            4.04
  iManufacturer           1 u-blox AG - www.u-blox.com
  iProduct                2 u-blox GNSS receiver
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x003e
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    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 Header:
        bcdCDC               1.10
      CDC ACM:
        bmCapabilities       0x02
          line coding and serial state
      CDC Call Management:
        bmCapabilities       0x03
          call management
          use DataInterface
        bDataInterface          1
      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             255
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0
      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
Device Status:     0x0001
  Self Powered

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
Cc: Johan Hovold <johan@kernel.org>
---
Hi Johan,

I've tested your GNSS USB series with a pair of U-Blox devices, adding
the above USB ID. Only one included here for feedback to guage your thoughts.
By defauly The U-Blox devices enumerate with the CDC ACM driver and output
NMEA data via /dev/ttyACM0. With this patch and cdc_acm blocked I get
/dev/gnss0 and can cat it to get NMEA data. Is your expectation to move
these sort of devices over to the usb gnss driver too?

Peter

 drivers/gnss/usb.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gnss/usb.c b/drivers/gnss/usb.c
index 792235a688ea..775d58c2dbe1 100644
--- a/drivers/gnss/usb.c
+++ b/drivers/gnss/usb.c
@@ -18,6 +18,7 @@
 
 static const struct usb_device_id gnss_usb_id_table[] = {
 	{ USB_DEVICE(0x1199, 0xb000) },		/* Sierra Wireless XM1210 */
+	{ USB_DEVICE(0x1546, 0x01a9) },		/* U-Blox NEO-M9N GNSS receiver */
 	{ }
 };
 MODULE_DEVICE_TABLE(usb, gnss_usb_id_table);
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [RFC PATCH] gnss: usb: add support for U-Blox NEO-M9N
  2021-12-27  1:23 [RFC PATCH] gnss: usb: add support for U-Blox NEO-M9N Peter Robinson
@ 2022-01-31 10:16 ` Johan Hovold
  0 siblings, 0 replies; 2+ messages in thread
From: Johan Hovold @ 2022-01-31 10:16 UTC (permalink / raw)
  To: Peter Robinson; +Cc: linux-usb, linux-kernel

Hi Peter,

and sorry about the late reply.

On Mon, Dec 27, 2021 at 01:23:57AM +0000, Peter Robinson wrote:
> Add support for the USB interface of the SparkFun NEO-M9N
> GPS Breakout receiver.
> 
> Bus 001 Device 005: ID 1546:01a9 U-Blox AG u-blox GNSS receiver
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               1.10
>   bDeviceClass            2 Communications
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0        64
>   idVendor           0x1546 U-Blox AG
>   idProduct          0x01a9
>   bcdDevice            4.04
>   iManufacturer           1 u-blox AG - www.u-blox.com
>   iProduct                2 u-blox GNSS receiver
>   iSerial                 0
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength       0x003e
>     bNumInterfaces          2
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0xc0
>       Self Powered
>     MaxPower                0mA
>     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 Header:
>         bcdCDC               1.10
>       CDC ACM:
>         bmCapabilities       0x02
>           line coding and serial state
>       CDC Call Management:
>         bmCapabilities       0x03
>           call management
>           use DataInterface
>         bDataInterface          1
>       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             255
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        1
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass        10 CDC Data
>       bInterfaceSubClass      0
>       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
> Device Status:     0x0001
>   Self Powered
> 
> Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
> Cc: Johan Hovold <johan@kernel.org>
> ---
> Hi Johan,
> 
> I've tested your GNSS USB series with a pair of U-Blox devices, adding
> the above USB ID. Only one included here for feedback to guage your thoughts.
> By defauly The U-Blox devices enumerate with the CDC ACM driver and output
> NMEA data via /dev/ttyACM0. With this patch and cdc_acm blocked I get
> /dev/gnss0 and can cat it to get NMEA data. Is your expectation to move
> these sort of devices over to the usb gnss driver too?

Thanks for testing.

I also used u-blox receiver when developing the USB support, but
enabling support for these devices properly would require adding a few
more missing bits, including blacklisting the corresponding ids in
cdc-acm.

I think I'll look into doing this, but I'm currently quite short on
time.

I'll keep you posted.

Johan

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-01-31 10:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-27  1:23 [RFC PATCH] gnss: usb: add support for U-Blox NEO-M9N Peter Robinson
2022-01-31 10:16 ` Johan Hovold

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).