opipad/README.md
Takashi Toyoshima bf6766958e
Create README.md
2017-11-15 01:46:03 +09:00

2.2 KiB

==== Orange Pi as a Game Pad =========================
_______     _____________    ________       _________
__  __ \    ___  __ \__(_)   ___  __ \_____ ______  /
_  / / /    __  /_/ /_  /    __  /_/ /  __ `/  __  / 
/ /_/ /     _  ____/_  /     _  ____// /_/ // /_/ /  
\____/      /_/     /_/      /_/     \__,_/ \__,_/   

What?

This is a project to use Orange Pi One as a gamepad. You can connect your own arcade controller to the Pi's GPIO, and allow Linux to recognize it as a joystick (e.g., /dev/js0).

Also, the project includes a USB Gadget API driver to expose the controller to PC as a USB gamepad.

You may be able to run it on other Orange Pi series or Raspberry Pi Zero (W) with small code modifications.

GPIO pin assign (an example)

This is an exmplae pin assign for Hori Fighting Stick EX (Xbox 360). You can modify source code to customize it.

3.3V 1 2 5V
BACK 3 4 5V
START 5 6 GND
UP 7 8 RB
GND 9 10 LB
DOWN 11 12 (PD14)
LEFT 13 14 GND
RIGHT 15 16 (PC4)
3.3V 17 18 (PC7)
(PC0) 19 20 GND
(PC1) 21 22 Xbox
(PC2) 23 24 (PC3)
GND 25 26 (PA21)
A 27 28 (PA18)
B 29 30 GND
X 31 32 (PG8)
Y 33 34 GND
RT 35 36 (PG9)
LT 37 38 (PG6)
GND 39 40 (PG7)

Hardware

Button/Stick circuit

   ___ ... GPIO pin (w/ internal pull-up)
  |
 \
  \
  |
__|__
///// GND

Install

On Armbian, or Retrorange Pi 3,

% cd /opt
% git clone https://github.com/toyoshim/opipad.git
% cd opipad
% make
% cat rc.local.example >> /etc/rc.local

On Armbian for Orange Pi Zero, you will need to disable other USB Gadget modules, such as g_serial. You can disable it by commenting it out in /etc/modules.

If the system does not have /lib/modules/3.4.113-sub8i/build (maybe happen on Retrorange Pi 3), you need to create a symlink from /usr/src/linux-headers-3.4.113-sun8i to compile drivers.

How to use

Once the applications are built, and the hardware is set up, it just works after the next reboot. Pressing Xbox button will switch the running mode. The first mode is local controller mode, and the second one is USB gamepad mode.