More actions
CTROLLER for Android | |
---|---|
File:CTROLLER-for-Android.png | |
General | |
Author | superl2 |
Type | Other Apps |
Version | v0.1.3 |
License | Mixed |
Last Updated | 2018/01/29 |
Links | |
Download | |
Website | |
Source | |
Ctroller-android lets you use your 3DS as an input device for your Linux Android system via the uinput kernel module. It consists of a client that runs on your 3DS, continously streaming the 3DS input data to a server on your Android device. The server exposes a virtual device to your system, interpretes the data it receives and writes it to a event node under /dev/input/event*
or similar. The kernel gamepad input documentation can be found here: https://www.kernel.org/doc/Documentation/input/gamepad.txt
Prerequisites
You will need DevkitARM and the ctrulib to build the 3DS component.
Building the 3DS CIA requires bannertool and makerom to be in your $PATH
.
To run the server, the uinput
kernel module needs to be loaded:
$ modprobe uinput
Building
To build the 3DS app, run make
in the “3DS” directory.
To build the android binary, run CC=path/to/th/android/cross/compiler make
. replace the path with the patch to your android cross compiler (the gcc binary).
Installation
Download and run the ELF binary manually or use my android app: https://github.com/hacker1024/ctroller-android-app
Download the latest release of the 3DS binaries.
Or you can build them yourself:
$ cd 3DS $ make release
Install
ctroller.cia
with the CIA-manager of your choice.If you want to install the 3DSX-executable:
Copy
ctroller.{3dsx,smdh}
to/3ds/ctroller/
on your SD card. You can also directly upload the application to your 3DS using [[./3DS/upload.sh|upload.sh]] (do not blindly execute unknown scrips, I’m not responsible if this accidentally deletes your SD card or unfreezes your fridge). To do so, start a FTP server (such as ftpd) on your 3DS on port 5000, then run:$ cd 3DS $ make upload DSIP=<IP of your 3DS here>
This requires
ftp
to be installed on your system.Create a directory
ctroller
in the root of your SD cardPlace [[./3DS/ctroller.cfg|3DS/ctroller.cfg]] in there and replace the IP with the one of your PC. (The config file should now be at
sdmc:/ctroller/ctroller.cfg
)
Running
Run the ELF binary manually or use my android app: https://github.com/hacker1024/ctroller-android-app
Start the ELF binary manually by copying to a executable location (like /data/local/tmp/) and running:
$ ./ctroller
Flags if you manually run the binary:
-d --daemonize execute in background -h --help print this help text -p --port=<num> listen on port 'num' (defaults to 15708) -u --uinput-device=<path> uinput character device (defaults to /dev/uinput) -k --keymap use a keymap file (if not set, ctroller will use the default keymap)
Then launch the ctroller.3dsx or ctroller.cia application on your 3DS using a homebrew launcher of your choice.
For development purposes, the 3DS-Makefile includes a run
target that uses 3dslink
to upload and run the application using the Homebrew Menu NetLoader.
Creating your own keymap file
To remap the buttons in a way you want, you need to create a file with a button label on each line. The default mapping is this:
- A
- B
- X
- Y
- START
- SELECT
- L
- R
- ZL
- ZR
To modify it, copy the above into a file, and swap keys around. The order is very important; any key in your custom keymap will override the default one on the same line.
To use this keymap with ctroller-android, use the -k option (see above).
For example, I prefer my layout to be more like an xbox, for better compatibility with games. To do this, I swap A
and B
; X
and Y
; R
and ZR
; and L
and ZL
. Here’s my keymap file:
- B
- A
- Y
- X
- START
- SELECT
- ZL
- ZR
- L
- R
Notes
This program is intended to be used in a private network. For simplicity, the server right now accepts any connection on it’s port, which might pose a security risk if others can send data to it. This will be changed in future releases. For now, you probably shouldn’t be using this in a public network.
changelogs
Version 0.1.3 on 12.27.2017 Alpha 3.1 MB Changes:
- Add about page - Check if the native binary is already running on app launch, and if so, give an option to stop it
- Update native binary to release android-0.1.2 (buttons are now mapped like an xbox controller, fixed error logging) Known bugs (same as old releases):
- C-stick may not work, please tell me
- DPAD may not work, please tell me I need feedback! Please tell me if the app works for you or not. I especially need feedback from people with 32-bit devices.
External Links
- Source code is here: https://github.com/hacker1024/ctroller-android-app
- and here: https://github.com/hacker1024/ctroller-android