This project converts USB MIDI signals from Yamaha Digital Piano to Bluetooth MIDI (BLE MIDI), enabling wireless MIDI connectivity.
Tested on Yamaha YDP-144.
- ESP32-S3 DevKitC board
- USB Type A breakout board
- Yamaha Digital Piano (with USB MIDI support)
Connect the USB Type A breakout board to ESP32-S3 as follows:
- USB D+ → GPIO20
- USB D- → GPIO19
- USB VCC → 5V
- USB GND → GND
- Connect the hardware according to the wiring instructions
- Flash the program to ESP32-S3
- Connect a USB cable between the piano and the USB breakout board
- Piano side: Standard USB-B port
- Breakout board side: USB-A port
- Turn on Bluetooth on your mobile device/tablet and search for the MIDI device
- Start using - the piano's MIDI signals will now be transmitted via Bluetooth to the connected device
idf.py -p /dev/your_usb_to_serial_port flashDownload firmware files from the latest GitHub Release.
Download:
usb2ble_midi_bridge_merged.bin
Install esptool if needed:
python -m pip install esptoolFlash it at offset 0x0:
python -m esptool --chip esp32s3 -p /dev/your_usb_to_serial_port -b 460800 \
--before default_reset --after hard_reset \
write_flash --flash_mode dio --flash_size 8MB --flash_freq 80m \
0x0 usb2ble_midi_bridge_merged.binOn macOS the serial port is usually like /dev/cu.usbserial-120 or /dev/cu.usbmodem*.
Download:
bootloader.binpartition-table.binusb2ble_midi_bridge.bin
Flash them with explicit offsets:
python -m esptool --chip esp32s3 -p /dev/your_usb_to_serial_port -b 460800 \
--before default_reset --after hard_reset \
write_flash --flash_mode dio --flash_size 8MB --flash_freq 80m \
0x0 bootloader.bin \
0x8000 partition-table.bin \
0x10000 usb2ble_midi_bridge.bin