wjoy-foohid
wjoy-foohid copied to clipboard
WJoy loses connection right after connecting.
@JustinBis thanks for enabling issues here :)
Reading the project's description I understand it was created to circumvent apple's rootless option starting with El Capitan. But I'm having an issue that according to this one here https://github.com/alxn1/wjoy/issues/81 is related exactly to that. My Wii U Pro controller connects and disconnects right away.
Any ideas on this one?
Extra info:
- SIP enabled: Yes
- Tried with SIP disabled: No
- System
I'm facing the same problem. And tried disabling SIP, but this hasn't made any difference for me.
This is with a 15" 2016 MBP.
Same issue: Late 2014 iMac 5k; MacOS 10.12.2. Controller connects, I get the blue light for first controller, then immediately disconnects. I've tried two different Wii U Pro Controllers thus far.
I'm also having this problem. The original WJoy was able to connect controllers and keep them connected, but this version won't. I'm running El Capitan (10.11.6) on a Late 2007 MacBook Pro and I have SIP disabled.
Hi,
Same here, I am using El Capitan (10.12.2) on a MBPr 15" and same happens using a Wii U Pro.
I have also tried disabling SIP with equal result and tried original WJoy which stops as soon I start it.
Help appreciated ;-)
The exception I'm seeing in dmesg
:
handleInformationResponse kBluetoothL2CAPInformationTypeExtendedFeatures deviceAccountPaired, check fixed channel support
[IOBluetoothL2CAPChannel][listenAt] -- returning false because owner 0x72d000 does not match new owner 0x72d200
[IOBluetoothHIDDriver][IOBluetoothHIDDriver][handleStart] staticPrepControlChannelAction returned error e00002bc
[IOBluetoothHIDDriver][IOBluetoothHIDDriver][handleStart] calling staticWillTerminateAction().
[IOBluetoothL2CAPChannel][listenAt] -- returning false because owner 0x72d000 does not match new owner 0x72d200
[IOBluetoothHIDDriver][IOBluetoothHIDDriver][handleStart] Failed.
Tried this with an original Wii controller: it connects, but then immediatelly disconnects. OSX El Capitan 10.11.6.
dmesg
first shows the following when using the "press buttons 1 and 2":
[IOBluetoothHIDDriver][getDevicePropertiesWL][00-24-44-ad-30-49] Error retrieving device properties.
[IOBluetoothHIDDriver][probe] Couldn't retrieve device properties
By trying the red sync button, same happens, but dmesg
shows:
BT: returning false because owner <ptr> does not match new owner <ptr>
[IOBluetoothHIDDriver][handleStart] staticPrepControlChannelAction returned error e00002bc
[IOBluetoothHIDDriver][handleStart] calling staticWillTerminateAction().
BT: returning false because owner <ptr> does not match new owner <ptr>
[IOBluetoothHIDDriver][handleStart] Failed.
I also have this problem. My Wii U Pro Controller disconnects immediately after connecting. I have SIP enabled on my MacBook Pro (Retina, 15-inch, Mid 2015) running 10.11.6.
I investigated getting the original WJoy working on Mac OS Sierra, since this looks to be a foohid issue.
I successfully connected a Wii U Pro controller with two tweaks to the original code. I also backported the calibration fix. The kext is loaded:
$ kextstat
...
149 0 0xffffff7f84683000 0x7000 0x7000 com.alxn1.driver.wjoy (1) 7B095ABA-81D6-3437-8253-B251969B0C12 <34 5 4 3>
and the device successfully connected in WJoy.
The original project's kext needs a header changed and a constant reintroduced. Otherwise, it needs to be signed by a kernel extension signing certificate, which I do not have but I'm in the process of obtaining. It works correctly with SIP disabled (csrutil disable
in the Recovery OS terminal) on the latest Sierra. The most important change was:
--- a/WirtualJoy/wirtual_joy_device.cpp
+++ b/WirtualJoy/wirtual_joy_device.cpp
@@ -10,9 +10,10 @@
#include "wirtual_joy_device.h"
#include "wirtual_joy_debug.h"
-#include <IOKit/usb/IOUSBHIDDriver.h>
+#include <IOKit/usb/IOUSBHostHIDDevice.h>
#define super IOHIDDevice
+#define kMaxHIDReportSize 256
OSDefineMetaClassAndStructors(WirtualJoyDevice, super)
I also removed Growl (it's obsolete).
Currently, the original WJoy tries to load a kext with improper permissions — the kext must be copied by root into the right place (i.e., sudo cp -r /Applications/WJoy.app/Contents/Frameworks/WirtualJoy.framework/Versions/A/Resources/wjoy.kext /Library/Extensions/wjoy.kext
). This is why the original WJoy starts and closes immediately after typing in your password at the moment. Otherwise, I believe the kext
just needed the diff tweak above.
I need to spend a little more time packaging this fix, but I'll be sure to do it. I'll wait until my contact at Apple responds about the kernel extension signing certificate.
You can view the fixed fork here: https://github.com/hiddenswitch/wjoy-foohid/tree/fixed-original
@doctorpangloss hey, nice find. This fix still needs SIP disabled, right?
@eestein until I get the kext signing certificate, yes.
@doctorpangloss cool :) please post here once you have that, I'm pretty sure everyone here would love to use this fix :) thanks!
@doctorpangloss If you manage to get a kext cert, please leave a comment here and upload the signed version to your repo so I can make a note that this project has been superseded by yours. A signed kext is a far better solution than relying on foohid.
@doctorpangloss I built your branch in Xcode, but I still get "[IOBluetoothL2CAPChannel][listenAt] -- returning false because owner
And the wiimote disconnects right after vibrating. LEDs just go dark.
Ok, I built the DMG, tried copying the kext, but it isn't signed. I don't know how to:
"To compile, make sure to enable Automatic Signing for every project. Let XCode configure things for you."
There were warnings in the left column that I thought were about signing things, and I choose all the "let xcode fix it" options. Can't find the "Automatically manage signing" settings in any of the projects.
Hi! I have prove with SIP disabled and SIP enabled but the wiimote keep disconecting... is there any update about that issue or something?
@aarcro @Lynx901 Don't worry about building anymore, just follow the instructions in my repository here:
https://github.com/hiddenswitch/wjoy-foohid
@JustinBis I didn't get the kext cert unfortunately so it's up to you whether or not to forward to my repo for issues. I appreciate your interest. I tested on a variety of macOS Sierra devices and could confirm everything is working otherwise.
@doctorpangloss the problem is disabling SIP... it's nice that it's working, but forcing people to disable SIP is pain (the process) and dangerous.
What is involved in getting the kext cert?
@doctorpangloss I followed the instructions in the repo you gave me but I got this when I moved wjoy.kext to /Library/Extensions
It says that it cannot be installed so it cannot be used... Furthermore, WJoy doesn't start, it asks me for the admin key but it dissapears from the OS bar. This is my computer (with SIP disabled)
@Lynx901 can you try the following terminal command?
sudo chmod -R +x /Library/Extensions/wjoy.kext
sudo kextload wjoy.kext
and let me know what message you receive?
@Lynx901 Okay I can confirm you definitely need to issue kextload
command, I could reproduce your issue with my WJoy build. I have added that to the instructions. I think I just had the kext
loaded on my other machines at some point.
@doctorpangloss After changing the permissions of wjoy.kext this is what I got
@Lynx901 okay I'm contacting an Apple employee again for a kext signing key :)
@doctorpangloss same here... I got the same message as @Lynx901
Man, this thing has become a huge pain...
@doctorpangloss do you know if registered apple developers can generate a valid kext key? I am one, if that would help I could generate it. Or is it some specific process?
Same problem.
MacBook Pro (Retina, 15 pouces, mi-2015) 2,2 GHz Intel Core i7 macOS 10.12.5
You just need to make owner:root and group:wheel for wjoy.kext. Use BatChmod. Then it will work. Sadly, with WJoy I can use wiimote in mac games as joystick, but Dolphin doesn't see it as wiimote.
Where is the wjoy.kext file located? I tried the file /MacOS/WJoy in the contents of the app, but it didn't work.
This solution worked for me:
I followed the steps provided by @doctorpangloss and disabled SIP, but I still could not get wjoy working. My mouse would keep spinning the rainbow as I hovered over the Wjoy icon in the menu bar and when I typed my password, Wjoy stopped working again.
After following the steps I did the following:
Copy the wjoy file from /Applications/WJoy.app/Contents/Frameworks/WirtualJoy.framework/Versions/A/Resources/
to /Library/Extensions
using the command: sudo cp -r /Applications/WJoy.app/Contents/Frameworks/WirtualJoy.framework/Versions/A/Resources/wjoy.kext /Library/Extensions/wjoy.kext
After that, delete the wjoy.kext from the /Applications/WJoy.app/Contents/Frameworks/WirtualJoy.framework/Versions/A/Resources/ folder
The wjoy.kext stays in the /Library/Extensions folder
Now start Wjoy again and it should work.
I tried several methods mentioned on GitHub to make WJoy work with macOS 10.12 Sierra - however, none was successful. It seems like WJoy only doesn't quit upon launching after installing foohid. However, after rebooting the computer, it appears that foodhid needs to be reinstalled or else, WJoy keeps asking for the user password and quits. Besides, even though I managed to get WJoy to run, the Wii U Pro Controller gets discovered and connected with WJoy, but disconnects right away. Is there anyone who can confirm that they successfully got WJoy working with macOS Sierra (10.12) and keep the Wii U Pro Controller connected?
This fork that was referenced earlier works! https://github.com/hiddenswitch/wjoy-foohid/tree/fixed-original