Homebrew RELEASE MissionControl: Use controllers from other consoles natively via Bluetooth

ndeadly

Well-Known Member
OP
Member
Joined
Nov 5, 2018
Messages
467
Trophies
0
Age
36
XP
2,600
Country
Australia
Correct, only the DS4 is connected when this happens.

If you only connect a DS4 and launch retroarch, you should experience the same bug right away. With only being able to open the sleep menu or exit the application(essentially only being able to use the home button)

the controller still works everywhere else tho, just can’t navigate/use retroarch
Just installed the latest Retroarch on my switch (HOS 11.0.1, AMS 0.17.0, MC 0.4.1) and can confirm my DS4 works without issue. It must be some problem with your setup.
 

britain4

Well-Known Member
Member
Joined
Jun 16, 2014
Messages
434
Trophies
0
Age
30
Location
Sheffield
XP
1,760
Country
Correct, only the DS4 is connected when this happens.

If you only connect a DS4 and launch retroarch, you should experience the same bug right away. With only being able to open the sleep menu or exit the application(essentially only being able to use the home button)

the controller still works everywhere else tho, just can’t navigate/use retroarch

I’ve had a similar problem with my setup today but with all controllers inc the DS4, I wiped and redownloaded all my controller configs and rolled back to the latest stable PCSX core and one of those 2 things fixed it for me
 

jesus96

Pinkboi
Member
Joined
Sep 2, 2015
Messages
380
Trophies
0
XP
1,235
Country
Mexico
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.

Requirements
  • Hackable Nintendo Switch running at least version 0.14.2 of Atmosphère custom firmware. Other custom firmwares are not supported.
  • Compatible Bluetooth controller
Installation

Download the latest release .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.1 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 <insert CFW here>?
No. MissionControl will only run under Atmosphère. This is not an attempt to lock users of other cfw out, Atmosphere is simply the only one (currently) providing the extensions neccessary to MITM Bluetooth communications that make this sysmodule possible.

Will using this get me banned from online?
Currently there haven't been any confirmed cases of bans as a result of running MissionControl. That said, running any unofficial software under CFW will always carry a non-zero risk of ban, and Nintendo could change their ban criteria at any point. While this should be relatively safe, it would certainly be possible to detect that you had connected foreign controllers to the console if they were interested in doing do. Use at your own discretion.

Does this support USB controllers?
No. MissionControl is Bluetooth-only for now.

Does this work with sys-con installed?
Yes, the two can be run simultaneously without stepping on each others toes.

My console is crashing on boot because of this sysmodule. What can I do?
If you're seeing crashes on boot with title ID 010000000000bd00, it is likely either you have updated recently to a new Atmosphere release and an update to MissionControl is required, or you are running an old version of Atmosphere which is not compatible with the latest version of MissionControl.

How can I use this with multiple sysNAND/emuMMC launch configs?
Pairing controllers across multiple unique HOS installations requires multiple pairing databases and is essentially the same as pairing with two different consoles. The only exception being the case where you paired the controller(s) prior to making sysNAND copies. For now you will have to re-pair your controllers when switching back and forth. In the future I hope to include an option to load/store the database on the SD card to avoid this issue.

My Xbox One Controller buttons are mapped incorrectly. Can you fix it?
You didn't read the Known Issues and Limitations section, did you? You need to update your controller firmware to the latest version. This can be done on Windows using the Xbox Accessories app. You can also do this on the Xbox itself.

Can you add support for PS3 controllers?
Having looked into this a bit, it appears it's going to be a lot of work given the constraints of HOS (if it can even be done without breaking support for other Bluetooth controllers). I won't rule out a solution in the future, but this is not high priority for me right now. Sorry DS3 owners.

Can you add support for Xbox 360 controllers?
No. These don't use Bluetooth. Try sys-con with a wireless USB adapter.

Can you add support for wake from sleep?
Probably not. As far as I know, wake from sleep involves a controller sending a special control command to the Switch Bluetooth hardware. There is no way to make a non-switch controller send the command recognised by the Switch without modifying its hardware/firmware.

Can you add bluetooth audio support?
No. The bluetooth module on the switch only implements a small set of services required to make hid controllers work. Of this small set of services, only a handful of high-level functions are exposed to the rest of the system. Adding audio support would require implementing the services necessary for audio transport, for which any sane person would require an open-source re-implementation of the bluetooth module in order to have access the low-level functions required to pull it off.


Link:
https://github.com/ndeadly/MissionControl

Latest release:
https://github.com/ndeadly/MissionControl/releases/tag/v0.4.1

Donate:
https://ko-fi.com/ndeadly
btc: bc1q4rh4vmqaujmewrswes303nms5mj3p80j7lqat0

Man thank you so much for this you save me from buying controllers again since i had a wii u pro controller and even the non oficial ones work as well,again thanks you are the best :yay:
 
  • Like
Reactions: ndeadly

lieder1987

Well-Known Member
Member
Joined
Sep 24, 2017
Messages
212
Trophies
0
XP
2,181
Country
United States
This is kind of a mission Control and retroarch question. Is there a way to hotkey to the retroarch arch menu from an xbox controller through mission control? Did some googling, and nothing is giving me an answer.
 

ndeadly

Well-Known Member
OP
Member
Joined
Nov 5, 2018
Messages
467
Trophies
0
Age
36
XP
2,600
Country
Australia
This is kind of a mission Control and retroarch question. Is there a way to hotkey to the retroarch arch menu from an xbox controller through mission control? Did some googling, and nothing is giving me an answer.
Not quite sure exactly what you mean there. Are you asking about a means to return to the retroarch menu from within retroarch? A global shortcut to bring up retroarch?
While it might be possible to monitor button presses from MissionControl to perform certain actions like launching an applet, I think this kind of thing is a bit out of scope for the project.
 

lieder1987

Well-Known Member
Member
Joined
Sep 24, 2017
Messages
212
Trophies
0
XP
2,181
Country
United States
Not quite sure exactly what you mean there. Are you asking about a means to return to the retroarch menu from within retroarch?

This. WHen in retroarch and using the switch the + and - pressed together while in a rom will bring up the menu. There seems to be no way to do this using a different controller. Nothing against the software, just wasnt sure if anyone had figured out a method.

The software is amazing, and if there is no solution all I have to do is turn off the controller and do it from the switch.
 

ndeadly

Well-Known Member
OP
Member
Joined
Nov 5, 2018
Messages
467
Trophies
0
Age
36
XP
2,600
Country
Australia
This. WHen in retroarch and using the switch the + and - pressed together while in a rom will bring up the menu. There seems to be no way to do this using a different controller. Nothing against the software, just wasnt sure if anyone had figured out a method.

The software is amazing, and if there is no solution all I have to do is turn off the controller and do it from the switch.
I don't see why it should be any different for any other controller, assuming it has something mapped to + and -. I just launched retroarch now and tried it with my xbox controller. Pressing the view and menu buttons together brings up the quick menu, which I assume is what you're talking about.
 

ndeadly

Well-Known Member
OP
Member
Joined
Nov 5, 2018
Messages
467
Trophies
0
Age
36
XP
2,600
Country
Australia
Is it possible to connect 8 full joycons using this?
Full joycons meaning left/right pairs (16 joycons in total)? If so, then no. The switch only supports a total of 8 controllers connected simultaneously, regardless of whether the joycons are linked together as a single controller or not.
 

ploggy

WAKA! WAKA!
Member
Joined
Aug 29, 2007
Messages
4,818
Trophies
2
XP
7,840
Country
United Kingdom
Looking forward to when per controller configs are implemented.. more specifically the ability to adjust analog deadzones, my clone switch pro controller's analog sticks are way too sensitive :P If I hold right on my analog stick and let go.. it doesn't return to centre like it should it flicks to the left and registers as left press. I think the analog spring isn't sturdy enough. It's a pita when playing platformers. lol
 

Clapmaster

Well-Known Member
Member
Joined
Dec 3, 2009
Messages
186
Trophies
0
XP
599
Country
United States
Man I'm super excited for rumble support. This program is amazing! No longer have to mess around with pairing to my 8bitdo adapter. Thank you so much ndeadly!
 

Relax_Max

New Member
Newbie
Joined
Dec 29, 2020
Messages
1
Trophies
0
Age
26
XP
60
Country
Norway
Hi, great project you have going here. Enables people to be more minimalistic, if I could say.. Pointless to have more controllers to the only benefit of Nintendo' wallet.

I was wondering if you could add support for Razer Raiju Mobile controller? It's built for Android out of the box, so unsure if you would need a whole new hook for it or just mapping values. It also supports xinput.

I was going to add a request/issue on GitHub, but figured I would ask for correct format here first.

This controller actually paired with the Switch on first attempt, recognized as a Pro controller in btdb.nro . However the controller blinked red (obviously indicating something is not right) when trying to "ping it" via Controllers>Change Grip>Search.
Then in Hid Report Viewer the context is "No report data".
So I tried to delete the Bluetooth database with btdb.nro, to further debug myself. But funny thing is that now I can't pair it at all no more. Leaving me confused how I even managed to pair it the first time :P

So is there any offical formating on controller requests? What do you need etc.
 

ndeadly

Well-Known Member
OP
Member
Joined
Nov 5, 2018
Messages
467
Trophies
0
Age
36
XP
2,600
Country
Australia
Any eta for support ps3 controller please?

Thanks a lot. Btw is there any plans for supporting ps3 controller as well?

Is there anything new about supporting ps3 controller please?

I’m still hope for ps3 controller support

Please is there anything new about supporting ps3 controller? Because it’s been a while since that.

Please stop asking about this. I have already explained the situation, and I am not investing any time into it. If anything changes you will hear about it. DS3 support will likely come via USB long before Bluetooth (if at all).


Hi, great project you have going here. Enables people to be more minimalistic, if I could say.. Pointless to have more controllers to the only benefit of Nintendo' wallet.

I was wondering if you could add support for Razer Raiju Mobile controller? It's built for Android out of the box, so unsure if you would need a whole new hook for it or just mapping values. It also supports xinput.

I was going to add a request/issue on GitHub, but figured I would ask for correct format here first.

This controller actually paired with the Switch on first attempt, recognized as a Pro controller in btdb.nro . However the controller blinked red (obviously indicating something is not right) when trying to "ping it" via Controllers>Change Grip>Search.
Then in Hid Report Viewer the context is "No report data".
So I tried to delete the Bluetooth database with btdb.nro, to further debug myself. But funny thing is that now I can't pair it at all no more. Leaving me confused how I even managed to pair it the first time :P

So is there any offical formating on controller requests? What do you need etc.
Sure, no problem! I already have support for some Razer controllers, so it's quite possible whitelisting the hardware ID of the controller is all that's needed. Your description of the issue does sound a little odd though. I would not expect the controller to appear as a Pro Controller in the database shown by btdb, since it has not been designed for Switch at all. Are you sure you weren't mistaking an entry from an actual Pro Controller for this one? If the controller successfully pairs but isn't matched against a whitelisted entry, it should appear in the controller applet as a pro controller with red buttons. You should also be able to see the data it sends in HID Report Viewer. If you are not seeing this it sounds like the controller isn't completing the pairing. The manual seems to suggest there are multiple Bluetooth modes. Have you messed around with these?

I don't have any official format for controller requests (I should really get around to creating a template on github one of these days...) Just go ahead and open an issue. The fact that you're even asking about it here shows you're already giving it more thought than most :P

The most important thing I need is a hardware ID (vid/pid) for whitelisting the controller. A screenshot of the btdb output is enough. If the controller doesn't use a known report format then I'll also need a transcription of the packets seen via HID Report Viewer. Additional info such as whether the controller has support for rumble or motion controls, player leds etc can also be useful, though not required for adding basic support. You could also include information about any special button combo or mode you had to use to get the controller to pair for the sake of other users with the same controller.

Let's continue this exchange on github.
 
Last edited by ndeadly,
  • Like
Reactions: lordelan

ndeadly

Well-Known Member
OP
Member
Joined
Nov 5, 2018
Messages
467
Trophies
0
Age
36
XP
2,600
Country
Australia
Bro,Any news about Rumble support?
I've had it working for major console controllers for some months now. Other controllers will depend on whether people can provide me with information about their output report format. There is definitely some room for improvement, which is why I haven't released anything yet. I know it's a highly anticipated feature, but with the core of it out of the way it's just not a very interesting problem to work on from a dev point of view. I recently implemented reading settings from a config ini though, so I may release something soon now that users who aren't happy with the current state can just disable it.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    The Real Jdbye @ The Real Jdbye: @K3Nv2 is too dumb to assemble IKEA furniture :tpi: