MicroPython-Board-Catalog + compiled firmware

General discussions and questions abound development of code with MicroPython that is not hardware specific.
Target audience: MicroPython Users.
Post Reply
Posts: 51
Joined: Mon Jan 26, 2015 2:05 pm

MicroPython-Board-Catalog + compiled firmware

Post by MCHobby » Thu Apr 29, 2021 11:33 am

Hi Everyone, Hi MicroPython Team,
I'm currently working on a MicroPython catalog project to offer a better overview of the MicroPython world to unskilled users.
This is more like "MicroPython Advertising" material. Our community definitively need it... a recent event demonstrated it.. that killed me! (I'm a big fan of MicroPython in french's area since the early beginning).

Recently, one of my OSHW supplier ask me the difference between CircuitPython and MicroPython. He is preparing a new board.
The iMX MCU is supported in MicroPython (on GitHub repository) and CircuitPython. But he decided to go for CircuitPython because he can quickly find the firmware for it! That ruined my day!

=== Making a Board Catalog ====
The idea is to build a "MicroPython boards catalog" wich list the boards supporting MicroPython (static, nightly updated) and based on static data (like CircuitPython.org does but for MicroPython. I do like the markdown approach stored onto github they are using).
I'm currently working on this projet. I would came back to the team for more advanced discussion as soon as I have some valuable results.
I'm very well aware about the time needed to manage and maintain such data. So I will do (I'd like to organize data).

As a developper, I do know that the information is currently available in the /ports/ directory of GitHub but this information is aimed to skilled people.
On the other side, the MicroPython.org/download does only list a subset of boards.

Informations about supported board should be made more accessible and more completed... including firmware download.

As rule of thumb:
  • I would be in favor of register boards that compiles MicroPython firmware (core) and supporting (or willing to support) the Machine API.
  • I would detail the machine API supported (Pin, ADC, .... ). I did realised that's not so easy to do... I still not finished with Pin on SAMD21.
  • I would really be in favor of linking toward Firmware to download.
As a result:
  • the Adafruit Feather ESP32 Huzzah! could be listed down because we can upload a MicroPython ESP32 firmware on it (I do it for one of my books).
  • the MaiXDuino (Risc-V) could also be registered, They are proposing MaixPy MicroPython which offers support for the Machine API.
=== Firmware availables ===
This raise another question, would it be possible to offers more MicroPython firmware to the mass.
Presently, MicroPython.org only listed a subset of its firmwares to download.
Could it be enlarged to ALL the supported MCU available on MicroPython.org (by offering a proper documentation about the supported machine APIs) ?

Could you share your remarks and comment?


User avatar
Posts: 356
Joined: Mon Jan 23, 2017 6:39 am

Re: MicroPython-Board-Catalog + compiled firmware

Post by mattyt » Sat May 08, 2021 10:46 am

Hi Dominique,

Yes, this would be a huge improvement! I started a similar effort some time ago; Scott Shawcroft from CircuitPython suggested taking their circuitpython-org system and modifying it to suit. It didn't take too long to fork and make the changes - but, at the time, Damien had started to overhaul the MicroPython download page and it didn't make sense to invest more effort until his changes were complete...

Nowadays the 'back end' automated builds are by Github Actions - which should be retained - but the 'front end' should probably be replaced with something like the circuitpython-org system. I think the board-centric view makes good sense. I'd also like to see board-specific overviews about the status of the specific MicroPython build.

It would be nice if all the metadata was actually in the board folders in the MicroPython repository - but then there are benefits to having them separate too.

To address your concern about boards not currently part of automated builds; we can either add more actions to build more of the boards - or potentially synchronise other repositories so more obscure boards can be built elsewhere. For example, Andrew Leech set up a build system that pre-dates builds executed by Actions - it attempts to build all boards. We could link to some of those builds.

I've spoken with Damien about this and he's generally positive, with the caveat that we need to ensure if we put this in place then it needs to not just be built - but maintained.

Anyway, yes! Please continue this effort. :) If it helps we can chat on video call...

Posts: 51
Joined: Mon Jan 26, 2015 2:05 pm

Re: MicroPython-Board-Catalog + compiled firmware

Post by MCHobby » Sat May 08, 2021 12:55 pm

Hi @mattyt,

OK, I will move forward the board centric cataloging and will cames back with primary results.

Mattyt, did you remember our conversation about the SAMD21/SAMD51 support in this thread "Wio Terminal with ATSAMD51 + Realtek RTL8720DN + 2.4 screen + etc" ?
I did move forward around SAMD21 and made a initial pull for the Pin class.

Posts: 51
Joined: Mon Jan 26, 2015 2:05 pm

Re: MicroPython-Board-Catalog + compiled firmware

Post by MCHobby » Sat May 08, 2021 7:28 pm


Edit may 9, 21:
I have published 2 first boards definition in _board of the repository and listed down a boards TODO list :D


I did published an initial template (inspired from CircuitPython) for the board description here:


Please read it as RAW, content is more obvious to understand

I did added more technical information about the board:
  • mcu: "MCU identification, EG: STM32F411RE"
  • gpio: "Number of GPIOs accessibles on board. EG: 8"
  • ram: "MCU RAM in Kb: EG: 128"
  • flash: "Internal MCU Flash in Kb, EG: 512"
  • ext_ram: "External RAM in Kb: EG: 4096"
  • ext_flash: "External RAM in Kb: EG: 4096"
I did added a "machine_api" list down the supported MicroPython API : Pin, ADC, PWM, UART, I2C, SPI, RTC, Timer, WDT, SDCard .
Not all the board / firmware do cover completely the machine API.

Also added a "mcu_category" among : STM32, SAMD21, SAMD51, RP2040, ESP32, ESP8266, RISC-V .
That would allow top level grouping or filtering.

A new "Features:" section have been added to concentrate summary information (quick and easy to read) lile the following:

Code: Select all

* Single core @ 133MHz
* 264kB on-chip SRAM
* 8MB external QSPI Flash
* 30 GPIO pins (4 ADC inputs)
* Peripherals
  * 1x UARTs
  * 2x I2C controllers
  * 8x PWM channels
  * USB 1.1 controller
Don't hesitate to share your comment.

Post Reply