Skip to content

Instantly share code, notes, and snippets.

@pklaus
Created March 10, 2015 16:00
Show Gist options
  • Save pklaus/a93acb1023dbd853d86c to your computer and use it in GitHub Desktop.
Save pklaus/a93acb1023dbd853d86c to your computer and use it in GitHub Desktop.
u-blox 7 GPS/Glonass Receiver G-7020 / VK-172
How the receiver shows up in the `dmesg` command:
[36800.263324] usb 1-1.1.3: new full-speed USB device number 8 using ehci-pci
[36800.382015] cdc_acm 1-1.1.3:1.0: ttyACM0: USB ACM device
[36800.382221] usbcore: registered new interface driver cdc_acm
[36800.382223] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

To switch the receiver to binary mode, you can use the command gpsctl -b -D 5 -f -t "u-blox" /dev/ttyACM0. Here is its output:

gpsctl:INFO: opening GPS data source type 3 at '/dev/ttyACM0'
gpsctl:INFO: speed 38400, 8N1
gpsctl:PROG: Probing "Garmin USB binary" driver...
gpsctl:INFO: attempting USB device enumeration.
gpsctl:INFO: 045e:00db (bus 2, device 4)
gpsctl:INFO: 8087:8000 (bus 2, device 2)
gpsctl:INFO: 1d6b:0002 (bus 2, device 1)
gpsctl:INFO: 08bb:2902 (bus 1, device 5)
gpsctl:INFO: 046d:c404 (bus 1, device 7)
gpsctl:INFO: 0424:2504 (bus 1, device 4)
gpsctl:INFO: 1546:01a7 (bus 1, device 11)
gpsctl:INFO: 0a5c:21e8 (bus 1, device 6)
gpsctl:INFO: 0409:005a (bus 1, device 3)
gpsctl:INFO: 8087:8008 (bus 1, device 2)
gpsctl:INFO: 1d6b:0002 (bus 1, device 1)
gpsctl:INFO: 1d6b:0003 (bus 4, device 1)
gpsctl:INFO: 1d6b:0002 (bus 3, device 1)
gpsctl:INFO: vendor/product match with 091e:0003 not found
gpsctl:PROG: Probe not found "Garmin USB binary" driver...
gpsctl:PROG: Probing "GeoStar" driver...
gpsctl:PROG: Sent GeoStar packet id 0xc1
gpsctl:IO: => GPS: 5053474700c100010000000050924746
gpsctl:PROG: Probe not found "GeoStar" driver...                                                                      
gpsctl:PROG: Probing "Trimble TSIP" driver...                                                                         
gpsctl:INFO: speed 9600, 8O1                                                                                          
gpsctl:INFO: speed 38400, 8N1                                                                                                                                                       
gpsctl:PROG: Probe not found "Trimble TSIP" driver...                                                                                                                               
gpsctl:PROG: no probe matched...                                                                                                                                                    
gpsctl:INFO: gpsd_activate(1): activated GPS (fd 3)                                                                                                                                 
gpsctl:INFO: device /dev/ttyACM0 activated                                                                                                                                          
gpsctl:INFO: startup at 2015-03-10T13:37:14.000Z (1425994634)                                                                                                                       
gpsctl:PROG: switching to match packet type 1: $GPRMC,133715.00,A,5008.64927,N,00839.98328,E,0.389,,100315,,,D*7A\x0d\x0a                                                           
gpsctl:PROG: switch_driver(NMEA0183) called...                                                                                                                                      
gpsctl:PROG: selecting NMEA0183 driver...                                                                                                                                           
gpsctl:INFO: /dev/ttyACM0 identified as type NMEA0183, 0.793732 sec @ 38400bps                                                                                                      
gpsctl:PROG: => Probing for Garmin NMEA                                                                                                                                             
gpsctl:IO: => GPS: $PGRMCE*0E\x0d\x0a                                                                                                                                               
gpsctl:IO: <= GPS: $GPRMC,133715.00,A,5008.64927,N,00839.98328,E,0.389,,100315,,,D*7A                                                                                               
gpsctl:PROG: GPRMC sentence timestamped 133715.00.                                                                                                                                  
gpsctl:PROG: GPRMC starts a reporting cycle.                                                                                                                                        
gpsctl:PROG: => Probing for SiRF                                                                                                                                                    
gpsctl:IO: => GPS: $PSRF100,0,38400,8,1,0*3C\x0d\x0a                                                                                                                                
gpsctl:IO: <= GPS: $GPVTG,,T,,M,0.389,N,0.721,K,D*20                                                                                                                                
gpsctl:PROG: => Probing for FV-18                                                                                                                                                   
gpsctl:IO: => GPS: $PFEC,GPint*58\x0d\x0a                                                                                                                                           
gpsctl:IO: <= GPS: $GPGGA,133715.00,5008.64927,N,00839.98328,E,2,04,1.50,155.4,M,47.5,M,,0000*57                                                                                    
gpsctl:PROG: GPGGA sentence timestamped 133715.00.                                                                                                                                  
gpsctl:PROG: => Probing for Trimble Copernicus
gpsctl:IO: => GPS: $PTNLSNM,0139,01*5C\x0d\x0a
gpsctl:IO: <= GPS: $GPTXT,01,01,01,PGRM inv format*34
gpsctl:WARN: unknown sentence: "$GPTXT,01,01,01,PGRM inv format*34\x0d\x0a"
gpsctl:PROG: => Probing for Evermore
gpsctl:IO: => GPS: 1002128e7f0101000101010000000000000000131003
gpsctl:IO: <= GPS: $GPGSA,A,3,21,15,05,30,,,,,,,,,3.33,1.50,2.97*08
gpsctl:PROG: GPGSA sets mode 3
gpsctl:PROG: => Probing for GPSClock
gpsctl:IO: => GPS: $PFEC,GPsrq*5B\x0d\x0a
gpsctl:IO: <= GPS: $GPTXT,01,01,01,PSRF inv format*2B
gpsctl:WARN: unknown sentence: "$GPTXT,01,01,01,PSRF inv format*2B\x0d\x0a"
gpsctl:PROG: => Probing for Ashtech
gpsctl:IO: => GPS: $PASHQ,RID*28\x0d\x0a
gpsctl:IO: <= GPS: $GPTXT,01,01,01,PFEC inv format*2C
gpsctl:WARN: unknown sentence: "$GPTXT,01,01,01,PFEC inv format*2C\x0d\x0a"
gpsctl:PROG: => Probing for UBX
gpsctl:PROG: => GPS: UBX class: 06, id: 00, len: 0, crc: 0618
gpsctl:IO: => GPS: b562060000000618
gpsctl:IO: <= GPS: $GPTXT,01,01,01,PTNL inv format*3A
gpsctl:WARN: unknown sentence: "$GPTXT,01,01,01,PTNL inv format*3A\x0d\x0a"
gpsctl:PROG: => Probing for MediaTek
gpsctl:IO: => GPS: $PMTK605*31\x0d\x0a
gpsctl:IO: <= GPS: $GPTXT,01,01,01,PFEC inv format*2C
gpsctl:WARN: unknown sentence: "$GPTXT,01,01,01,PFEC inv format*2C\x0d\x0a"
gpsctl:IO: <= GPS: $GPTXT,01,01,01,PASH inv format*36
gpsctl:WARN: unknown sentence: "$GPTXT,01,01,01,PASH inv format*36\x0d\x0a"
gpsctl:IO: UBX: len 28
gpsctl:PROG: switching to match packet type 11: b56206001400030000000000000000000000070003000000000027ce
gpsctl:PROG: switch_driver(u-blox) called...
gpsctl:PROG: selecting u-blox driver...
gpsctl:INFO: /dev/ttyACM0 identified as type u-blox, 0.796377 sec @ 38400bps
gpsctl:PROG: => GPS: UBX class: 06, id: 16, len: 8, crc: 31e5
gpsctl:IO: => GPS: b56206160800030703000000000031e5
gpsctl:PROG: => GPS: UBX class: 0a, id: 04, len: 0, crc: 0e34
gpsctl:IO: => GPS: b5620a0400000e34
gpsctl:INFO: UBX_CFG_PRT: port 3
gpsctl:IO: UBX: len 10
gpsctl:IO: UBX: len 10
gpsctl:IO: UBX: len 108
gpsctl:PROG: Partial satellite data (1 of 4).
gpsctl:PROG: /dev/ttyACM0 looks like a u-blox 1.00 (59842) at 38400.
/dev/ttyACM0 identified as a u-blox 1.00 (59842) at 38400 baud.
gpsctl:SHOUT: switching to mode BINARY.
gpsctl:PROG: => GPS: UBX class: 06, id: 01, len: 3, crc: 104b
gpsctl:IO: => GPS: b56206010300010401104b
gpsctl:PROG: => GPS: UBX class: 06, id: 01, len: 3, crc: 124f
gpsctl:IO: => GPS: b56206010300010601124f
gpsctl:PROG: => GPS: UBX class: 06, id: 01, len: 3, crc: 2c83
gpsctl:IO: => GPS: b562060103000120012c83
gpsctl:PROG: => GPS: UBX class: 06, id: 01, len: 3, crc: 45ac
gpsctl:IO: => GPS: b5620601030001300a45ac
gpsctl:PROG: => GPS: UBX class: 06, id: 01, len: 3, crc: 47b0
gpsctl:IO: => GPS: b5620601030001320a47b0
gpsctl:PROG: => GPS: UBX class: 06, id: 00, len: 20, crc: 93ac
gpsctl:IO: => GPS: b5620600140003000000d008000000960000070001000000000093ac

The output of sudo lsusb -vv

Bus 001 Device 009: ID 1546:01a7 U-Blox AG 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            2 Communications
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x1546 U-Blox AG
  idProduct          0x01a7 
  bcdDevice            1.00
  iManufacturer           1 u-blox AG - www.u-blox.com
  iProduct                2 u-blox 7 - GPS/GNSS Receiver
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           62
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    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
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

output of the command

screen /dev/ttyACM0 38400

without any prior special settings:

$GPTXT,01,01,02,u-blox ag - www.u-blox.com*50
$GPTXT,01,01,02,HW  UBX-G70xx   00070000 *77
$GPTXT,01,01,02,ROM CORE 1.00 (59842) Jun 27 2012 17:43:52*59
$GPTXT,01,01,02,PROTVER 14.00*1E
$GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20
$GPTXT,01,01,02,ANTSTATUS=OK*3B
$GPTXT,01,01,02,LLC FFFFFFFF-FFFFFFFD-FFFFFFFF-FFFFFFFF-FFFFFFF9*53
$GPRMC,081619.00,A,5008.65923,N,00840.01143,E,0.284,,100315,,,A*72
$GPVTG,,T,,M,0.284,N,0.526,K,A*2C
$GPGGA,081619.00,5008.65923,N,00840.01143,E,1,09,1.15,134.8,M,47.5,M,,*52
$GPGSA,A,3,23,09,06,03,20,10,02,17,01,,,,1.73,1.15,1.29*03
$GPGSV,4,1,15,01,09,155,12,02,15,316,26,03,45,099,07,06,54,288,31*76
$GPGSV,4,2,15,07,12,175,18,08,30,052,13,09,65,227,36,10,33,286,33*7E
$GPGSV,4,3,15,17,13,231,27,20,36,288,29,23,79,083,20,31,09,031,10*7B
$GPGSV,4,4,15,32,03,099,,33,28,210,31,39,30,159,*40
$GPGLL,5008.65923,N,00840.01143,E,081619.00,A,A*63
$GPRMC,081620.00,A,5008.65914,N,00840.01059,E,0.091,,100315,,,A*70
$GPVTG,,T,,M,0.091,N,0.168,K,A*24
$GPGGA,081620.00,5008.65914,N,00840.01059,E,1,09,1.15,135.7,M,47.5,M,,*58
$GPGSA,A,3,23,09,06,03,20,10,02,17,01,,,,1.73,1.15,1.29*03
$GPGSV,4,1,15,01,09,155,11,02,15,316,25,03,45,099,07,06,54,288,30*77
$GPGSV,4,2,15,07,12,175,18,08,30,052,11,09,65,227,35,10,33,286,33*7F
$GPGSV,4,3,15,17,13,231,26,20,36,288,27,23,79,083,18,31,09,031,09*77
$GPGSV,4,4,15,32,03,099,,33,28,210,30,39,30,159,*41
$GPGLL,5008.65914,N,00840.01059,E,081620.00,A,A*67
$GPRMC,081621.00,A,5008.65917,N,00840.01047,E,0.021,,100315,,,A*76
$GPVTG,,T,,M,0.021,N,0.039,K,A*2A
$GPGGA,081621.00,5008.65917,N,00840.01047,E,1,09,1.17,136.2,M,47.5,M,,*51
$GPGSA,A,3,23,09,06,03,20,10,02,17,01,,,,1.84,1.17,1.42*04
$GPGSV,4,1,15,01,09,155,11,02,15,316,25,03,45,099,07,06,54,288,30*77
$GPGSV,4,2,15,07,12,175,18,08,30,052,09,09,65,227,36,10,33,286,33*75
$GPGSV,4,3,15,17,13,231,26,20,36,288,27,23,79,083,16,31,09,031,08*78
$GPGSV,4,4,15,32,03,099,,33,28,210,30,39,30,159,*41
$GPGLL,5008.65917,N,00840.01047,E,081621.00,A,A*6A
$GPRMC,081622.00,A,5008.65916,N,00840.01029,E,0.227,,100315,,,A*78
$GPVTG,,T,,M,0.227,N,0.420,K,A*22
$GPGGA,081622.00,5008.65916,N,00840.01029,E,1,09,1.17,136.6,M,47.5,M,,*5F
$GPGSA,A,3,23,09,06,03,20,10,02,17,01,,,,1.84,1.17,1.42*04
$GPGSV,4,1,15,01,09,155,11,02,15,316,24,03,45,099,11,06,54,288,30*71
$GPGSV,4,2,15,07,12,175,18,08,30,052,09,09,65,227,36,10,33,286,33*75
$GPGSV,4,3,15,17,13,231,26,20,36,288,28,23,79,083,16,31,09,031,*7F
$GPGSV,4,4,15,32,03,099,,33,28,210,30,39,30,159,*41
$GPGLL,5008.65916,N,00840.01029,E,081622.00,A,A*60
$GPRMC,081623.00,A,5008.65919,N,00840.01010,E,0.064,,100315,,,A*79
$GPVTG,,T,,M,0.064,N,0.118,K,A*29
$GPGGA,081623.00,5008.65919,N,00840.01010,E,1,09,1.17,137.0,M,47.5,M,,*5C
$GPGSA,A,3,23,09,06,03,20,10,02,17,01,,,,1.84,1.17,1.42*04
$GPGSV,4,1,15,01,09,155,11,02,15,316,25,03,45,099,11,06,54,288,30*70
$GPGSV,4,2,15,07,12,175,18,08,30,052,08,09,65,227,35,10,33,286,33*77
$GPGSV,4,3,15,17,13,231,26,20,36,288,28,23,79,083,15,31,09,031,*7C
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment