This project is no longer maintained, as I have moved on to other projects. It might still work in an up to date homebrew environment but this is not guaranteed. Feel free to fork the project and continue it according to its license, that's why its open source :) I'll try answering any questions you might have, if my schedule allows for it.
One day I might come back to 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.
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
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.
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
.
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
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 card
Place 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
)
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.
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.