Open CalcProgrammer1 opened 3 years ago
Very, very interesting. Thanks for the heads-up. I'll keep watching progress, but please feel free to update here as the sn32_openrgb branch and QMK OpenRGB interface mature.
You've delved much deeper into the firmware and hardware than my fictional essays in this repository. I assume the two different chips explain what I noticed using my (imaginary) code and Ajazz's own Windows utility -- that they partially fail on some keyboards. I was aware of QMK, and in fact even bought a Proton C, more because it's an interesting development board than to use it as a keyboard controller. The problem, IMO, is that while building a keyboard from part/kits from such excellent suppliers as Novelkeys, Keebio, and others would be fun, the finished cost is 2 to 4 times the price of a commercial product. So unless one is dead set on having 42g soft-click keys with 3.5mm travel, a 1.5 mm activation point, and custom lubrication, it's just not worth it. :(
But running QMK on Ajazz or other commercial keyboards -- that's the best of both worlds. Superior open-source firmware on commodity, economies-of-scale priced hardware. As another example, check out https://github.com/Ralim/IronOS if you have use for such a thing. Of course, manufacturers sometimes object to these improvements. The TS100 owners didn't, but note I never got a response to my Ajazz "open letter". Not that I was expecting one, and it's a little ironic mentioning any of this on a Microsoft-owned website given their history, particularly back in the "bad old days" of the 1980s and '90s. ;)
You mention missed keypresses. I assume QMK does full/infinite "N-key" rollover, which was the original reason I bought my Ajazzes (plural), the RGB LEDs being an extra added feature. It's been a while since I looked at it, but I thought that the USB keyboard protocol (as opposed to the old PS/2 one) only supported 6 keys (plus modifiers) at once. Does firmware like Ajazz's and QMK send multiple USB packets for more than 6, or do they enumerate multiple USB endpoints and/or devices, or something else entirely?
In any case, thanks again for your excellent work and for making it available for everyone. Keyboard nerds (I'm one of them, my disclaimers about custom keyswitches notwithstanding) unite! ;)
QMK does have N-key rollover as an option you can enable. This is done in the rules.mk for your specific keyboard code. I believe it uses an additional endpoint when enabled but I'm not positive on that. There's also a KEYBOARD_SHARED_EP setting that has all the keyboard functionality (main keyboard, extra keys, and possibly N key) share one endpoint.
We're limited on endpoints especially on the SN32F248B variant because it only has 5 endpoints (EP0 is always the control endpoint, then EP1-4) and 256 bytes of buffer space shared among them which means you can't have them all at 64 bytes. The older model's SN32F248 apparently has 7 endpoints and a bit more buffer space. However, I do believe we have the N key rollover and extra keys enabled. The OpenRGB interface uses an endpoint as well.
Let's test:
asdsffffffffghhhhhhhhhhhhhhhhhhhhhhhhhhh
Looks like only 6 key rollover. I know QMK supports it, maybe we don't have it enabled. This is on my Redragon K552 RGB (rev2/SN32F248B) but the config should be the same for all of the supported Sonix keyboards.
Not an issue, just a heads up for other AJAZZ AK33 users out there. We're working on a QMK firmware port to the AJAZZ AK33 RGB variants, along with a bunch of other keyboards that use the same chips.
The port can be found here:
https://github.com/SonixQMK/qmk_firmware
The GitHub Actions tab has pre-compiled firmware.
The sn32_openrgb branch includes support for the QMK OpenRGB interface which is experimental at the moment. The corresponding branch of OpenRGB qmk_sonix can connect to the keyboard and control the RGB lights without saving changes to flash, allowing for a high update rate that is flicker-free. This allows for audio visualization and game integrations.
Note that there are at least two different revisions of the AK33 PCB. One uses the EVision VS11K09A chip (Sonix SN32F248 equivalent) and the other uses the EVision VS11K09A-1 chip (Sonix SN32F24B equivalent). You will need to determine which chip your keyboard uses so you know which QMK build to flash. I have also dumped the stock firmware from both versions so you can restore your keyboard if need be.
We still have an issue where occasionally keypresses are missed. This isn't a showstopper in my opinion, but it can be somewhat annoying every once in a while when it happens.