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

sys-con Switch by cathery

From GameBrew
sys-con
Sysconnx.png
General
Authorcathery, o0Zz
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.
  • Rumble (soon).

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 - (o0Zz)

  • 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 - (o0Zz)

  • 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 - (o0Zz)

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

v1.4.0 2024/09/01 - (o0Zz)

  • 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 - (o0Zz)

  • 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 - (o0Zz)

  • 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 - (o0Zz)

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

v1.2.0 2024/06/20 - (o0Zz)

  • 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 - (o0Zz)

  • 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 - (o0Zz)

  • 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 - (o0Zz)

  • 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 - (o0Zz)

  • Support Atmosphere 1.7.0.

v1.0.0 2024/06/01 - (o0Zz)

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

v0.6.4 2021/09/24

  • Updated for FW 13.0.0.

v0.6.3 2021/04/12

  • Recompiled for compatibility with FW 12.0.0.

v0.6.2 2020/05/30

  • Reduced FS sessions used by the sysmodule from 3 to 1.
    • This might have caused FS to run out of sessions and crash the system if you had too many sysmodules enabled.
  • Reduced time sessions used by the sysmodule to 0.
    • Again to prevent time services to run out of sessions. Time was only used by logs anyway. They use system tick-based time now.

v0.6.1 2020/04/25

  • Fixed an issue that caused version 0.6.0 to always use 100% of CPU core 3.
  • The sysmodule will now detect both versions of Dualshock 4 controllers at the same time (thanks @p-sam again).
    • As such, the config option for it has been removed.
  • Changed how controller configs work:
    • Added separate options for both Left trigger deadzone and Right trigger deadzone.
    • Controller key mapping now supports multimapping, aka mapping multiple keys to the same button.
    • Additionally, you can also disable a key entirely, by writing KEY_* = NONE.
    • Previously, a line key_SYNC = LSTICK_CLICK would make the Sync/Capture button press the Left stick button, and make the Left stick button press the Capture button.
    • This has been changed, so that this would only modify the Sync/Capture button. The Left stick button would still press the left stick button.
    • The syntax has also been changed to KEY_CAPTURE = LSTICK_CLICK.

v0.6.0 2020/04/19

  • The sysmodule codebase has been rewritten to use libstratosphere.
    • This will make it easier in the future to allow other homebrew to directly communicate with sys-con.
    • The code now also looks a little bit cleaner.
  • Fixed an issue introduced by v0.5.2 causing the system to completely freeze when left in sleep mode with a controller plugged in.
  • Fixed an issue introduced by v0.5.2 causing sys-con to not recognize more than 2-3 controllers simultaneously.
  • (Hopefully) fixed an issue causing controllers to be no longer recognized until sys-con is restarted.
    • This was caused by sys-con randomly losing the USB handle, rendering the USB side of sys-con completely useless.
  • (Hopefully) fixed an issue causing the system to freeze when a controller is disconnected.
  • The sysmodule will now delete the previous log file if it's too large (about ~130KB) on startup.
  • Note: This is the last release of sys-con that can still be enabled and disabled directly through Kosmos Toolbox without rebooting the console. All later versions will require a reboot.

v0.5.3 2020/01/28

  • Fixed the maximum and minimum stick values generated by sys-con.
    • This caused games like Xenoblade Chronicles 2 and Resident Evil 4 to crash when that stick value has been reached.
  • When using the mode that swaps left stick with d-pad, the stick values generated by d-pad are now clamped to a circle radius.
  • If you have the latest version of Kosmos Toolbox, you can now manually enable/disable sys-con right from the toolbox menu without having to reboot your console. Hurray.

v0.5.2 2019/12/11

  • Nothing much has changed, just updating this for the new Atmosphere 0.10 release.
  • There is a known issue on all versions of sys-con regarding Xbox One controllers. if you update your Xbox One controller to the latest firmware, it stops working properly. Since you can't downgrade the firmware, I suggest you don't update your Xbox One controllers until a fix has been found.
  • Instructions:
    • Extract the zip file and copy the contents onto your SD card.
    • If you're not using Atmosphere, rename the atmosphere/ folder with the desired CFW name.
    • Reboot your Nintendo Switch.
    • If you're not using Atmosphere 0.10 for whatever reason, you have to rename the contents folder in the zip file back to titles folder.

v0.5.1 2019/11/25

  • Fixed multiple controllers being disconnected when disconnecting any controller.
  • Fixed the sysmodule crashing during sleep mode or eventually stopping recognizing controllers.
  • Fixed Dualshock 3 getting chaotic inputs when Dualshock 4 is connected.
  • Added an option to change the LED color of Dualshock 4 in config_dualshock4.ini: color_led. Optionally, if you want to turn LED off, set the color values to 0, 0, 0.

v0.5.0 2019/11/15

  • Added support for Dualshock 4.
    • NOTE: Due to firmware limitations, only one generation of Dualshock 4 can be recognized at a time. If you have a Dualshock 4 model "CUH-ZCT2E", you need to go to sdmc:/config/sys-con/config_global.ini and change the value of use_dualshock_2nd_generation to true.
  • Bonus feature: You can now customize controller colors! Head over to sdmc:/config/sys-con/ and modify the color values for each type of controller. Most controllers already have customized colors in place.

v0.4.2 2019/11/11

  • Fixed some Xbox One controllers being recognized, but not receiving any input. Let me know if this release breaks your controller.
  • Fixed original Xbox controllers not having correct input mapping.

v0.4.1 2019/11/10

  • Stopped LED blinking on Xbox 360 Wireless controllers (now shows up as top left).
  • Added an option to swap d-pad and left stick inputs in the config. simply set swap_dpad_and_lstick from false to true in your desired controller config file.

v0.4.0 2019/11/09

  • The sysmodule now detects generic XInput devices. I can't promise every single XInput device will work, I can only hope your controller manufacturer follows the XInput protocol to the dot.
  • Xbox 360 Wireless Receiver is partially supported! When I say partially, it means that the LED is still blinking and the app doesn't seem to detect controllers disconnect. However, it has full button support and allows to connect up to 4 controllers at once. The config for it is the same as the Xbox 360 Wired.

v0.3.0 2019/11/08

  • There is now a config folder for the sysmodule! You can find it at sdmc:/config/sys-con/ and modify the stick/trigger deadzones and remap inputs. All the config changes are updated in real time.
  • The log file has also been moved to the config folder.
  • Fixed an issue with some of the Microsoft Xbox controllers not connecting properly.
  • Xbox 360 and Dualshock 3 LEDs now no longer blink.
  • If you're having crashes or hangs when booting up a game, try turning off other sysmodules.

v0.2.3.1 2019/11/07

  • The 0.2.3 version had improper naming. Download this if 0.2.3 was not working for you.
  • Halves the memory used by the sysmodule.
  • [9.0.0+] If you're having freezes or crashes (error 2003-0008) when launching a game, try disabling other memory-intensive sysmodules (sys-ftpd, emuiibo). Or downgrade to 8.0.0.

v0.2.2 2019/11/06

  • This one goes out to those having issues with their 1st generation Xbox One controller.
  • Currently known issue on [9.0.0+]: The app uses too much memory resulting in freezing/crashing.

v0.2.1 2019/11/06

  • Added a small deadzone for all controllers to fix stick drifting.
  • Xbox One Sync Button now takes a capture.

v0.2.0 2019/11/05

  • It is possible to plug Xbox 360, Xbox One, and Dualshock 3 controllers into the dock and play. No rumble.

Credits

Texita For his contribution in controllers testings and mappings

External links

Advertising: