Netstick client for Nintendo 3DS -- turn your portable console into a Linux compatible WiFi gamepad!

Overview

Netstick for 3DS

Copyright (c) 2021 - Funkenstein Software Consulting, all rights reserved. See license.txt for more information.

What is it?

Netstick turns your 3DS into a wifi enabled gamepad! Control any linux-based device (such as a Raspberry Pi running Retropie) using your 3DS!

What's supported?

  • The dpad, circle-pad, c-stick (new 3ds), and all buttons are all mapped
  • Accelerometer (X/Y/Z)
  • Gyroscope (X/Y/Z)
  • Touchscreen

Preparation

On the Linux host...

Build netstickd 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.

On the 3DS...

Prerequisite: Netstick requires Homebrew Launcher to be installed on your 3DS; for more information, refer to https://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.

Building

Netstick for 3DS is built using devkitpro (https://devkitpro.org). Once it has been properly installed and configured, Netstick can be built by typing make from the root of this source package.

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

ToDo's:

  • Improved documentation / code cleanup
Issues
  • Implement config to swap A/B and X/Y

    Implement config to swap A/B and X/Y

    Just tested using Hades via Steam/Proton and it worked perfectly! My only complaint is that, since A/B and X/Y are swapped compared to an Xbox controller, I was pushing B to confirm and A to go back, which messed with my brain a little.

    Having a config option to swap the pairs of buttons would be awesome!

    opened by BrianAllred 2
  • Buttons Not mapping Correctly

    Buttons Not mapping Correctly

    Using Retroarch, the buttons are not mapping correctly. B is mapped to X and X is mapped to B. I think the L and R buttons are mapped to START and SELECT but i am not sure. Any ideas?

    opened by CactusBoy3 1
  • Gamepad lags when gyro is disabled

    Gamepad lags when gyro is disabled

    If I have gyro disabled in the config. The polling rate of the gamepad (the joystick at least) becomes very low (like once a second).

    If I have gyro enabled, it is very smooth and works well*

    • gyro sometimes disconnects itself
    opened by Latrolage 1
  • Error when compiling

    Error when compiling

    Makefile:10: /opt/devkitpro/devkitARM/3ds_rules: No such file or directory make: *** No rule to make target '/opt/devkitpro/devkitARM/3ds_rules'. Stop.

    I honestly don't care about fixing this error, can you just point me to where I can find a pre-compiled version?

    opened by Fujiwara9996 1
  • Use motion controls over DSU protocol?

    Use motion controls over DSU protocol?

    The majority of emulators use the DSU protocol for easy addition of motion controls. There's no clear way to add netstick's gyroscope to, say, Dolphin emulator. Implementing this protocol, or allowing a direct way of adding it, would be very appreciated.

    opened by Phantop 1
  • Feature parity with ctroller

    Feature parity with ctroller

    Hi, author of ctroller here!

    Netstick looks amazing so far! I do not actively work on ctroller anymore, but if there is any interest, I might be able to port some of its features to Netstick. If you are interested, please use this issue to get in contact with me :)

    opened by phijor 1
Releases(v5)
  • v5(May 5, 2021)

  • v4(Apr 21, 2021)

  • v3(Apr 13, 2021)

    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
    Source code(tar.gz)
    Source code(zip)
    netstick-3ds.zip(103.51 KB)
  • v2(Apr 12, 2021)

    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

    Note that this release is fully supported by the existing netstick server; no server-side changes are required to to support these additions.

    Source code(tar.gz)
    Source code(zip)
    netstick-3ds.zip(103.72 KB)
  • 1(Apr 9, 2021)

T-Watch 2020 v1 compatible firmware providing WiFi and BLE testing tools (and also, a watch :D)

ESP-IDF template app This is a template application to be used with Espressif IoT Development Framework. Please check ESP-IDF docs for getting started

Damien Cauquil 39 Jul 31, 2022
Violet - Lightweight STUN/TURN server

Violet is a lightweight STUN/TURN server (RFC8489 and RFC8656) based on libjuice.

Paul-Louis Ageneau 86 Jul 30, 2022
A portable MQTT C client for embedded systems and PCs alike.

MQTT-C is an MQTT v3.1.1 client written in C. MQTT is a lightweight publisher-subscriber-based messaging protocol that is commonly used in IoT and net

Liam Bindle 518 Aug 4, 2022
RPC++ is a tool for Discord RPC (Rich Presence) to let your friends know about your Linux system

RPC++ RPC++ is a tool for Discord RPC (Rich Presence) to let your friends know about your Linux system Installing requirements Arch based systems pacm

grialion 4 Jul 6, 2022
Triton Python and C++ client libraries and example, and client examples for go, java and scala.

Triton Client Libraries and Examples To simplify communication with Triton, the Triton project provides several client libraries and examples of how t

Triton Inference Server 164 Aug 7, 2022
VEngine-Client - vEngine: Official Client Module

━ S Y N O P S I S ━ Maintainer(s): Aviril, Tron vEngine is Next-Gen Sandbox-Engine being crafted in C++. In contrast to UE/Unity/ReverseEngineered-Mod

ᴠ : ꜱᴛᴜᴅɪᴏ 13 Apr 13, 2022
Pyth-client - client API for on-chain pyth programs

pyth-client client API for on-chain pyth programs Build Instructions # depends on openssl apt install libssl-dev # depends on libz apt install zlib1g

Pyth Network 101 Jul 3, 2022
Webdav-client-cpp - C++ WebDAV Client provides easy and convenient to work with WebDAV-servers.

WebDAV Client Package WebDAV Client provides easy and convenient to work with WebDAV-servers: Yandex.Disk Dropbox Google Drive Box 4shared ownCloud ..

Cloud Polis 102 Jul 10, 2022
This repository provides a C++ client SDK for Unleash that meets the Unleash Client Specifications.

Unleash Client SDK for C++ This repository provides a C++ client SDK for Unleash that meets the Unleash Client Specifications. Features The below tabl

Antonio Ruiz 4 Jan 30, 2022
LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program.

LibVNCServer: A library for easy implementation of a VNC server. Copyright (C) 2001-2003 Johannes E. Schindelin If you already used LibVNCServer, you

null 848 Jul 27, 2022
Realtime Client/Server app for Linux allowing joystick (and other HID) data to be transferred over a local network

netstick What is it? Netstick enables HID devices to be remotely connected between a "client" and "server" over a network connection. It allows the ke

null 29 Jul 24, 2022
A GlobalProtect VPN client (GUI) for Linux based on OpenConnect and built with Qt5, supports SAML auth mode.

A GlobalProtect VPN client (GUI) for Linux based on OpenConnect and built with Qt5, supports SAML auth mode.

Kevin Yue 495 Aug 6, 2022
Unofficial Linux client for the Adobe Connect meeting application

Unofficial Adobe Connect Client for Linux Description: Adobe Connect does not have a linux version officially, however, since it's written in flash, i

Mahan Lamee 14 Jun 30, 2022
Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.

Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.

Felix Queißner 540 Jul 30, 2022
Easy automated syncing between your computers and your MEGA Cloud Drive

Easy automated syncing between your computers and your MEGA Cloud Drive

Mega Limited 1.2k Aug 1, 2022
Now get your alerts & updates about home, wherever you are, with an SMS on your mobile! All with a simple NodeMCU project!

Now get your alerts & updates about home, wherever you are, with an SMS on your mobile! All with a simple NodeMCU project!

Priyanka Peddinti 2 Oct 20, 2021
Level up your Beat Saber experience on Quest! AnyTweaks provides various tweaks to help boost your experience on Quest, such as Bloom, FPS Counter and more.

Need help/support? Ask in one of BSMG's support channels for Quest, or join my Discord server! AnyTweaks Level up your Beat Saber experience on Quest!

kaitlyn~ 14 Jul 28, 2022
A WiFi mapping companion app for Valetudo

Valeronoi (Valetudo + Voronoi) is a companion for Valetudo for generating WiFi signal strength maps. It visualizes them using a Voronoi diag

Christian F. Coors 169 Jul 30, 2022
Tuya IoTOS Embeded SDK WiFi & BLE for BK7231T

Tuya IoTOS Embedded Wi-Fi and BLE SDK for BK7231T 中文版 | English Overview Developed independently by Tuya Smart, Tuya IoTOS is the world's only IoT ope

Tuya 34 Jul 31, 2022