Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Netstick 3DS

From GameBrew
Revision as of 11:28, 19 March 2022 by HydeWing (talk | contribs)
Netstick
File:Netstick.jpg
General
Authormoslevin
TypePC Utilities
Version5
LicenseMixed
Last Updated2021/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.

External links

Advertising: