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: Difference between revisions

From GameBrew
No edit summary
m (HydeWing moved page Sys-con Switch to Sys-con Switch by cathery without leaving a redirect)
 
(9 intermediate revisions by 2 users not shown)
Line 3: Line 3:
|image=sysconnx.png
|image=sysconnx.png
|description=Nintendo Switch sysmodule that allows support for third-party controllers.
|description=Nintendo Switch sysmodule that allows support for third-party controllers.
|author=cathery, o0Zz
|author=cathery
|lastupdated=2024/08/15
|lastupdated=2024/11/07
|type=Sysmodules
|type=Sysmodules
|version=1.3.0
|version=0.6.5
|license=GPL-3.0
|license=GPL-3.0
|download=https://dlhb.gamebrew.org/switchhomebrews/sysconnx.7z
|download=https://dlhb.gamebrew.org/switchhomebrews/sysconnx.7z
|website=https://github.com/o0Zz/sys-con
|website=https://github.com/cathery/sys-con
|source=https://github.com/o0Zz/sys-con
|source=https://github.com/cathery/sys-con
|donation=https://ko-fi.com/o0Zzz
|donation=https://ko-fi.com/cathery
}}
}}
{{lowercase title}}
Nintendo Switch sysmodule that allows support for third-party controllers. It aims to provide complete functionality for most popular game controllers not supported by Nintendo Switch.  
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 Switch|MissionControl]].  
At the current moment, only USB connection is supported. If you want to connect your controllers using Bluetooth, you can use ndeadly's [[MissionControl_Switch|MissionControl]].
 
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
 
A complete list of tested controller is available [https://github.com/o0Zz/sys-con/blob/master/doc/TestedControllers.md here]


==Features==
==Features==
* HID joystick/gamepad/wheels supported (PC Controller compatible).
* Docked USB support.
* PS and XBOXs controllers supported.
* 19.0.0 FW Version support.
* Custom key mapping using VID/PID and profile.  
* Xbox 360 Controller support.
* Automatically add new controllers (Try to determine the best driver).
* Xbox One X/S Controller support.
* Configurable deadzone.
* Dualshock 3 support.
* Configurable polling frequency.
* Undocked USB support. Works with a USB-C OTG adapter. Some knock-off brands may not support OTG.
* Configurable controller color using #RGBA.
* Xbox 360 Wireless adapter.
* Rumble (soon).
* Dualshock 4 support.


==Installation==
==Installation==
Grab the [https://github.com/cathery/sys-con/releases latest zip], extract it in your SD card and boot/reboot your switch.
Grab the [https://github.com/cathery/sys-con/releases latest zip], extract it in your SD card and boot/reboot your switch.


=== Configuration ===
sys-con comes with a config folder located at <code>sdmc:/config/sys-con/</code>. It contains options for adjusting stick/trigger deadzone, as well as remapping inputs.  
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
For more information, see <code>example.ini</code> in the same folder. All changes to the files will be updated in real time.
 
=== 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
right_stick_x=Z
right_stick_y=Rz
 
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
right_stick_x=Z
right_stick_y=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.
 
=== Troubleshooting ===
For common issues a troubleshooting guide is available: [https://github.com/o0Zz/sys-con/blob/master/doc/Troubleshooting.md Troubleshooting]


==Media==
==Media==
Line 138: Line 39:


==Compatibility==
==Compatibility==
Support Atmosphère v1.7.1 (with FW 18.1).
Switch FW 19.0.0. Atmosphère 1.8.0.


==Known issues==
==Known issues==
For more information, see the [https://github.com/o0Zz/sys-con/blob/master/doc/Troubleshooting.md Troubleshooting].
This app is missing a lot of features. For more information, see the [https://github.com/cathery/sys-con/issues issues page].


==Changelog==
==Changelog==
'''v1.3.0 2024/08/15 - (o0Zz)'''
'''v0.6.5 2024/11/07'''
* Fixed crash when xbox controllers don't provide output endpoint.
* Updated for latest Atmosphere/FW (19.0.0).
* Fixed HID controller (with multiple interfaces) not properly working
** Make sure to update your console to [https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.8.0-prerelease Atmosphere 1.8.0]! Otherwise the sysmodule might not start up.
* Added a way to bind one button to multiple controller buttons [https://github.com/o0Zz/sys-con/blob/master/doc/Troubleshooting.md#i-want-to-bind-a-button-to-multiple-controller-buttons More details]
* Disclosure: this binary was built with a custom version of libnx that fixes a crash during controller initialization. Keep that in mind when building sys-con from source. For more information, see issue [https://github.com/switchbrew/libnx/issues/653 switchbrew/libnx#653].
* 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'''
'''v0.6.4 2021/09/24'''
Line 294: Line 148:


== External links ==
== External links ==
* Girhub - https://github.com/o0Zz/sys-con
* GitHub - https://github.com/cathery/sys-con
* GitHub - https://github.com/cathery/sys-con
* GBAtemp - https://gbatemp.net/threads/sys-con-lets-you-use-third-party-controllers-on-a-docked-switch-via-usb.551627/
* GBAtemp - https://gbatemp.net/threads/sys-con-lets-you-use-third-party-controllers-on-a-docked-switch-via-usb.551627/
* ForTheUsers - https://apps.fortheusers.org/switch/sys-con
* ForTheUsers - https://apps.fortheusers.org/switch/sys-con
* ForTheUsers - https://hb-app.store/switch/syscon1x2024

Latest revision as of 00:52, 10 November 2024

sys-con
Sysconnx.png
General
Authorcathery
TypeSysmodules
Version0.6.5
LicenseGPL-3.0
Last Updated2024/11/07
Links
Download
Website
Source
Support Author

Nintendo Switch sysmodule that allows support for third-party controllers. It aims to provide complete functionality for most popular game controllers not supported by Nintendo Switch.

At the current moment, only USB connection is supported. If you want to connect your controllers using Bluetooth, you can use ndeadly's MissionControl.

Features

  • Docked USB support.
  • 19.0.0 FW Version support.
  • Xbox 360 Controller support.
  • Xbox One X/S Controller support.
  • Dualshock 3 support.
  • Undocked USB support. Works with a USB-C OTG adapter. Some knock-off brands may not support OTG.
  • Xbox 360 Wireless adapter.
  • Dualshock 4 support.

Installation

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

sys-con comes with a config folder located at sdmc:/config/sys-con/. It contains options for adjusting stick/trigger deadzone, as well as remapping inputs.

For more information, see example.ini in the same folder. All changes to the files will be updated in real time.

Media

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

Compatibility

Switch FW 19.0.0. Atmosphère 1.8.0.

Known issues

This app is missing a lot of features. For more information, see the issues page.

Changelog

v0.6.5 2024/11/07

  • Updated for latest Atmosphere/FW (19.0.0).
    • Make sure to update your console to Atmosphere 1.8.0! Otherwise the sysmodule might not start up.
  • Disclosure: this binary was built with a custom version of libnx that fixes a crash during controller initialization. Keep that in mind when building sys-con from source. For more information, see issue switchbrew/libnx#653.

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: