Commit graph

54 commits

Author SHA1 Message Date
e2f9e1f211 Add UART link statistics and drop host-side gyro zeroing
STATS command (0xAA 0xFE 0x08 0x02 'STATS') returns frames accepted/rejected,
bytes discarded, RX FIFO overruns and motion frame/sample counters;
controller-uart-bridge --debug-uart prints them beside host send counts.
The bridge no longer zeroes the gyro from its first 200 samples: like the
AIO's Bluepad32 path, controller-calibrated values are forwarded unchanged.
2026-09-22 17:25:52 -06:00
6c27e601d9 Consume UART motion samples once per USB report like the AIO
The bridge now forwards each SDL sensor sample once instead of re-sending
its last window at 500 Hz, and the firmware pools pending samples per slot
until a USB report retires them. A stalled or slow sensor stream can no
longer be re-integrated as continuous rotation in quaternion mode.
--debug-imu reports the sample rate, |a| in g and bias lock state.
2026-09-22 16:56:45 -06:00
8db720fb9a Accept USB BOOTSEL reboot on the UART firmware
The regular firmware now answers the EP0 vendor INFO and BOOTSEL reboot
requests with the AIO wire protocol, so switch-pico-config reboot bootsel
works when the Pico's USB side is on a PC. Wire constants move to
usb_management_protocol.h; other operations stall.
2026-09-22 10:59:29 -06:00
6e0676d9df Add UART BOOTSEL reboot command to the regular firmware
The bridge sends 0xAA 0xFE 0x08 0x01 'BOOTSEL' ck; the firmware verifies
checksum and magic and calls reset_usb_boot(). Exposed as
controller-uart-bridge --reboot-bootsel PORT and build.py --uart-port PORT,
which waits for the ROM loader before running picotool.
2026-09-22 10:41:51 -06:00
b6a017eb06 Emulate up to four controllers on the UART firmware
UART protocol v3 adds a slot byte to input frames (v2 still accepted as
slot 0) and slot-tagged BB 03 rumble frames. The regular firmware exposes
SWITCH_PICO_UART_CONTROLLERS (default 4) Switch Pro interfaces like the
AIO build. The bridge shares one serial port across controllers, maps
index:port[:slot], and demuxes rumble by slot.
2026-09-22 10:25:30 -06:00
e2c8e0d860 Consolidate firmware variants and publish AIO radio-mode builds 2026-09-09 11:53:14 -06:00
7c1c37a84e Improve Bluetooth credit handling and Switch 2 connection timing 2026-09-09 10:40:25 -06:00
fa38123873 Add Wii MotionPlus support and calibrated Nunchuk controls 2026-09-08 12:39:44 -06:00
46f42a26dc Fix DualSense native audio initialization and default to accepted 32-frame format 2026-09-08 10:15:07 -06:00
79a72d811d fix: keep Joy-Con links fast and stop idle rumble writes 2026-09-07 20:35:02 -06:00
ed8f3a7c7f fix: reserve Classic reconnect airtime with two Switch 2 links 2026-09-07 18:39:30 -06:00
b0a896997b fix: retain the lower player slot when joining Joy-Cons 2026-09-07 18:07:31 -06:00
06a89b5ae1 feat: select Joy-Con player modes and join pairs with a shortcut 2026-09-07 17:42:33 -06:00
34f8a50c19 feat: give Joy-Con pairs independent persistent profile banks 2026-09-07 15:41:06 -06:00
8451b1eec9 feat: add model-aware Controller Studio artwork and topology 2026-09-07 12:57:33 -06:00
8dd11c17a6 fix: reconnect Joy-Con mates and balance mixed Bluetooth links 2026-09-07 12:04:41 -06:00
006b573ee8 feat: preserve native HD rumble on Switch 2 controllers 2026-09-07 08:19:53 -06:00
a87917bf0b feat: support Switch 2 controllers and expanded profiles 2026-09-06 23:17:26 -06:00
4e48b7a9e7 feat: add Xbox impulse-trigger rumble mapping 2026-09-06 16:14:11 -06:00
dcc97e05ba feat: coordinate native rumble with deadline-aware scheduling 2026-09-06 15:12:06 -06:00
3fc28b1fa4 feat: add opt-in native Nintendo rumble backend 2026-09-05 23:58:50 -06:00
71fcf5bb94 fix: use sustainable native haptics cadence for mixed controllers 2026-09-05 22:34:20 -06:00
3b1366067b Track generated wake configuration in builds 2026-09-05 08:49:57 -06:00
1f9d7f6824 Keep wake identity stable during play 2026-09-04 23:47:00 -06:00
6f58d345e0 Add Switch 2 wake capture and replay 2026-09-04 23:27:02 -06:00
4626b13bd8 Add managed reboot into USB BOOTSEL 2026-09-03 14:15:31 -06:00
bd5d4b3177 Complete USB output mode qualification 2026-09-03 14:04:38 -06:00
1e36571770 Fix XUSB binding after reconnect 2026-09-03 12:46:44 -06:00
7358670e63 Complete controller profile runtime 2026-09-02 20:28:45 -06:00
7afc9981fe Add versioned persistent configuration protocol 2026-09-02 15:24:35 -06:00
b11ae076a8 Introduce protocol-neutral controller state 2026-09-02 14:53:56 -06:00
df515934ab Merge branch 'master' into feature/protocol-neutral-state 2026-09-02 14:28:42 -06:00
7449d6d029 Pause Bluetooth discovery during active play 2026-09-02 14:27:27 -06:00
db4a860cd6 Fix Windows adapter enumeration and rumble 2026-09-02 12:29:57 -06:00
8351cb1d15 Enable strong rumble for 8BitDo Switch mode 2026-09-02 08:50:26 -06:00
fd23842327 Preserve and reconnect 8BitDo controllers 2026-09-01 08:58:16 -06:00
41c7021813 Add physical and USB pairing management 2026-09-01 08:19:11 -06:00
74a62f035b Gate new controller pairing behind BOOTSEL 2026-09-01 07:49:03 -06:00
146c377311 Allow controller reconnect without BOOTSEL 2026-09-01 07:38:21 -06:00
81f6ac1236 Add per-controller motion toggle 2026-08-31 22:30:29 -06:00
94ccfc7220 Implement per-controller ABXY toggle 2026-08-31 22:17:37 -06:00
fa8ccf0b12 Refresh normalized AIO firmware 2026-08-31 13:57:30 -06:00
11eb44d3d1 Normalize Wii and PS Move motion 2026-08-31 12:12:44 -06:00
23a3cbade5 Assign colors per controller slot 2026-08-31 09:06:00 -06:00
4a73680bd2 Gate controller pairing behind BOOTSEL 2026-08-31 08:25:08 -06:00
18c27b06ae Verify and publish dual-controller AIO firmware 2026-08-30 22:40:03 -06:00
04df6b88ad Remove rumble activity from Pico status LED 2026-08-30 16:30:10 -06:00
7bd3244006 Add Pico 2 W Bluetooth status diagnostics
Expose scanning, connecting, ready, and nonzero rumble activity on the onboard LED; publish the physically verified AIO firmware.
2026-08-30 16:21:24 -06:00
bce94d38ce Add stateful HD-rumble decoder with TinyUSB report normalization
Decode Nintendo HD-rumble words once in firmware into conventional low/high magnitudes and normalize stripped control SET_REPORT vs complete interrupt OUT reports through one path.
2026-08-29 22:19:31 -06:00
20c9c98f89 Document and publish Bluepad32 AIO firmware 2026-08-29 17:46:54 -06:00