|Type||Other PC Utilities|
Netstick for 3DS is a client for Linux that allows you to connect the 3DS portable console to the PC via WiFi, which can be used as a normal game controller.
Through the client it is possible to control any Linux-based device (as well as a Raspberry Pi with Retropie) using the 3DS portable console.
- Supports D-Pad, Circle Pad, C-Stick (N3DS), and all buttons, which are correctly mapped.
- Accelerometer (X/Y/Z).
- Gyroscope (X/Y/Z).
On the Linux host:
netstickdfor your supported linux device and run it (see instructions).
- Take note of the device's IP address and port.
On the 3DS console:
- Prerequisite: Netstick requires Homebrew Launcher to be installed on your 3DS; for more information, refer to 3DS Hacks Guide.
- On your host PC, edit the included
config.txt, and set the server and port lines to the IP address/port of the Linux device running
- Create a folder named
/3ds/netstick-3dson your 3DS, and copy
netstick-3ds.smdh, and your modified
- Launch Netstick from the Homebrew Launcher, similar to any other homebrew app.
- You should then see the 3DS indicate success connecting to the Linux host, and events routed to a device named "Nintendo 3DS" appear under /dev/input.
evteston Linux to verify that the events are processed successfully.
The configuration file format is very simple, and consists of lines in key:value format. The supported options are described below:
server- The IP address of the server on the local network.
port- The port of the server on the local network.
invert_cstick_x- Invert the values reported natively by the 3DS on the C-stick's X axis (ignored on Old 3DS).
invert_cstick_y- Invert the values reported natively by the 3DS on the C-stick's Y axis (ignored on Old 3DS).
invert_circle_pad_x- Invert the values reported natively by the 3DS on the Circle Pad's X axis.
invert_circle_pad_y- Invert the values reported natively by the 3DS on the Circle Pad's Y axis.
use_touch- Enable the touchscreen device when set to "true".
use_accel- Enable the accelerometer when set to "true".
use_gyro- Enable the gyroscope when set to "true".
send_touch_event- Send a linux "touch" event (in addition to the X/Y coordinates) when the touchscreen is active.
touch_offset- Shrink the touchscreen's surface by a number of pixels on each side, making it easier to reach its limits.
swap_ab- Swap the a and b buttons in the joystick report (allows correct button mapping when using a 3DS as a controller for steam, etc).
swap_xy- Swap the x and y buttons in the joystick report (allows correct button mapping when using a 3DS as a controller for steam, etc).
use_steering_controls- Send a virtual steering-wheel axis in the gamepad report, derived from the X/Z accelerometer values.
Tested by the suthor on New 3DS with a Raspberry Pi 4 running netstickd.
- Added swap_ab and swap_xy config options to allow mapping of button names to other controllers (XBOX, Dreamcast, etc).
- Overhauled the codebase + documented source for easier maintainability going forward.
- Support "touch offset" config option, allow a user to reduce the touchscreen's active area in order to make it easier to activate the corners.
- Wait 2s after every network error.
- Adding Gyro support and Many Configuration Options.
- This release features support for the Gyro.
- Adding configuration options to support:
- Invert C-stick X/Y.
- Invert Circle-pad X/Y.
- Selectively enable the accel/gyro/touch devices.
- Disable sending key events when touch-down/touch-up occurs on the touchscreen.
- Improvements and new features, including:
- Accelerometer support (creates a separate input device on the Linux host).
- Touchscreen support (creates a separate input device on the Linux host).
- Update the polling rate of the gamepad to 180Hz, reducing latency by ~5ms.
- Socket send() calls are non-blocking.
- First release. Tested on New 3DS with a Raspberry Pi 4 running netstickd.