Nos últimos dias precisei regravar uma BIOS SPI (Winbond 25Q32 – 4 MB) diversas vezes e resolvi documentar o processo usando Raspberry Pi Pico como programador externo.
Funciona muito bem, é barato e confiável quando feito corretamente.
Este guia documenta como transformar um Raspberry Pi Pico (RP2040) em um gravador de EEPROM/BIOS universal de baixo custo e alta confiabilidade, ideal para reviver placas-mãe (PC, Notebooks, GPUs).
1. Materiais Necessários
Microcontrolador: Raspberry Pi Pico (RP2040).
Alvo: Chip de BIOS SPI (Séries Winbond 25Qxx, MX25Lxx, GD25Qxx, etc.).
Conexão: Fios Jumper curtos (Recomendado ≤ 10 cm para evitar interferência).
Solda: Ferro de solda ponta fina + fluxo (ou Clip SOIC8/Jacaré se não quiser soldar).
AVISO IMPORTANTE:
Jamais utilize 5V no chip da BIOS. Isso queimará o chip instantaneamente.
Utilize a saída 3V3 do Pico. Se o chip exigir muita corrente, use uma fonte externa de 3.3V com o GND unificado ao do Pico.
2. Preparação do Firmware (Raspberry Pi Pico)
Utilizaremos o projeto pico-serprog, que emula o protocolo serprog compatível com o Flashrom.
Baixe o firmware: GitHub - opensensor/pico-serprog.
Faça o download do arquivo mais recente: pico_serprog.uf2.
Conecte o Raspberry Pi Pico ao PC segurando o botão BOOTSEL.
O Pico aparecerá como um pendrive (RPI-RP2).
Arraste o arquivo .uf2 para dentro da unidade. O Pico irá reiniciar automaticamente e estará pronto.
3. Pinout (Conexões)
A conexão utiliza o barramento SPI0 padrão do Pico.
CS (Chip Select)
- Flash SOP8: pino 1
- Pico: GP5 (pino físico 7)
MISO (Data Out)
- Flash SOP8: pino 2
- Pico: GP4 (pino físico 6)
GND
- Flash SOP8: pino 4
- Pico: qualquer GND
MOSI (Data In)
- Flash SOP8: pino 5
- Pico: GP3 (pino físico 5)
SCK (Clock)
- Flash SOP8: pino 6
- Pico: GP2 (pino físico 4)
VCC (3.3V)
- Flash SOP8: pino 8
- Pico: 3V3 (OUT), pino físico 36
Dica: Os pinos WP e HOLD devem ser ligados ao 3.3V para habilitar a leitura/escrita e evitar instabilidade, embora em alguns casos funcione deixá-los flutuando.
Em caso de dúvidas sobre o pinout do chip eprom deixei uma imagem anexada com a pinagem dele, sempre verifique a marca de referencia, ela será o pino 1
4. Software no PC
Opção A: Linux (Recomendado)
A instalação é nativa e geralmente não requer drivers adicionais.
No terminal:
sudo apt update
sudo apt install flashrom
Opção B: Windows
No Windows, o Flashrom não possui instalador nativo oficial, usamos builds da comunidade.
Driver: Ao conectar o Pico já com firmware, ele deve aparecer no Gerenciador de Dispositivos em "Portas (COM e LPT)" como "USB Serial Device" (ex: COM3 ou COM4).
Baixar Flashrom: Recomendo o build do therealdreg:
GitHub - therealdreg/flashrom_build_windows_x64
Baixe o ZIP da última release e extraia em uma pasta simples (ex: C:\flashrom).
Abra o CMD (Prompt de Comando) ou PowerShell dentro dessa pasta.
5. Comandos de Operação
Sintaxe Básica
Linux: A porta geralmente é /dev/ttyACM0.
Windows: A porta é COMx (verifique no Gerenciador de Dispositivos). O baudrate :115200 é boa prática adicionar.
Aqui estão os comandos para ambos os sistemas:
1. Detectar o Chip
Serve para verificar se as soldas/conexões estão corretas.
Linux:
sudo flashrom -p serprog:dev=/dev/ttyACM0,spispeed=16000
Windows (exemplo com COM3):
flashrom.exe -p serprog:dev=COM3:115200,spispeed=16000
2. Ler BIOS (Backup Obrigatório)
Sempre faça o backup antes, mesmo que ache que a BIOS está corrompida.
Linux:
sudo flashrom -p serprog:dev=/dev/ttyACM0,spispeed=16000 -r backup.bin
Windows:
flashrom.exe -p serprog:dev=COM3:115200,spispeed=16000 -r backup.bin
3. Gravar BIOS
Escreve o novo arquivo no chip. O Flashrom verifica e apaga automaticamente se necessário.
Linux:
sudo flashrom -p serprog:dev=/dev/ttyACM0,spispeed=16000 -w bios_nova.bin
Windows:
flashrom.exe -p serprog:dev=COM3:115200,spispeed=16000 -w bios_nova.bin
4. Verificar Gravação
Compara o conteúdo do chip com o arquivo no PC para garantir integridade.
Linux:
sudo flashrom -p serprog:dev=/dev/ttyACM0,spispeed=16000 -v bios_nova.bin
Windows:
flashrom.exe -p serprog:dev=COM3:115200,spispeed=16000 -v bios_nova.bin
6. Solução de Problemas Comuns
Erro: "No EEPROM/flash device found"
Causa: Má conexão nos fios, fios muito longos ou chip mal alimentado.
Solução: Revise a solda, encurte os fios (máx 10cm) e limpe o fluxo residual.
Erro: "Multiple flash chip definitions match"
O software detectou o ID do fabricante, mas existem variantes com o mesmo ID. O Flashrom pedirá para você especificar. Exemplo de erro:
Multiple flash chip definitions match the detected chip(s): "W25Q64.V", "W25Q64.W". Please specify which chip definition to use with the -c option.
Como resolver (Adicione -c "Nome_do_Chip"):
Linux:
sudo flashrom -p serprog:dev=/dev/ttyACM0 -c "W25Q64.V" -w bios.bin
Windows:
flashrom.exe -p serprog:dev=COM3:115200 -c "W25Q64.V" -w bios.bin
Dica de Velocidade
Se estiver muito lento, você pode tentar aumentar o spispeed (clock do SPI) se a fiação for curta e de boa qualidade. Tente spispeed=32000 (32MHz). Se der erro de leitura, baixe para
spispeed=8000.