-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Crowdsourcing the deciphering of the init handshake #10
Comments
Here is the output for my MasterKeys Pro L ANSI RGB:
The only differing byte is enum LAYOUT_KEYBOARD {LAYOUT_UNINIT = 0, LAYOUT_US = 1, LAYOUT_EU = 2, LAYOUT_JP = 3}; |
Hey, many thanks for the data. This is really interesting, as my firmware also claims to be up to date and I can not remember having updated it once since I bought it over 2 years ago. So either A) the firmware version depends on the layout as they are using different branches that are versioned independently, B) the software uses some other way to query the layout and looks for specific firmware versions that way, or C) they really do encode the layout inside this version. Whatever option is true, if I receive more samples and this stays consistent, I think this is a good enough property to use to determine the layout! |
Masterkeys MK750 keyboard ISO/German:
|
Masterkeys Pro S
|
Welp, that's a curve ball on the MK750, using a different-ish protocol with no firmware response ( Any way you could grab a couple of USB captures of the init process of the official software on the MK750? I found the free Win 7 VMs that Microsoft publishes + Wireshark/usbmon to be very useful. |
@chmod222 To use CM Portal, I had to update the firmware on my MK750 from V1.00.13 (factory) to V1.05.02. Now It seems like they changed the protocol or something like that. If I run
Anyway, I managed to capture the official software USB traffic. I Just started it, then applied some changes and closed it. Here's the dump: |
Hm, yes it does. The protocol communication is still fundamentally the same exchange over the same USB interface endpoints, but the commands are mostly different now and more complex. It returns the firmware in I'm sorry for causing you to make your device unusuable with the lib for the time being, this is something that's going to be difficult for me to support without actually owning an MK750. The new protocol itself looks fairly harmless, but it's not someting I can decipher non-interactively. I had to reverse the protocol on mine by setting a bunch of parameters to known and distinct values, which are then easy to find in the protocol dumps, or watching which packets the software sends when I, for example, change an effect or effect setting in the configurator. |
That's not your fault. Nobody could reasonably expect them to change their protocol that much tbh. I also have a bunch of new effects, so it's not that bad ;-) I made another capture using the CM Portal software and just went through all effects that are available: |
I experimented a bit and found out how to activate some of the effects. However, this is quite a bit of work and I don't know when I'll find enough spare time to finish it. I uploaded some of my notes here, but it's nowhere near a mergeable state (or even a cherry-pickable one, for that matter). |
The SDK has been released on the coolermaster website, have you checked it out? |
I'm opening this up because I've been busy trying to get ISO/ANSI layout autodetection to work and would need more outside data for this. I now know that both the ISO and ANSI versions of the same revision of the MK Pro L share 003b as the product ID, so this cannot be used to figure out the layout.
So my suspicion is the
40 20
(handshake part 2) packet.I have added a new test binary that can be compiled using:
make cmmk-debug
. It's used the same way ascmmk-test
, so the same LD_LIBRARY_PATH and permission things apply.It simply connects to the keyboard and dumps out the initial exchange performed by the official binaries.
This is the output for my MasterKeys Pro L ISO:
If anyone wants to help out, please feel free to run this binary on your keyboard and attach its output along with the model / layout to this issue.
The text was updated successfully, but these errors were encountered: