# [SOLVED] Cheap unbranded USB GPS dongle from China

## daniel.santos

I love scary titles! So I think (hope?) most people have done this before, found some nice (looking) accessory and brought it before checking to make sure there was a Linux driver.  Well this time, it was only $25 so the damage wasn't that bad, but once I had already paid for it I was determined to reverse engineer the damn thing and redeem myself!

So this came from ankaka.com and was described as a GPS USB Receiver for PC/Laptops (Fast Sync with 65 Channels and Compatible with most brands of GPS software).  I stuck it in and did lsusb

```
Bus 004 Device 006: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
```

Fuck! They didn't even bother programming the USB interface's PROM!  Now that's CHEAP!  It's one thing if they don't change the Vendor ID & Product ID since it costs $3500 to get a Vendor ID from the USB Forum, but they could at least change the description, it's just a goddam USB command! (Well, you have to ground a PIN as well.)

So this USB interface is the CP2104 USB to UART Bridge Controller (originally by Cygnal Integrated Products, but since acquired by Silicon Labs) and this interface is (luckily) pretty straight forward.  I can't find real data on the GPS chip, it is apparently now obsolete, but appears to be a cousin or predecessor to this "GPS module with antenna SKM53" (which says "G229" on the top and not "SKM53") by the Chinese company Skylab (a.k.a. Skylab  Technology Co., Ltd., a.k.a Skylab M&C Technology Co., Ltd.).  However, the chip in this dongle says "G233" on top and I have no idea what the original part number really was.

So the good news is that it will work out of the box with the in-tree driver cp210x (CONFIG_USB_SERIAL_CP210X), which you can enable via "Device Drivers --> USB Support --> USB Serial Converter support --> USB CP210x family of UART Bridge Controllers" in menuconfig.  Load that module up, cat /dev/ttyUSB0 and get your GPS spew!

EDIT: Oh yeah, this spew is apparently the NMEA-0183 protocol.

```
Bus 004 Device 006: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.00

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0 

  bDeviceProtocol         0 

  bMaxPacketSize0        64

  idVendor           0x10c4 Cygnal Integrated Products, Inc.

  idProduct          0xea60 CP210x UART Bridge / myAVR mySmartUSB light

  bcdDevice            1.00

  iManufacturer           1 Silicon Labs

  iProduct                2 CP2104 USB to UART Bridge Controller

  iSerial                 3 005DD8B2

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength           32

    bNumInterfaces          1

    bConfigurationValue     1

    iConfiguration          0 

    bmAttributes         0x80

      (Bus Powered)

    MaxPower              100mA

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           2

      bInterfaceClass       255 Vendor Specific Class

      bInterfaceSubClass      0 

      bInterfaceProtocol      0 

      iInterface              2 CP2104 USB to UART Bridge Controller

      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:     0x0000

  (Bus Powered)

```

----------

## jpc22

Could you tell me how good is the signal with that device and does it compares to a regular gps?

----------

## daniel.santos

 *jpc22 wrote:*   

> Could you tell me how good is the signal with that device and does it compares to a regular gps?

 

Sorry, I can't really say yet, although it does get a signal from inside my house a few feet away from a window.  That's better than my garmin will do sometimes, but I can't really rate the product its self just yet. I brought it for part of a hack-together telescope drive system and it works well enough for that, so I'm done testing for my purposes.  :Smile:   I suppose I could hook it up to my laptop and ride around with my fiancé one day and compare it to the garmin nuvi, but I'm not making any promises.

----------

## jpc22

Seems good for the price.

By telescope drive system do you mean you have a telescope strapped to a rc car, or someting that drives a telescope around?

----------

