Skip to content

BlueRetro DIY Build Instructions

Jacques Gagnon edited this page Dec 4, 2023 · 17 revisions

Bill of materials

  • ESP32-DEVKITC-32E with ESP-WROOM-32 (Get it on Digikey or Mouser)
  • DB-25 Female connector solder cup (or console plug if hardwired)

Build instructions

  1. Install esptool and prerequisites (not required for Windows):

    Linux: Install prerequisites.

    macOS: Install prerequisites and USB driver (Note: You may need to Allow driver under System Preferences > Security & Privacy, and reboot).

    Then run:

    pip install esptool
    
  2. Download latest BlueRetro binary from GitHub and flash them on your ESP32.

    Linux/macOS: Find your device path which should look like /dev/tty* on Linux or /dev/cu.* on macOS. Then run the following (changing /dev/ttyUSB0 to your actual device):

    esptool.py -p /dev/ttyUSB0 \
      -b 460800 --before default_reset --after hard_reset --chip esp32 \
      write_flash --flash_mode dio --flash_size detect --flash_freq 40m \
      0x1000 bootloader/bootloader.bin \
      0x8000 partition_table/partition-table.bin \
      0xd000 ota/ota_data_initial.bin \
      0x10000 BlueRetro_universal_spiffs.bin
    

    Windows: Flashing firmware Windows 10.

  3. Install DB25 connector (or direct console plug).
    https://github.com/darthcloud/BlueRetroHW/blob/master/DIY/BlueRetroDIY.pdf

  4. Build target system cable adapter (or use as reference for direct console plug).
    https://github.com/darthcloud/BlueRetro/wiki/BlueRetro-Cables-Build-Instructions

  5. (Optional) Power on system and connect via Web Bluetooth to configure adapter.
    The config mode is only available if no controller is connected.
    https://blueretro.io

  6. BlueRetro is always in pairing mode if no controller connected.
    Pair via inquiry first (SYNC or pairing mode), on subsequent connection you can simply page (button press or power on button).
    See guide for more specific instruction: Pairing Guide

  7. (Optional) Wire IO17 as follow to get Bluetooth pairing mode status and error notification:

  8. (Optional) Port status LED

    ESP32 IO Direction Function Note
    2 Output Controller port 1 LED 3.3v level
    4 Output Controller port 2 LED 3.3v level
    12* Output Controller port 3 LED 3.3v level
    15* Output Controller port 4 LED 3.3v level

    *In PlayStation mode pin 12 & 15 are used as the P1 & P2 Analog LED respectively.

    All those pin are ESP32 strapping pin. Interface via MOSFET to avoid problem at boot.

    8.1. Behavior while in pairing mode
    The first available port LED will be pulsing.

    8.2. Behavior when BT controller connected
    Port which got an active BT connection will have it's corresponding LED solid.

    8.3. Behavior while system reset is pressed (Boot button)
    All port LED are used to indicate current switch function.

Clone this wiki locally