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

Sys-con Switch

From GameBrew
Revision as of 04:50, 9 July 2024 by Hyatt (talk | contribs)
sys-con
Sysconnx.png
General
Authorcathery, o0Zz
TypeSysmodules
Version1.2.2
LicenseGPL-3.0
Last Updated2024/06/26
Links
Download
Website
Source
Support Author

Sys-con is a module for the Nintendo Switch that lets you use all kinds of joysticks and gamepads with it. But remember, it only works with a USB connection. If you want to connect your controllers using Bluetooth, you should use MissionControl Switch by ndeadly.

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)

Supported controller

  • 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

Installation

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

Configuration

sys-con comes with a configuration folder located in /config/sys-con/. It contains configuration for controllers (Button mappings, sticks configuration, triggers configuration, deadzones...).

The configuration is loaded in the following way:

  • The [global] section is only loaded once, when the switch boots, so if you want to apply a setting, you have to reboot the switch.
  • Other sections are for controller configuration, they are loaded each time you plug a controller, so if you want to apply a setting you will have to unplug and then replug your controller to apply it.

When a new controller is plugged, the configuration is loaded in below order

  1. First it load the [default] section
  2. Then it will load the [VID-PID] section
  3. 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

In case of issue, you can look at the logs in /config/sys-con/log.log (On your SDCard). The logs are automatically created with a log level equal to Info. For more verbose logs, edit /config/sys-con/config.ini and set:

[global]
log_level=0
Copy

Reboot the Nintendo Switch.

Important note: If you enable the trace(log_level=0) or debug(log_level=1) log level, sys-con will automatically increase the polling frequency to 100ms (for debug) and 500ms (for trace). This will add a lot of latency to your controller (this isn't a problem and is expected). So, if you want to press a button, you have to hold it down for 1 second. These log levels (trace and debug) cannot be used to play a game, they are for debugging purposes only.

Usage

Configure a controller

When a new controller is connected, sys-con tries to determine the best profile for this new controller. In most cases the arrows and joystick will work fine, the buttons may not be mapped correctly by default (and in rare cases the right stick may be reversed). If this is the case, you will need to map the buttons yourself using the procedure below:

Method 1 (Directly from the switch)

  1. Connect your controller to the switch
  2. On the switch, go to Settings -> Controllers & Sensors > Test Input Devices
  3. Press the button and try to understand the correct mapping.
  4. On your SDCard, edit /config/sys-con/config.ini and find your controller [vid-pid] section (most likely the latest one). Note: A new section will be created automatically if the controller is not known to sys-con. This means that the new controller is most likely the latest one.

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
right_stick_x=Z
right_stick_y=Rz
Copy

Where A, B, Y, X ... need to be set to a button id ( 1,2,3,4,5 ..)

Method 2 (From a windows PC)

  1. Connect your controller to your PC
  2. Go to 'Control Panel' > 'Device Manager' and find your USB device under 'Human Interface Devices'.
  3. Double click on the device or right click and select Properties.
  4. Go to the 'Details' tab and select 'Hardware IDs' to view its PID and VID. The PID/VID should look like "HID\VID_0810&PID_0001&...", which becomes: [0810-0001].
  5. Open "joy.cpl" (either from Win+R or directly from the Start menu).
  6. Select your controller and click on "Properties
  7. 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).
  8. Now edit /config/sys-con/config.ini on your switch sdcard and edit your controller's vid-pid section:
[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
right_stick_x=Z
right_stick_y=Rz
Copy

Where 1, 2, 3, 4, ... is the key ID noted in step 7. Note: Depending to the controller, this windows procedure might not works. If the mapping is incorrect, switch to Method 1

Media

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

Compatibility

Switch FW 18.1. Atmosphère only.

Known issues

For more information, see the Troubleshooting.

Changelog

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.

External links

Advertising: