Hacking [Tool] Joy-Con Toolkit


Mar 22, 2008
Joy-Con Toolkit v5.2.0




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
Player Led behavior: Solid = Waiting for command, 4th Led Blinking = Doing stuff.
Additionally for Right JC and Pro HOME led: Heartbeat= Waiting for command, Breathing = Doing stuff.

Video tutorial:
In English and French

Install only if needed.

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).
User Calibration Editing:
  • 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 analog sticks user calibration:
  • 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.
Support Switch update 5.0.0+ colors:
  • 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:
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

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.
High DPI scaling support
  • Every control is now reworked so it will scale with your Windows DPI setting.
  • Forget any blurred look or out of bounds text.
Smooth controller preview image
  • 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)

  • 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

  • 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.

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

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

  • 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???

  • 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.

  • Initial release

Download Old Versions
Download Oldest Versions

Source code

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


  • mario_theme.zip
    9.3 KB · Views: 10,438
  • Joy-Con_Toolkit_v2.5.1.zip
    151.1 KB · Views: 19,552
  • Joy-Con_Toolkit_v3.0.1.zip
    209.3 KB · Views: 3,156
  • Joy-Con_Toolkit_v3.0.2.zip
    209.6 KB · Views: 6,383
Last edited by CTCaer,


Jul 31, 2010
Chillin' with Bob Ross
United States
Holy shit! I bought the Neon console shells since I regretted getting gray and that was going to be my biggest annoyance. This will come in handy! Thanks!! :)

EDIT: Backing up my right Joycon now. I second the end of the OP with retail hex codes. I'd like to know those for Neon. The preview picture looks close enough though so I might just use an image editor to grab each color.

Also, make sure the joycon is completely paired. I opened the app too soon and it was seen as a pro controller and the backup finished immediately (Supposed to take around 10 minutes according to the tool kit). Once Windows said that pairing was complete, it worked as it should.
Last edited by Selim873,


Mar 22, 2008
BTW, the 3 (Grey, Neon-Blue and Neon-Red) colors at the custom colors section are correct.
They are dumped from the actual colored joy-cons.

Neon-Yellow, is made approximately by me. If someone has the new joy cons and can send me the hex code for body color and buttons color it would be helpful.

Lastly, the buttons color are not actually black. They are a very dark hue of the body color. Again, the 3 first custom ones are correct.


Mar 22, 2008
this is awesome! does it also change the color for the "switch" animation when you slides the joycons in?
Yes. Every colored icon or animation changes.

Since everyone is confused here a screen of my colors and what the OP is talking about :

Yep that's exactly what it is

I wanted to put Joy-Con images that change color instead of buttons in the UI, but it was a lot of work and kept it for later release. :P


Well-Known Member
Aug 16, 2016
United States
Yes. Every colored icon or animation changes.

Yep that's exactly what it is

I wanted to put Joy-Con images that change color instead of buttons in the UI, but it was a lot of work and kept it for later release. :P
So how to I use this? Hold my joycon next to my computer and hit a button?

Deleted User

That's pretty damn funny that you can do that. Here's hoping folks start printing custom colors now. Need to get ahold of some Marie Green shells now and I'll be a happy chappy.


Well-Known Member
Sep 30, 2009
a house
United States
I can't even get the application to open, it's actually pretty frustrating.
I open it, and it immediately closes.
I already have my joycon paired, and I've ensured that they have a solid connection.
General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: https://youtu.be/32ildaPdmEc