Closed oxley192 closed 1 year ago
It's on my list of things to do. PS3 controllers use a non-standard pairing process that's different to the other supported controllers and involves having to connect a USB cable first. More research is required to determine whether support is feasible without compromising the bluetooth service.
would it be possible to connect it asfirst via hid-mitm https://github.com/jakibaki/hid-mitm and then connect it via MissionControl?
If you can connect it via hid-mitm, then you don't need MissionControl. This wouldn't work anyway as hid fetches the controller data from bluetooth, not the other way around
I'm curious, how is the switch reacting if we use sixpair.c to swap the ps3 controller target mac with switch's bt address and try to press PS button while in change grip/order on the switch? Also, how do I find the Switch's bt mac address?
That would be interesting to try. I'm busy with some other stuff at the moment. If you have the means and want to try it, I can add the switch host bd address to the output of btdb.nro if you want.
I would love to contribute somehow
There you go. Let me know if you find anything interesting. I haven't made a handler for DS3 yet, so don't expect it to connect with the console just yet. If it's successful at pairing, the controller may end up in the device database though.
Yeah, it didn't paired. But if the switch is on the blinking lights of ps3 controller goes off for less time than if the switch off or sleeping. I'm gonna check the duration of the blinking on both cases and share
Also, I think the DS3 uses Bluetooth legacy pairing like the Wii controllers. From memory it uses the default 0000 pincode but you might want to check that. If it's anything other than that then it definitely won't pair.
i'm gonna check on others devices then
None of 0000, 1234, 1111 and 9999 works... maybe none of the pin codes works
Where are you trying this? MissionControl will only send 0000 (Wii controllers excepted) for now FYI.
I'm trying on my phone (android), it doesn't pair with any pin codes that i provide
Is there a way to create a fake record at database? Where does the switch saves this info?
It's possible, but there's no point. Nothing interesting will happen if you fake it, as the database stores the link key which is negotiated between the controller and the host during pairing. You need the key to be stored in controller memory too for the connection to be established.
Understood, i will try to investigate more
the PS3 Controller needs to allow the Switch Bluetooth to connect to it but it needs somehow to be connected before that it works EDIT: u can use a special software that edits the PS3 paired bluetooth mac adress that allows the switch to connect https://sixaxispairtool.en.lo4d.com/windows
Yeah, I've done that (using sixpair.c) but if didn't create any info on database and didn't pair. When I tried on an android phone it asks a pin code (but doesn't accept any). But if I use bluetoothctl with connect command at a linux computer (ubuntu 20.04.1) It connects (without asking for a pin code) and can use as a joystick (but the system doesn't know the name somehow)
@brenodantas10 do u have tried adding via sixpair.c the bluetooth mac address from ur phone and then connecting?
Yes I did, it asks for a pin code. But, unfortunately, 0000, 1234 and others default pin codes doesn't pair the controller. The phone is not rooted though, I might try that later (although I don't think it matters if it's going to try to connect via Pin Code, but I want to try other ways)
I tried sixpair.c earlier today myself. No luck with getting it connected, it didn't even show up in device discovery logs. This gives me a bad feeling the bluetooth driver may need to be patched.
I seem to remember reading somewhere that the ds3 uses 0000 as a pincode, but not certain on that.
i found this page a while ago PS3-Information. It gives some info about the controller and references, but unfortunately few of the reference links are broken...
I hope it helps somehow.
Yo i was thinking how about pairing the ds3 before startup i mean plug the controller with usb while the device is power off then power on .. maybe i just give an idea that maybe works .. 😁
@KAMELCOLTD the controller still needs to complete the pairing process with the console via Bluetooth to exchange link keys. The problem is that the DS3 is currently not even showing up to the Switch.
One more thing in sixaxis before pairing you need to plug the controller with usb . i managed it to work without pluging the usb. in non otg device i just manualy edit the mac address and it work's. maybe if you can edit the nro app read and edit or even add manualy maybe we can help with testing with every single possible steps. Or where the mac address stored exactly so i can do my best to make it work.
I don't think the mac address is the problem. I set it successfully using a modified sixpair.c where I manually inserted my console mac. I think the issue is that some non-standard stuff needs to be done at lower levels of the bluetooth driver than we have direct access to.
If you want to play around with it, the latest version of my btdb.nro applet will print your console mac address to the screen.
Great but i mean where to put the controller address not the console or if i can edit the already paired mac.
i will work with debug step by step and find out what happen when pairing ds3 with pc and android and also 8bit adapter to find the low level of how it really paired .
one more thing did you try to press the reset button while trying to pair ? The reset button located beside L2 button.
i will start testing now i hope i can find the missing block.
The Switch stores the controller address alongside other info to the database after successfully pairing with it. As I said earlier in this thread, manually inserting the controller mac address into the database is useless without the two devices having exchanged keys.
Yeah I tried the reset button. I think it only serves to make the controller forget existing pairings anyway.
Yo good morning What i did so far i paired the ds3 to android without pin code or usb just bluetooth .. i edit the master host of the controller to fit the mac of my phone and it works without any more steps.
Next i changed my phone bluetooth mac into the NS so both had the same mac address
Trying to pair but it wont i even tried to pair the joy-con to my phone but it won't so i try to pair all controllers at same time to phone and the console .. non of ds3 or joy-con paired lol 😂😂😂
Next i try to pair the joy-con to pc it works no pin needed no 3rd party app used too.
for the DS3 it asks for pin but nothing works....
Here is the idea
When i try to pair the the ds3 to my phone it works without asking for pin.
" there is something about the driver it self. sixaxis always install a driver before pairing and it always works no pin no usb needed."
Thats what i came with i hope my bad english was enough to make the idea.
https://github.com/sgmoorthy/PS3RasPiRobot idk about this one but it hold's some informations
https://help.ubuntu.com/community/Sixaxis?action=AttachFile&do=get&target=sixpair.c This one used to pair ds3 for psvita
Ds3 code
054c:0268
Can you add ds3 to whitelist!
just for more tests i tries to do it by myself but i can't 😑
@KAMELCOLTD this one whitelists the dualshock3, so it should show up as connected if you were to somehow find a way to make it work. MissionControl-0.2.1-ds3-experimental.zip
thank you very much ❤ i will do my best testing..
Unfortunately, even this experimental version doesn't seem to work... Exact same resuts, ps3 controller blinks and then turns off.
But i have one more info. When connected to PC, the ps3 controller appears at device list but not at paired list.
I read at the link I sent 6 days ago that the ps3 controller sends a connection request and the device (pc/cellphone/NS/etc) needs to accept the request. It's like the opposite of a pairing process...
@brenodantas10 this version is not intended to "work", it simply provides a handler that recognises the ds3 hardware ID so the controller would show up as connected to the switch in the event someone figured out a way to make it pair with the console.
I read at the link I sent 6 days ago that the ps3 controller sends a connection request and the device (pc/cellphone/NS/etc) needs to accept the request. It's like the opposite of a pairing process...
Yes, and herein lies the problem. In order to do that sort of stuff you need to be able to access the lower levels of the Bluetooth stack. These are not exposed by the Switch Bluetooth service. This is one (of several) reason Bluetooth audio can't be easily done either. On systems like linux and android, you have much more freedom to work around this. Many things are open source and you have the power to simply compile modified drivers and install them. We are not able to do this with the Switch.
I know, I've just wanted to give a feedback of my results. I saw the limited functions list at switchbrew, it really should be difficult to figure out the way to make this work...
Just had a thought. If you could get the DS3 to pair under switch linux, you could probably extract the link key and inject it into the database under HOS
Just had a thought. If you could get the DS3 to pair under switch linux, you could probably extract the link key and inject it into the database under HOS
I managed to connect the ds3 to linux Ubuntu, I don't know much but it could help with anything ... what is the command to get the keys?
Did you do this on the Switch or PC? Pretty sure the controller stores the host address alongside the key, so if doing this from PC you would also need to spoof the Bluetooth adapter address to be that of your Switch.
I believe the Bluetooth pairing stuff is stored under /var/lib/bluetooth/<mac_address>
. Not sure of the structure of the data in there though. I plan to take a look after work tonight and see if I can make a script to extract the necessary info and convert it to the format used by the switch, and a switch homebrew app to inject it into the database.
I don't have L4T (I don't have space left for a backups on my HD...), so i get this info from my PC. bt-info.zip
(Put a joy-con info too for comparison)
Did you do this on the Switch or PC? Pretty sure the controller stores the host address alongside the key, so if doing this from PC you would also need to spoof the Bluetooth adapter address to be that of your Switch.
I believe the Bluetooth pairing stuff is stored under
/var/lib/bluetooth/<mac_address>
. Not sure of the structure of the data in there though. I plan to take a look after work tonight and see if I can make a script to extract the necessary info and convert it to the format used by the switch, and a switch homebrew app to inject it into the database.
using the LT4 of the Switch, being connected to Bluetooth
Did you do this on the Switch or PC? Pretty sure the controller stores the host address alongside the key, so if doing this from PC you would also need to spoof the Bluetooth adapter address to be that of your Switch.
I believe the Bluetooth pairing stuff is stored under
/var/lib/bluetooth/<mac_address>
. Not sure of the structure of the data in there though. I plan to take a look after work tonight and see if I can make a script to extract the necessary info and convert it to the format used by the switch, and a switch homebrew app to inject it into the database.
Did you do this on the Switch or PC? Pretty sure the controller stores the host address alongside the key, so if doing this from PC you would also need to spoof the Bluetooth adapter address to be that of your Switch. I believe the Bluetooth pairing stuff is stored under
/var/lib/bluetooth/<mac_address>
. Not sure of the structure of the data in there though. I plan to take a look after work tonight and see if I can make a script to extract the necessary info and convert it to the format used by the switch, and a switch homebrew app to inject it into the database.
I think those addresses directly under /var/lib/bluetooth/
are host adapter addresses. What does running hcitool dev
show you?
@HENRIKMAK what did you have to do to make sixad work? Mine does nothing after starting when I hit the PS button. I ran sixpair first to set the host address
hcitool dev
that's all i see with DS3 connected to LT4 Ubuntu
@HENRIKMAK what did you have to do to make sixad work? Mine does nothing after starting when I hit the PS button. I ran sixpair first to set the host address
the same thing happened to me at first, I'm not sure but following everything on these sites here:
then running the command: sixpair it worked, but even if it still didn't work for you I can give you all the main commands I executed in the terminal so you can have an idea ok
that's all i see with DS3 connected to LT4 Ubuntu
Yeah, that's all you're meant to see. That's the host address of your Switch. So you should find the DS3 pairing info at /var/lib/bluetooth/64:b5:c6:4b:19:14/00:06:f5:3d:7c:d7/info
waiting too long Ndeadly are you sure it might work if i find the key ? i am going to install the system just for it. One more thing can we just do that in pc or laptop or it must be done in L4T only?
I don't think it will work to be honest. The pairing info posted by @brenodantas10 doesn't even contain the key and I've confirmed this myself with l4t. From what I can tell all other solutions on Linux/Android involve running a custom driver. I think it talks to the DS3 in some unauthenticated mode. We don't have this flexibility on the Switch. I think the only solution is to hook the Switch Bluetooth driver to add the required functionality. This is not a simple task, and is not something I will be looking at for some time.
I will still try to add database dumping/restoring features when I have time as this may be useful for the Xbox One Elite V2 controller. I'll post it here for you to try when it's working, but don't get your hopes up.
I will still try to add database dumping/restoring features when I have time as this may be useful for the Xbox One Elite V2 controller. I'll post it here for you to try when it's working, but don't get your hopes up.
New hope thank you we all waiting here . and you are right all other method's to pairing ds3 needed a custom driver.
One more thing i tried to pair fake ds3 in Lakka but it didn't work's .. original one works perfectly just like i you pairing it to ps3..
so i hope all of testers trying with original ds3.
Thank you
Would you please had support for PS3 controllers