# MissionControl Use controllers from other consoles natively on your Nintendo Switch via Bluetooth. No dongles or other external hardware neccessary. ### Features * Connect up to 8 non-switch Bluetooth controllers simultaneously without any additional hardware. * Low input lag. * Make use of native HOS menus for controller pairing, button remapping (firmware 10.0.0+) etc. * Supports all Switch firmware versions * `btdrv.mitm` module adds extension IPC commands that can be used to interact with the `bluetooth` process without interfering with the state of the system. ### Supported Controllers Currently, the following controllers are supported. If you have a third-party variant of one of the below, or a Bluetooth controller that isn't listed, consider submitting an issue with the controller details, including vid/pid, to request support. * __Nintendo Wii Remote + extensions (Nunchuck, Classic Controller, Classic Controller Pro, SNES Mini, TaTaCon (Taiko drum))__ * __Nintendo WiiU Pro Controller__ * __Sony DualShock4 Controller__ * __Sony Dualsense Controller__ * __Microsoft Xbox One S/X Controller__* * __NVidia Shield Controller__ * __Ouya Controller__ * __Gamestick Controller__ * __Gembox Controller__ * __Ipega Controllers (9017s, 9023, 9062S, 9076, 9078, 9087 9096 confirmed working. Others may also work)__ * __Xiaomi Mi Controller__ * __Steelseries Free__ * __Steelseries Nimbus__ * __GameSir G3s__ * __GameSir G4s__ * __Hori Onyx__ * __8BitDo ZERO (Most other 8BitDo controllers have a Switch mode available. May require firmware update)__ * __PowerA Moga Hero__ * __PowerA Moga Pro__ * __PowerA Moga Pro 2__ * __Mad-Catz C.T.R.L.R__ * __Razer Serval__ * __Mocute 050__ **Not all Xbox One wireless controllers support Bluetooth. Older variants use a proprietary 2.4Ghz protocol and cannot be used with the Switch. See [here](https://support.xbox.com/help/hardware-network/accessories/connect-and-troubleshoot-xbox-one-bluetooth-issues) for information on identifying the Bluetooth variant.* ### Requirements * Hackable Nintendo Switch running ***at least*** version 0.14.2 of [Atmosphère](https://github.com/Atmosphere-NX/Atmosphere/releases) custom firmware. Other custom firmwares are ***not supported***. * Compatible Bluetooth controller ### Installation Download the [latest release](https://github.com/ndeadly/MissionControl/releases) .zip and extract to the root of your SD card, allowing the folders to merge and overwriting any existing files. A console reboot is required in order for MissionControl to become active. ***IMPORTANT: Atmosphère >= 0.16.0 is required to run the latest release of MissionControl. Using an older Atmosphère version will cause MissionControl to crash the system on boot. Users upgrading from version 0.1.0 of MissionControl are also advised to wipe their pairing database and re-pair controllers running the latest version. Failure to wipe the old entries may result in non-switch controllers being detected incorrectly.*** ### Usage Install MissionControl to your SD card and reboot the console. MissionControl runs as a background process and makes use of the system's native UI to handle controllers. The controller pairing dialog can be accessed from the home screen via `Controllers->Change Grip/Order`. While sitting on this screen, place your controller in pairing mode (see below) and wait for it to connect to the console. Once paired, controllers will reconnect automatically when woken up. There is no need to re-pair them every time. Controllers that successfully pair but haven't been supported yet will display with red buttons on the `Controllers` menu to indicate their controls are not being mapped. Please open an issue to request support for such controllers. Most native features *should* just work (with the exception of things like firmware update). If you find something that's broken please create an issue. ### Pairing controllers The supported controllers each have their own methods to enter pairing/sync mode. Below are instructions on entering this mode for each supported type. ***Wii(U) Controllers*** Press the red sync button on the back of the controller. The controller LEDs will blink rapidly. ***Dualshock4 Controllers*** Press and hold the `PS` + `share` buttons simultaneously until the lightbar starts blinking. When done correctly the blink pattern will resemble a heartbeat, otherwise it will blink periodically. ***Xbox One Controllers*** Press and hold the `guide`(`X`) button until the LED starts blinking. Then press and hold the small sync button on the back near the charging port until the LED starts blinking more rapidly. You should also ensure your controller firmware is up to date, as old firmwares were known to have flakey bluetooth. ***Other Controllers*** Please refer to your controller's user manual for information on how to put it in sync mode. Note that many generic Bluetooth controllers can be started in one of several modes. Usually you want to choose something like HID, PC or Android mode for it to work correctly. ### Planned/In-progress Features Below is a list of features I am currently working on or would like to look into in the future, roughly in descending order of priority. Requests are welcome if you have an idea you think would make a useful feature. * Rumble support * Motion controls support * Bluetooth LE support * Per-controller configurations * Rumble on/off * Motion controls on/off * Identify as Pro Controller or Joycon * Set controller body/button colours * Invert analog stick axes * Analog stick deadzones * Companion application * Pairing database management * View paired controller information * Clear database * Export database to file * Import existing database from file * Controller management/diagnostics * Manage controller configurations * View raw HID report data * Test buttons/analog sticks * Dump SPI flash (official controllers only) * Controller discovery/pairing reimplementation * Tesla overlay * Keyboard and mouse support * Gamecube mode (analog trigger support) * USB wired controllers ### Known Issues and Limitations * Non-Switch controllers cannot be used to wake the system from sleep. * Controllers using the Bluetooth LE (BLE) standard are currently not supported and will not connect to the system. * Xbox One Elite V2 controllers cannot complete the pairing process with the console and in some cases cause it to crash. Without access to a physical controller there's not a lot I can do to debug the process. * Xbox One, Wii/WiiU and (especially) some Dualshock v1 controllers can take some time to be detected and subsequently pair with the Console. Be patient and re-enter the sync mode of the controller several times if neccessary. Once synced, controllers should work as usual. * Xbox One button layout was changed at some point in a firmware update. Please ensure your controller firmware is up to date if you have issues with incorrect button mappings. * Reported controller battery levels may not be correct. I'm relying entirely on reverse engineering notes found on the internet for these. In many cases I don't own the controller and there is simply no information available, so these controllers will always show full battery. Any help in improving this is most welcome. * Several users have reported knockoff WiiU controllers that cannot be detected by the console during Bluetooth discovery. Unfortunately I think they're using an incompatible Bluetooth chipset. ### Frequently Asked Questions ***Does this run on \