

BEAN adapter
Toyota MPX (BEAN) asynchronous driver for AVR
- Size
- 21 × 35 mm
- Copper layers
- 2
- Thickness
- 1.4 mm
- Parts
- 37
- Nets
- 45
- Pads
- 118
- Tracks, vias
- 262, 14
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 15 Feb 2020
- Updated
- 12 Jul 2026
Overview
BEAN adapter is an open-source printed circuit board by specadmin, from the specadmin/toyota-mpx repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 21 × 35 mm with 37 parts on 45 nets, routed with 262 tracks and 14 vias.
It is built around the ATMEGA88PA-AU, 2SC2412 and BZT52C18S, with the 2SA1037, BZT52C2V4S and BZT52C4V7S among its other parts. Its parts include 14 resistors, 8 diodes, 7 capacitors, 3 transistors and 2 crystals. It belongs with the interfaces and adapters boards and the AVR (ATmega, ATtiny) boards of this library.
Main components
6ATMEGA88PA-AU
TQFP-32(7x7)-40℃~+85℃ 1.8V~5.5V 10bit 1KB 20MHz 23 512Byte 8 Bit 8KB AVR Built-in FLASH TQFP-32(7x7) Microcontrollers (MCU/MPU/SOC) ROHSMicrochip TechnologyMicrocontrollers (MCU/MPU/SOC)2SC2412
SOT-23Bipolar (BJT)hongjiachengBZT52C18S
SOD-323Zener Diodeshongjiacheng2SA1037
SOT-23SOT-23 Bipolar (BJT) ROHSFOSANBipolar (BJT)BZT52C2V4S
SOD-323Zener DiodesDOWOBZT52C4V7S
SOD-323Zener Diodeshongjiacheng
README
Readme.mdDescription
This library is a software driver for MPX (BEAN) bus interface, designed by Toyota and used in some Toyota and Lexus cars. Find the content of the docs folder for better understanding of this bus. The driver works in asynchonous mode and does not block other routings, while MPX packets are being received or transmited.
You may found some MPX packets' description here.
Features
- Asynchronous receiver
- Asynchronous transmitter
- Independent receiption and transmission
- Arbitration control
- Transmission FIFO queue
- Configurable pins
- Easy timer select
Physical layer
Requirements
- AVR MPU;
- 12 MHz or higher clock frequency;
- one external interrupt (PCINT may be used, but not tested yet);
- one 8 bit timer;
- GNU AVR C compiller (avr-gcc);
Limitations
- The driver has NO it's own address. So it receives all the packets, that are being transmited in the MPX network. The driver does NOT filter any packets and does NOT send acknowlegement to any packets.
Documentation
There is no any special documentation for this library. The library code was written to be efficient and clear for your understanding, so it is full of comments. See the header file for methods descriptions. Also you may find a sample project, that uses this library, inside.
Usage example
void mpxReceiver(BYTE size, const BYTE* buf)
{
// make something with received packet
...
}
int main()
{
...
mpx_init(mpxReceiver);
enable_interrupts();
BYTE data[] = { 0xCD, 0x48 };
mpx_send(6, 0xFE, sizeof(data), data);
...
}Adding to your project
The library is managed as a git submodule. Please refer to git submodule documentation for better understanding.
- Run the following command in your project's root directory to clone the library:
git submodule add https://github.com/specadmin/toyota-mpx lib/toyota-mpx
- Include the library's header file, where you need it:
#include "lib/toyota-mpx/mpx.h"
Parts
37| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 0.1 | Capacitor_SMD:C_0603_1608Metric | C2, C3, C5 |
| 2 | 1.5k | Resistor_SMD:R_0603_1608Metric | R9, R13 |
| 2 | 22n | Capacitor_SMD:C_0603_1608Metric | C6, C8 |
| 2 | 2SC2412 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 2 | BZT52C18S | Diode_SMD:D_SOD-323 | D3, D4 |
| 2 | Conn_01x07 | Connector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_Vertical | X1, X2 |
| 1 | 1.2k | Resistor_SMD:R_0603_1608Metric | R8 |
| 1 | 100 | Capacitor_SMD:C_0603_1608Metric | C7 |
| 1 | 10u | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | 10uH | Inductor_SMD:L_Taiyo-Yuden_MD-3030 | L1 |
| 1 | 12k | Resistor_SMD:R_0603_1608Metric | R5 |
| 1 | 16MHz | kicad_pcb:Murata_CSTCExxxxV_3213_crystal | Z1 |
| 1 | 16k | Resistor_SMD:R_0603_1608Metric | R12 |
| 1 | 18k | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | 2.4k | Resistor_SMD:R_0603_1608Metric | R7 |
| 1 | 27 | Resistor_SMD:R_0805_2012Metric | R11 |
| 1 | 2SA1037 | Package_TO_SOT_SMD:SOT-23 | Q3 |
| 1 | 3k | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 4.7k | Resistor_SMD:R_0603_1608Metric | R14 |
| 1 | 47k | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | 56k | Resistor_SMD:R_0603_1608Metric | R4 |
| 1 | 590 mV | Diode_SMD:D_SOD-323 | D8 |
| 1 | 82k | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 91 | Resistor_SMD:R_0805_2012Metric | R10 |
| 1 | ATmega88pa | Package_QFP:TQFP-32_7x7mm_P0.8mm | U1 |
| 1 | BZT52C2V4S | Diode_SMD:D_SOD-323 | D7 |
| 1 | BZT52C4V7S | Diode_SMD:D_SOD-323 | D2 |
| 1 | D | Diode_SMD:D_SOD-110 | D6 |
| 1 | D | Diode_SMD:D_SOD-323 | D5 |
| 1 | LED | LED_SMD:LED_0603_1608Metric | D1 |
More from specadmin/toyota-mpx
1- 2 layers45 × 23 mm

Similar boards
- 2 layers44.1 × 23.7 mm

- 4 layers80 × 60 mm

- 2 layers46.4 × 80 mm

3Phase
eauel/openzmeter
openzmeter (oZm) is an Open Source system designed for power quality analysis and smart energy metering in power networks. It has been designed to comply with international standards IEC 61000-4-30 and EN 50160.
153 partsGPL-3.0 - 8 layers100 × 60 mm

YAMMU ControlBoard v05
Zergie/YAMMU
A Multi Material Unit (MMU) for eight filaments that can also function as a filament dryer and can keep it dry while printing. The design is heavily inspired by voron and their printers.
234 parts107GPL-3.0 - 2 layers90 × 54 mm

Test 09. With ESP module
henkjannl/RoomThermostat
Opentherm room thermostat that can be controlled through Telegram, but also locally
66 parts1MIT - 2 layers100 × 100 mm

Hour meter board microfit can handroute
ilomon10/embedded-totalizer-hour-meter
ESP32 engine hour meter & totalizer: firmware, SensorFrame protocol, Node host tools, KiCad PCB and a Deno device simulator
152 parts - 4 layers85 × 50 mm

OpenHap
kenyattaejones32-boop/AQM
Open-source hardware design for OpenHAP, an ESP32-based air quality monitor with CO sensing, thermistor temperature input, USB-C charging, and cellular data upload.
269 parts - 6 layers120 × 57 mm

Nitride nano
NovaPrime18/nitride-nano
USB-C PD3.1 240W compatible 60V buck/boost converter nano powersupply
310 parts3CERN-OHL-S-2.0
Questions
How big is the BEAN adapter PCB?
It measures 21 × 35 mm and has 2 copper layers, 1.4 mm thick.
What parts does the BEAN adapter use?
37 parts, built around the ATMEGA88PA-AU, 2SC2412, BZT52C18S and 2SA1037. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the BEAN adapter KiCad files?
From the specadmin/toyota-mpx repository on GitHub, at the commit this page was made from: the board is samples/MPX-dev-board/Rev.1/schematics/BEAN-adapter.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the BEAN adapter design in my own project?
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).