Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;\red0\green0\blue128;\red128\green128\blue128;}
\paperw11905\paperh16837\margl1134\margr567\margb567\margt567\vieww10800\viewh8400\viewkind0
\deftab720
\pard\pardeftab720\sb240\sa283

\f0\b\fs42 \cf0 Xbox 360 Controller Driver\
\pard\pardeftab720\sb200\sa120

\fs36 \cf0 About\
\pard\pardeftab720\sa283

\b0\fs24 \cf0 This driver supports the
\b  Microsoft Xbox 360 controller, Original Xbox Controller, Xbox One Controller
\b0 , and various licensed third party controllers from brands like Hori, MadCatz, Logitech, etc. Including access to rumble motors and LEDs, on the macOS platform. It includes a plugin for the Apple Force Feedback Framework so some games will be able to activate them, along with a Preference Pane with which allows you to test everything is installed correctly. Both wire controllers connected via USB and Bluetooth Xbox One S controllers. Wireless 360 controllers, connected via the Wireless Gaming Receiver for Windows, are NOT supported.\
This project is a fork of the {\field{\*\fldinst{HYPERLINK "http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller"}}{\fldrslt \cf2 \ul \ulc0 Xbox360Controller project}} originally created by Colin Munro, and includes hard work from {\field{\*\fldinst{HYPERLINK "https://github.com/d235j/"}}{\fldrslt d235j}} (who forked the project and fixed Force Feedback), {\field{\*\fldinst{HYPERLINK "https://github.com/MaddTheSane"}}{\fldrslt C.W. Betts}} (dozens of improvements and fixes!), {\field{\*\fldinst{HYPERLINK "https://github.com/FranticRain"}}{\fldrslt FranticRain}} (Xbox One Controller support and other improvements), {\field{\*\fldinst{HYPERLINK "https://github.com/kasbert"}}{\fldrslt kasbert}} (Original Xbox Controller Support), {\field{\*\fldinst{HYPERLINK "https://github.com/Pyroh"}}{\fldrslt Pyroh}} (User Interface overhaul), {\field{\*\fldinst{HYPERLINK "https://github.com/RodrigoCard"}}{\fldrslt RodrigoCard}} (kext sign and some scripts) and others (please forgive us if we forgot to include someone).\
\pard\pardeftab720\sb200\sa120

\b\fs36 \cf0 Installation\
\pard\pardeftab720\sa283

\b0\fs24 \cf0 See the {\field{\*\fldinst{HYPERLINK "https://github.com/360Controller/360Controller/releases"}}{\fldrslt \cf2 \ul \ulc0 releases page}} for the latest compiled and signed version of the driver. Most users will want to install and run this.\
If you are interested in installing as a developer please see below.\
\pard\pardeftab720\sb200\sa120

\b\fs36 \cf0 Usage\
\pard\pardeftab720\sa283

\b0\fs24 \cf0 The driver exposes a standard game pad with a number of standard controls, so any game that supports gaming devices should work. In some cases this may need an update from the manufacturer of the game or a patched version. The Preference Pane uses the standard macOS Frameworks for accessing HID devices and accessing Force Feedback capabilities, so should be a good test that the installation is functional.\
\pard\pardeftab720\sb200\sa120

\b\fs36 \cf0 Developer info\
\pard\pardeftab720\sa283

\b0\fs24 \cf0 Anything below this probably doesn't affect end users, so you can stop reading now if you just want to use the driver.\
\pard\pardeftab720\sb140\sa120

\b\fs28 \cf0 Building\cf3 \
\pard\pardeftab720\sa283

\b0\fs24 \cf0 You'll need the full xcode installed via the app store. The command line tools are not enough.\
From the command line, run: ./build.sh\
If you'd like to build the .pkg file, there is an installer project for Packages. Download packages at {\field{\*\fldinst{HYPERLINK "http://s.sudre.free.fr/Software/Packages/about.html"}}{\fldrslt \cf2 \ul \ulc0 http://s.sudre.free.fr/Software/Packages/about.html}} and the resulting dmg file will be copied to the build directory.\
The distribution currently consists of 3 projects - one for the driver (implemented in C++, as an I/O Kit C++ class), one for the force feedback support plugin (implemented in C, as an I/O Kit COM plugin) and one for the Preference Pane (implemented in Objective C as a preference pane plugin). Ideally these 3 targets should be in the same project, but I've not worked on this yet.\
To build, use the standard Xcode build for Deployment on each of the 3 projects. Build Feedback360 before 360Controller, as the 360Controller project includes a script to copy the Feedback360 bundle to the correct place in the .kext to make it work.\
To debug the driver, sudo cp -R 360Controller.kext /tmp/ to assign the correct properties - note that the Force Feedback plugin only seems to be found by OSX if the driver is in /System/Library/Extensions so I could only debug it in place.\
To test the Preference Pane, just double-click the resulting file.\
\pard\pardeftab720\sb140\sa120

\b\fs28 \cf0 Yosemite and signed drivers\
\pard\pardeftab720\sa283

\b0\fs24 \cf0 Since Yosemite (Mac OS X 10.10) all global kexts are required to be signed. This means if you want to build the drivers and install locally, you need to have a mac developer account.\
If you'd like to avoid paying apple for the developer account and want to disable the signature checking, execute the following commands inside a terminal:\
\pard\pardeftab720

\fs20 \cf0 sudo nvram boot-args="kext-dev-mode=1"\
\pard\pardeftab720\sa283
\cf0 sudo kextcache -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /System/Library/Extensions\
\pard\pardeftab720\sa283

\fs24 \cf0 Note that this is probably a bad idea unless you understand the implications of running unsigned driver code.\
\pard\pardeftab720\sb140\sa120

\b\fs28 \cf0 Debugging\cf3 \
\pard\pardeftab720\sa283

\b0\fs24 \cf0 Most of the debugging I did was via printing out text. In 360Controller, you can use IOLog(), and the output will appear in system.log. In Feedback360 normal fprintf(stderr,...), and the output will appear on the console of whatever application is attempting to use Force Feedback. In Pref360Control, NSLog() works as it's an Objective C program, and will output to the console of the Preferences application.\
\pard\pardeftab720\sb200\sa120

\b\fs36 \cf0 Licence\
\pard\pardeftab720\sa283

\b0\fs24 \cf0 Copyright (C) 2006-2013 Colin Munro\
This driver is licensed under the GNU Public License. A copy of this license is included in the distribution file, please inspect it before using the binary or source.\
}