Repository navigation
A full redesign of the app, automatic start when the controller connects, proper Android TV remote support, and a round of fixes validated on real hardware.
New look
- Rebuilt from scratch in Jetpack Compose with a cleaner card-based design: rounded outlined cards, check-circle choices, check/cross switches.
- Three tabs: Home, Profiles and Settings, in a floating bottom bar on phones and a side rail on tablets, foldables and TVs.
- Two-column layout on large screens, such as an unfolded Fold or a tablet.
- Start Service sits right under the controller card. Calibration, Button mapping and Debug HID moved to Settings.
- The status card shows the real state at a glance: Controller ready / disconnected, Shizuku, battery and the emulated controller.
- Bluetooth controllers are listed directly, with a refresh button, instead of a dropdown.
- Theme switching (Steam / Dynamic) applies instantly, without restarting the app.
Automatic start
- New option: start automatically when the controller connects. Over Bluetooth it works with the app closed: the virtual pad appears about half a second after the controller connects, and disappears when it is switched off.
Android TV
- Fully usable with a TV remote: a clear focus ring on the selected item, scrollable Debug screen, and sliders adjustable with left/right.
Fixes
- Rumble now works over USB / Puck, with an intensity that scales properly.
- Lizard mode is now really turned off over USB. The previous version sent a command that turned it back on.
- LT full press no longer fires when you click the right trackpad: it now reads the bit the controller actually sets.
- The battery shows "Charging" on the cable, instead of a misleading 100%.
- The calibration preview now moves up when the stick goes up. If you had turned on "Invert Y" to make the preview look right, turn it off: in games it was inverting the axis.
- No more duplicate controllers in games after an update or a crash: leftover background services are cleaned up when the service starts.
- No more missing virtual keyboard while the controller or Puck is connected.
- Compatible with Android's 16 KB memory pages, so there is no more "not compatible" warning on recent devices.
Under the hood
- The SC2026 protocol is aligned with the current reference implementation (SteamlessController) and checked against hardware captures.
- The debug build installs alongside the release one.
Known limitations
- Shizuku must be running. After a phone reboot, start it again before using the controller.
- Auto-start over USB doesn't work on some Samsung devices: Android doesn't open the app when the controller is plugged in. Bluetooth is not affected.
- With the Puck, Android only sees the dongle, so turning the controller on with the Puck already plugged in can't start the app on its own.
Upgrading from 2.0: install over it. Your settings and game profiles are kept.