More actions
No edit summary |
No edit summary |
||
Line 10: | Line 10: | ||
| source = https://github.com/phijor/ctroller | | source = https://github.com/phijor/ctroller | ||
}} | }} | ||
== ctroller == | |||
''Ctroller'' lets you use your 3DS as an input device for your Linux 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 PC. The server exposes a virtual device to your system, interpretes the data it receives and writes it to a event node under <code>/dev/input/event*</code> or similar. | |||
== Prerequisites == | == Prerequisites == | ||
You will need [https://sourceforge.net/projects/devkitpro/files/devkitARM/ DevkitARM] and the [https://github.com/smealum/ctrulib ctrulib] to build the 3DS component. Building the 3DS CIA requires [https://github.com/Steveice10/bannertool bannertool] and [https://github.com/profi200/Project_CTR/tree/master/makerom makerom] to be in your <code>$PATH</code>. To run the server, the <code>uinput</code> kernel module needs to be loaded: | You will need [https://sourceforge.net/projects/devkitpro/files/devkitARM/ DevkitARM] and the [https://github.com/smealum/ctrulib ctrulib] to build the 3DS component. Building the 3DS CIA requires [https://github.com/Steveice10/bannertool bannertool] and [https://github.com/profi200/Project_CTR/tree/master/makerom makerom] to be in your <code>$PATH</code>. To run the server, the <code>uinput</code> kernel module needs to be loaded: | ||
<source lang="bash">$ modprobe uinput | <source lang="bash">$ modprobe uinput | ||
</source> | </source> | ||
== Building == | == Building == | ||
Run <code>make</code> to build both components, or enter either of the <code>3DS</code>/<code>linux</code> subdirectories to build them individually by running <code>make</code> there. You can use the <code>debug</code> target for development. | Run <code>make</code> to build both components, or enter either of the <code>3DS</code>/<code>linux</code> subdirectories to build them individually by running <code>make</code> there. You can use the <code>debug</code> target for development. | ||
== Installation == | == Installation == | ||
If you are using Arch Linux, install [https://aur.archlinux.org/packages/ctroller-git/ ctroller-git] from the AUR. Or use [https://aur.archlinux.org/packages/ctroller-bin/ ctroller-bin] if you do not want to set up the 3DS toolchain. | If you are using Arch Linux, install [https://aur.archlinux.org/packages/ctroller-git/ ctroller-git] from the AUR. Or use [https://aur.archlinux.org/packages/ctroller-bin/ ctroller-bin] if you do not want to set up the 3DS toolchain. | ||
Line 39: | Line 41: | ||
<source lang="bash">$ ./linux/ctroller | <source lang="bash">$ ./linux/ctroller | ||
</source> | </source> | ||
Usage: | Usage: | ||
<pre>-d --daemonize execute in background | <pre>-d --daemonize execute in background |
Revision as of 04:41, 21 September 2021
Template:Infobox-3DS-Homebrews
ctroller
Ctroller lets you use your 3DS as an input device for your Linux 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 PC. 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.
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
Run make
to build both components, or enter either of the 3DS
/linux
subdirectories to build them individually by running make
there. You can use the debug
target for development.
Installation
If you are using Arch Linux, install ctroller-git from the AUR. Or use ctroller-bin if you do not want to set up the 3DS toolchain.
- Install the server to your system by running
make install
. This is equivalent to:
$ cd linux
$ make install DESTDIR="" BINDIR="/usr/bin"
You can set DESTDIR
to a install to a different location, i.e. make DESTDIR="/my/fakeroot/environment"
installs ctroller in /my/fakeroot/environment/usr/bin
. 2. 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: Copyctroller.{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. 4. Create a directory ctroller
in the root of your SD card 5. Place [[./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
Start the server by running:
$ ./linux/ctroller
Usage:
-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)
Then launch the ctroller.3dsx 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.
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.