360controller: Cannot uninstall driver / reinstall driver / use driver, and system no longer shuts down/restarts properly

Created on 16 Sep 2018  Â·  8Comments  Â·  Source: 360Controller/360Controller

Type of Controller

Wired XBOX 360 controller (circa 2007ish I think?)

OS Version

10.13.4 (17E199)

Driver Version

Most recent 0.16.9

Connection Method

Wired 360 controller

Device Name and Info

I referred to the ReadMe file and was not able to find the Device name, Product ID, or Vendor ID. My best guess is that the wired controller I have has some short in the wire or connection issue, as it's not able to consistently remain connected to my Mac for more than a few seconds (and even then it doesn't show up in the USB tree). This is secondary to the main issue (see "Detailed Explanation of Issue" below)

Device Name: Not listed

Product ID: Not listed

Vendor ID: Not listed

Response of Controller

The controller lights up briefly when initially plugged in, or when I apply pressure/jiggle the secondary connector in the cord. I'm guessing the controller is bad. This is secondary to the main issue (see below) - at this point I'm not really trying to get the controller to work as I am trying to uninstall the driver and fix my computer.

Response in Preference Pane

Sometimes the controller shows up in the reference pane of the System Preferences > XBOX 360 Controllers, but rarely for more than a second or two before disappearing.

Detailed Explaination of Issue

Cliff Notes Version: A few days ago, my controller started having weird lags in responsiveness that made gaming difficult (in retrospect, this was likely failing hardware as the controller is 10+ years old). I reinstalled the XBOX 360 drivers two days ago and am now unable to uninstall the driver, reinstall the driver, or shut down my mac properly. At this point I'm more interested in removing the driver from my machine than trying to get it to work.

Full version: I attempted to reinstall/update the XBOX 360 driver to fix laggy responsiveness during gameplay (Enter the Gungeon is hard enough to begin with and becomes impossible with delayed controls). When the initial reinstall did not solve the problem, I uninstalled the drivers entirely, restarted the machine, and then attempted to reinstall them.

On reinstallation, the installer hung up and froze near the end of the process just before installation completion with "Install time remaining: Less than a minute" under the process bar. I left it for an hour or two and it was still hanging there, so I attempted to force quit the application with CMD + ALT + ESC. This did not work, so I tried to restart the machine. The restart process halted with just the mouse cursor visible against a black background, with no interactivity or function available. I manually force shut down of the computer by holding the power button.

On restart, the XBOX 360 driver options are available in the System Preferences window but I'm unable to uninstall them. I get a "Unable to Uninstall the driver!" error (see screenshot).

screen shot 2018-09-16 at 10 41 24 am

Further, attempting to reinstall the drivers causes the Installer to halt at exactly the same moment that it did previously, and no amount of time will allow it to finish (I've tested it for up to 24 hours).

screen shot 2018-09-16 at 10 37 25 am

The XBOX 360 wired controller will no longer connect for more than a second or two. Restarting the machine causes it to halt on a black screen with just the mouse cursor visible. Only a force shut down by holding the power button can remove it from this state (put bluntly, I can no longer restart normally and this is very concerning).

Any advice?

Thanks,
-Mark

awaiting response

Most helpful comment

The reason the kexts are in StagedExtensions and that I didn't tell you delete them from there, is that they should be removed from that directory on a reboot. That directory is just where macOS stores extensions that you haven't approved yet. So you didn't accept the developer signing certificate during installation. Removing these kexts is not done through rm since they're staged. All you have to do is invalidate the kext cache. Can be done with this command:

sudo kextcache -invalidate /

Those files will now be gone.

All 8 comments

Jump in to your terminal and run these commands:

sudo launchctl unload /Library/LaunchDaemons/com.mice.360Daemon.plist
sudo kextunload -b "com.mice.driver.Xbox360Controller"
sudo kextunload -b "com.mice.driver.Wireless360Controller"
sudo kextunload -b "com.mice.driver.WirelessGamingReceiver"
sudo rm -f  /Library/LaunchDaemons/com.mice.360Daemon.plist
sudo rm -rf "/Library/Application Support/MICE/360Daemon.app"
sudo rm -rf /System/Library/Extensions/360Controller.kext
sudo rm -rf /System/Library/Extensions/Wireless360Controller.kext
sudo rm -rf /System/Library/Extensions/WirelessGamingReceiver.kext
sudo rm -rf /Library/Extensions/360Controller.kext
sudo rm -rf /Library/Extensions/Wireless360Controller.kext
sudo rm -rf /Library/Extensions/WirelessGamingReceiver.kext
sudo rm -rf /Library/Extensions/XboxOneBluetooth.kext
sudo rm -rf /Library/PreferencePanes/Pref360Control.prefPane
sudo pkgutil --forget com.mice.pkg.Xbox360controller

This is the manual equivalent of the uninstall button. Then, run:
ls /Library/Extensions
In the list it returns, you shouldn't see anything related to the driver. That should get you back to a good state, and then we can work on the rest from there. Let me know how it works out.

Thanks for these! I entered these line by line with the following responses:

sudo launchctl unload /Library/LaunchDaemons/com.mice.360Daemon.plist

No such file or directory

sudo kextunload -b "com.mice.driver.Xbox360Controller"

(kernel) Can't unload kext com.mice.driver.Xbox360Controller; classes have instances:
(kernel) Kext com.mice.driver.Xbox360Controller class Xbox360ControllerClass has 10 instances.
Failed to unload com.mice.driver.Xbox360Controller - (libkern/kext) kext is in use or retained (cannot unload).

sudo kextunload -b "com.mice.driver.Wireless360Controller"

(kernel) Kext com.mice.driver.Wireless360Controller not found for unload request.
Failed to unload com.mice.driver.Wireless360Controller - (libkern/kext) not found.

sudo kextunload -b "com.mice.driver.WirelessGamingReceiver"

(kernel) Kext com.mice.driver.WirelessGamingReceiver not found for unload request.
Failed to unload com.mice.driver.WirelessGamingReceiver - (libkern/kext) not found.

sudo rm -f /Library/LaunchDaemons/com.mice.360Daemon.plist
sudo rm -rf "/Library/Application Support/MICE/360Daemon.app"
sudo rm -rf /System/Library/Extensions/360Controller.kext
sudo rm -rf /System/Library/Extensions/Wireless360Controller.kext
sudo rm -rf /System/Library/Extensions/WirelessGamingReceiver.kext
sudo rm -rf /Library/Extensions/360Controller.kext
sudo rm -rf /Library/Extensions/Wireless360Controller.kext
sudo rm -rf /Library/Extensions/WirelessGamingReceiver.kext
sudo rm -rf /Library/Extensions/XboxOneBluetooth.kext
sudo rm -rf /Library/PreferencePanes/Pref360Control.prefPane

(no text returned for any of these commands)

sudo pkgutil --forget com.mice.pkg.Xbox360controller

No receipt for 'com.mice.pkg.Xbox360controller' found at '/'.

On completing these, I checked the System Controls to see if the XBOX icon was still there, and it’s gone. I initiated a restart to see if it would still hang, and it stopped on a black screen with just the cursor visible. So I forced it to power down by holding the power button.

On startup, it did that goofy Apple logo (white on black) with a progress bar and “Installing software update: About 2 minutes.” This is independent of the controller drivers though - I’m always clicking “remind me later” on the software updates because they’re so annoying.

Anyway, it’s been “about two minutes” for 30 minutes now. I’m going to give it a solid hour before I force it to power down again and retry.

This is making me miss my PC! Haha. Will post updates when I have them.

Okay so the "about two minutes" update message didn't go away after another 15 minutes or so, so I force shut down the Mac by holding the power button. The machine started up just fine, though slightly longer on the boot up than normal (maybe 30 seconds longer? I wasn't timing it).

The 360 Controller option is gone from the System Preferences panel, but the machine cannot restart normally without locking up on the black screen. This problem is consistent and happens every time I attempt to restart. On locking up on the black screen, the mouse cursor is still visible and can move around but no action is possible. The only way to leave this state is to force restart.

This is kind of a reach, but I'm going to guess that the system is trying to update something on restart but is hanging because the files aren't there? Or something? I dunno. I used to do PC repair like a decade ago but this is escaping my understanding.

Any suggestions? I have AppleCare so worst comes to worst I can just make a Genuis Bar appointment.

Edit: I forgot to mention that a "ls /library/Extensions" command in the terminal shows no mention of the XBOX 360 drivers

You've successfully removed all of the driver components, and unloaded it all by rebooting. The driver no longer on your system. There's nothing more we can do for you at this point, regarding your boot situation. It doesn't appear that the driver is at fault.

I've had the same issue with freezing on shutdown/restart just as described here and have found a way to fix it.
I have tried many things I'm not sure which one worked but after trying to uninstall and/or running the uninstall commands above, follow that with:

  • Search for any unwanted kernel extensions that might still be around. Probably the easiest way is to just search the whole system sudo find / -name "*.kext" and then text search the result list for keywords like 360 or xbox.
  • Delete all the extensions you can find related to the controller driver obviously being careful not to delete any kexts that you actually need.
  • You might see some .kext you cannot delete, that's because they are staged by the OS, leave these for now, and delete all the other ones.
  • When finished run sudo kextcache -invalidate /, this will get rid of the staging of the extensions you've deleted.
  • Just restart, your problem should be fixed.

Hopefully this is helpful to someone.

Hey @LightSystem, thank you for replying to this! And also @FranticRain, heads up:

I tried your method and ran into some issues in deleting the files. First, I ran the search protocol you mentioned sudo find / -name "*.kext" and found that there are still two .kext files on my computer from the 360 controller install:

/Library/StagedExtensions/System/Library/Extensions/360Controller.kext
/Library/StagedExtensions/Library/StagedExtensions/System/Library/Extensions/360Controller.kext

I know these look like the same file but the path and folder names are different. Anyway, I'm not able to delete these files. If I try from finder, I get this error:

screen shot 2018-11-11 at 3 46 26 pm

And if I try to delete them from Terminal, it tells me Operation not permitted

Things I've tried that also didn't work and gave this error:

  • rm [pathname]
  • rm -rf [pathname]
  • sudo rm [pathname]
  • sudo rm -rf [pathname]
  • chflags noschg [pathname] followed by every variation of removal above

Other things I've tried

  • One forum post suggested that the reason I can't delete it is due to some security feature in OSX 10.11 and newer which doesn't let users remove these. I tried using csrutil disable to turn this off and it did not work
  • I tried unlocking the files and their parents folders in Finder, but the Lock/Unlock dialog was greyed out and unselectable in the "Get Info" menu which makes me think it's not an option
  • I tried restarting in Recovery Mode and removing the files via Terminal there, but the terminal window didn't acknowledge the path names (but yet could still find them with the sudo find command).

This is weird. How do I delete these files? I'm out of ideas.

The reason the kexts are in StagedExtensions and that I didn't tell you delete them from there, is that they should be removed from that directory on a reboot. That directory is just where macOS stores extensions that you haven't approved yet. So you didn't accept the developer signing certificate during installation. Removing these kexts is not done through rm since they're staged. All you have to do is invalidate the kext cache. Can be done with this command:

sudo kextcache -invalidate /

Those files will now be gone.

So sorry for the delayed response here - @FranticRain your suggestion of the sudo kextcache -invalidate / command worked like a charm. The system restarts without issue now. Thank you!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Powne picture Powne  Â·  14Comments

NachoFornier picture NachoFornier  Â·  10Comments

kdorff picture kdorff  Â·  14Comments

phnakarin picture phnakarin  Â·  4Comments

PokeCaptain picture PokeCaptain  Â·  16Comments