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

Netstick 3DS: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 8: Line 8:
|version=5
|version=5
|license=Mixed
|license=Mixed
|download=https://dlhb.gamebrew.org/3dshomebrew/Netstick.rar
|download=https://dlhb.gamebrew.org/3dshomebrews/netstick3ds.7z
|website=https://github.com/moslevin/netstick-3ds
|website=https://github.com/moslevin/netstick-3ds
|source=https://github.com/moslevin/netstick-3ds
|source=https://github.com/moslevin/netstick-3ds
}}
}}
<youtube>arvGSoCSi6Q</youtube>
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.


== Netstick for 3DS ==
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.


Copyright (c) 2021 - Funkenstein Software Consulting, all rights reserved. See license.txt for more information.
==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.


== What is it? ==
==User guide==
===On Linux host===
Build <code>netstickd</code> for your supported linux device and run it ([https://github.com/moslevin/netstick see instructions]).


Netstick turns your 3DS into a wifi enabled gamepad! Control any linux-based device (such as a Raspberry Pi running Retropie) using your 3DS!
Take note of the device's IP address and port.


== What's supported? ==
===On the 3DS===
Prerequisite: Netstick requires Homebrew Launcher to be installed on your 3DS; for more information, refer to [https://3ds.hacks.guide/ 3DS Hacks Guide].


* The dpad, circle-pad, c-stick (new 3ds), and all buttons are all mapped
On your host PC, edit the included <code>config.txt</code>, and set the server and port lines to the IP address/port of the Linux device running <code>netstickd</code>.
* Accelerometer (X/Y/Z)
* Gyroscope (X/Y/Z)
* Touchscreen


== Preparation ==
Create a folder named <code>/3ds/netstick-3ds</code> on your 3DS, and copy <code>netstick-3ds.3dsx</code>, <code>netstick-3ds.smdh</code>, and your modified <code>config.txt</code> into it.


==== On the Linux host... ====
===Running===
Launch Netstick from the Homebrew Launcher, similar to any other homebrew app.  


Build <code>netstickd</code> for your supported linux device and run it (see instructions at https://github.com/moslevin/netstick). Take note of the device's IP address and port.
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.  


==== On the 3DS... ====
Use <code>evtest</code> on Linux to verify that the events are processed successfully.


Prerequisite: Netstick requires Homebrew Launcher to be installed on your 3DS; for more information, refer to https://3ds.hacks.guide/.
===Configuration===
The configuration file format is very simple, and consists of lines in key:value format.  


On your host PC, edit the included <code>config.txt</code>, and set the server and port lines to the IP address/port of the Linux device running <code>netstickd</code>.
The supported options are described below:
 
* server - The IP address of the server on the local network.
Create a folder named <code>/3ds/netstick-3ds</code> on your 3DS, and copy <code>netstick-3ds.3dsx</code>, <code>netstick-3ds.smdh</code>, and your modified <code>config.txt</code> into it.
* 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).
== Running ==
* 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.


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 &quot;Nintendo 3DS&quot; appear under /dev/input. Use <code>evtest</code> on Linux to verify that the events are processed successfully.
==Compatibility==
Tested by the suthor on New 3DS with a Raspberry Pi 4 running Netstick.


== Building ==
==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.


Netstick for 3DS is built using devkitpro (https://devkitpro.org). Once it has been properly installed and configured, Netstick can be built by typing <code>make</code> from the root of this source package.
'''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.


== Configuration ==
'''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.


The configuration file format is very simple, and consists of lines in key:value format.
'''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.


The supported options are described below:
'''v1'''
* First release. Tested on New 3DS with a Raspberry Pi 4 running netstickd.


* server - The IP address of the server on the local network
==External links==
* port - The port of the server on the local network
* GitHub - https://github.com/moslevin/netstick-3ds
* invert_cstick_x - Invert the values reported natively by the 3DS on the C-stick's X axis (Ignored on Old 3DS)
* Reddit - https://www.reddit.com/r/3dshacks/comments/mv5k1c/netstick3ds_updates_adding_touch_and
* invert_cstick_y - Invert the values reported natively by the 3DS on the C-stick's Y axis (Ignored on Old 3DS)
* Reddit - https://www.reddit.com/r/3dshacks/comments/mnvk3l/turn_your_3ds_into_a_wifienabled_gamepad_for_your
* 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

Revision as of 11:28, 19 March 2022

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: