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

sys-con Switch by o0Zz

From GameBrew
Revision as of 00:27, 10 November 2024 by HydeWing (talk | contribs) (Created page with "{{Infobox Switch Homebrews |title=sys-con |image=sysconnx.png |description=Nintendo Switch sysmodule that allows support for third-party controllers. |author=o0Zz |lastupdated=2024/10/19 |type=Sysmodules |version=1.4.2 |license=GPL-3.0 |download=https://dlhb.gamebrew.org/switchhomebrews/sysconnx.7z |website=https://github.com/o0Zz/sys-con |source=https://github.com/o0Zz/sys-con |donation=https://github.com/o0Zz/sys-con }} {{lowercase title}} Sys-con is a Nintendo Switch...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
sys-con
Sysconnx.png
General
Authoro0Zz
TypeSysmodules
Version1.4.2
LicenseGPL-3.0
Last Updated2024/10/19
Links
Download
Website
Source
Support Author

Sys-con is a Nintendo Switch module that adds support for all HID and XID joysticks and gamepads to the Nintendo Switch.

Only USB connection is supported. If you want to connect your controllers using Bluetooth, you should use ndeadly's MissionControl.

Some of the supported controllers include:

  • All PC Controllers
  • Dualshock 4
  • Dualshock 3
  • Dualsense (PS5)
  • Xbox Original
  • Xbox 360 Controller
  • Xbox 360 Wireless adapter (Up to 4 controller can be connected)
  • Xbox One X/S Controller
  • Wheels

A complete list of tested controller is available here.

Features

  • HID joystick/gamepad/wheels supported (PC Controller compatible).
  • PS and XBOXs controllers supported.
  • Custom key mapping using VID/PID and profile.
  • Automatically add new controllers (Try to determine the best driver).
  • Configurable deadzone.
  •  Configurable polling frequency.
  • Configurable controller color using #RGBA.

Installation

Grab the latest zip, extract it in your SD card and boot/reboot your switch.

Configuration

The sys-con configuration folder is located at /config/sys-con/. It includes settings for controller button mappings, stick configurations, trigger settings, and deadzones.

The configuration is loaded in the following way:

  • Global Settings - The [global] section is applied only once at boot. To update settings here, reboot the Switch.
  • Controller-Specific Settings - For each controller, configuration is applied in the following order:
    • [default] - Loaded first.
    • [VID-PID] - Loaded next, where VID and PID correspond to the controller’s vendor and product IDs.
    • If [VID-PID] contains a [profile], it will load the [profile] then load [VID-PID].

In other words, the loading order is: [Default] [Profile] [VID-PID]. If you want to override a setting for only 1 controller, it's adviced to change the configuration in [VID-PID] in order to not impact others controllers

Logs

Logs are stored at /config/sys-con/log.log on your SD card. The logs are automatically created with a log level equal to Info.

For more verbose logs, modify /config/sys-con/config.ini:

[global]
log_level=0

Then reboot your Switch.

Important: Enabling trace (log_level=0) or debug (log_level=1) modes will increase the polling frequency to 100ms and 500ms respectively. This may introduce significant input latency, making these modes unsuitable for gameplay. Use them only for debugging purposes.

User guide

Configure a controller

When a new controller is connected, sys-con attempts to automatically assign the best profile. Most features like arrows and joysticks will work correctly, but button mappings may need adjustment. If you find that buttons are not correctly mapped or the right stick is reversed, you can manually configure the controller using one of the following methods:

Method 1: Directly on the Switch

  • Plug the controller into the Switch to connect the controller.
  • Test inputs from Settings > Controllers & Sensors > Test Input Devices.
  • Press each button, note the IDs and try to understand the correct mapping.
  • On your SD card, navigate to /config/sys-con/config.ini. Locate the [vid-pid] section for your controller. A new section will be created automatically if the controller is new. There you can update the button mappings.

Typical configuration will look like

[0810-0001]
B=1
A=2
Y=3
X=4
L=5
R=6
ZL=7
ZR=8
minus=9
plus=10
home=11
capture=12
rstick_left=-Rz
rstick_right=+Rz
rstick_up=+Z
rstick_down=-Z

Here, A, B, Y, X, etc., should be replaced with the appropriate button IDs you determined from testing.

Method 2: Using a Windows PC

Finding the VID and PID:

  • Plug your controller into your PC.
  • Go to Control Panel > Device Manager.
  • Locate your controller under Human Interface Devices, right-click, and select Properties.
  • Go to the Details tab and select Hardware IDs to find the PID and VID, which will look like HID\VID_0810&PID_0001, translating to [0810-0001].

View Button IDs:

  • Open joy.cpl (either from Win+R or directly from the Start menu).
  • Select your controller and click on Properties.
  • Here you should see a panel with button IDs (1, 2, 3 ...), press the button and make a note of them (which button is assigned to which ID).

Update Configuration:

  • On your SD card, open /config/sys-con/config.ini.
  • Edit the [vid-pid] section with the button IDs you noted:
[0810-0001]
B=3
A=2
Y=4
X=1
L=7
R=8
ZL=5
ZR=6
minus=9
plus=10
home=11
capture=12
rstick_left=-Z
rstick_right=+Z
rstick_up=+Rz
rstick_down=-Rz

Replace 1, 2, 3, 4, ... with the button IDs from your PC testing. If this method does not work or mappings are incorrect, use Method 1.

Button mapping

List of possible mappable switch buttons:

lstick_left=
lstick_right=
lstick_up=
lstick_down=
rstick_left=
rstick_right=
rstick_up=
rstick_down=
B=
A=
Y=
X=
L=
R=
ZL=
ZR=
minus=
plus=
lstick_click=
rstick_click=
dpad_up=
dpad_down=
dpad_left=
dpad_right=
capture=
home=
simulate_home=
simulate_capture=
Copy

List of possible values:

  • 1 to 31: Represent the Button ID of the controller
  • Z, -Z, Rz, -Rz, Rx, -Rx, Ry, -Ry, Slider, -Slider, Dial, -Dial: Repesent the analog part of the controller (Joystick, ...)
  • 32 to 35: Represent the hat switch of the controller (Most of the time equivalent to dpad) - 32, 33, 34, 35 represent dpad_up, dpad_down, dpad_left, dpad_right

Deadzone

Additionnaly to these mappings, you can configure deadzone for every analog:

deadzone_x=20
deadzone_y=20
deadzone_z=20
deadzone_rz=20
deadzone_rx=5
deadzone_ry=5
deadzone_slider=20
deadzone_dial=20
Copy

All values are in percentages

Troubleshooting

For common issues a troubleshooting guide is available: Troubleshooting

Media

sys-con on Logitech F710 (de\/ELOPER.su)

Compatibility

Support Atmosphère v1.8.0 (with FW 19.0).

Known issues

For more information, see the Troubleshooting.

Changelog

v1.4.3 2024/10/19

  • Fix XBOXOne guide button don't works (Regression from v1.4.0).
  • Add support for 8BitDo Ultimate 2C (XBOXOne controller).
  • Fixed issue with HID controller with Joystick/Gamepad profile not in first position.

v1.4.2 2024/10/18

  • Add support for Atmosphere v1.8
  • Add an option to set an analog scaling factor for the controller, useful for cases where the analog stick doesn't reach its full range (factor_XXX=...).

v1.4.1 2024/09/07

  • Fixed XBOX360 Wireless support (Regression introduced in v1.4.0).

v1.4.0 2024/09/01

  • Added a way to map "Slider" and "Dial" (Useful for some controller that need slider on right stick).
  • Fixed incorrect HID data interpretation when HID report descriptor contains negative values.
  • Change analog mapping to be able to map everything on anything (Breaking change).
  • Fixed Switch controller pro via USB don't works everytimes (Fixed v1.3.0).
  • Add mapping for T.Flight Hotas X - PS3 Mode for ACE combat 7 Deluxe. Thanks to @kfkboys.

v1.3.0 2024/08/15

  • Fixed crash when xbox controllers don't provide output endpoint.
  • Fixed HID controller (with multiple interfaces) not properly working.
  • Added a way to bind one button to multiple controller buttons More details.
  • Added support for official switch controller USB (Switch pro controller, ...)
  • Added multiple mappings.

v1.2.2 2024/06/26

  • Implement R+L to be able to re-sync controller with the Nintendo switch.
  • Fixed DPAD buttons can't be mapped.
  • Added a way to simulate home or capture from any buttons combinaison.
  • Added a way to define controllers (Gamecube, Pro, SNES, Sega etc ...).
  • Added several mappings (thanks to @texita) - PSX, PS5, XboxOne, GameCube adapter ...

v1.2.1 2024/06/21

  • Fixed input latency with some PC controllers (Generic HID).

v1.2.0 2024/06/20

  • Support Atmosphere v1.7.1 (Fixed crash on FW 18.1).
  • Add a way to simulate home button from +- (Usefull for controller that don't have a home button).
  • Add support for DualSense (PS5 Controller).
  • Configuration is now case insensitive.
  • Stabilize USB stack.
  • Fixed regression on XBOXS controller.
  • Add an auto add controller feature.

v1.1.1 2024/06/14

  • Added support for Atmosphere v1.6.2 and v1.7.0.
  • Improve discovery mode to be able to discover a list of VID/PID only.
  • Added support for XBOX original controllers.
  • Added support for "Phantom White PDP Xbox One" and "Wave Afterglow PDP Xbox Series" controllers.
  • Added support for "Foyu" and "Activbb X6-34U" controllers.

v1.1.0 2024/06/08

  • Fixed log file not automatically created
  • Reverse Y on XBOX S controller and original XBOX controller.
  • Fixed home and capture binding not properly working.
  • Fixed xbox360 wireless controller plug/unplug not properly working.
  • Add a discovery mode to discover either all controllers or only known controllers (Avoid issue with official switch controllers).
  • Fixed incorrect binding for right joystick on Generic HID.

v1.0.2 2024/06/04

  • Support Logitech Driving Force GT (Wheel).
  • Fixed incorrect inputs was transmitted to the switch (When HID report descriptor was not aligned on 8bits).

v1.0.1 2024/06/02

  • Support Atmosphere 1.7.0.

v1.0.0 2024/06/01

  • Support Xbox/PS & Generic HID.
  • Support Atmosphere 1.6.2

Credits

Texita For his contribution in controllers testings and mappings

External links

Advertising: