All Projects → phijor → ctroller

phijor / ctroller

Licence: GPL-3.0 License
Use your 3DS as a gamepad on linux

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to ctroller

ocs
A one click setup for 3ds
Stars: ✭ 13 (-61.76%)
Mutual labels:  3ds, 3ds-homebrew
sm64-port
My mirror of the sm64-port. You probably want to look at the 3DS port branch: https://github.com/mkst/sm64-port/tree/3ds-port
Stars: ✭ 167 (+391.18%)
Mutual labels:  3ds, 3ds-homebrew
3DS.py
Python on your Nintendo 3DS
Stars: ✭ 90 (+164.71%)
Mutual labels:  3ds, 3ds-homebrew
libstarlight
3DS Homebrew Application Framework
Stars: ✭ 28 (-17.65%)
Mutual labels:  3ds, 3ds-homebrew
m3diaLib-CTR
A C++ library for easier homebrew development for the Nintendo 3DS
Stars: ✭ 39 (+14.71%)
Mutual labels:  3ds, 3ds-homebrew
smmdb
cross console/emulator sharing platform for Super Mario Maker courses
Stars: ✭ 51 (+50%)
Mutual labels:  3ds, 3ds-homebrew
3ds-hello-dlang
A 3DS homebrew example written in D!
Stars: ✭ 19 (-44.12%)
Mutual labels:  3ds, 3ds-homebrew
dses
Dead Simple Eula Set
Stars: ✭ 31 (-8.82%)
Mutual labels:  3ds, 3ds-homebrew
Notepad3DS
Text editor for the Nintendo 3DS console
Stars: ✭ 17 (-50%)
Mutual labels:  3ds, 3ds-homebrew
Rich-Presence-U
Display your Nintendo games on Discord.
Stars: ✭ 77 (+126.47%)
Mutual labels:  3ds
3ds
Javascript front-end to the titledb API
Stars: ✭ 12 (-64.71%)
Mutual labels:  3ds
Sonic-1-2-2013-Decompilation
Sonic 1/2 (2013) Decompilation for New 3DS
Stars: ✭ 41 (+20.59%)
Mutual labels:  3ds
borica-3ds
PHP Borica EMV 3DS library
Stars: ✭ 15 (-55.88%)
Mutual labels:  3ds
uinput
Go wrapper for uinput on LINUX
Stars: ✭ 52 (+52.94%)
Mutual labels:  uinput
LocalFileShare
attempt at file sharing with local wlan n 3ds
Stars: ✭ 13 (-61.76%)
Mutual labels:  3ds-homebrew
bezmouse
Simulate human mouse movements with xdotool
Stars: ✭ 110 (+223.53%)
Mutual labels:  uinput
powerslaves
Taking PowerSaves as a slave to your will.
Stars: ✭ 28 (-17.65%)
Mutual labels:  3ds
tangerine
A work-in-progress music player for the Nintendo 3DS and Nintendo Switch
Stars: ✭ 20 (-41.18%)
Mutual labels:  3ds
ACNL REditor
Animal Crossing New Leaf ROM Editor: Patch ACNL's code and files with QoL improvements to change the gameplay.
Stars: ✭ 35 (+2.94%)
Mutual labels:  3ds
input-modifier
uinput based key bindings and macros tool for Linux
Stars: ✭ 17 (-50%)
Mutual labels:  uinput

Deprecation notice

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

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.

  1. 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
  3. 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.

  4. Create a directory ctroller in the root of your SD card

  5. 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)

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].