So, yet another “if you’re in the middle of nowhere and can’t/don’t_want_to wait for proper tools to arrive” kind of post.

Firstly, there’s pico-serprog with quite good instructions from the libreboot project. Unfortunately, it didn’t want to detect the chip at all in my case (in hind sight, likely due to the board pinouts being different between my board and a regular pico and them providing pico pins and not gpio numbers)

What worked, albeit rather slowly, was pico-dirtyjtag. If using this one, the connections are as follows:

  • cs - gp19
  • miso - gp17
  • mosi - gp16
  • clk - gp18
  • gnd - gnd
  • 3v3 - 3v3

The chip pinouts can be sourced from the libreboot guide/a laptop schematic/ic datasheet. Flashing with sudo flashprog -p dirtyjtag_spi -w rom.rom (or flashrom instead of flashprog). It may complain that there are multiple definitions matching the chip, in which case you manually choose one of the mentioned with -c (in my case -c W25Q32FV and -c W25Q64BV/W25Q64CV/W25Q64FV for top and bottom chips respectively).

Also applicable to stm boards with the main dirtyjtag repo.