U-Blox module HW hacks

Recently cheap U-Blox modules become available from Chinese suppliers on ebay and other online shops. The NEO-6M gps engine on these boards is a quite good one, with high precision binary output. However all of the available modules have a significant problem, they do not have EEPROM for storing configuration. You can retrofit these modules with an EEPROM quite easily. Here it is how (along with some other hacks.)

What will you need?

  • An U-blox 6M module
  • Microchip 24AA32A I2C EEPROM
  • 10K resistor
  • Active GPS antenna, the bigger the better
(from left the 18x18mm antenna that comes with the module, 25x25mm from an external GPS antenna, and 35x35mm from MOUSER)

(from left the 18x18mm antenna that comes with the module, 25x25mm from an external GPS antenna, and 35x35mm from MOUSER)



The basic rule is that the antenna gain increases with the size (and volume). Antenna manufacturers are giving the antenna gain towards the zenith, but it is more important that how sensitive the antenna towards the horizon and this is where the size really matters.  (For example a 25x25mm antenna and a 35x35mm antenna booth have 2dB gain at Zenith, but at 10° elevation the 25×25 antenna has only -4dB gain while the 35×35 antenna has 1.5dB.

The 35×35 active antenna on the picture is made by Teoglas, it’s part number AP35A070054A and available from Mouser and other component shops, BUT it’s not cheap (about 30usd), you can alternatively use active antennas from magnetic mounted external GPS antennas, but in that case you have to solder the U.FL connector yourself. You can use FRSKY spare antennas from Hobbyking. (a piece of coax cable and a connector.)

Backup Battery issues

I recently got the module on the picture below from three different sources, (Goodluckbuy, and two different ebay seller). When checked the backup battery it shown zero volts, and when I applied 5V to the module, it still measured as zero. I traced back the schematics, and it seems that the vbat circuit is faulty on these modules.

This is how the module looks like:



The issue is that the R2 connects the VBat to ground (discharging the battery) and the 2.4V charging ends at the right side of C3. Apparently the manufacturer mixed up the components. You can fix it easily by removing R2 and moving C3 to the R2 position, and short the original position of C3. (I removed the battery for testing, but you don’t have to do that.)



Adding an I2CEEPROM

Once you have a working backup battery , then your module will retain its configuration for a couple of days. But eventually it will forget it. For permanent storage you have to use an EEPROM.

To store the configuration you can attach an I2C EEPROM to the module, the gps module will recognize the EEPROM, and load the configuration from it at startup. A couple of I2C modules are supported by the NEO-6M  such as


Address must be set to $A0. The EEPROM connected to the module like this :


Pull up resistors are not needed if we connect only the EEPROM.

I bought the Microchip 24AA32A EEPROM it costs about 50cents per pcs.  With a steady hand you can solder the SMD chip or alternatively you can buy a DIP version and use a small piece of perforated PCB.

First connect A0-A1-A2-GND and WP pins


Then solder the four wires (VCC(purple), GND(blue), SCL(yellow), SDA(green))


To protect the connection, I used hot glue to enclose the chip


There are some modules on ebay which has 3v3 and i2c connections on the pinheader. Unfortunately the cheap ones (like the one above) does not have these pins, so you have to solder it directly.


Serial Level converting

One more common issue with the available U-Blox modules that the serial output is not level converted. The output is not a problem, but the RX input is NOT 5V tolerant, so you have to protect it when connected to flight controller or an FTDI for setup. The easiest way is a 10Kohm resistor in serial on the RX line.


If you want a really foolproof solution, then you can use a sparkfun LLC blob.


Wednesday, August 28th, 2013 MultiWii