More actions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Infobox 3DS Homebrews | {{Infobox 3DS Homebrews | ||
|title=Netstick | |title=Netstick | ||
|image= | |image=Netstick3ds2.png | ||
|description=Netstick client for Nintendo 3DS - turn your portable console into a Linux compatible WiFi gamepad! | |description=Netstick client for Nintendo 3DS - turn your portable console into a Linux compatible WiFi gamepad! | ||
|author=moslevin | |author=moslevin |
Revision as of 11:29, 19 March 2022
Netstick | |
---|---|
General | |
Author | moslevin |
Type | PC Utilities |
Version | 5 |
License | Mixed |
Last Updated | 2021/05/05 |
Links | |
Download | |
Website | |
Source | |
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.
Features
- Supports D-Pad, Circle Pad, C-Stick (New 3DS), and all buttons which are correctly mapped.
- Accelerometer (X/Y/Z).
- Gyroscope (X/Y/Z).
- Touchscreen.
User guide
On Linux host
Build netstickd
for your supported linux device and run it (see instructions).
Take note of the device's IP address and port.
On the 3DS
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 netstickd
.
Create a folder named /3ds/netstick-3ds
on your 3DS, and copy netstick-3ds.3dsx
, netstick-3ds.smdh
, and your modified config.txt
into it.
Running
Launch Netstick from the Homebrew Launcher, similar to any other homebrew app.
If all goes well, you should see the 3DS indicate success connecting to the Linux host, and events routed to a device named "Nintendo 3DS" appear under /dev/input.
Use evtest
on Linux to verify that the events are processed successfully.
Configuration
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.
Compatibility
Tested by the suthor on New 3DS with a Raspberry Pi 4 running Netstick.
Changelog
v5
- 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.
v4
- 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.
v3
- 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.
v2
- 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.
v1
- First release. Tested on New 3DS with a Raspberry Pi 4 running netstickd.