Joy-Con Toolkit v5.2.0
Summary:
About a year ago, I bought yellow joy-con shells and modded my Joy-Cons. Then I found Shinyquagsire23 HID-Joy-Con-Whispering and changed my joy con colors and this reflected my new neon yellow color in-game.
I always wanted to make an easy tool for that, for the community. So here it is with many additional goodies.
Have fun creating funky combinations.
Before you do anything, make a backup of your SPI flash.
If you have done one, change the name a little bit to avoid overwrites and keep it for life!
What it can currently do:
Additionally for Right JC and Pro HOME led: Heartbeat= Waiting for command, Breathing = Doing stuff.
Video tutorial:
In English and French
Prerequisites:
Install only if needed.
Changelog:
v5.2.0 (download):
Near Infrared Camera:
Debugging / Troubleshooting:
Add 2 command line options:
v5.0.0 (download):
Near Infrared Camera:
Look through the IR camera of the Joy-Con (R) controller
Old changelog:
Download Old Versions
Download Oldest Versions
Source code
Troubleshooting:
The colors do not show up in Switch:
Switch 2.3.0 and older:
Clear the controller cache by doing the following:
Go to System Settings->Controllers and Sensors and do Disconnect all controllers. Restart your Switch and then pair.
Switch 3.0.0, 4.0.0 and newer:
Just pair the controller with Switch.
Special thanks:
Everyone at Nintendo_Switch_Reverse_Engineering: General BT protocol usage
shinyquagsire23: General hidapi and BT protocol usage
shuffle2: General hidapi usage for windows
Ceri: Neon-Yellow hex color values
Cosmic_Link: Splatoon Pink and Green Joy-Con dumps and colors
SciresM: Red Joy-Con color values
KapuDaKoopa, Sam S, SomeGamer, Jackson Ferrell, Starwort,trainboy2019,Hario337,Ep8Script,Lixmo: Testing. (If I forgot someone, please tell me)
Spawn Wave,Thomhack: For the video tutorials






Summary:
About a year ago, I bought yellow joy-con shells and modded my Joy-Cons. Then I found Shinyquagsire23 HID-Joy-Con-Whispering and changed my joy con colors and this reflected my new neon yellow color in-game.
I always wanted to make an easy tool for that, for the community. So here it is with many additional goodies.
Have fun creating funky combinations.
Before you do anything, make a backup of your SPI flash.
If you have done one, change the name a little bit to avoid overwrites and keep it for life!
What it can currently do:
- Change colors of your Joy-Con and Pro Controller (plus left/right grip)
- Use the IR stream or capture and save photos
- Use the NFC to check type and UID
- Save your custom colors for future use
- Backup your SPI flash
- Edit user calibration for analog sticks
- View S/N, FW Version, MAC address and Battery
- Restore from a backup. Restore colors, S/N, Calibration, Full restore.
- Change S/N
*Disclaimer* If you didn't do a valid backup and you lost your S/N, you are the only responsible! If for whatever reason you lost it, check the plastic slivers that your Joy-Con were wrapped inside the retail box. - Debug - Send Custom Commands. Send Vibrations, set player and HOME leds, etc, and see their reply.
*Disclaimer* Only for users that know what they are doing. You are the only responsible! - Full test controls. Test buttons, analog sticks, motion controls, complete with calibration.
- Temperature reading. Check the current Joy-Con or the ambient temperature after letting it for some minutes.
- Easter Egg: Play 2 Mario themes through Joy-Con HD Rumble
- Capture traffic between the controller and the PC into a log file
- For more, check Changelog
Additionally for Right JC and Pro HOME led: Heartbeat= Waiting for command, Breathing = Doing stuff.
Video tutorial:
In English and French
Prerequisites:
Install only if needed.
- Microsoft Visual C++ 2017 (x86) Redistributable (All Windows versions)
- Microsoft .NET Framework 4.7.1 (for Windows lower than Windows 10)
- Bluetooth 2.0 and up (USB adapter or built-in)
- Microsoft Bluetooth stack/drivers or Toshiba Bluetooth stack/drivers. Other stacks are not supported by the controllers for unlocked feature usage.
- Windows 7 and up (host or VM guest)
Changelog:
v5.2.0 (download):
Near Infrared Camera:
- Add live configuration when streaming
- Add many new IR settings (de-noise, led intensity, strobe lights, etc)
- Change custom IR sensor registers
- Auto exposure mode (This is done manually, so it's experimental. Expect bugs).
- Add Accelerometer/Gyroscope user calibration editing
- Add Stick device factory parameters editing. Helps when you have drifting issues, that can't be fixed by calibrating the stick. Just raise the deadzone value.
Debugging / Troubleshooting:
Add 2 command line options:
- -d: Dumps the communication packets into a log text file
- -f: Forces the app to not check for connection again. Helps in some cases that the app reports that the controller was disconnected.
- Organize the IR/Playground/Calibration panels a little better
- Many bugfixes and optimizations
v5.0.0 (download):
Near Infrared Camera:
Look through the IR camera of the Joy-Con (R) controller
- Capture and save a photo or Stream video
- Fully configurable
Resolution, IR leds, Exposure time, Digital gain and External IR light filter (filters lighters/candles, sunlight, etc.) - 4 color filters to choose: Grey, Ironbow (pseudothermal color), Night vision (green) and Red
- Check simple info (type and uid) from NFC tags, credit cards and nfc-enabled phones via the Pro controller and Joy-Con (R)
- Edit the analog stick's X/Y ranges and centers. All controllers are supported.
This can correct accidental walking and slow running when the switch's calibration does not let you calibrate them correctly.
- You can now edit the Grips color for the Pro controller individually along the body and buttons color.
(Viewing the grips color is only supported in Switch update 5.0.0+) - The controller preview is now optimized and way faster
- Added traffic logging by using the command line argument -d
- Made it fully non-blocking. Now the app will mostly not hang when the controller is disconnected when it does an operation
- Countless bugfixes and optimizations
Old changelog:
v3.0.2:
Hotfix version for Pro Controllers mostly
v3.0.1:
The crappy old windows color dialog is now gone!
The new Joy-Con Color Picker supports the following:
v2.5.1:
v2.0:
v1.5.2:
Hotfix version
v1.5.1:
Minor fix version
v1.5:
v1.3:
v1.0:
Hotfix version for Pro Controllers mostly
- Implemented mitigations for Pro Controller erratic/random behavior of x3F input reports.
Now certain read/write SPI commands will be more difficult to be skipped. - Added error checking for read/write SPI commands and user inform messages when these happen
- Small bugfixes
v3.0.1:
The crappy old windows color dialog is now gone!
The new Joy-Con Color Picker supports the following:
- Beautiful dark design
- Adobe style color picker, with different color spectrums for each mode and arrows/mouse wheel support.
- HEX input
- Eyedropper. Pick any color on your screen!
- Choose both Body and Buttons colors in one screen
- Presets that you can name. Save up to 16 retail custom colors and 32 user custom colors.
- Legacy support.
It will automatically load your old saved presets if you copied "Colors.config" inside jctool_v3.0.1.exe's folder.
It will save them to the new config format and create a backup of your old colors with the name "Colors.backup" - New config xml layout, which has the color in HEX RGB along with the preset name.
- Every control is now reworked so it will scale with your Windows DPI setting.
- Forget any blurred look or out of bounds text.
- The preview box that you can check how the controller will look like with the new colors is now reworked.
- It now produces nice HQ images with smooth color transition and no more color spots.
- Many bugfixes and code refactoring!
- Fully support Windows 10 (Fall Creators Update)
v2.5.1:
- Full featured controls, motion sensor and calibration readings. Check your user or factory calibrations, test buttons, stick and motion sensors raw and calibrated readings.
- Temperature readings. Check your current Joy-Con temperature or the ambient temperature (by leaving it alone for some minutes).
- Added Pro controller buttons color support
- Small redesign of some parts for better UX
- Added battery voltage reading
- Added Refresh and Disconnect buttons.
You can now change on the fly different Joy-Con without the need to close the toolkit for refreshing info, or just refresh temperature/battery/etc. Additionally "Disconnect" also reboots your device. - Added Red Joy-Con body and buttons colors. Thanks to SciresM. If you want to keep your custom colors, add them manually: 225,15,0 | 40,10,10.
- Added New Easter Egg. Happy SMO release!
- Countless bugfixes and improvements
v2.0:
- Full featured HD Rumble Player. Supports .bnvib and .jcvib. Also added LF/HF EQ, Pitch and support for looped .bnvib format.
You can find attached the Mario theme in raw format. Please don't share .bnvib ripped from games. - Full Debug reply report. You can now check buttons/joystick/battery from the received packet.
- Added S/N protection mechanism. With the first S/N change, it now saves it in an unused area inside your SPI.
If you already changed it, it will not trigger. You need to restore it from a backup and then change it back. - Added option to restore it from inside the SPI. Needs the above. Otherwise you can still restore it from your SPI backup.
- Battery percent based on regulated voltage reported from the device.
- Now Joy-Con (R) and Pro Controller utilize the HOME led. Heartbeat = Standby/Awaiting command, Breathing = Doing stuff.
v1.5.2:
Hotfix version
- Fixed a major compatibility issue with newest shipments of Joy-Con. Previously we were expecting 2 fw PatchRams inside the SPI dump. New Joy-Con have only 1 like Pro. This was triggering a "Backup is corrupt" message, even though the backup was perfect.
- Revambed the debug and made it like a normal feature a little bit. Added sent subcmd/arguments windows and you can now send 25byte subcmd arguments (this fixes the HOME LED, subcmd: 38, arg: F100F0F0F0F0F0F000FFFF00FFFF00FFFF).
- Some bugfixes
v1.5.1:
Minor fix version
- Fixed debug option to not send additional commands
- Revambed logic of debug option to show Input Report from Joy-Con
- Configuration file now has a fixed filename. *Compatible with v1.5 config*. Rename your config name to Colors.config if you already set custom colors.
- Fixed bugs and made logic way simpler to many functions
- Removed all unsafe sprintf and fopen and changed them to safe and simpler logic
v1.5:
- Added Battery view
- Added Restore option! It has many checks so don't worry. Corrupted backups from v1.2 and older will be automatically discarded!
- Added Debug option. *Disclaimer* Only for users that know what they are doing. You are the only responsible!
- Added Change S/N option. *Disclaimer* If you didn't do a valid backup with v1.3 or v1.5 and you lost your S/N, you are the only responsible!
- *New .config* Added separate custom colors for Pro (until I create a custom color dialog in C++). You need to copy your colors from the old .config to the new one. The colors in .config are in BGR! Not in RGB and for every type they must be 16. Not less, not more
- Many bug fixes
- Added an Icon and an About screen that links here.
- Added ability to close the app in lengthy operations.
- Added write check for restore option. This also means no more failed writes for color/SN writing.
- Changed the 4th LED behavior: On = Standby, Blinking = Doing operations
- Added an Easter Egg. Can you find it???
v1.3:
- Fixed Pro controller
Added protocol reply check to fix communication with Pro controller and sometimes Joy-Cons. Sometimes and especially with Pro controller fast communication, the hid channel gets overwhelmed with "uneeded" packets. Now we check for correct ones and reject the others.
- New switch dark theme look (theme requests will be ignored though).
- Better tinting of controller previews.
- Added Splatoon Pink and Green colors.
- Fix hex color text on buttons.
- Many bug fixes
- You can now cancel SPI dumping and also you can see the progress. (Speed is unchanged, FW limitation).
- Now you can see real Joy-Cons and Pro controller for color view.
- Updated Neon-Yellow color with retail values.
- You can now save your own custom colors!
- Fixed many bugs and crashes.
- Every communication produces rumble confirmation.
- Added led support. 1st Led: initialized, 4th Led Blinking/Solid: Standby/Write sent.
- Changed SPI dump logic a little bit. Users with Pro controllers or with crashes, please try again.
- Disabled Pro controllers color write for now.
v1.0:
- Initial release
Download Old Versions
Download Oldest Versions
Source code
Troubleshooting:
The colors do not show up in Switch:
Switch 2.3.0 and older:
Clear the controller cache by doing the following:
Go to System Settings->Controllers and Sensors and do Disconnect all controllers. Restart your Switch and then pair.
Switch 3.0.0, 4.0.0 and newer:
Just pair the controller with Switch.
Special thanks:
Everyone at Nintendo_Switch_Reverse_Engineering: General BT protocol usage
shinyquagsire23: General hidapi and BT protocol usage
shuffle2: General hidapi usage for windows
Ceri: Neon-Yellow hex color values
Cosmic_Link: Splatoon Pink and Green Joy-Con dumps and colors
SciresM: Red Joy-Con color values
KapuDaKoopa, Sam S, SomeGamer, Jackson Ferrell, Starwort,trainboy2019,Hario337,Ep8Script,Lixmo: Testing. (If I forgot someone, please tell me)
Spawn Wave,Thomhack: For the video tutorials
Attachments
Last edited by CTCaer,