-
-
Notifications
You must be signed in to change notification settings - Fork 109
Home
- 1 - Building hardware HW1
- 2 - Building hardware HW2
- 3 - Pairing Bluetooth controller
- 4 - Web config
- 5 - Physical buttons usage
- 6 - Button combinations functions
- 7 - LED usage IO17
- 8 - Updating firmware
- 9 - BlueRetro debugging
HW1 is the original BlueRetro specification and the easiest one to build yourself. Port usage can't be detected and as such any installed controller plug on the BlueRetro is required to be plug in the console. Unused port pin need to be wired in a stable state as described in the cable building guide.
- DIY ESP32 module flashing & wiring instructions
- BlueRetro Cables Build Instructions
- BlueRetro Consolize system
pmgducati created very nice pcbs that make it very easy to make DIY BlueRetro universal with detachable cable adapters: https://github.com/pmgducati/Blue-Retro-AIO-Units
HW2 specification require a lot more connection and as such is not recommended for novice in electronic at all. HW2 main feature is active port connection detection. This allow making internal install without intefering with wired controllers (Wired controllers take precedance on the bus). This also allow external adapter with multiple cable plugs to not require every plugs to be connected.
Power & Reset management are optional feature supported by HW2 aswell.
I'm not providing guide for HW2, only a specification so if you go that route I'm expecting you known what your are doing.
If you are not sure if you should build HW1 or HW2: the answer is build HW1!
Nostalgic Indulgences created multiple guides base on HW2 for internal install. Checkout his GitHub repo: https://github.com/nostalgic-indulgences/BlueRetro_Internal_Installation
In default configuration BlueRetro is always in inquiry mode (LED pulsing) if no controller is connected
Pair via inquiry first (SYNC or pairing mode), on subsequent connection you can simply page (button press or power on button).
You may change this behavior by switching inquiry mode in the web config to manual.
Pressing BOOT buttons for 3 sec will activate inquiry mode.
Up to 16 connection keys for classic BT and also up to 16 keys for BLE devices can be stored for persistent pairing.
See this list & guide for more specific instruction for each controller type:
Controller List & Pairing Guide
Power on system and connect via Web Bluetooth at https://blueretro.io to configure adapter.
The config mode is only available if no controller is connected.
Supported only in Desktop or Android Chrome
See BlueRetro BLE Web Config User Manual for more detail.
This page describe how the generic options of the Web Config apply to each systems supported by BlueRetro.
System Specific Web Config User Manual
- Reboot BlueRetro
- Button press under < 3 sec (All LEDs solid):
If in pairing mode: Stop pairing mode otherwise all BT devices are disconnect. - Button press between > 3 sec and < 6 sec (All LEDs blink slowly):
Start pairing mode. - Button press between > 6 sec and < 10 sec (All LEDs blink fast):
Factory reset ESP32 to original BlueRetro firmware the device shipped with & reset configuration.
- Button press under < 3 sec (All LEDs solid):
Usual system reset. - Button press between > 3 sec and < 6 sec (All LEDs blink slowly):
If in pairing mode: Stop pairing mode otherwise all BT devices are disconnect. - Button press between > 6 sec and < 10 sec (All LEDs blink fast):
Start pairing mode. - Button press over > 10 sec (All LEDs blink very fast):
Factory reset ESP32 to original BlueRetro firmware the device shipped with & reset configuration.
- Holding system reset and then powering system put the ESP32 in boot (download) mode. Effectively disabling it for the current power session.
- System is powered on via power relay / power pin
- While the ESP32 is in boot mode or in deep sleep the system reset function is lost.
I'm using generic label to describe the button combinations here. Refer to BlueRetro mapping reference for specific buttons. Also added PlayStation buttons name in () to help a bit.
- Disconnect controller (+ power off internal mod):
Main Left Trigger (L2) + Main Right Trigger (R2) + Middle Right (Start)
+ Face Down (X) - System reset internal mod:
Main Left Trigger (L2) + Main Right Trigger (R2) + Middle Right (Start)
+ Face Left (Square) - Toogle Pairing mode on/off:
Main Left Trigger (L2) + Main Right Trigger (R2) + Middle Right (Start)
+ Face Right (Circle) - Factory Reset:
Main Left Trigger (L2) + Main Right Trigger (R2) + Middle Right (Start)
+ Face Up (Triangle) + D-pad Up - Deep Sleep:
Main Left Trigger (L2) + Main Right Trigger (R2) + Middle Right (Start)
+ Face Up (Triangle) + D-pad Down
- See 5 - Physical buttons usage for LED meaning while button BOOT (IO0) is pressed
- Solid: An error occured, try power cycle, check serial logs for detail.
- Pulsing: Bluetooth inquiry mode enable (new pairing).
- Off: No error and Bluetooth inquiry mode disabled.
Once flashed via OTA Web interface, FW flashed via USB won't be loaded anymore until the adapter is factory reset. (See 5 - Physical buttons usage)
Download latest binary from GitHub and flash them on your BlueRetro.
Only internal flash (SPIFFS) firmware are now supported. An universal version with system auto detection is provided in addition to system hard-coded versions.
-
Linux:
~/BlueRetroRoot/python_env/idf4.2_py3.7_env/bin/python ~/BlueRetroRoot/esp-idf/components/esptool_py/esptool/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.bin 0x8000 partition-table.bin 0x10000 BlueRetro.bin
\ -
Windows:
Flashing firmware Windows 10
Required FW v0.19 minimum to be already programmed via USB serial
- Go to https://blueretro.io/ota.html and connect to your BlueRetro adapter (make sure it's powered on and no controller connected).
- Select the BlueRetro*.bin you want then click Update Firmware button.
- Via PC Chrome update should take around 5 minutes, with Android Chrome it will take around 45 minutes (!!!).
See OTA FW Update section of the Web config manual for a video example.
-
RE notes
- ESP32 RTOS + Bare Metal: Best of Both Worlds?
- Learning Bluetooth Classic (BR/EDR) with HCI traces
- Xbox One Adaptive controller
- Evolution of SEGA's IO Interface from SG-1000 to Saturn
- Famicom & NES controller shift register: Parallel-in, Serial-out
- SNES 2P & Super Multitap
- PlayStation & PlayStation 2 SPI interface
- 3DO interface
- PC-FX interface
- CD-i interface
- PCE & TG16 interface
- Jaguar Interface
-
Deprecated content