ndeadly / MissionControl

Use controllers from other consoles natively on your Nintendo Switch via Bluetooth. No dongles or other external hardware neccessary.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Controller Request]: JoyCon Droid (no root)

timaaos opened this issue · comments

Controller Name

JoyCon Droid on non-rooted phone

Current Controller Behaviour

Controller is not successful in pairing with the console

Controller vendor and product ID

No response

Supported Features

  • Rumble/Vibration
  • Motion Controls
  • Player Number Indicator
  • Battery Level Reporting

Input Report Format

No response

Additional Details

JoyCon Droid emulates joycons/procons, but it requires root device because switch firmware checks bluetooth device type. I didnt found anything about disabling that check so i think it can be added as controller support in MissionControl

This should be possible by tweaking Mission Control's exefs patches to the device class check. I do this already to allow gamepads that present as other hid devices such as keyboards and joysticks. Someone was asking me about this a while ago and I started looking into it but stopped when I found I couldn't run JoyCon Droid on either of my Android devices to test.

Do you know which device class values (or range of) are typically used for android phones? I don't really want to remove the device class check entirely, because it's one of the few things preventing the console from attempting to connect to any arbitrary Bluetooth device that happens to be advertising.

Let me know which console firmware you're running. I can make an experimental patch to bluetooth to just skip the check for now, if you'd like to test if it works

I would like to test, sadly, I dont know device class ranges of android phones, but i have switch lite on atmosphere and samsung phone that supports bluetooth HID, my current switch firmware version is 16.0.3

Give this a try. It should jump over the device class checks straight to the function that opens the HID connection. Keep in mind that it is purely for testing, will only work for 16.0.x firmwares and will likely break bluetooth audio connections for now.

Extract the zip and copy it to the root of your SD card and allow it to merge with your existing Mission Control installation.

joycon-droid-patch-16-0-x.zip

20231102_204913.jpg

I get this error when i click connect button in joycon droid

Hmm, that's an error in the btm module that manages bluetooth connections. It often aborts when it receives some value it doesn't like. Unfortunately I haven't really reversed it much above firmware 14.0.0 so I'm not sure what those functions are in the traceback.

Try installing this version of MC with logging enabled, maybe it will give some idea of what Joycon Droid is sending. It will make a log on your sd root (mc-mitm.log). You will need to make sure you reinstall the patch file I shared above after installing this version.

MissionControl-0.9.4-debug-logging-055ec35.zip

Now it stopped crashing, my phone paired to switch, but it doesnt show that "Device connected to Switch" popup and switch doesnt add controller to Change Grip/Order
mc-mitm.log

I think something went wrong with your attachment - this file is completely empty. It should have at least a timestamp written into it upon creation.

Okay, now it should work, by the way I attempted multiple times so the log is long. https://gist.github.com/timaaos/0405e3524dac951c5bf017c4835b7a93

I have tried to connect some more times, got Switch paired with phone, and after multiple attempts i got atmosphere fatal error.
Program ID: 010000000000bd00
Error Desc: Data Abort (0x101)
This is report:
report_00000005413d75d4.zip

Okay, now it should work, by the way I attempted multiple times so the log is long. https://gist.github.com/timaaos/0405e3524dac951c5bf017c4835b7a93

It looks as though the phone is successfully pairing and connecting, but it doesn't have the correct vendor and product id so at the very least, Mission Control is treating it as an unknown controller. I don't know whether these IDs are coming from your phone, or whether Joycon Droid sets them though. Which phone model do you have?

You could try disabling Mission Control entirely, but leaving the patches. It's possible the system will ignore the vendor/product ids and continue the connection.

I have tried to connect some more times, got Switch paired with phone, and after multiple attempts i got atmosphere fatal error. Program ID: 010000000000bd00 Error Desc: Data Abort (0x101) This is report: report_00000005413d75d4.zip

Hmm, this is a Mission Control crash. Unfortunately, I haven't kept the .elf files around for the debug builds, so I can't use that report to find the source of the crash. Now that I have this log you can use a release build again. If you manage to make one of those crash, then I am able to debug the crash.

If you want to contact me on discord, we can probably debug this faster. Either DM me @ ndeadly, or you can join my server https://discord.gg/gegfNZ5Ucz

DMed you on Discord!

Could you provide a guide on how to connect ? It does not work here

Replace the contents of the bluetooth_patches directory of your Mission Control install with these patches and reboot. You can then use joycondroid as usual without root. I believe you need Android version <13