Corrigindo o erro do Intel FPT “Error 103: No Supported SPI Flash Device” em placas X99 chinesas

Se o FPT/FPTW da Intel se recusa a se comunicar com o chip de BIOS da sua placa X99 chinesa (LGA2011‑3) e exibe “Error 103: There is no supported SPI flash devices installed”, você provavelmente está lidando com um chip de memória flash da série XMC XM25QH, GallopMem GM25Q ou Fudan FM25Q/FM25W — ou com uma das diversas peças similares de mercado chinês de baixo custo que vêm surgindo. Trata-se de um problema de software/banco de dados, não de um chip morto nem de falha de conexão, e a solução leva cinco minutos.

Além das dificuldades habituais de leitura e gravação, esses chips (especialmente os XMC) costumam ser responsáveis por “brickar” placas após uma atualização de BIOS. Isso geralmente acontece quando a BIOS foi projetada para placas-mãe semelhantes que usam os chips Winbond ou Macronix, mais comuns, e por isso não tem o suporte necessário para essas peças de flash chinesas.

Este artigo tem como foco específico as placas X99 chinesas, já que foi nelas que esses chips apareceram e onde verificamos os detalhes a seguir. O mecanismo subjacente (um banco de dados estático de peças embutido no FPT) não é exclusivo dessa plataforma, então a correção provavelmente também funcionará em outras placas que usem os mesmos chips.

Conhecendo o chip

Desde aproximadamente 2021–2022, vários fabricantes de placas-mãe X99 chinesas passaram a trocar, discretamente, o chip de flash da BIOS das peças Winbond/Macronix habituais pelo XMC XM25QH128AHIG, uma memória flash SPI NOR de 128Mbit (16MB) fabricada pela Wuhan Xinxin Semiconductor Manufacturing Corp. Eletricamente, é um chip flash SPI de 3,3V comum — não há nada de errado com o silício em si. A partir de 2023, começaram a aparecer placas com chips GallopMem GM25Q128ASIG no lugar, que confundem o FPT da mesma forma. Chips da Shanghai Fudan Microelectronics também surgiram em algumas placas, vendidos sob duas famílias de códigos distintas: FM25Q e FM25W. Não sabemos exatamente quando os chips Fudan entraram nesse cenário, mas é a mesma dinâmica de sempre, não um caso isolado. Sempre que um fabricante de placas troca de fornecedor de flash por um mais barato ou menor para economizar alguns centavos na lista de materiais, existe uma chance real de que o novo chip simplesmente ainda não esteja no banco de dados da sua ferramenta de gravação.

XM25QH
XMC XM25QH128AHIG — um chip SPI NOR de 16MB bem discreto, pelo menos no papel.

O erro

Ao executar fpt -bios -d bios.bin (ou qualquer outro comando FPT/FPTW que acesse a flash), o seguinte erro é exibido:

Error 103: There are no supported SPI flash devices installed. Please check connectivity and orientation of SPI flash device.

fpt error 103

Por que isso acontece

O FPT não consulta a tabela SFDP (Serial Flash Discoverable Parameters) do chip como faria um driver de flash moderno do sistema operacional. Em vez disso, ele compara o identificador JEDEC/RDID do chip com uma lista em texto simples que acompanha a ferramenta, o fparts.txt. Se o identificador não estiver nessa lista, o FPT trata o chip como não suportado, mesmo que a comunicação elétrica com ele esteja perfeitamente normal. A XMC entrou no mercado de flash SPI mais tarde que a Winbond ou a Macronix, e a GallopMem e a Fudan entraram ainda depois, então os pacotes mais antigos do FPT/FPTW foram lançados sem esses IDs. Falta apenas uma entrada na tabela de consulta da ferramenta.

A correção

  1. Localize o fparts.txt — ele fica na mesma pasta que o fpt.exe/fptw64.exe.
  2. Abra-o em um editor de texto simples e adicione a(s) linha(s) relevante(s) ao final do arquivo — no mínimo, uma linha para cada família de chip com a qual você possa realmente estar lidando:
XM25QH128A, 0x207018, 0x8000000, 0x1000, 0x20, 64, 0
GM25Q128A, 0x1C4018, 0x8000000, 0x1000, 0x20, 64, 0
FM25Q128A, 0xA14018, 0x8000000, 0x1000, 0x20, 64, 0

Isso cobre o XMC XM25QH128AHIG, o GallopMem GM25Q128ASIG e o mais comum dos dois chips Fudan, nessa ordem. Se a sua placa acabar usando a outra família Fudan, uma revisão de die mais recente da XMC ou uma peça BOYA/Zbit, consulte a tabela mais completa abaixo para encontrar a linha correta.

Salve o arquivo e execute o FPT novamente: ele deve identificar o chip corretamente. Se preferir não editar nada manualmente, baixe abaixo nosso fparts.txt estendido, que já inclui essas entradas mais tudo o que está na tabela logo abaixo (além de diversas peças convencionais da Winbond, Macronix, Micron, GigaDevice, EON/ESMT, Adesto e ISSI). Basta colocá-lo junto ao fpt.exe, substituindo o arquivo original.

⬇ Baixar o fparts.txt estendido

Chips conhecidos que precisam dessa correção

Estes são os chips de flash que já vimos em placas X99 chinesas e que um fparts.txt padrão não reconhece. Todos têm 128Mbit (16MB), a capacidade padrão de chip de BIOS para essa plataforma.

Fabricante Peça ID JEDEC Observações
XMC XM25QH128AHIG 0x207018 O culpado original, adotado em massa a partir de 2021–2022.
GallopMem GM25Q128ASIG 0x1C4018 Apareceu em placas a partir de 2023.
XMC (revisão de die mais recente) XM25QH128C 0x204018 Mesmo fabricante, revisão de silício diferente. O ID JEDEC mudou, então uma placa que “usa o mesmo chip” de uma revisão mais antiga ainda pode precisar de uma entrada separada.
Fudan Microelectronics FM25Q128A 0xA14018 A mais comum das duas famílias Fudan abaixo.
Fudan Microelectronics FM25W128 0xA12818 Uma família Fudan separada, com ID JEDEC próprio. Se o FM25Q128A não resolver o problema da sua placa, tente esta linha. É menos comum que as quatro linhas acima; confira a marcação gravada no seu chip antes de usá-la.
BOYA BY25Q128AS / BY25B128AS 0x684018 Uma segunda marca chinesa de flash de baixo custo, vista em lotes de produção mais recentes.
Zbit Semiconductor ZB25VQ128 / ZB25LQ128A / ZB25VQ128A 0x5E4018 / 0x5E5018 / 0x5E6018 Outra fabricante doméstica menor, usada ocasionalmente em placas de baixo custo.

Meu chip não está em nenhuma lista — como encontro a linha do fparts.txt sozinho?

Novas marcas de flash continuam surgindo mais rápido do que qualquer lista consegue acompanhar. Veja aqui o processo geral, com um exemplo prático.

Obtendo o ID bruto do chip quando nada o reconhece pelo nome. Tanto o FPT quanto a maioria dos softwares para CH341A exibem um identificador JEDEC/RDID bruto mesmo para um chip sem nome cadastrado. No Linux, o flashrom -p ch341a_spi é uma boa alternativa para isso: normalmente ele exibe algo como Found Unknown flash chip "unknown SPI flash chip" (ID: 0x1c7018, ...) mesmo quando não consegue identificar a peça. Essa string hexadecimal é exatamente o que você precisa para o campo “Device ID”. A partir daí, pesquise o ID (ou o número de peça gravado a laser no próprio chip) no datasheet do fabricante para confirmar a capacidade e os parâmetros de apagamento antes de gravar qualquer coisa.

Construindo uma linha do fparts.txt a partir de um datasheet. Suponha que sua placa use um XMC XM25QH256C — um chip real, usado aqui apenas para ilustrar a aritmética. O datasheet dele traz:

  • ID JEDEC: 0x204019
  • Capacidade: 256Mbit = 32MB = 0x10000000 em bits
  • Tamanho do bloco de apagamento: 4K = 0x1000 bytes
  • Opcode de apagamento de bloco: 0x20
  • Granularidade de escrita: 64 bytes (comportamento padrão de programação por página)
  • Habilitação do Write Status Register: não necessária → 0

Juntando tudo, o resultado é exatamente:

XM25QH256C, 0x204019, 0x10000000, 0x1000, 0x20, 64, 0

É literalmente assim que toda linha do fparts.txt é construída, uma vez que você tenha os números do datasheet. De qualquer forma, extraia e faça backup do conteúdo atual da BIOS antes de gravar qualquer coisa nova, e sempre verifique o checksum de leitura após a gravação antes de confiar em um chip recém-gravado.