Skip to the content
2 layers21 × 35 mmBEAN adapter, the printed circuit board in 3D

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

6

README

Readme.md

Description

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

text
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
QtyValueFootprintReferences
30.1Capacitor_SMD:C_0603_1608MetricC2, C3, C5
21.5kResistor_SMD:R_0603_1608MetricR9, R13
222nCapacitor_SMD:C_0603_1608MetricC6, C8
22SC2412Package_TO_SOT_SMD:SOT-23Q1, Q2
2BZT52C18SDiode_SMD:D_SOD-323D3, D4
2Conn_01x07Connector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_VerticalX1, X2
11.2kResistor_SMD:R_0603_1608MetricR8
1100Capacitor_SMD:C_0603_1608MetricC7
110uCapacitor_SMD:C_0603_1608MetricC1
110uHInductor_SMD:L_Taiyo-Yuden_MD-3030L1
112kResistor_SMD:R_0603_1608MetricR5
116MHzkicad_pcb:Murata_CSTCExxxxV_3213_crystalZ1
116kResistor_SMD:R_0603_1608MetricR12
118kResistor_SMD:R_0603_1608MetricR2
12.4kResistor_SMD:R_0603_1608MetricR7
127Resistor_SMD:R_0805_2012MetricR11
12SA1037Package_TO_SOT_SMD:SOT-23Q3
13kResistor_SMD:R_0603_1608MetricR1
14.7kResistor_SMD:R_0603_1608MetricR14
147kResistor_SMD:R_0603_1608MetricR6
156kResistor_SMD:R_0603_1608MetricR4
1590 mVDiode_SMD:D_SOD-323D8
182kResistor_SMD:R_0603_1608MetricR3
191Resistor_SMD:R_0805_2012MetricR10
1ATmega88paPackage_QFP:TQFP-32_7x7mm_P0.8mmU1
1BZT52C2V4SDiode_SMD:D_SOD-323D7
1BZT52C4V7SDiode_SMD:D_SOD-323D2
1DDiode_SMD:D_SOD-110D6
1DDiode_SMD:D_SOD-323D5
1LEDLED_SMD:LED_0603_1608MetricD1

More from specadmin/toyota-mpx

1
  • 2 layers45 × 23 mmBEAN sniffer, the printed circuit board in 3D

    BEAN sniffer

    specadmin/toyota-mpx

    Toyota MPX (BEAN) asynchronous driver for AVR

    36 parts53GPL-3.0

Similar boards

  • 2 layers44.1 × 23.7 mmSnes dejitter, the printed circuit board in 3D

    Snes dejitter

    marqs85/snes_dejitter

    NES/SNES 240p de-jitter mod

    39 parts56MIT
  • 4 layers80 × 60 mmMR1, the printed circuit board in 3D

    MR1

    EpicQuestBio/MR1

    MR1 specs

    113 parts1CC0-1.0
  • 2 layers46.4 × 80 mm3Phase, the printed circuit board in 3D

    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 mmYAMMU ControlBoard v05, the printed circuit board in 3D

    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 mmTest 09. With ESP module, the printed circuit board in 3D

    Test 09. With ESP module

    henkjannl/RoomThermostat

    Opentherm room thermostat that can be controlled through Telegram, but also locally

    66 parts1MIT
  • 2 layers100 × 100 mmHour meter board microfit can handroute, the printed circuit board in 3D

    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 mmOpenHap, the printed circuit board in 3D

    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 mmNitride nano, the printed circuit board in 3D

    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).