Summary of Open-source ELM327 OBD adapter
The article describes an open-source AllPro ELM327-compatible OBD-II adapter built around an NXP LPC1517 Cortex-M3 MCU, supporting all OBD-II standards (J1850 PWM/VPW, ISO 9141-2, ISO 14230-4, ISO 15765-4 CAN). It covers hardware, firmware, variants (Bluetooth with BK3231, USB with FT230XS), available releases, PCB files, wiring to J1962 pins, and programming/licensing notes.
Parts used in the AllPro ELM327 OBD Adapter:
- NXP LPC1517JDB48 ARM Cortex-M3 microprocessor (72 MHz)
- NXP LPC1549 (alternative MCU option)
- Beken BK3231 Bluetooth module (for Bluetooth AllPro)
- FT230XS USB-to-UART chip (for USB ELM327 version)
- Eight-pin OBD-II J1962 connector / OBD-II cable connector
- State Configurable Timers (inside NXP MCU for J1850 handling)
- CAN transceiver (for ISO 15765-4 CAN interface)
- Power supply components (to provide 3.3V, e.g., VREG in FT230XS)
- PCB and related manufacturing files (Gerbers, drill files)
The adapter allows you to interface with your car’s OBD-II bus. It provides you a serial interface using the ELM327 command set and supports all OBD-II standards:
- SAE J1850 PWM
- SAE J1850 VPW
- ISO 9141-2
- ISO 14230-4
- ISO 15765-4 CAN
Hardware
The adapter kit schematic is shown here. It is built around NXP LPC1517 Cortex-M3 microprocessor with 64 kB program memory, but can accommodate another chip from same family like LPC1549 with 256 kB if required. The NXP chips has a ROM-based bootloader that supports loading a binary image into its flash memory using USART or CAN. All the software is written in C++ for NXP LPCXpresso IDE which is essentially using GNU toolchain for ARM Cortex-M processors. However, it can be compiled with other pre-built GNU toolchain, like GCC ARM Embedded or even with Keil uVision IDE.
The Highlights
- NXP LPC1517JDB48 ARM Cortex M3 72Mhz processor
- 64kB Flash, 12kB RAM, 4kB EEPROM
- Using NXP sophisticated State Configurable Timers to do the precise signal handling for J1850 PWM and VPW protocols
- CAN FIFO buffers for handling some not-strict ISO-compliant ECUs
- Botloader for initial firmware programming
- Low power consumption
See building the adapter firmware from the source code. Or, if you just want to program the firmware check the programming the Adapter with Flash Magic. Also, you might consider ELM329 AllPro adapter. It is year 2018 and most likely you need only CAN protocol.
A release is available:
- AllPro Github repository
- allpro-hex.zip — the prebuilt firmware
The software and other materials in allpro-src.zip is released under GPLv3. If you want to reuse the source code in your commercial products, contact me for a commercial license.
The printed circuit board data are available separately:
- allpro-mfgr-data.zip — Gerbers, drill files
The OBD-II Cable Connector
The adapter uses eight pin connector to link up to vehicle’s OBD-II J1962.
|
Bluetooth AllPro
Bluetooth version of AllPro adapter is ready-to-use fitted to “de-facto” standard OBD connector case and paired with SPC-CA v3.0 Bluetooth module based on Beken BK3231 chip. Apparently Beken bought the license for old ARM9E-S core with a substantial discount for their Bluetooth SOC. The core goes back to year 2004. You will need a debugger to program the device though.
Here is the popular Android Torque application output:
USB ELM327
This version of AllPro adapter is ready-to-use fitted to “de-facto” standard OBD connector case and paired FT230XS USB to UART chip. Here is the schematic.
The FTDI chip is crystal-less with the synchronization for this oscillator can be taken from the USB data stream itself and clocking Cortex processor as well. It also providing 3.3V from internal VREG.
Source : Open-source ELM327 OBD adapter
- What OBD-II protocols does the adapter support?
The adapter supports SAE J1850 PWM, SAE J1850 VPW, ISO 9141-2, ISO 14230-4, and ISO 15765-4 CAN. - Which microcontroller is the adapter built around?
It is built around the NXP LPC1517 Cortex-M3 microprocessor. - Can the firmware be built with different toolchains?
Yes, the software is written for NXP LPCXpresso IDE but can be compiled with other GNU toolchains like GCC ARM Embedded or Keil uVision. - Is there a prebuilt firmware release available?
Yes, a prebuilt firmware allpro-hex.zip is available in the AllPro Github repository. - Are PCB manufacturing files provided?
Yes, the PCB data including Gerbers and drill files are available in allpro-mfgr-data.zip. - What variants of the adapter are available?
There is a Bluetooth AllPro variant using Beken BK3231 and a USB ELM327 variant using FT230XS. - How does the adapter map signals to the J1962 connector?
Mappings include Signal Ground to pin 5, CAN High to pin 6, CAN Low to pin 14, J1850 Bus + to pin 2, Battery Positive to pin 16, K Line to pin 7, and J1850 Bus - to pin 10. - Does the MCU support a bootloader for programming?
Yes, the NXP chips have a ROM-based bootloader that supports loading a binary via USART or CAN. - Under what license is the source code released?
The source code in allpro-src.zip is released under GPLv3, with commercial licensing available by contacting the author.




