webhdx / PicoBoot

Raspberry Pi Pico (RP2040) based IPL replacement modchip for GameCube
GNU General Public License v2.0
1.46k stars 91 forks source link

Add support for Pico W and handle discrepancies between the boards #57

Open webhdx opened 1 year ago

webhdx commented 1 year ago

Pico W debuted the day PicoBoot was released. It gave me no time to prepare codebase for Pico W. This is why I never advertised PicoBoot as fully compatible with Pico W. As for now it's working correctly without the support for status LED which is not a big deal.

My plan for Pico W:

Some loose thoughts:

sli commented 1 year ago

I would really like to suggest making the Tiny2040 a first class citizen in this project due to its physical size relative to the Pico and Pico W. Beyond just being very small, it also has an RGB LED which can be handy for debugging and is pretty easy to support in a single codebase.

https://shop.pimoroni.com/products/tiny-2040?variant=39560012234835

webhdx commented 1 year ago

Unfortunately as I stated many times I'm not planning to extend support to other RP2040 boards. This is simply because I don't have enough time to test different boards to make sure new firmware is going to work for everybody. I heavily overclock Pico in order to pull off IPL injection and for this you need very repeatable hardware. With official boards I can be assured every batch uses components that follow the specification. WIth 3rd party boards it's not always the case. PicoBoot adopt Pico W as the main platform and heavily utilize CYW43439 WiFi chip. Tiny2040 and other Pico boards don't have that specific chip.

webhdx commented 1 month ago

I've learned about WaveShare RP2040-Tiny board:

Image

I've been against supporting unofficial boards but this one is particularly interesting because it externalizes USB port (it's also USB-C!) and buttons via flat flex cable. Many people have been asking about putting USB extender for easier updates. This perfectly addresses this issue. The biggest issue I see is Nanopixel LED which requires PIO. We can afford it at the moment but we might run out of PIO resources when more advanced features are implemented in the future.