Desbloquear o Menu de Timings de Memória Oculto no BIOS X99 / LGA 2011-3 Chinês

Uma das reclamações mais comuns sobre placas chinesas LGA2011‑3/X99 é a falta de controles manuais de timing de memória na BIOS. Essa funcionalidade quase sempre está presente dentro do firmware — ela só está oculta e inacessível pelos menus normais do Setup. Este guia mostra como expô-la.

Esta é a versão em texto do guia em vídeo do Koshak, disponível neste link (YouTube).

⚠️ Isenção de responsabilidade. Como sempre, não há garantia de resultados, e você assume total responsabilidade pelo que faz na sua própria placa.

Esteja ciente de que, se algo der errado, gravar uma BIOS com defeito muito provavelmente vai brickar a placa; a recuperação só será possível com um programador de hardware — não existe fallback por software depois que uma imagem defeituosa é gravada.

Ferramenta Essencial
CH341A
Se você experimenta com BIOS, o programador CH341A é indispensável. Ele permite ler e gravar chips SPI diretamente, salvando placas-mãe após falhas.
Como associado da Amazon, ganho com compras qualificadas.

Para quem é este guia

Placas que usam o firmware AMI Aptio V em placas-mãe chinesas X99 (LGA2011‑3) — Huananzhi, Jingsha, Kllisre, Machinist, Qiyida, JGINYUE, e os diversos rebrandings/clones que compartilham as mesmas bases de firmware. Muitas dessas placas saem de fábrica a partir do mesmo punhado de imagens de BIOS base, e é por isso que exatamente os mesmos QuestionIDs e padrões hexadecimais deste guia (0xC05/0xC06, 6710/9000) aparecem em placas de marcas completamente diferentes.

Por que isso funciona

No firmware AMI Aptio V, a interface de usuário “Setup” da BIOS é um conjunto de formulários descritos por IFR (Internal Forms Representation) dentro do módulo Setup/Platform. Cada controle tem um QuestionID, e o AMITSESetupdata informa ao Text Setup Engine (TSE) quais formulários estão visíveis e como estão vinculados na árvore de menus. Em muitas placas X99 chinesas, o formulário “Memory Timings & Voltage Override” existe no firmware, mas simplesmente não está vinculado a nenhum menu visível (e/ou seu acesso está restrito), então você não consegue alcançá-lo.

  • Este guia extrai os módulos relevantes (Platform e AMITSESetupdata), lê o IFR para encontrar os QuestionIDs corretos e edita alguns identificadores de 16 bits para que o formulário oculto seja vinculado em “Memory Configuration”.
  • Não estamos adicionando código novo; estamos expondo um formulário já existente ao alterar o roteamento/visibilidade do menu. É por isso que funciona em muitas bases de BIOS semelhantes, desde que você localize os IDs corretos para a sua build.
  • IDs e offsets exatos variam entre revisões de BIOS. Por isso o processo começa com a análise do IFR para descobrir seus próprios QuestionIDs antes de fazer o patch dos padrões de bytes no AMITSESetupdata e no Platform.

Antes de começar

  1. Faça backup da sua imagem de BIOS completa (16 MB) usando qualquer método suportado pela sua placa — seja via software (Intel FPT, AFUWIN, AFUDOS) ou um programador SPI externo.
  2. Confirme seu método de gravação com antecedência. Certifique-se de que consegue tanto ler quanto gravar no seu chip usando a ferramenta escolhida antes de aplicar qualquer modificação.
  3. Baixe os softwares necessários.

Softwares necessários

Ferramenta Finalidade Versão usada neste guia
AMIBCP 5 Navegar pela árvore de menus do Setup, verificar o estado antes/depois 5.02.0034
Editor hexadecimal Aplicar o patch nos módulos extraídos HxD (qualquer editor hexadecimal confiável funciona)
UEFITool Extrair/substituir módulos dentro da imagem da BIOS 0.28.0
IFRExtractor Extrair formulários IFR em texto, encontrar QuestionIDs 0.3.6

Você pode encontrar todos os softwares necessários neste canal do Telegram.

Passo 1 — Confirme que o menu de timing de memória existe, mas está oculto

amibcp 1

 

No AmiBCP, abra o dump da sua BIOS, expanda o nó “IntelRCSetup” e você verá o padrão típico de firmwares chineses: o item “Memory Timings & Voltage Override” está visível em “IntelRCSetup”, mas o acesso a ele está bloqueado — não é possível alcançá-lo pelo menu principal.

O nosso objetivo é mover “Memory Timings & Voltage Override” para o menu “Memory Configuration”.

Passo 2 — Extraia os dois módulos com o UEFITool

Abra o dump da sua BIOS no UEFITool. Estamos interessados em dois módulos: “Platform” e “AMITSESetupdata”. Ambos os módulos ficam em “Intel Image” > “Bios Region” > o penúltimo ramo expansível.

Algumas versões do UEFITool/firmwares de placas rotulam o ramo de nível superior como “UEFI image” em vez de “Intel Image”. Se você não vir “Intel Image”, procure por “UEFI image” — é a mesma coisa com outro nome.

Encontre o módulo “Platform”, expanda-o até chegar em “PE32 image”. Depois clique com o botão direito e escolha “Extract body”. Salve o arquivo como “pl.bin”.

uefitool 4

 

Encontre o módulo “AMITSESetupdata”, expanda-o até chegar em “Freeform subtype GUID”. Depois clique com o botão direito e escolha “Extract body”. Salve o arquivo como “fe.bin”.

uefitool 5

 

É melhor não fechar o UEFITool — vamos precisar dele novamente no Passo 5.

Passo 3 — Encontre seus QuestionIDs com o IFRExtractor

Abra o IFRExtractor e carregue o arquivo “pl.bin” que você salvou no passo anterior. Depois de clicar em “Extract”, o utilitário salvará um arquivo de texto chamado “pl IFR.txt” na mesma pasta.

Abra-o e procure pela string “memory frequency”. Ela pode aparecer várias vezes no arquivo; estamos interessados na primeira ocorrência.

Anote o valor do QuestionID (no nosso exemplo, é 0xC05). Também vamos precisar do próximo “QuestionID”, no nosso caso 0xC06.

notepad 1 1

Se você também vir 0xC05 e 0xC06 na sua placa, é bem provável que esteja em uma das bases de BIOS chinesas mais comuns (compartilhada por muitas placas derivadas de Jingsha/Kllisre) — e o restante deste guia deve se aplicar quase byte a byte.

Convertendo o QuestionID para o padrão hexadecimal que você vai procurar

Você precisa de cada QuestionID como uma string hexadecimal de 4 dígitos com bytes invertidos:

  1. Complete o QuestionID com zeros até ter 4 dígitos hexadecimais (zero à esquerda, se necessário): 0xC05 → 0C05.
  2. Divida em pares de bytes: 0C 05.
  3. Inverta a ordem dos bytes: 05 0C.
  4. Concatene: 050C.

Alguns exemplos para clarear: 0xC36 → 360C; 0xC78 → 780C; 0xCB3 → B30C.

Vamos usar uma tabela para acompanhar esses valores — certifique-se de criar sua própria tabela e preenchê-la com os IDs exatos que você descobrir na sua BIOS, para não se confundir depois.

Célula O que é Valor
V1 QuestionID #1 (0xC05, convertido) 050C
V2 QuestionID #2 (0xC06, convertido) 060C

Passo 4 — Aplique o patch em ambos os módulos no editor hexadecimal

Abra os dois módulos salvos anteriormente: pl.bin e fe.bin.

4a. Faça primeiro o patch do fe.bin

Procure pelo valor hexadecimal “81000000”.

Observe os 12 caracteres à direita do valor encontrado. No nosso caso, são 6710, 9000 e 1D00 (seus valores podem ser diferentes).

Anote 6710 na sua tabela de acompanhamento. Ao lado, adicione 6910 — calculado somando 0x200 a 6710. Você também vai precisar anotar 9000 (sem necessidade de cálculo aqui) e 1D00 para os próximos passos.

💡 Como Funciona a Soma Hexadecimal (+0x200)

O sistema hexadecimal (base 16) usa os números 0–9 e as letras A–F. Somar 0x200 simplesmente aumenta em 2 o segundo dígito a partir da esquerda:

  • 6710 + 200 = 6910 (7 + 2 = 9)
  • 6D10 + 200 = 6F10 (D + 2 = F, onde D=13 e F=15)

📌 Dica: Se tiver dúvidas, abra a Calculadora do Windows, mude para o modo Programador, selecione HEX e faça a soma por lá.

Os mesmos dados em forma de tabela (valores V1–V2 mantidos do Passo 3, mais os novos deste passo):

Célula O que é Valor
V1 QuestionID #1 (0xC05, convertido) 050C
V2 QuestionID #2 (0xC06, convertido) 060C
V3 Valor encontrado no fe.bin (à direita de 81000000) 6710
V4 V3 + 0x200 6910
V5 Segundo valor encontrado no fe.bin (à direita de 81000000) 9000
V6 Terceiro valor encontrado no fe.bin (à direita de 81000000) 1D00

Volte ao editor hexadecimal. Agora procure pelo valor salvo anteriormente 050C (Célula V1), mas antes converta-o para 0000050C0000, adicionando quatro zeros no início e quatro zeros no final.

 

Agora observe com atenção a imagem abaixo e faça as áreas próximas ao valor hexadecimal encontrado corresponderem exatamente a ela. Note que os valores destacados em vermelho vêm da nossa tabela, enquanto os valores destacados em azul devem ser definidos exatamente como no screenshot, independentemente da sua placa.

 

Agora faça a mesma operação para o valor 060C (Célula V2), que também convertemos para 0000060C0000.

 

 

Em seguida, procure novamente por 0000050C0000 (Célula V1 com quatro zeros antes e quatro zeros depois). Desta vez, preste atenção aos quatro caracteres destacados com uma moldura verde: 8A00. Adicione-os à tabela.

 

Célula O que é Valor
V1 QuestionID #1 (0xC05, convertido) 050C
V2 QuestionID #2 (0xC06, convertido) 060C
V3 Valor encontrado no fe.bin (à direita de 81000000) 6710
V4 V3 + 0x200 6910
V5 Segundo valor encontrado no fe.bin (à direita de 81000000) 9000
V6 Terceiro valor encontrado no fe.bin (à direita de 81000000) 1D00
V7 Valor da moldura verde (encontrado ao procurar pela Célula V1 com quatro zeros antes e quatro zeros depois) 8A00

 

Lembra do valor hexadecimal “81000000” que buscamos antes? Procure por ele novamente.

À direita do valor encontrado, ainda temos 6710 (Célula V3), 9000 (Célula V5) e 1D00 (Célula V6). Substitua 1D00 (Célula V6) por 8A00 (Célula V7).

Com isso, finalizamos as alterações no “fe.bin”. Salve o arquivo e siga para o “pl.bin”.

4b. Faça o patch do pl.bin

Procure pelo valor hexadecimal “050C” (Célula V1). Ele vai aparecer várias vezes no arquivo; precisamos da instância que é precedida por caracteres semelhantes ao nosso “67106910” (Célula V3 e V4).

hex 9 1

Tenha em mente que dificilmente você verá esses valores exatos. Você deve selecionar a entrada que mais se parece com os seus próprios valores extraídos na sua tabela.

Depois de pesquisar um pouco, encontramos a seção correta:

Substitua os caracteres por “67106910” (Célula V3 e V4):

Agora repita todo o procedimento de busca e substituição, mas para o valor hexadecimal “060C” (Célula V2):

Isso conclui as alterações no arquivo “pl.bin”. Salve suas alterações.

Passo 5 — Reinsira os módulos com patch usando o UEFITool

Volte ao UEFITool e localize os dois módulos: “Platform” e “AMITSESetupdata”.
Para o módulo “Platform”, expanda-o até “PE32 image”. Depois clique com o botão direito e escolha “Replace body”. Selecione o “pl.bin” recém-modificado.

uefitool 6

Para o módulo “AMITSESetupdata”, expanda-o até “Freeform subtype GUID”. Depois clique com o botão direito e escolha “Replace body”. Selecione o “fe.bin” recém-modificado.

uefitool 7

Agora salve sua BIOS modificada com um novo nome (File > Save image file) — não sobrescreva o seu dump original.

Passo 6 — Verifique no AMIBCP antes de gravar

Abra a BIOS que você acabou de salvar e confirme que o menu de controle de timing de memória apareceu e está acessível a partir do item “Memory Configuration”.
amibcp 2

É isso. Tudo o que resta é gravar sua BIOS modificada usando qualquer método adequado para a sua placa.

Verificações após a gravação

  1. Desligue completamente, limpe a CMOS (jumper ou bateria), depois ligue e entre na BIOS.
  2. Carregue as configurações otimizadas padrão (Optimized Defaults), salve e saia (Save & Exit), depois entre novamente na BIOS.
  3. Navegue até Advanced → Memory Configuration e confirme que “Memory Timings & Voltage Override” agora está visível e selecionável.
  4. Abra o menu e confirme que os campos de timing (por exemplo, tCL, tRCD, tRP, tRAS, Command Rate) estão presentes e editáveis — não apenas um menu suspenso de frequência.
  5. Se o menu estiver ausente ou abrir uma página em branco, volte para a sua BIOS de backup e reconfira os IDs/offsets que você editou (veja a Solução de Problemas abaixo).
  6. Depois de aplicar timings personalizados e salvar as alterações na BIOS, inicie o sistema operacional e verifique se os novos valores foram realmente aplicados usando ferramentas como o CPU-Z (aba Memory) ou o AIDA64. Depois de confirmar, rode um teste de estabilidade para garantir que o sistema está completamente estável.

Solução de problemas

Não consigo encontrar o módulo “Platform” no UEFITool.
Verifique em um ramo chamado “UEFI image” em vez de “Intel Image” — algumas combinações de firmware/UEFITool usam esse rótulo. Se nenhum dos dois existir, sua placa pode usar uma base de firmware diferente da que este guia aborda.

O menu aparece depois de gravar, mas mostra apenas um menu suspenso de frequência — sem timings reais.
Provavelmente você vinculou o formulário errado. Volte ao Passo 3 e confirme que usou a primeira ocorrência de “memory frequency” no dump do IFR.

O AMIBCP mostra a aba Setup Configuration como ausente/corrompida depois do patch.
Isso indica uma edição hexadecimal desalinhada — na maioria das vezes, uma contagem errada de bytes ao preencher/substituir um dos padrões de busca. Refaça o Passo 4 a partir de uma cópia nova dos módulos extraídos, em vez de tentar aplicar o patch sobre um arquivo já parcialmente editado.

Os valores encontrados na minha placa não correspondem aos dos screenshots (por exemplo, 6D10 em vez de 6710).
Isso é esperado — esses valores são específicos da sua build de BIOS. Use o que o seu editor hexadecimal realmente encontrar, aplique a regra +0x200 para obter o segundo valor e leve os seus próprios valores pelo resto do guia, em vez dos valores de exemplo.

A placa não dá POST (ou não liga) após a gravação.
Limpe a CMOS novamente (jumper ou remoção da bateria, com desconexão total da energia por um minuto). Se ainda assim não inicializar, restaure o seu backup com um programador de hardware (por exemplo, CH341A) — esse é o único caminho de recuperação depois que a placa é brickada.

Créditos e leitura complementar