Hacking [Tool] Joy-Con Toolkit

  • Thread starter Thread starter CTCaer
  • Start date Start date
  • Views Views 1,288,868
  • Replies Replies 1,757
  • Likes Likes 136
So I found out why the HOME led does not work...
Because I documented wrong, believing that it takes only one argument.

Actually it takes more, the 2nd is when to stop blinking/breathing.
So in Linux, Shinys tool sends a packet with a set length, unlike windows which for some reason hid api has a minimum output buffer.
So mine sends an initialized to zeroes buffer, so the 2nd argument becomes 0 and therefore stop blinking after 0 time.

Thanks for the source code, I'll check it out sometime. And good job for finding the problem, hopefully you can fix it soon.
 
New v1.5.1 hotfix version released!

Check OP for changelog.

About the HOME LED:
The problem with HOME LED is not the app.
In Linux I run only the 0x38 command or a chain of commands and it always work. USB or BT
In windows I do the same, one command or the same chain and it doesn't lit up.
Checked with Wireshark and the packets were the same.

So I think that linux and windows do a different pairing. And in initialization something is not sent to the device in windows and for some reason the HOME led is disabled.
I will create a dummy app to try with USB and see what will happen...
Can you enable the home led on the joycon to always be on with this?
 
So I found out why the HOME led does not work...
Because I documented wrong, believing that it takes only one argument.

Actually it takes more, the 2nd is when to stop blinking/breathing.
So in Linux, Shinys tool sends a packet with a set length, unlike windows which for some reason hid api has a minimum output buffer.
So mine sends an initialized to zeroes buffer, so the 2nd argument becomes 0 and therefore stop blinking after 0 time.
Awesome! Would you be able to share the code so I'm able to compile it myself or is it too complicated?
 
I tried this multiple times and it still will not connect...
Did you remove the joy-con from Devices and Printers first?
If you not, it will never show up in the pair screen.

Can you enable the home led on the joycon to always be on with this?
Kinda.. Still not finished documentation. Right now I found that it takes more than 10bytes argument. This is around 20 arguments (High and Low nibbles).
I don't know why, but you can completely customize it... and there's no reason for that.

Awesome! Would you be able to share the code so I'm able to compile it myself or is it too complicated?
The home led fix will be only uploaded to Github. It's not an important fix to release a new version here.
The debug is what it's name says. Not a normal feature, but a debugging feature.

Release rules:
Major features added -> GBATemp + Github
Minor additions, fixes, clean up -> only Github.
 
  • Like
Reactions: Naked_Snake
Kinda.. Still not finished documentation. Right now I found that it takes more than 10bytes argument. This is around 20 arguments (High and Low nibbles).
I don't know why, but you can completely customize it... and there's no reason for that.
That's very strange, yeah. There's not really any reason to need THAT much customising.

The home led fix will be only uploaded to Github. It's not an important fix to release a new version here.
The debug is what it's name says. Not a normal feature, but a debugging feature.

Release rules:
Major features added -> GBATemp + Github
Minor additions, fixes, clean up -> only Github.

Sorry, I understand. I forgot you were still working on it and that it's really complicated.

That makes sense. Again, I apologise.
 
I dumped both my original joycons and my custom joycons, but when I attempt to restore the backup it claims that the SPIs are corrupt (including the one I just dumped). Is it affected by the fact that I renamed the dumps?
If so, how do I differentiate them without a stupid amount of folders?
Thank you in advance for any answers!
If it helps, here are my Joy-con (L) dumps in a zip.
 

Attachments

Last edited by Starwort,
It won't detect my left joycon. At all.

Here's how everything goes:

The right joycon pairs fine, and the bar that shows pairing progress in Windows goes all the way to the end before saying it's connected. I then open Joycon Toolkit and it detects it fine. Everything goes smoothly.

Then I connect the left joycon, and the bar that shows pairing progress just stays at the very beginning for like 2 seconds before saying it's connected. I then open Joycon Toolkit and it doesn't detect it.

I've been trying to change my left joycon's colours for like, half an hour now. What is this fucking bullshit.
 
I dumped both my original joycons and my custom joycons, but when I attempt to restore the backup it claims that the SPIs are corrupt (including the one I just dumped).
I see that these are fairly new batch, correct?
I will need to change my validation logic because there are joycon with only one fw ram patch.

For now wait. I'll release a hotfix when I can. Also, keep the backups, they are correct.

EDIT:
The file name, does not matter.
I suggest renaming. It keeps your backup from accidental overwriting.
 
Last edited by CTCaer,
New hotfix released. Version 1.5.2

It fixes a major issue with restoring option and newest Joy-Con shipments.

Additionally it has a revamped debug option.


Lastly, you can now send the command that HOME LED needs.
It takes a whopping max 25 byte argument. -.-
The only unused but useful command is a complete mess. That's why they don't use it :P

For more HOME led info check Pull request or directly the file.
I just found a lovely pattern (send subcmd: 38, arg: F100F0F0F0F0F0F000FFFF00FFFF00FFFF to Right Joy-Con or Pro controller)
 
Last edited by CTCaer,
  • Like
Reactions: Naked_Snake
Lastly, you can now send the command that HOME LED needs.
It takes a whopping max 25 byte argument. -.-
The only unused but useful command is a complete mess. That's why they don't use it :P

For more HOME led info check Pull request or directly the file
Can we get an example command? Never seen the LED light up before and I'm curious haha
 
I edited my post to include one.
Actually if you learn the logic it's pretty easy. But time consuming.

You can do crazy full cycle patterns with the led.
15 different pattern in one full cycle. You want, breathing led? blinking? heart beat? epilipsy blink? wait forever style? always on?
Well you get the idea...
 
I edited my post to include one.
Actually if you learn the logic it's pretty easy. But time consuming.

You can do crazy full cycle patterns with the led.
15 different pattern in one full cycle. You want, breathing led? blinking? heart beat? epilipsy blink? wait forever style? always on?
Well you get the idea...
That's pretty cool actually! Sounds kinda fun to learn how to reverse engineer.

Gonna try and make it flash really really fast lol
 
Last edited by dj505,
  • Like
Reactions: CTCaer
:rofl:
Epilepsy!

Btw, the milliseconds in the documentation were approximately measured through my smartphone's camera. 120fps video. It did me a great favor.

Try my command also
 
:rofl:
Epilepsy!

Btw, the milliseconds in the documentation were approximately measured through my smartphone's camera. 120fps video. It did me a great favor.

Try my command also
I used yours as a base haha. Still not completely sure how it works so I'm just working off existing stuff.
 

Site & Scene News

Popular threads in this forum