Open xkonni opened 1 month ago
Add a notice about this issue on README https://github.com/foostan/crkbd?tab=readme-ov-file#notice
Thanks for including that notice @foostan :+1: are you able to test a board with an Abracon ABM8-272-T3
and its associated 15p
load caps? Was the change to an alternate crystal due to availability issues? I noticed Digikey have 0 in stock for the Abracon ABM8-272-T3
:-1:
@george-norton raises a very valid point regarding the crystal load capacitance. The source to which he is referring is pictured below From Hardware Design with RP2040
Having said that, my understanding of @alessiocurri 's reports are that he observes both RP2040 devices remaining functional (changing LED colours on both sides) after they have experienced a USB disconnect due to phone EMI.
I will attempt replicate those results, and look into the excellent debugging suggestions by @george-norton and @fabianmuehlberger
I also have a bunch of Pi Pico/W units with various dev boards and sensors, I will see if I can replicate the issue on any of those!
Was the change to an alternate crystal due to availability issues?
I had not considered it properly. I'll look into the Abracon ABM8-272-T3 and other options.
I investigated the EMI effect of a mobile phone on Cornelius v2. This board is not a split keyboard, but it uses the same circuits and parts.
The investigation resulted in the USB connection being cut off and locked, just like the Corne v4. This shows that the problem is not with the USB-related wiring or part placement but with the selection of parts or the circuit design.
By the way, the Cornelius is an aluminum body, so I don't think this will actually be an issue. https://github.com/foostan/corneliuskbd/tree/main/pcbs/v2/hotswap
Attempt inducing a lockup when running code which drives a simple pattern on the LEDs
- To see if the RP2040s are still running correctly when the lockups occur
Attempt to induce a lockup when the RP2040 is powered via the OLED header and connected to the SWD interface
- An additional method to confirm the outcome of the above test.
Rather than visually observing the LED, you could just output a high frequency and meassure it. (basically what an LED does ;) so you can just hook up an oscilloscope to it :)
I found that the Cornelius board and the Corne v4 board have some different characteristics.
I was able to cause the problem with Cornelius yesterday, but since then I have not been able to cause any problems. On the other hand, I have been able to cause the problem many times with Corne v4. This means that Corne v4 is very unstable compared to Cornelius. In addition to the part selection and circuit, it suggests that there are problems with the part placement and wiring.
Placing a mobile phone right next to the RP2040 and a Corne v4 crystal immediately causes the problem. On the other hand, no problems occurred when moving the phone close to the TRRS connector. It seems that the noise is significantly reduced even if you talk about 10 cm away. The RP2040 and crystal are placed at the very edge of the PCB, so it is possible that they are easily affected by external factors. Simply shifting them to the center may have an effect.
By the way, would it be okay to make the DC-DC converter and Flash memory parts smaller? The current parts are too large and there is little freedom in placement. Doesn't it need 128M of Flash memory?
There are small form factor, large capacity flash parts available. See C2843335.
got 2 crkbd rev 4.1, love them, typing on my old 60% is a pain now.
but for some reason the usb connections on both devices are rather unstable on my machines (linux pc, 2 dell laptops with linux). first I thought it was a hw issue, but the second (one from a diy store in germany, one from aliexpress) shows the exact same issues.
using your firmware with the vial keymap. tried some options (remove
USB_SUSPEND_WAKEUP_DELAY
, increase it, ...) but the devices remain unstable. sometimes they run for hours, then they fail every few seconds.Could this be related to https://github.com/foostan/crkbd/issues/229 ?
any help is highly appreciated!
logs: