Not working on USB-A RP2350A4 clones #196

Closed
opened 2025-10-22 23:21:56 +08:00 by Kyhze · 16 comments
Kyhze commented 2025-10-22 23:21:56 +08:00 (Migrated from github.com)

I have 3 of these cheap boards: https://aliexpress.com/item/1005009890300019.html?spm=a2g0o.order_list.order_list_main.5.64d95e5bKAvRNq&gatewayAdapt=glo2fra#nav-specification

But unfortunately, none of them work properly with this project. I tried various firmware versions and variants, and I can't get them to work reliably.

I also tried your pico-fido2 variant, and also pico-hsm but these don't work either.

These boards appear to be quite close to the Waveshare RP2350-One in design, except they have a 16MB Winbond W25Q128JVPIQ SPI flash and the WS2812 RGB LED is on PIN 22.

My boards aren't faulty, because flashing other projects on them work fine. I also experimented with MicroPython and everything works properly.

For pico-fido, what doesn't work is that they get stuck asking for the PIN during WebAuthn registration (or trying to commission them through Pico Commissioner for example), and when you replug them during that stage, it does prompt to create a new PIN, but they never detect the button press for the User Presence, and the timeout doesn't seem to work either. They also often seem to fail to be detected properly by web browsers (I tried Brave, Edge, Firefox on Windows 10 and 11, with 2 different machines, the issues are consistent). The native Windows CTAP will generally spin and ask "Are you still here?" and it's just impossible to interact with these RP2350 boards properly. I also tried different USB ports (2.0 and 3.1). Nothing works.

As for pico-hsm, I can't even initialize it because the system can't even detect it as a smartcard. Windows says "unknown smartcard" in the device manager.

I did try to use picotool erase to clear the flash between each firmwares I tried, but it didn't seem to help (although it does erase the flash properly).

Firmware versions I tried:

None of them worked and the issues remain the same throughout my testing.

If you want, I could screen record the behavior, or if you want any more informations, let me know!
Hell, considering how cheap these boards are, I can even mail you one for testing if you want.

Also, this may be an interesting note, but these boards feature the RP2350 stepping in the latest A4 version (RP2350A0A4).

I have 3 of these cheap boards: https://aliexpress.com/item/1005009890300019.html?spm=a2g0o.order_list.order_list_main.5.64d95e5bKAvRNq&gatewayAdapt=glo2fra#nav-specification But unfortunately, none of them work properly with this project. I tried various firmware versions and variants, and I can't get them to work reliably. I also tried your pico-fido2 variant, and also pico-hsm but these don't work either. These boards appear to be quite close to the Waveshare RP2350-One in design, except they have a 16MB Winbond W25Q128JVPIQ SPI flash and the WS2812 RGB LED is on PIN 22. My boards aren't faulty, because flashing other projects on them work fine. I also experimented with MicroPython and everything works properly. For pico-fido, what doesn't work is that they get stuck asking for the PIN during WebAuthn registration (or trying to commission them through Pico Commissioner for example), and when you replug them during that stage, it does prompt to create a new PIN, but they never detect the button press for the User Presence, and the timeout doesn't seem to work either. They also often seem to fail to be detected properly by web browsers (I tried Brave, Edge, Firefox on Windows 10 and 11, with 2 different machines, the issues are consistent). The native Windows CTAP will generally spin and ask "Are you still here?" and it's just impossible to interact with these RP2350 boards properly. I also tried different USB ports (2.0 and 3.1). Nothing works. As for pico-hsm, I can't even initialize it because the system can't even detect it as a smartcard. Windows says "unknown smartcard" in the device manager. I did try to use ```picotool erase``` to clear the flash between each firmwares I tried, but it didn't seem to help (although it does erase the flash properly). Firmware versions I tried: - [pico_fido_pico2-6.6.uf2](https://github.com/polhenarejos/pico-fido/releases/download/v6.6/pico_fido_pico2-6.6.uf2) - [pico_fido_waveshare_rp2350_one-6.6.uf2](https://github.com/polhenarejos/pico-fido/releases/download/v6.6/pico_fido_waveshare_rp2350_one-6.6.uf2) - [pico_fido_pico2-6.4.uf2](https://github.com/polhenarejos/pico-fido/releases/download/v6.4/pico_fido_pico2-6.4.uf2) - [pico_fido_pico2-6.6.uf2](https://github.com/polhenarejos/pico-fido/releases/download/nightly-development/pico_fido_pico2-6.6.uf2) (nightly dev) - [pico_fido_waveshare_rp2350_one-6.6.uf2](https://github.com/polhenarejos/pico-fido/releases/download/nightly-development/pico_fido_waveshare_rp2350_one-6.6.uf2) (nightly dev) - [pico_fido_waveshare_rp2350_plus_16mb-6.6.uf2](https://github.com/polhenarejos/pico-fido/releases/download/nightly-development/pico_fido_waveshare_rp2350_plus_16mb-6.6.uf2) (nightly dev) - \+ Some pico-hsm and pico-fido2 firmwares but I'm not sure if it's relevant at this stage None of them worked and the issues remain the same throughout my testing. If you want, I could screen record the behavior, or if you want any more informations, let me know! Hell, considering how cheap these boards are, I can even mail you one for testing if you want. Also, this may be an interesting note, but these boards feature the RP2350 stepping in the latest A4 version (RP2350A0A4).
polhenarejos commented 2025-10-23 06:12:05 +08:00 (Migrated from github.com)

Adding support for non-official boards is always a nightmare. Usually vendors put their layout onto Pico SDK and then building is straightforward. But since your board is not officially recognized you are using firmwares that are not built for your board. Sometimes work, sometimes not. This time seems a problem with BOOTSEL button, which triggers user presence, but not sure why it fails.

Does this example work?

https://github.com/raspberrypi/pico-examples/tree/master/picoboard/button

Adding support for non-official boards is always a nightmare. Usually vendors put their layout onto Pico SDK and then building is straightforward. But since your board is not officially recognized you are using firmwares that are not built for your board. Sometimes work, sometimes not. This time seems a problem with BOOTSEL button, which triggers user presence, but not sure why it fails. Does this example work? https://github.com/raspberrypi/pico-examples/tree/master/picoboard/button
Kyhze commented 2025-10-24 01:03:51 +08:00 (Migrated from github.com)

I understand that it's not possible to support all clone boards, of course

I should add that it did work briefly one of them, I had originally flashed pico_fido_pico2-6.6.uf2 out of the box. It worked fine, but the LED wasn't working, even if I set the GPIO PIN in the commissioner to what it should be. So I flashed pico_fido_waveshare_rp2350_one-6.6.uf2 on top of it, which fixed the LED.

However, for the other 2 I went ahead and flashed the pico_fido_waveshare_rp2350_one-6.6.uf2 firmware directly onto them, assuming that was the correct one, and that's when I experienced these issues.

After that, I went ahead and erased the 1st one that worked with picotool erase, flashed pico_fido_waveshare_rp2350_one-6.6.uf2 and it then experienced the same issues as the other two.

Erasing it again and re-flashing pico_fido_pico2-6.6.uf2 did not solve the issue.

The button was working correctly tho. It's a bit strange...

Also, the erase procedure worked correctly, and picotool info reported no more partitions afterwards. So I assume it did nuke the flash correctly, but this behavior seems to indicate that it may not be the case...

I understand that it's not possible to support all clone boards, of course I should add that it did work briefly one of them, I had originally flashed [pico_fido_pico2-6.6.uf2](https://github.com/polhenarejos/pico-fido/releases/download/v6.6/pico_fido_pico2-6.6.uf2) out of the box. It worked fine, but the LED wasn't working, even if I set the GPIO PIN in the commissioner to what it should be. So I flashed [pico_fido_waveshare_rp2350_one-6.6.uf2](https://github.com/polhenarejos/pico-fido/releases/download/v6.6/pico_fido_waveshare_rp2350_one-6.6.uf2) on top of it, which fixed the LED. However, for the other 2 I went ahead and flashed the [pico_fido_waveshare_rp2350_one-6.6.uf2](https://github.com/polhenarejos/pico-fido/releases/download/v6.6/pico_fido_waveshare_rp2350_one-6.6.uf2) firmware directly onto them, assuming that was the correct one, and that's when I experienced these issues. After that, I went ahead and erased the 1st one that worked with ```picotool erase```, flashed [pico_fido_waveshare_rp2350_one-6.6.uf2](https://github.com/polhenarejos/pico-fido/releases/download/v6.6/pico_fido_waveshare_rp2350_one-6.6.uf2) and it then experienced the same issues as the other two. Erasing it again and re-flashing [pico_fido_pico2-6.6.uf2](https://github.com/polhenarejos/pico-fido/releases/download/v6.6/pico_fido_pico2-6.6.uf2) did not solve the issue. The button was working correctly tho. It's a bit strange... Also, the erase procedure worked correctly, and ```picotool info``` reported no more partitions afterwards. So I assume it did nuke the flash correctly, but this behavior seems to indicate that it may not be the case...
cmichel5 commented 2025-10-24 03:22:47 +08:00 (Migrated from github.com)

I have the same board, and it works mostly fine with the firmware pico_fido_waveshare_rp2350_one-6.6 (stable or dev).
Only issues :

  • the "Are you still here?" message from time to time
  • If you have a samsung phone, then you need to disable the OTP functions using the Yubico Authenticator app. But that issue is there on a real yubikey too.

I would advise to use pico nuke to reset the key : https://github.com/polhenarejos/pico-nuke
and flash again.

I have the same board, and it works mostly fine with the firmware pico_fido_waveshare_rp2350_one-6.6 (stable or dev). Only issues : - the "Are you still here?" message from time to time - If you have a samsung phone, then you need to disable the OTP functions using the Yubico Authenticator app. But that issue is there on a real yubikey too. I would advise to use pico nuke to reset the key : https://github.com/polhenarejos/pico-nuke and flash again.
syafiqshaary commented 2025-10-24 07:39:25 +08:00 (Migrated from github.com)

https://imgur.com/a/E2NAtpI
I have same board to mostly fines working if you flashing pico_fido_waveshare_rp2350_one-6.6 (stable or dev).

Pico commissioners
Known Vendor : Yubikey 4/5
VID PID : 1050:0407
LED PIN : 22
Product Name : Yubico Yubikey
product name is needed like i mention or you hardware probably wont recognized.
Then click on "Commission via WebAuthn" to testing.

Stable
Your not able to see token inside yubico mobile app, most setup security key working perfectly for all

Dev
Your able to seen token inside
Yubico mobile app, has some issues with it to setup example for discord f you set using pc or web unable to login, but set on android working for all to login 😐

https://imgur.com/a/E2NAtpI I have same board to mostly fines working if you flashing pico_fido_waveshare_rp2350_one-6.6 (stable or dev). Pico commissioners Known Vendor : Yubikey 4/5 VID PID : 1050:0407 LED PIN : 22 Product Name : Yubico Yubikey product name is needed like i mention or you hardware probably wont recognized. Then click on "Commission via WebAuthn" to testing. Stable Your not able to see token inside yubico mobile app, most setup security key working perfectly for all Dev Your able to seen token inside Yubico mobile app, has some issues with it to setup example for discord f you set using pc or web unable to login, but set on android working for all to login 😐
mph88 commented 2025-10-24 21:54:55 +08:00 (Migrated from github.com)

The Tenstar board linked above has 16MB of flash instead of the 4MB found in the Waveshare board. You can clone/edit the board definition in the pico-sdk (src/boards/include/boards/waveshare_rp2350_one.h) to PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) and also change to PICO_DEFAULT_WS2812_PIN 22.

The Tenstar board linked above has 16MB of flash instead of the 4MB found in the Waveshare board. You can clone/edit the board definition in the pico-sdk (`src/boards/include/boards/waveshare_rp2350_one.h`) to `PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)` and also change to `PICO_DEFAULT_WS2812_PIN 22`.
Kyhze commented 2025-10-25 01:37:05 +08:00 (Migrated from github.com)

I appreciate all the replies.

I have the same board, and it works mostly fine with the firmware pico_fido_waveshare_rp2350_one-6.6 (stable or dev). Only issues :

  • the "Are you still here?" message from time to time
  • If you have a samsung phone, then you need to disable the OTP functions using the Yubico Authenticator app. But that issue is there on a real yubikey too.

I would advise to use pico nuke to reset the key : https://github.com/polhenarejos/pico-nuke and flash again.

I'm not using it with Android, only Windows. Still, the "Are you still here" is 100% of the time with me and I can't proceed any further.
Thanks for the nuke suggestion, I tried but, but unfortunately it didn't work. I tried pico_nuke_waveshare_rp2350_plus_16mb-1.4 as it seems to be the closest. Let me know if I should try another instead!

https://imgur.com/a/E2NAtpI I have same board to mostly fines working if you flashing pico_fido_waveshare_rp2350_one-6.6 (stable or dev).

Pico commissioners Known Vendor : Yubikey 4/5 VID PID : 1050:0407 LED PIN : 22 Product Name : Yubico Yubikey product name is needed like i mention or you hardware probably wont recognized. Then click on "Commission via WebAuthn" to testing.

Stable Your not able to see token inside yubico mobile app, most setup security key working perfectly for all

Dev Your able to seen token inside Yubico mobile app, has some issues with it to setup example for discord f you set using pc or web unable to login, but set on android working for all to login 😐

This is the firmware I flashed, but it unfortunately doesn't work for me.
I'm not using my board for mobile. Only Windows.

The Tenstar board linked above has 16MB of flash instead of the 4MB found in the Waveshare board. You can clone/edit the board definition in the pico-sdk (src/boards/include/boards/waveshare_rp2350_one.h) to PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) and also change to PICO_DEFAULT_WS2812_PIN 22.

This seemed to work surprisingly! I'm still going to conduct more tests, mainly around using the board as a YubiHSM. I'll report if it works.

Thanks!

I appreciate all the replies. > I have the same board, and it works mostly fine with the firmware pico_fido_waveshare_rp2350_one-6.6 (stable or dev). Only issues : > > * the "Are you still here?" message from time to time > * If you have a samsung phone, then you need to disable the OTP functions using the Yubico Authenticator app. But that issue is there on a real yubikey too. > > I would advise to use pico nuke to reset the key : https://github.com/polhenarejos/pico-nuke and flash again. I'm not using it with Android, only Windows. Still, the "Are you still here" is 100% of the time with me and I can't proceed any further. Thanks for the nuke suggestion, I tried but, but unfortunately it didn't work. I tried pico_nuke_waveshare_rp2350_plus_16mb-1.4 as it seems to be the closest. Let me know if I should try another instead! > https://imgur.com/a/E2NAtpI I have same board to mostly fines working if you flashing pico_fido_waveshare_rp2350_one-6.6 (stable or dev). > > Pico commissioners Known Vendor : Yubikey 4/5 VID PID : 1050:0407 LED PIN : 22 Product Name : Yubico Yubikey product name is needed like i mention or you hardware probably wont recognized. Then click on "Commission via WebAuthn" to testing. > > Stable Your not able to see token inside yubico mobile app, most setup security key working perfectly for all > > Dev Your able to seen token inside Yubico mobile app, has some issues with it to setup example for discord f you set using pc or web unable to login, but set on android working for all to login 😐 This is the firmware I flashed, but it unfortunately doesn't work for me. I'm not using my board for mobile. Only Windows. > The Tenstar board linked above has 16MB of flash instead of the 4MB found in the Waveshare board. You can clone/edit the board definition in the pico-sdk (`src/boards/include/boards/waveshare_rp2350_one.h`) to `PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)` and also change to `PICO_DEFAULT_WS2812_PIN 22`. This seemed to work surprisingly! I'm still going to conduct more tests, mainly around using the board as a YubiHSM. I'll report if it works. Thanks!
polhenarejos commented 2025-10-25 02:13:50 +08:00 (Migrated from github.com)

Please, tell us if the problem is the Bootsel button.

Don’t use Pico HSM as YubiHSM because it uses its own standard and Pico HSM uses CCID one.

Please, tell us if the problem is the Bootsel button. Don’t use Pico HSM as YubiHSM because it uses its own standard and Pico HSM uses CCID one.
Kyhze commented 2025-10-25 02:41:21 +08:00 (Migrated from github.com)

The problem is not the BOOTSEL button. It works properly when I compile and flash the firmware with the edits suggested by @mph88.

Oh, well I can't get Pico HSM to work properly on this board anyway. I only set the parameters as described in your documentation:

PICO_SDK_PATH=/home/kyhze/Downloads/pico/pico-sdk/ cmake .. -DPICO_BOARD=waveshare_rp2350_one -DVIDPID=YubiHSM

Tho I guess I should open a separate issue on the Pico HSM repo.

I ordered a couple of official Waveshare RP2350 One boards and will test them out once I receive them!

The problem is not the BOOTSEL button. It works properly when I compile and flash the firmware with the edits suggested by @mph88. Oh, well I can't get Pico HSM to work properly on this board anyway. I only set the parameters as described in your documentation: ```PICO_SDK_PATH=/home/kyhze/Downloads/pico/pico-sdk/ cmake .. -DPICO_BOARD=waveshare_rp2350_one -DVIDPID=YubiHSM``` Tho I guess I should open a separate issue on the Pico HSM repo. I ordered a couple of official Waveshare RP2350 One boards and will test them out once I receive them!
Kyhze commented 2025-10-25 02:45:59 +08:00 (Migrated from github.com)

I also can confirm that this clone board now works perfectly with Pico FIDO and Pico FIDO2 once the flash size is set correctly in the pico-sdk and compiling as a waveshare_rp2350_one board.

So I'll close this issue. Thanks everyone

I also can confirm that this clone board now works perfectly with Pico FIDO and Pico FIDO2 once the flash size is set correctly in the pico-sdk and compiling as a ```waveshare_rp2350_one``` board. So I'll close this issue. Thanks everyone
cmichel5 commented 2025-10-25 03:06:04 +08:00 (Migrated from github.com)

@polhenarejos can you provide a signed firmware with the needed changes for that board please ?
Thanks

@polhenarejos can you provide a signed firmware with the needed changes for that board please ? Thanks
SET19724 commented 2025-11-09 00:56:24 +08:00 (Migrated from github.com)

is it now in nightly build or where i can download file ?

is it now in nightly build or where i can download file ?
FrankUlbrich commented 2025-11-27 23:33:24 +08:00 (Migrated from github.com)

I would appreviate to have the mentioned firmware fpr these Tenstar Clone availible. I still have the LED PIN Problem.
The commisioner does not change it for me.

I would appreviate to have the mentioned firmware fpr these Tenstar Clone availible. I still have the LED PIN Problem. The commisioner does not change it for me.
Kyhze commented 2025-11-28 05:03:03 +08:00 (Migrated from github.com)

@FrankUlbrich, @SET19724 Well I can give you my custom compiled binary but it's obviously not signed. Also make sure to rename the extension to .uf2 before flashing (GitHub didn't let me upload with that extension) pico_fido2.dmp

The VID/PID is also set to YubiKey 5 and the device name is Yubico YubiKey for full compability with the Yubico Authenticator app.

You should be able to change these to your liking with the web commissioner tho. Just don't change the LED pin or driver, and this firmware should work right away after flashing.

@FrankUlbrich, @SET19724 Well I can give you my custom compiled binary but it's obviously not signed. Also make sure to rename the extension to .uf2 before flashing (GitHub didn't let me upload with that extension) [pico_fido2.dmp](https://github.com/user-attachments/files/23810920/pico_fido2.dmp) The VID/PID is also set to YubiKey 5 and the device name is Yubico YubiKey for full compability with the Yubico Authenticator app. You should be able to change these to your liking with the web commissioner tho. Just don't change the LED pin or driver, and this firmware should work right away after flashing.
SET19724 commented 2025-11-28 05:06:14 +08:00 (Migrated from github.com)

@FrankUlbrich, @SET19724 Well I can give you my custom compiled binary but it's obviously not signed. Also make sure to rename the extension to .uf2 before flashing (GitHub didn't let me upload with that extension) pico_fido2.dmp

The VID/PID is also set to YubiKey 5 and the device name is Yubico YubiKey for full compability with the Yubico Authenticator app.

You should be able to change these to your liking with the web commissioner tho. Just don't change the LED pin or driver, and this firmware should work right away after flashing.

i compile myself firmware after my first comment.
but yeah it must be signed so i use only this from nightly for 16mb TENSTAR "pico_fido2_waveshare_rp2350_plus_16mb-6.6.uf2" and it works good also other people test it and its good
you don't need custom
i have question about name it must be like you write ?
for me works Yubico Yubikey or yubico yubikey

i have some issues with commissioner but i fix it with zadig and also i nuke before flash

> [@FrankUlbrich](https://github.com/FrankUlbrich), [@SET19724](https://github.com/SET19724) Well I can give you my custom compiled binary but it's obviously not signed. Also make sure to rename the extension to .uf2 before flashing (GitHub didn't let me upload with that extension) [pico_fido2.dmp](https://github.com/user-attachments/files/23810920/pico_fido2.dmp) > > The VID/PID is also set to YubiKey 5 and the device name is Yubico YubiKey for full compability with the Yubico Authenticator app. > > You should be able to change these to your liking with the web commissioner tho. Just don't change the LED pin or driver, and this firmware should work right away after flashing. i compile myself firmware after my first comment. but yeah it must be signed so i use only this from nightly for 16mb TENSTAR "[pico_fido2_waveshare_rp2350_plus_16mb-6.6.uf2](https://github.com/polhenarejos/pico-fido2/releases/download/nightly-main/pico_fido2_waveshare_rp2350_plus_16mb-6.6.uf2)" and it works good also other people test it and its good you don't need custom i have question about name it must be like you write ? for me works Yubico Yubikey or yubico yubikey i have some issues with commissioner but i fix it with zadig and also i nuke before flash
Kyhze commented 2025-11-28 05:18:41 +08:00 (Migrated from github.com)

For me the 16mb TENSTAR firmware didn't work. I have to compile my own. I guess not all of these cheap clones are exactly the same.
I don't think the case matters for the name, no. But to be extra sure I set it to Yubico YubiKey, like a real one.

For me the 16mb TENSTAR firmware didn't work. I have to compile my own. I guess not all of these cheap clones are exactly the same. I don't think the case matters for the name, no. But to be extra sure I set it to Yubico YubiKey, like a real one.
r0b2g1t commented 2025-11-28 16:51:31 +08:00 (Migrated from github.com)

I also had some issues with the Tenstar board. So, I created a custom board file, which you can find here:

Board description
Firmware Build

@polhenarejos What do you think about adding an option to add custom boards to the project so that a board folder is included in the build pipeline?

I also had some issues with the Tenstar board. So, I created a custom board file, which you can find here: [Board description](https://github.com/r0b2g1t/pico-sdk/blob/2.1.1-b1/src/boards/include/boards/tenstar_rp2350_16mb.h) [Firmware Build](https://github.com/r0b2g1t/pico-fido/releases/download/nightly-main/pico_fido_tenstar_rp2350_16mb-6.6.uf2) @polhenarejos What do you think about adding an option to add custom boards to the project so that a board folder is included in the build pipeline?
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dearsky/pico-fido#196