Open klesh opened 1 year ago
Use the QMK repo, not the vial repo.
Can't reporduce this locally with similarly specced board (bastardkb dilemma), so high chance that this is a vial specific bug.
May not be related but i have the same issue with my Sofle. A couple of days ago i update merged master into my personal repo witout changing anything major. The issue arose somewhere between end of July and 3 days ago, or if the cause is the same, 1 month ago. Will probably look into it this weekend. Using a RP2040
Hmm, so far i have not found the cause the issue. The OLED sleep sync appears to be broken aswell. Will probably look into what the RT-OS does when suspending and look into if the Aug 27 Breaking Change was the cause.
@drashna @BionicRiddle Thanks for taking a look. Will try the qmk repo.
Soo... After messing around a few hours i found the offending commit/issue ( #21287 ).
Go into _tmkcore/protocol/chibios/chibios.c and change this line:
if ((USB_DRIVER.status & USB_GETSTATUS_REMOTE_WAKEUP_ENABLED) && suspend_wakeup_condition()) {
to this:
if (suspend_wakeup_condition()) {
See if that changes anything for you. I won't bother looking into why that was causing the issue as i would like to avoid messing with the USB standard. Perhaps @purdeaandrei knows?
In theory, that shouldn't matter, as suspend is never called on the slave side, and rgb matrix syncs the suspend state, so it should be turning off the rgb.
Though, I think I did miss this part:
when the computer is turned off, the left/slave half keeps on
Unfortunately, this just causes issues for split boards, in general. Especially if you're not using VBUS detection for master/slave detection (the default is split usb detect, not vbus detection on ARM). And if you're using a blackpill, you'd have to mod the controller to add support for this.
Enabling SPLIT_WATCHDOG_ENABLE
may help with this, though.
Go into _tmkcore/protocol/chibios/chibios.c and change this line:
if ((USB_DRIVER.status & USB_GETSTATUS_REMOTE_WAKEUP_ENABLED) && suspend_wakeup_condition()) {
to this:
if (suspend_wakeup_condition()) {
What if you change that line to this instead:
if (suspend_wakeup_condition() && (USB_DRIVER.status & USB_GETSTATUS_REMOTE_WAKEUP_ENABLED)) {
The issue is that suspend_wakeup_condition()
calls matrix_scan()
, and this is where the communication between halves is handled, therefore the RGB matrix suspend state might not be reaching the slave half if the master half goes into the USB suspend state with the remote wakeup disabled. Changing the order of conditions would ensure that the master half would continue to call matrix_scan()
even in that state (even though the result of the wakeup check would be useless).
Yea, that dit it... It feels a bit like a curse, to be honest. I've submitted a new #22457 and will go throught it and check, then submitt a PR.
Even when the PC was turned off, I got a key input and controlled the other circuit such as the LED light. From ver0.22.0(8/29).. I had a hard time because the matrix didn't work when the PC turned off. I don't know in depth, but I've got a rough idea why. Thank you.
Describe the Bug
The
left
half is theslave
while theright
half ismater
.RGB_DISABLE_WHEN_USB_SUSPENDED
enabledKeyboard Used
https://github.com/klesh/vial-qmk/tree/vial/keyboards/pskeeb3_cherry_hotswap
Link to product page (if applicable)
No response
Operating System
Window11
qmk doctor Output
Is AutoHotKey / Karabiner installed
Other keyboard-related software installed
No response
Additional Context
I would like some input, and pointers to help me debug the problem.