Freerunner Navigation Board v3

From Openmoko

Jump to: navigation, search

The third version of the Freerunner Navigation Board was necessary because the compass chip used on the Freerunner Navigation Board and the Freerunner Navigation Board v2 has been discontinued.

FRNBv3 front+back small.jpg



Due to the new, smaller compass chip, the FRNBv3 offers a complete 10-DoF navigation solution. In addition to the 3D gyroscope, 3D compass and the barometer which are already known from the FRNBv2, the v3 adds a high resolution accelerometer. It should be more accurate for navigation purposes than the integrated LIS302 accelerometers.

Top Side

  • 3D Gyroscope ITG-3200
  • 3D Magnetometer HMC5883L
  • Air pressure/temperature sensor BMP085
  • Accelerometer BMA180

Bottom side

The Bottom side of the PCB contains optional chips which might be used for different purposes. The FRNBv3 includes:

  • TCA6705 7-channel LED controller
  • MPR121 touch sensor controller
  • M26LR64 I²C EEPROM accessible through RFID (antenna still needed)
  • TXS0102 I²C level shifter (to connect additional sensors
  • MIC1557 based 38KHz oscillator (for IR-remote control applications)

Additional features

The board operates with 3V or 3.3V which is needed for the sensors to work correctly. To be able to connect the board to other devices (for example GTA04, OpenPandora, Always Innovating devices), the I/O voltage can be anything between 1.8V and VCC. To use the board with the Freerunner, just short the VCC and VCCIO solder points.

All sensors feature a "conversion complete" output which can trigger an interrupt. These signals are now available at small solder points.


Schematic and board layout files are available from gitorious (CadSoft EAGLE 5.x format) or here

I2C Addresss Map

Used I2C addresses

Address Chip Description Kernel driver
0x1e HMC5883l Compass git repository
0x41 BMA180 Accelerometer git repository (first try, help needed)
0x45 TCA6507 LED Controller source file (untested)
0x50 MPR121 Touch Controller git repository (help needed)
0x54 M24LR64 I²C/RFID EEPROM none yet
0x69 ITG3200 Gyroscope git repository
0x77 BMP085 Pressure/Temperature sensor git repository (also available upstream since 2.6.35)


FRNBv3 front+back+text small.jpg

Standard features

Pin Description Voltage range
GND Ground 0
VCC Supply voltage for sensors. 3 - 3.6
VCC I/O Interface voltage of the I2C bus. 1.8 - VCC
SCL I2C clock line VCC I/O
SDA I2C data line VCC I/O

Level shifter

Pin Description Voltage range
VCC/E Target (external) VCC VCC - 5.5
SCL/E level translated I2C clock line VCC/E
SDA/E level translated I2C data line VCC/E
OE Output enable: connect to VCC I/O to enable the level shifter VCC I/O

LED Controller TODO


Touch Controller TODO

38kHz Oscillator TODO



To connect the FRNBv3 to your Freerunner, follow the instructions for the Freerunner Navigation Board v2 and then short the VCC and VCC I/O pads with a solder blob.

Other devices

with I2C voltage levels below 3.6V

If you want to connect the FRNBv3 to other devices such as the Open Pandora, you need 3V-3.6V as supply voltage for the sensors. The I2C interface can work with a different, lower voltage level. Lots of devices use 1.8V here. Connect an additional wire to VCC I/O to specify the voltage level of the I2C interface.

with I2C voltage levels up to 5.5V

To connect the board I2C busses with higher voltages the integrated level shifter on complete assembled boards comes in handy. Connect the target voltage to VCC/E and the I2C bus lines to SDA/E and SCL/E. Then wire OE to VCC I/O to enable the level translator. Remember that the board still needs a supply voltage between 3V and 3.6V to power the sensors. This can be gained with a simple 3V LDO. Connect the 3V power supply to VCC and short this pad to VCC I/O.

Example: connect the board to a graphics card

The VGA connector uses an I2C bus for DDC. Since such a connector is available on most notebooks, it is a good candidate to connect the FRNBv3 to. Luckily the VGA connector also carries 5V which can be used to power the board: a simple LDO will generate the 3V sensor supply voltage. I used the TPS73630 but any other LDO should be fine too. Connect Pin 9 (5V) and 10 (GND) to the LDO and its output to VCC and VCC I/O on the FRNBv3. Then connect the I2C bus:

VGA connector FRNBv3
Pin 9 (+5V DC) VCC/E
Pin 10 (GND) GND
Pin 12 (SDA) SDA/E
Pin 15 (SCL) SCL/E

Finally, use a short wire to connect OE to VCC I/O (both solderpads are on the backside) and you are done.

This also works with DVI (Pins 6, 7, 14, 15) and HDMI (Pins 15-18)!

Power consumption

All sensors on the FRNBv3 support powermanagement. The current consumption of each sensor is listed in the table below. These values are taken from the datasheets, the real current consumption could be different. It often increases with higher sample rates.

Sensor standby active remarks
ITG3200 5µA 6500µA
HMC5883L 2µA 100µA 7.5 Hz
BMP085 0.1µA 12µA average current in high resolution mode (default), 1 Hz
BMA180 0.5µA 975µA "low noise" mode

The power state of each sensor can be controlled through the I2C bus. Most kernel drivers expose a sysfs file to change it. Integration with the generic linux powermanagement code is planned.


Known HW or SW Issues Nothing known yet.



This program provides altitude or weather information on Neo Freerunners with bmp085 pressure sensors installed. The bmp085 is available as part of the Freerunner Navigation Board. Source code and binaries can be found here.


The team already takes preorders. You can find it here.

Two assembly options are available:

  • Complete: Contains all chips as described above.
  • Standard: Top-Side only, contains all sensors relevant for navigation purposes. The compass chip should be a little bit more accurate since a few capacitors on the bottom side are missing. They could distord the magnetic field.
Personal tools