Code Monkey home page Code Monkey logo

WiiController

Use your Wii and Wii U controllers on macOS as standard gamepads

Note: WiiController does not currently work on macOS 12 or later. Projects like Dolphin are having similar issues.
macOS 11 and below are not affected by this issue.

WiiController is a macOS device driver application that allows you to use the following controllers as standard HID gamepads:

  • Wii Remote (original or Plus)
    • Nunchuk
    • Classic Controller (original or Pro)
    • Guitar Hero 3 controller
  • Wii U Pro Controller

The following controllers are at least partially implemented, but aren't currently usable:

  • Wii Balance Board
  • Wii Motion Plus
  • UDraw Tablet

If you really want support for one of these, please open an issue.

How does it work?

Since Wii devices require a special Bluetooth pairing procedure, the app handles this. Once pairing succeeds and a connection is established, the app creates a virtual HID gamepad (joystick) device to represent the controller. Note that this requires a driver extension, or kernel extension before macOS 10.15.

Once everything is set up, the app continually translates input from the controllers (which use a proprietary protocol over Bluetooth) to normal HID events in real time. The result is that, as long as the app is running, your controllers effectively speak HID!

WiiController stands on the shoulders of alxn1's WJoy, and incorporates some patches from JustinBis/wjoy-foohid. Most of the code is from WJoy, but cleaned up and updated. The kext has been translated to a dext for macOS 10.15 and up.

Install

Please note

If you are running macOS 10.15 or later: Please note that a driver extension is required for WiiController to function. Until I obtain a signing certificate, it may be a security hole. Installation is at your own risk.

If you are running macOS 10.14 or earlier: Please use appropriate caution and note that a kernel extension is required for WiiController to function. I have not heard of it causing any kernel panics, but it may be a security hole. Installation is at your own risk. If you encounter problems with it, I will try to help you to the best of my ability, but this software comes with no warranty.

Requirements

Note: WiiController does not currently work on macOS 12 or later. Projects like Dolphin are having similar issues.
macOS 11 and below are not affected by this issue.

  • WiiController should work on macOS 10.11 or later. It has been tested on 10.14.6, 10.15.7, and 11.2.3.
  • WiiController should work on both Intel and Apple M-series CPU types. Both have been tested. Please note that apps running under Rosetta seem to be unable to see the controller events.

Disable SIP

As I cannot sign dexts or kexts, you must have System Integrity Protection (SIP) disabled for the driver to load. To disable SIP, boot into recovery mode, select Terminal from Utilities in the menu bar, and run the following:

csrutil disable

If you are running macOS 10.15 or later, restart your computer now.

If you are running macOS 10.14 or earlier, you may optionally run this second command that will re-enable other parts of system security that WiiController does not care about:

csrutil enable --without kext

Finally, restart your computer.

Installation steps

  1. Disable SIP as described above.
  2. Download WiiController: https://github.com/WiiController/WiiController/releases
  3. Install the app by dragging it to your Applications folder. This is required on macOS 10.15 or later.
  4. Turn on Bluetooth.
  5. Start WiiController by right-clicking it in Finder and selecting Open. (This technique allows you to run an unsigned app.)
  6. If it crashes or nothing appears to happen, then this is probably a known code signing issue. It's entirely my fault, but until I resolve it, you can fix the problem by running codesign -fs - /Applications/WiiController.app in Terminal (copy and paste the command, then press Return) and then relaunching WiiController. (For details, see issue #12.)
  7. Enter your password if necessary, and approve the system extension when prompted.
  8. Pairing should begin automatically, but will expire after 10 seconds. To re-enable it if 10 seconds have passed, click the Wii Remote icon in the menu bar and select Pair Device.
  9. Press the small red "sync" button on your Nintendo device. To pair multiple devices, select Pair Device again for each.
  10. Check the wiki on GitHub for further usage instructions and support articles.

wiicontroller's Projects

wiicontroller icon wiicontroller

Use your Wii and Wii U controllers as standard HID gamepads on macOS (updated fork of WJoy)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.