bt2n64¶
Bluetooth controllers to N64 console.
Overview¶
Turns a Pico W or Pico 2 W into a wireless Bluetooth-to-N64 adapter. Supports rumble pak emulation, 3 button mapping profiles, and cold boot detection. The adapter identifies itself as having a rumble pak inserted so games detect the accessory.
Input¶
Bluetooth controllers via CYW43 (Classic BT + BLE).
Output¶
N64 Output -- joybus PIO protocol. Standard clock speed (no overclock needed).
Core Configuration¶
| Setting | Value |
|---|---|
| Routing mode | MERGE (all inputs blended to one output) |
| Player slots | 1 |
| Max BT connections | 4 |
| Profile system | 3 profiles |
Profiles¶
Hold Select for 2 seconds, then press D-Pad Up/Down to cycle. Controller rumbles to confirm.
| Profile | Description |
|---|---|
| Default | Standard N64 mapping. Right stick maps to C-buttons (threshold-based). |
| FPS | GoldenEye/Perfect Dark optimized. R1=Z (shoot), L1=R (aim), right stick=C-buttons (strafe/look). |
| Mario | Super Mario 64 optimized. Circle=A (jump), Cross=B (punch), L3=walk modifier (50% stick sensitivity). |
Default Profile¶
Standard N64 mapping with right stick mapped to C-buttons:
| BT Input | N64 Output | Notes |
|---|---|---|
| Cross/A (B1) | A | |
| Square/X (B3) | B | |
| Circle/B (B2) | C-Down | |
| Triangle/Y (B4) | C-Left | |
| L1/LB | L | |
| R1/RB | R | |
| L2/LT | Z | |
| R2/RT | C-Right | |
| Select | C-Up | |
| Start | Start | |
| Guide/Home | Start | |
| Right Stick | C-buttons | Threshold-based |
| Left Stick | Control Stick | |
| D-Pad | D-Pad |
FPS Profile¶
Optimized for GoldenEye, Perfect Dark, and other N64 shooters:
| BT Input | N64 Output | Notes |
|---|---|---|
| Cross/A (B1) | B | Attack |
| Circle/B (B2) | A | Action |
| Square/X (B3) | C-Down | |
| Triangle/Y (B4) | C-Up | |
| R1/RB | Z | Shoot (easier reach) |
| L1/LB | R | Aim/targeting |
| L2/LT | L | |
| R2/RT | Z | Alternate shoot |
| Right Stick | C-buttons | Strafe/look |
Mario Profile¶
Optimized for Super Mario 64 and platformers:
| BT Input | N64 Output | Notes |
|---|---|---|
| Cross/A (B1) | B | Punch/attack |
| Circle/B (B2) | A | Jump |
| Square/X (B3) | C-Down | Camera |
| Triangle/Y (B4) | C-Up | Camera |
| L1/LB | L | Crouch camera |
| R1/RB | R | Shoulder camera |
| L2/LT | Z | Crouch/ground pound |
| R2/RT | Z | Alternate Z |
| L3 (left stick click) | Walk modifier | 50% stick sensitivity |
Key Features¶
- Rumble pak emulation -- Vibration forwarded to BT controller. Left motor ~50%, right motor gentle.
- Cold boot detection -- Responds to PIF's initial controller probe on console power-on.
- BOOTSEL button -- Click to scan 60s for new devices. Hold to clear all bonds.
LED Status¶
| Pattern | Meaning |
|---|---|
| Fast blink (100ms) | N64 console not communicating |
| Slow blink (400ms) | N64 OK, no BT controller connected |
| Very fast blink (50ms) | N64 + BT connected, no data flowing |
| Solid on | Fully operational |
Supported Boards¶
| Board | Build Command |
|---|---|
| Pico W | make bt2n64_pico_w |
| Pico 2 W | make bt2n64_pico2_w |
Build and Flash¶
Pairing¶
- Power on the N64 with the adapter connected.
- The adapter automatically scans for controllers on boot.
- Put your Bluetooth controller into pairing mode.
- Once paired, the controller reconnects automatically on subsequent use.
- Click BOOTSEL to start a 60-second scan for additional devices.
- Hold BOOTSEL to disconnect all devices and clear all bonds.
LED Troubleshooting¶
| LED Pattern | Meaning |
|---|---|
| Fast blink (100ms) | N64 console not communicating -- check wiring (Data on GPIO 2, 3.3V, GND) |
| Slow blink (400ms) | N64 OK, no Bluetooth controller connected -- put controller in pairing mode |
| Very fast blink (50ms) | N64 + BT connected, no data flowing -- try cycling profiles or re-pairing |
| Solid on | Fully operational |
Troubleshooting¶
N64 does not detect controller (fast LED blink): - Check wiring: Data (GPIO 2), 3.3V, GND. - Ensure connections are solid (no loose wires). - Try pressing the N64 reset button.
No BT controller connected (slow LED blink): - Put your controller into pairing mode. - Click BOOTSEL to start a 60-second scan. - Hold BOOTSEL to clear bonds and re-pair from scratch.
Buttons not responding in game: - Verify the correct profile is active (cycle with Select + D-Pad). - Check that the LED is solid (data flowing). - Some controllers may need a specific BT pairing mode (Classic BT vs BLE).
Rumble not working: - Not all games use the rumble pak. - Verify with a known rumble game (e.g., Star Fox 64, Mario 64 Shindou). - Check that your BT controller supports vibration.
Controller disconnects frequently: - Move closer to the adapter (BT range is approximately 10m). - Ensure the controller battery is charged. - Hold BOOTSEL to clear bonds and re-pair.