Message ID | 20211227012357.788966-1-pbrobinson@gmail.com |
---|---|
State | New |
Headers | show |
Series | [RFC] gnss: usb: add support for U-Blox NEO-M9N | expand |
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
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);
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(+)