Brikwerk / nxbt

Control your Nintendo Switch through a website, terminal, or macro.
MIT License
817 stars 100 forks source link

Support for SwitchOS 12 #18

Closed Brikwerk closed 3 years ago

Brikwerk commented 3 years ago

Nintendo has recently pushed SwitchOS v12.0.0 which has changed the functionality behind controller connection and input. NXBT is not compatible with this update and, as such, will throw some ugly errors (or not connect at all) if you attempt to initially connect or reconnect an emulated controller.

I'm currently in the process of adding support for this version. This issue will serve as a hub for how support is coming along.

What's Changed with this New Version

  1. The Switch is pickier with which controllers it connects to. As far as I am aware, there hasn't been a firmware update for Pro Controllers, so this is likely some value or new channel it's looking for.
  2. The Switch is pickier with what input frequency the controller uses. Previously, you could jump to the Pro Controller's default 120Hz input frequency off of the connection. Now, however, the Switch will actually close the Bluetooth connection if the input frequency crosses a certain amount on certain menus/screens.

TODO

mitchellcairns commented 2 years ago

@Brikwerk I'm so sorry to dig up this issue-- I'm working on a general use API for ESP32 and I may have an easy resolution for the refresh rate issue. I believe that the 'enable rumble' command may be a bit more than meets the eye. When it's disabled, it might be a 'low power' mode specifically for menus and playback of media (netflix etc).

I suspect that the lowering of the refresh rate is also a power saving measure on top of not sending voltage to the linear actuators. In my code, when handling the interrupt reports, I set the report frequency in coordination with the vibration bit being 1 or 0 and I have not had any disconnects at this point :)

Hope this helps!