zmk
zmk copied to clipboard
SplitKB Aurora Helix RGB pin interference
Background and problem:
The Aurora Helix uses pull-up/pull-down on the RGB pin as a side indicator for QMK. When I used latest ZMK to build firmware with the RGB enabled (config) the left side seemed to have some interference on the RGB pin, which I eventually narrowed down to be caused by the pull-up. (It got worse with higher brightness, probably indicating that more ripple in the VCC from a higher load increased the interference.)
Suspected cause:
I couldn't find any declaration of pin configuration in the Aurora Helix shield so I couldn't confirm this, but it is my suspicion that the uC pin is set to pull-down in ZMK and that causes the interference due to it being kinda floating.
Other potential cause:
If you can disprove this ZMK pin config theory it is probably the nice!nano that doesn't handle overriding a pull-up with that resistance sufficiently to not be affected by the VCC ripple, in which case I'll get in touch with SplitKB to change the board design or build instructions.
The RGB pin doesn't appear to have a bias. You can inspect the assembled devicetree as part of your build logs, though it is a little inconvenient post-processing: https://github.com/sidju/zmk-helix-config/actions/runs/7950722479/job/21703340446#step:13:535
The preprocessed files can be examined in the shield's code and the board's code.
You could try modifying the bias—but based on the schematic, desoldering the resistors between the RGB pins and VCC/GND seems like the most straightforward solution. I'd consult with SplitKB in any case if you haven't already.
I have already cut the trace connecting the VCC resistor to the RGB pin and that solved the issue for me. The pull-down resistor didn't cause any issues on the other half, so I've left that as is for now.
I'm just looking into how this can best be fixed; if a software fix could be applied that allows other to follow the build-guide as it is now, or if the build guide needs to have a "If you aren't using a nice!nano or ZMK" clause on soldering those resistors.
I have already contacted SplitKB and linked them this issue, so they can see the conclusion on this end.
For reference: The RGB pin serves a dual purpose within the QMK Aurora Helix firmware specifically, where it's used for side detection first, and then switched over to RGB later during the initialisation process. It's a workaround for a shortage of GPIO.
As side detection for ZMK is done differently, the pullup can be omitted. I'll be sure to add a note to the build guide for this.
Great. We can consider this to have been a HW issue with a HW solution in the guide. Feel free to close this issue. (I won't, as many repos prefer to manage their own issues.)