meancoot / MFiWrapper

iOS Mobile Substrate tweak for GCController.
GNU General Public License v3.0
63 stars 10 forks source link

DualShock4 pairing and assignment not working #9

Open OMGsus opened 10 years ago

OMGsus commented 10 years ago

I couldn't get the dualshock 4 to pair using the iOS pairing setup. It just immediately fails and says pairing took too long, after only about 1 second. Retried about 100x and even re-paired to to another host and tried to pair it back in case it was messing up from being already pairs front he previous revision of MFiWrapper (btstack).

So, I can only get the DS4 to pair using wii-pair with btstack, then going back into native btserver pairing and initiating the pair from the DS4 PS button. it asks to allow pair from "wireless controller" and sets itself to the "ready" state (solid white) but never gets assigned a player and thus cannot be used.

I will say, the DS4 re-pairs itself flawlessly. it just stays in limbo.

meancoot commented 10 years ago

What apps have you tested with?

Also, stupid question, but did you try to use the DS4 even though the light bar stays white? The light bar will always remain white due to limitations in the IOHIDManager API. The DS4 only accepts the packet used to change it on the HID Control channel, but IOHIDManager only allows me to send using the interrupt channel.

OMGsus commented 10 years ago

I tested with oceanhorn, worms, replaceables, and the latest codebase of RA as of yesterday.

Yes I thought maybe it was like one of the previous releases where even though it would stay white, it would work fine, but it doesn't pass keys. And I want to say MFiwrapper doesn't even see the DS4 because every game tested doesn't behave like a controller is connected. For instance, in oceanhorn, the selector hand never appears.

Again, this might have to do with how I had to end up pairing the DS4.

On Feb 22, 2014, at 3:18 PM, meancoot notifications@github.com wrote:

What apps have you tested with?

Also, stupid question, but did you try to use the DS4 even though the light bar stays white? The light bar will always remain white due to limitations in the IOHIDManager API. The DS4 only accepts the packet used to change it on the HID Control channel, but IOHIDManager only allows me to send using the interrupt channel.

— Reply to this email directly or view it on GitHub.

OMGsus commented 10 years ago

Also.. Aww that stinks about the limitation there. But not a HUGE deal.

Also, speaking of limitations. Would it ever be possible to read the touchpad data? Something that can be passed to RA as mouse input maybe?

On Feb 22, 2014, at 3:18 PM, meancoot notifications@github.com wrote:

What apps have you tested with?

Also, stupid question, but did you try to use the DS4 even though the light bar stays white? The light bar will always remain white due to limitations in the IOHIDManager API. The DS4 only accepts the packet used to change it on the HID Control channel, but IOHIDManager only allows me to send using the interrupt channel.

— Reply to this email directly or view it on GitHub.

OMGsus commented 10 years ago

Ok, I was able to get the initial pair to work after "forgetting" all paired devices and trying again it paired properly the first try. I dunno. I'll keep playing with it.

Either way, it still seems like MFiwrapper doesn't see it or it doesn't tell the system framework there's a controller there.

Sorry if I'm being confusing.

meancoot commented 10 years ago

I pushed a new commit with logging in the IOHIDManager code. Could you try running the new version and post the output of the MFiW lines when you try to connect the pad to a game? You can get the device log from the console section of the Xcode organizer (with you device attached by USB).

For example, when starting Oceanhorn with my DS4 connected I get:

Jasons-iMac:MFiWrapper jason$ grep MFiW ~/Documents/untitled\ text\ 2.txt 
Feb 23 12:45:59 iPad Oceanhorn[3031] <Notice>: (MFiW: Frontend) Connecting to backend.
Feb 23 12:45:59 iPad Oceanhorn[3031] <Notice>: (MFiW: Backend) Manager thread starting.
Feb 23 12:45:59 iPad Oceanhorn[3031] <Notice>: (MFiW: HIDManager) Starting
Feb 23 12:45:59 iPad Oceanhorn[3031] <Notice>: (MFiW: Backend) Manager thread entering run loop.
Feb 23 12:46:02 iPad Oceanhorn[3031] <Notice>: (MFiW: HIDManager) Device Attached: 0x172ac200 (Name Wireless Controller, Vendor 54C, Product 5C4)
Feb 23 12:46:02 iPad Oceanhorn[3031] <Notice>: (MFiW: Backend) Attaching controller (Handle: 1)
Feb 23 12:46:03 iPad Oceanhorn[3031] <Notice>: (MFiW: Frontend) New controller connected (Handle: 1, Vendor: DualShock 4 Buttons: 7FFF Analog: 0008
OMGsus commented 10 years ago

Testing now.

On Feb 23, 2014, at 12:53 PM, meancoot notifications@github.com wrote:

I push a new commit with logging in the IOHIDManager code. Could you try running the new version and post the output of the MFiW lines when you try to connect the pad to a game? You can get the device log from the console section of the Xcode organizer (with you device attached by USB).

For example, when starting Oceanhorn with my DS4 connected I get:

Jasons-iMac:MFiWrapper jason$ grep MFiW ~/Documents/untitled\ text\ 2.txt Feb 23 12:45:59 iPad Oceanhorn[3031] : (MFiW: Frontend) Connecting to backend. Feb 23 12:45:59 iPad Oceanhorn[3031] : (MFiW: Backend) Manager thread starting. Feb 23 12:45:59 iPad Oceanhorn[3031] : (MFiW: HIDManager) Starting Feb 23 12:45:59 iPad Oceanhorn[3031] : (MFiW: Backend) Manager thread entering run loop. Feb 23 12:46:02 iPad Oceanhorn[3031] : (MFiW: HIDManager) Device Attached: 0x172ac200 (Name Wireless Controller, Vendor 54C, Product 5C4) Feb 23 12:46:02 iPad Oceanhorn[3031] : (MFiW: Backend) Attaching controller (Handle: 1) Feb 23 12:46:03 iPad Oceanhorn[3031] : (MFiW: Frontend) New controller connected (Handle: 1, Vendor: DualShock 4 Buttons: 7FFF Analog: 0008 — Reply to this email directly or view it on GitHub.

OMGsus commented 10 years ago

Ok, so I know it sounds silly but just in case, I uninstalled btstack and hid-support cydia packages.

From there I - uninstalled mfiwrapper build latest mfiwrapper (i now have to modify Makefile and remove arm64 from the build list btw.. I think i just need a different substrate lib, anywho) forget all BT devices installed latest mfiwrapper reboot killall BTServer from mobile (just to be sure ? :-/ ) go to settings turn on bt attempted to pair like its a new controller, it fails immediately every time, tried 3 times. hit ps button to stop pairing. hit ps button again to initiate connection (since it has my phone as the host still) iPhone asks if its cool to pair with the DS4 that initiated I click "pair" it connects. I turn off controller by holding ps button for like 8 seconds or whatever it is turn controller back on from home screen. reconnects immediately open oceanhorn nothing... force quite ocean horn disconnect controller re-open oceanhorn connect DS4 while menu is open Nothing.

Hit a bunch of face buttons as well while in menus.

Greps below. Let me know if there is anything else I can do.

OMGsuss-Mac:Desktop omgsus$ grep MFiW test.txt 
Feb 23 13:48:21 OMGsuss-iPhone Oceanhorn[414] <Notice>: (MFiW: Frontend) Connecting to backend.
Feb 23 13:48:21 OMGsuss-iPhone Oceanhorn[414] <Notice>: (MFiW: Backend) Manager thread starting.
Feb 23 13:48:21 OMGsuss-iPhone Oceanhorn[414] <Notice>: (MFiW: HIDManager) Starting
Feb 23 13:48:21 OMGsuss-iPhone Oceanhorn[414] <Notice>: (MFiW: Backend) Manager thread entering run loop.
Feb 23 13:53:34 OMGsuss-iPhone Oceanhorn[451] <Notice>: (MFiW: Frontend) Connecting to backend.
Feb 23 13:53:34 OMGsuss-iPhone Oceanhorn[451] <Notice>: (MFiW: Backend) Manager thread starting.
Feb 23 13:53:34 OMGsuss-iPhone Oceanhorn[451] <Notice>: (MFiW: HIDManager) Starting
Feb 23 13:53:34 OMGsuss-iPhone Oceanhorn[451] <Notice>: (MFiW: Backend) Manager thread entering run loop.
OMGsuss-Mac:Desktop omgsus$ grep BTM test.txt
Feb 23 13:43:57 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: attaching to BTServer
Feb 23 13:44:03 OMGsuss-iPhone sharingd[66] <Warning>: BTM: attaching to BTServer
Feb 23 13:46:58 OMGsuss-iPhone Preferences[389] <Warning>: BTM: attaching to BTServer
Feb 23 13:47:02 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: local device power state changed
Feb 23 13:47:02 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: power is now on
Feb 23 13:47:02 OMGsuss-iPhone sharingd[66] <Warning>: BTM: local device power state changed
Feb 23 13:47:02 OMGsuss-iPhone Preferences[389] <Warning>: BTM: local device power state changed
Feb 23 13:47:02 OMGsuss-iPhone sharingd[66] <Warning>: BTM: power is now on
Feb 23 13:47:02 OMGsuss-iPhone Preferences[389] <Warning>: BTM: power is now on
Feb 23 13:47:02 OMGsuss-iPhone Preferences[389] <Warning>: BTM: setting discoverable status enabled
Feb 23 13:47:02 OMGsuss-iPhone Preferences[389] <Warning>: BTM: setting pairing enabled
Feb 23 13:47:02 OMGsuss-iPhone Preferences[389] <Warning>: BTM: setting connectable enabled
Feb 23 13:47:02 OMGsuss-iPhone Preferences[389] <Warning>: BTM: enabling device scanning
Feb 23 13:47:08 OMGsuss-iPhone Preferences[389] <Warning>: BTM: found device "Headset" 00:3C:7F:F0:F0:0A
Feb 23 13:47:17 OMGsuss-iPhone Preferences[389] <Warning>: BTM: found device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:47:18 OMGsuss-iPhone Preferences[389] <Warning>: BTM: connecting to device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:47:18 OMGsuss-iPhone Preferences[389] <Warning>: BTM: connection to service 0xffffffff on device "Wireless Controller" 1C:66:6D:13:12:48 failed with error 1
Feb 23 13:47:18 OMGsuss-iPhone sharingd[66] <Warning>: BTM: connection to service 0xffffffff on device "Wireless Controller" 1C:66:6D:13:12:48 failed with error 1
Feb 23 13:47:18 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: connection to service 0xffffffff on device "Wireless Controller" 1C:66:6D:13:12:48 failed with error 1
Feb 23 13:47:21 OMGsuss-iPhone Preferences[389] <Warning>: BTM: connecting to device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:47:22 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: connection to service 0xffffffff on device "Wireless Controller" 1C:66:6D:13:12:48 failed with error 1
Feb 23 13:47:22 OMGsuss-iPhone sharingd[66] <Warning>: BTM: connection to service 0xffffffff on device "Wireless Controller" 1C:66:6D:13:12:48 failed with error 1
Feb 23 13:47:22 OMGsuss-iPhone Preferences[389] <Warning>: BTM: connection to service 0xffffffff on device "Wireless Controller" 1C:66:6D:13:12:48 failed with error 1
Feb 23 13:47:25 OMGsuss-iPhone Preferences[389] <Warning>: BTM: connecting to device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:47:25 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: connection to service 0xffffffff on device "Wireless Controller" 1C:66:6D:13:12:48 failed with error 1
Feb 23 13:47:25 OMGsuss-iPhone sharingd[66] <Warning>: BTM: connection to service 0xffffffff on device "Wireless Controller" 1C:66:6D:13:12:48 failed with error 1
Feb 23 13:47:25 OMGsuss-iPhone Preferences[389] <Warning>: BTM: connection to service 0xffffffff on device "Wireless Controller" 1C:66:6D:13:12:48 failed with error 1
Feb 23 13:47:31 OMGsuss-iPhone Preferences[389] <Warning>: BTM: lost device "Headset" 00:3C:7F:F0:F0:0A
Feb 23 13:47:42 OMGsuss-iPhone Preferences[389] <Warning>: BTM: received user confirmation request for device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:47:44 OMGsuss-iPhone Preferences[389] <Warning>: BTM: accepting SSP with error code 0 for device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:47:44 OMGsuss-iPhone Preferences[389] <Warning>: BTM: pairing to device "Wireless Controller" 1C:66:6D:13:12:48 completed successfully
Feb 23 13:47:44 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: attempting to connect to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:47:44 OMGsuss-iPhone sharingd[66] <Warning>: BTM: attempting to connect to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:47:44 OMGsuss-iPhone Preferences[389] <Warning>: BTM: attempting to connect to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:47:44 OMGsuss-iPhone sharingd[66] <Warning>: BTM: connection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:47:44 OMGsuss-iPhone Preferences[389] <Warning>: BTM: connection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:47:44 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: connection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:47:50 OMGsuss-iPhone Preferences[389] <Warning>: BTM: lost device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:48:06 OMGsuss-iPhone Preferences[389] <Warning>: BTM: disconnection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:48:06 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: disconnection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:48:06 OMGsuss-iPhone sharingd[66] <Warning>: BTM: disconnection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:48:09 OMGsuss-iPhone Preferences[389] <Warning>: BTM: setting discoverable status disabled
Feb 23 13:48:09 OMGsuss-iPhone Preferences[389] <Warning>: BTM: setting pairing disabled
Feb 23 13:48:09 OMGsuss-iPhone Preferences[389] <Warning>: BTM: setting connectable disabled
Feb 23 13:48:09 OMGsuss-iPhone Preferences[389] <Warning>: BTM: disabling device scanning
Feb 23 13:48:17 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: attempting to connect to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:48:17 OMGsuss-iPhone sharingd[66] <Warning>: BTM: attempting to connect to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:48:17 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: connection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:48:17 OMGsuss-iPhone sharingd[66] <Warning>: BTM: connection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:49:07 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: disconnection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:49:07 OMGsuss-iPhone sharingd[66] <Warning>: BTM: disconnection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:49:23 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: attempting to connect to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:49:23 OMGsuss-iPhone sharingd[66] <Warning>: BTM: attempting to connect to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:49:23 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: connection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:49:23 OMGsuss-iPhone sharingd[66] <Warning>: BTM: connection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:52:50 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: disconnection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:52:50 OMGsuss-iPhone sharingd[66] <Warning>: BTM: disconnection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:53:02 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: attempting to connect to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:53:02 OMGsuss-iPhone sharingd[66] <Warning>: BTM: attempting to connect to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48
Feb 23 13:53:02 OMGsuss-iPhone SpringBoard[27] <Warning>: BTM: connection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
Feb 23 13:53:02 OMGsuss-iPhone sharingd[66] <Warning>: BTM: connection to service 0x00000020 on device "Wireless Controller" 1C:66:6D:13:12:48 succeeded
meancoot commented 10 years ago

I just tested and can confirm that the controller won't work when paired the way you described. I'm gonna dig some more and see if I can find out why.

npupyshev commented 10 years ago

OMGsus, you can download libsubstrate which supports arm64 there http://cdn.hbang.ws/dl/libsubstrate_arm64.dylib

OMGsus commented 10 years ago

Cool. But there was a theos "fix" that made everything start working properly about a week or so later.

On Jun 18, 2014, at 10:05 AM, nkp666np notifications@github.com wrote:

OMGsus, you can download libsubstrate which supports arm64 there http://cdn.hbang.ws/dl/libsubstrate_arm64.dylib

— Reply to this email directly or view it on GitHub.

toughguystudios commented 1 year ago

Hey, if anyone gets the message, we’re you ever able to get MFIwrapper working? @OMGsus @meancoot
I know this works, it’s worked in the past for me. It’s not working now. I had to reinstall my iOS 8 and I’m now having trouble getting back to where I was

I connect the DS4 controller to my iPad, it will say connected natively, but when I open up retroarch, it doesn’t connect or show a notification of the controller on port #1. I know this works as I have proof of doing it the past. Is it because I have BTstack installed as well, can that interfere? Do I need to install a more recent version? Any help is greatly appreciated, thank you

Thekidiacs commented 8 months ago

I actually found a way to get MFiWrapper to work up to iOS 10. But it requires a 32 bit device. Basically what I did was I downgraded all the way back to iOS 8 via nightshade then connected a wii remote then upgraded to iOS 10 NOT RESTORE. Then jailbroke the device installed MFiWrapper once again then checked "paired" bluetooth devices in settings and it was still there from when I connected it when I was on iOS 8 and then connected it and it worked! THIS HAS BEEN THE ONLY WAY I COULD FIGURE OUT HOW TO GET THIS TO WORK past iOS 9! For some reason after iOS 9 it will never ever pair to the device. This essentially bypasses that problem. TECHNICALLY: If you have a 64 bit device that is STILL on iOS 8 and then you pair the wii remote via MFiWrapper then update to the iOS that is the latest for that device it could be 11 12 etc. this method MIGHT work.

Thekidiacs commented 8 months ago

The problem though with this method is that its a one way ticket on 64 bit devices. If you are on a later iOS than 9 and unpair the wii remote you will never get it back. You can NEVER go back to iOS 8 even with the checkm8 exploit because of SEP. I'm just waiting for the exploit3dguy 64bit SEP utility to be updated to support iOS 9 downgrades.