A test jig can be created using Spring Pogo Pins. At a minimum, the test jig should contain pogo pins and mounting holes at the PCB locations outlined by this spreadsheet. A rooted linux host is necessary for this test - perhaps an embedded android device like a raspberyPi, Beagleboard or pcDuino.

  1. Connect OBD cable, JTAG and Micro USB cables to the board under test
  2. Apply 12V power to board
  3. Measure all power rails, verify they are within 0.1V of target
  4. Remove +12V power, attach +5V supply to the Micro USB port
  5. Re-verify power rails are within range
  6. Re-apply 12V power to board
  7. Deploy test firmware to board, examine OpenOCD output for errors
  8. Take snapshot of logic levels and compare to expected values: BT_RTS, BT_CTS, BT_RESET, BT_CONN, DOCK_PWR_EN, DOCK_PWR_OUT, USB_CON, ISP_EN, USBBOOT_EN, DEBUG_TX, DEBUG_RX, RESET, DOCK_PWR_FLT, DOCK_PWR_PG
  9. Boot into ISP bootloader (Pull ISP_EN low, Toggle RESET, Release ISP_EN) and retrieve LPC1769 serial number
  10. (ensure that test firmware configures the baud rate of the RN-41 device, see RN-41 configuration)
  11. Execute short bluetooth bandwidth test (data-test.py –bandwidth –size 5000 –plot). Capture results. Take snapshot of BT_RTS, BT_CTS, BT_RESET, BT_CONN lines upon error
  12. Execute short USB bandwidth test (data-test.py –usb –bandwidth –size 50000 –plot). Capture results. Take snapshot of USB_CON, +5V upon error
  13. Execute short CAN bandwdith test (cantx.py –plot). Capture results. Take snapshot CANA_HI, CANA_LO, CANB_HI, CANB_LO upon error.
  14. Assert Dock power output. Measure voltage at connector output, verify it is within 0.5V of target.
  15. De-assert Dock power output, re-measure, verify connector output is 1V or below.
  16. Deploy Emulator Firmware from the openxc-vi-firmware package and connect to the OpenXC VI with an test Android device.
  17. Use the OpenXC Enabler App on the Android device to verify emulated data is being streamed to Android from the OpenXC VI.
  18. Deploy production firmware to board
  19. Connect to USB, verify production firmware is successfully running

Validation Criteria


  1. Maintain a baud rate of at least 115200 for a sustained 5MB transfer over Bluetooth with no transmission errors
  2. Push varying amounts of data for 12 hours and record all disconnections and transmissions errors
  3. Run through 100 connect/disconnect cycles, looking for failures to connect, or any instance in which the Bluetooth stack on the CAN Translator becomes out of sync.


  1. Maintain a transfer rate of at least 100KB/s for a sustained 5MB transfer over USB with no transmission errors
  2. Push varying amounts of data for 12 hours and record all disconnections and transmissions errors
  3. Verify the CAN translator can be powered via USB when not connected to an OBD-II port
  4. Verify that the CAN translator can be powered by the vehicle through the OBD-II port and also be plugged into an Android device via USB while not having conflicting current.


  1. Verify that CAN messages can be received from a vehicle or test harness, and that the stream can be maintained for 1 hour without interruption.
  2. Verify that a stream of CAN messages can be written out to the CAN bus for 1 hour


  1. Test that MCU can be put to sleep and power draw goes very low
  2. Test that MCU can wakeup on a CAN interrupt and get back to full power, record time to wakeup (time to wakeup is on the order of microseconds)
  3. External power socket should provide steady 12v
  4. External power socket should not provide any power when the MCU goes into sleep mode


  1. RGB LEDs must be controllable from software


  1. OBD-II connector can be attached to a vehicle with a reasonable amount of force
  2. OBD-II connector is robustly connected to the port
  3. OBD-II connector takes a reasonable amount of effort to detach from the vehicle, but the process does not overly strain the housing or PCB
  4. The 12v power cable can be attached and detached with a reasonable amount of force, and resists being knocked out of the socket by accident

Mechanical Design

  1. Designed for injection molding –> Constant wall thickness, appropriate minimum thickness material (0.050” for ABS), draft angles, slide consideration
  2. Robust attachment and mating features between housing pieces
  3. Appropriate fit in specified vehicles (Focus, Flex, F-150, Explorer)