- 1 Nintendo Wiimote
- 2 Nintendo Wii Classic Controller
- 3 MS Xbox360 controller
- 4 Sony PS3 controller
- 5 OUYA Controller
- 6 Mayflash GameCube to USB Adaptor
- 7 Program Specific Compatibility
This includes instructions on installing software and configuration to pair Nintendo Wii Wiimotes using Bluetooth to the Pandora, and using them as joystick controllers. This was done under the base install of Angstrom Linux provided on the Pandora, using Hotfix 4. This does not include setting up a sensor bar type setup, but should allow you to use classic controllers that plug into the Wiimote.
Installing the Drivers
Open a Terminal, and run the command
sudo opkg update
It will give you a warning about responsibility, and asks for your user password. This will update the Angstrom packages stored on NAND.
Then install the Wiimote drivers and software, cwiid, using the command
sudo opkg install cwiid
Pairing the Wiimote
Make sure Bluetooth is enabled. In Hotfix 4, there's a script to "Toggle Bluetooth Status" in the Pandora menu under the "System" category. A light will turn on on the left hand side of the Pandora if Bluetooth is on, next to the network light.
Open a Terminal, and run the command and follow the directions.
It will tell you to press 1+2 on the Wiimote to connect. On my Wiimotes, the lights flash and the fourth light on the Wiimote lights solid once paired. If you then quit the wminput application (for instance, by hitting CTRL-C), your Wiimote will un-pair and turn off. I usually just hide the Terminal in the background by minimizing the window while I run game emulators.
You can pair multiple Wiimotes, just run wminput a second time and follow the instructions to pair it. I only have two, and both lit the fourth light.
In PicoDrive, the Sega Genesis emulator, in the controller settings, if you push left or right it will display different joysticks configured. You can set up the buttons for different players there. The Wiimotes appeared as joysticks 1 and 2, in the order in which I paired them.
Changing the Wiimote Configuration
You can edit /etc/cwiid/wminput/default and /etc/cwiid/wminput/buttons to map the buttons of the Wiimote. You should quit wminput and restart them for these changes to take effect. They are plain text files. I edited them using vim from the command line, which is not the most user friendly thing to describe. Because they're system files, I needed to use sudo again, so I ran
sudo vim /etc/cwiid/wminput/default
By default, the Wiimote is set up to control the mouse with the accelerometer. This means, as you tilt the Wiimote left and right, your mouse will shift around. I found it a bit distracting, and so I commented out two lines in /etc/cwiid/wminput/default so they look like this:
#Plugin.acc.X = REL_X #Plugin.acc.Y = REL_Y
Also, I use the Wiimote "sideways", like a traditional Nintendo controller. I changed the direction pad to reflect this. Though you can do that within emulator configurations, it seemed handier to just have that set up by default. To do this, make these changes in /etc/cwiid/wminput/buttons
Wiimote.Up = KEY_LEFT Wiimote.Down = KEY_RIGHT Wiimote.Left = KEY_DOWN Wiimote.Right = KEY_UP
It is also possible to map the Wiimote or extension buttons to a virtual gamepad. See below for instructions.
Nintendo Wii Classic Controller
There are two ways to use a Wiimote or Classic Controller with the Pandora:
- As a virtual gamepad. This means you can use it in games that support gamepads, and allows multiplayer in games that support it, but won't work in games that don't support gamepads.
- As a clone of the Pandora's gaming controls, by mapping it to the same keys. This theoretically means it would work in games that don't have gamepad support, or allow you to change the controls at all, as long as they are using the Pandora controls. However, currently, not all games will register the input with this method. SuperTux, OpenTyrian, PandoraPanic and Snes9X4D4P will. Giana's Return, Sqrxz and psx4pandora won't. Additionally, Mupen64Plus with the default PPSP Input Plugin won't - but the Blight Input Plugin will.
As a virtual gamepad
The default profile doesn't have classic controller buttons defined, but cwiid comes with a gamepad profile which does. You can load it in wminput like this using a terminal:
wminput -c gamepad
Then connect your Wiimote and Classic Controller. You do not have to connect the Classic Controller before you connect the Wiimote.
However the analog sticks/dpad seemed to be set up wrong in the gamepad profile (/etc/cwiid/wminput/gamepad):
Classic.Dpad.X = ABS_X Classic.Dpad.Y = ABS_Y Classic.LStick.X = ABS_HAT0X Classic.LStick.Y = ABS_HAT0Y Classic.RStick.X = ABS_HAT1X Classic.RStick.Y = ABS_HAT1Y
should be replaced with:
Classic.Dpad.X = ABS_HAT0X Classic.Dpad.Y = ABS_HAT0Y Classic.LStick.X = ABS_X Classic.LStick.Y = ABS_Y Classic.RStick.X = ABS_RX Classic.RStick.Y = ABS_RY
Otherwise, you won't get proper analog input from the sticks, since PoV hats aren't analog.
As a clone of the Pandora's gaming controls
This method works well where it does, you get a clone of the Pandora's gaming controls (minus the nubs), that should theoretically work in all games that support the Pandora's gaming controls. However, because of differences in how the games receive input, not all will detect the "fake" input.
Here is the profile for the Pandora gaming controls:
# D-Pad Classic.Up = KEY_UP Classic.Down = KEY_DOWN Classic.Left = KEY_LEFT Classic.Right = KEY_RIGHT # Select, Start and Space Classic.Minus = KEY_LEFTCTRL Classic.Plus = KEY_LEFTALT Classic.Home = KEY_SPACE # BXYA on Pandora Classic.A = KEY_END Classic.B = KEY_PAGEDOWN Classic.X = KEY_PAGEUP Classic.Y = KEY_HOME Classic.ZL = KEY_Q Classic.ZR = KEY_P Classic.L = KEY_RIGHTSHIFT Classic.R = KEY_RIGHTCTRL
Save that in /etc/cwiid/wminput - you can name it whatever you want, as long as you load it in wminput using "wminput -c filename" - and make sure to save it using UNIX line endings (LF).
Once the profile is loaded and your Wiimote/Classic Controller is connected, it will automatically work in some games, but not in others. This might be possible to change to work in all games by modifying the wminput source code.
MS Xbox360 controller
Sony PS3 controller
The OUYA controller plays extremely well with the Pandora. As with the Wii controller above, many games that support joystick input will work automatically or by using in game mappers. For most other games, QJoyPad allows the OUYA controller to mimic the Pandora controls. The controller has enough excess buttons to map keys that are helpful in navigation, such as Enter, Escape, Start, Select, and Right Click.
The touch pad on the OUYA controller can control mouse movement and perform Left Click/Drag.
How to Connect
1. Turn on Bluetooth Hardware.
2. Hold down the OUYA button on the gamepad(s) until two lights are flashing.
3. Enter the following into a terminal:
Output should look like:
AD:DR:ES:SO:UY:A1 Broadcom Keyboard AD:DR:ES:SO:UY:A2 Broadcom Keyboard1
4. Then, for each of the controllers you would like to pair, use the hidd command with the address output from your terminal. For example, the first controller listed above:
sudo hidd --connect AD:DR:ES:SO:UY:A1
If all goes well, there should be no output, and the first light on the controller should be lit.
Mayflash GameCube to USB Adaptor
These adapters must be plugged in through a USB 2.0 hub, but are plug n' play after that. As with other controllers, QJoyPad is necessary for some programs in order to mimic the Pandora Controls.
Program Specific Compatibility
After a controller is paired and found to be working with the Pandora, the following compatibility list can be used as a guide:
|Program||Link||Button Mapping||QJoyPad Compatible||Additional comments|
|DraStic||repo||No||No||No method found yet for using external controllers|
|SNES9x EX+||repo||Yes||n/a||Custom key maps work great. Bluetooth controller input does not currently prevent the Pandora from going to low poer mode, and the emulator will begin to freeze after the Pandora thinks that it is idle and turns on power saving. Suggest turning off idling power save while you play with a controller.|
|Not Tetris||repo||No||Yes||QJoyPad works fine. Map Escape and Enter to help with pausing and selections.|
|Flying Snake||repo||No||Yes||QJoyPad works fine. Map Start in order to help you begin a new round.|
|Mini Slug Project||repo||Works with issues||No||Game auto maps the OUYA controller fine, but maps the directional to the left stick. Have not found a way to use the D-Pad. QJoyPad is ignored.|
|Mupen64plus v2.1||repo||Yes||n/a||If your controller is not already supported, it can be mapped by editing InputAutoConfig.ini - OUYA controllers and Mayflash GameCube-to-USB can be mapped and auto-detected using the following InputAutoCfg.ini|
|Jedi Knight II: Jedi Outcast||repo||Works With Issues||No||Can map buttons easily in-game, but have not found a way to map mouse look to the Right Analog Stick. Using QJoyPad to mimic mouse movement crashes the game. Playable with the OUYA Controller if you use the trackpad instead to control mouse look.|
|Duck Marines||repo||Automap Is Not Playable||No||Game detects external controllers and automaps, but the mapped controls are not usable for some controllers, and I have not yet found a way to correctly remap them.|
|PCSX ReARMed||repo||Yes||n/a||Custom control maps work wonderfully.|