Releases: JoeGeC/joycon2android
Release list
Joycon2Android 1.0.1
Adds Switch 2 Pro Controller support, including its GL/GR back paddles.
What's new
- Switch 2 Pro Controller is detected in the scan list. Controller type now comes from the product ID in the pairing advertisement (
0x2069= Pro), so the Pro shows up correctly instead of being ignored — the pairing advertisement carries no local name, so this byte is the only type signal available before input starts streaming. - GL/GR back paddles work. They decode from packet byte
0x07and are relayed as HID buttons 15 and 16; the virtual gamepad descriptor now advertises 16 buttons instead of 14. They also appear in the live input display.
Install
Download joycon2android-1.0.1.apk below and install it over your existing copy (same signing key, so it updates in place). See the README for the full setup guide.
Notes
- SYNC is required for every connection. Switch 2's button-press reconnect is console-exclusive at the link layer and can't be reproduced through Android's BLE API — press the SYNC button to connect each time.
- Not affiliated with, endorsed by, or sponsored by Nintendo. The BLE protocol was reverse-engineered by the community; this project contains no Nintendo code. See the credits.
Joycon2Android 1.0.0
Use Nintendo Switch 2 Joy-Con 2 controllers as system-wide gamepads on Android over BLE.
Joy-Con 2 controllers use a custom BLE GATT service rather than standard HID-over-GATT, so Android can't pair them through normal Bluetooth settings. This app connects over GATT, sends the vendor init commands, parses the raw notification packets, and exposes each player as a virtual gamepad via UHID — so any Android app or emulator sees a standard controller.
Features
- Multiple controllers at once — connect several Joy-Con 2s and assign them to up to 4 players (left, right, or paired).
- Virtual gamepad output — each assigned player becomes its own standard HID gamepad, so emulators can map each to a distinct port. Requires Shizuku for privileged access (no root needed).
- DSU (cemuhook) motion server — streams gyro/accel + full pad state to emulators (Dolphin, Cemu, …) over UDP, up to 4 players, with automatic gyro-bias calibration.
- One-tap emulator setup — writes an emulator's controller config to match the current assignment: Eden (stable or Nightly) or Dolphin GameCube bindings, plus Dolphin's DSU + Wii Remote motion mappings.
- Customizable button mapping — a per-console editor (GameCube / Joy-Cons / Wii Remote & Nunchuk) overrides the default Joy-Con → emulator bindings.
- Dual and sideways layouts — dual Joy-Con when L+R are assigned to one player; sideways single-Joy-Con with correctly rotated inputs.
- Live input display — buttons, sticks, IMU (accelerometer + gyroscope), and battery.
Requirements
- Android 7.0+ (API 24), BLE-capable device
- Shizuku running — for the virtual gamepad and emulator auto-setup (the DSU motion server works without it)
- Joy-Con 2 controller(s)
Install
Download joycon2android-1.0.0.apk below and install it (you may need to allow installing from unknown sources). See the README for the full setup guide.
Notes
- SYNC is required for every connection. Switch 2's button-press reconnect is console-exclusive at the link layer and can't be reproduced through Android's BLE API — press the SYNC button to connect each time.
- Not affiliated with, endorsed by, or sponsored by Nintendo. The BLE protocol was reverse-engineered by the community; this project contains no Nintendo code. See the credits.