[AX] esp-miner-fix
> build V0.11 · ESP-IDF v5.5.3

Firmware Bitaxe sem bug de shares zeradas

Fork corrigido do ESP-Miner (bitaxeorg) para BM1366 / BM1368 / BM1370 (Gamma). Resolve uma regressão silenciosa de validação de nonce, além de hardening de segurança e um governador térmico gradual — tudo auditado linha a linha e documentado.

Resultados reais, direto do hardware

Dois Bitaxe Gamma (BM1370, board 601) a 600 MHz / 1200 mV — capturado direto da API, sem retoque.

bitaxe01 · 115200 8N1
hash1,17 TH/salvo 1,224
eficiência16,43 J/THalvo 15,68
erro0,00%
shares42.991137 rej.
uptime1 Dia 22 Horas
bitaxe02 · 115200 8N1
hash1,20 TH/salvo 1,224
eficiência19,73 J/THalvo 19,31
erro0,90%
shares45.55962 rej.
uptime1 Dia 22 Horas

Os números vêm da telemetria que cada Bitaxe publica via MQTT

O que mudou em relação ao original

11 correções sobre a v2.15.1 oficial, mais uma funcionalidade que o upstream não tem, agrupadas por natureza. Os três críticos vêm primeiro: são os que afetam quem já está minerando hoje.

crítico 3

Afetam quem já está minerando: shares perdidas, hardware em risco, travamento.

crítico

Shares zeradas com version-rolling

Com version-rolling negociado, BM1366/68/70 podiam validar nonces usando o midstate SHA-256 errado: hashrate normal na tela, mas zero shares aceitas e nenhum log de erro. Corrigido com um sentinela explícito de "midstate não aplicável".

crítico

Envelope de tensão e frequência por ASIC

O original aceita qualquer valor via API: {"coreVoltage":1999} aplica 1,999 V num chip de 1,15 V, sem barreira no servidor. Aqui cada ASIC tem um envelope próprio — só os presets sem overclockEnabled, teto absoluto por chip com ele — imposto no HTTP, no BAP e também sobre valores já gravados na NVS.

crítico

Uso de memória liberada no Stratum

A troca de extranonce e o encerramento de uma conexão Stratum V2 podiam liberar ponteiros ainda em uso por outra tarefa, derrubando o firmware a partir de dados vindos da pool. Corrigido com locks dedicados e cópias locais em todos os leitores.

estabilidade 3

Mantêm o aparelho de pé e dentro dos limites térmicos e elétricos.

estabilidade

Governador térmico gradual

O original corta a mineração de forma abrupta ao esquentar. Aqui a frequência é reduzida progressivamente conforme a temperatura sobe, evitando paradas totais desnecessárias.

estabilidade

Throttle por queda de tensão de entrada

Reduz a frequência do ASIC automaticamente quando a fonte de 5V começa a cair, evitando reinícios por brownout em vez de só reagir depois que o reset já aconteceu.

estabilidade

Sensores mudos viram falha explícita

Os drivers devolviam o último valor bom quando o sensor parava de responder, então um sensor de temperatura morto deixava o firmware em frequência cheia sem nenhuma proteção térmica. Agora vira falha de hardware declarada, com ventoinha a 100%, e o throttle por tensão é suspenso enquanto a leitura estiver velha.

segurança 2

Endurecem o que processa dado vindo da rede e do próprio ASIC.

segurança

Parsing de rede endurecido

Correção de estouro de buffer no scan Wi-Fi (redes com mais de 20 SSIDs visíveis), de um bug de sinal no parser DNS do portal cativo, e de leituras fora de limite no parsing da coinbase da pool.

segurança

Drivers de ASIC e sensores mais defensivos

Checagens de nulo e de limites nos drivers BM13xx, no regulador TPS546 e no cálculo de RPM dos fans — eliminando cenários de crash/reset espúrio observados em auditoria de código.

frontend 3

Corrigem a interface AxeOS servida pelo próprio aparelho.

frontend

Vazamento de inscrição no AxeOS

Corrigido um vazamento de subscription no editor de dispositivos do modo swarm que podia disparar gravações de configuração indevidas ao trocar de dispositivo na interface.

frontend

Senha do pool preservada ao salvar

Salvar a página de pools sem redigitar a senha gravava o literal "x" e derrubava a conexão com a pool. O campo em branco agora mantém a senha já armazenada.

frontend

Varredura do swarm não derruba mais a interface

A busca por dispositivos abria até 256 conexões simultâneas contra um servidor que aceita 20, expulsando o próprio WebSocket da sessão. Concorrência reduzida, contagem regressiva pausada com a aba oculta e listas que não são mais recalculadas a cada ciclo de renderização.

novidade 1

Não existe no upstream: foi construída neste fork.

novidade

Telemetria por MQTT

Cada aparelho publica hashrate, temperaturas, potência, shares e uptime num broker MQTT externo, por TLS 1.2 — levando os números para fora da rede local sem abrir porta no roteador.

Tópico bitaxe/<identificação>/telemetry, com identificador único derivado do MAC e editável na tela. Intervalo configurável, padrão 30 s.

A mineração nunca depende do broker: se ele cair, o hash continua, o log não é inundado e a publicação volta sozinha em segundos assim que a rede retorna.

Download

Grave os dois arquivos abaixo (firmware + interface web) com o ESP Web Flasher ou o esptool — os endereços de gravação estão logo depois dos downloads.

.bin

esp-miner.bin

Firmware principal — versão V0.11 · 1,68 MiB · offset 0x10000

sha256 f81ee76344ece11b454be15722f246c2d6920f0845c85763ba408edb6dc113af

baixar
.bin

www.bin

Interface web AxeOS embutida — 3,00 MiB · offset 0x410000

sha256 af23de0fe4c1b9a01d017b1172fcd821d34ef95321c84bbd0b4876d9f8f0a1b6

baixar

Confira o hash dos dois arquivos antes de gravar — o comando muda conforme o sistema:

  • Windows certutil -hashfile esp-miner.bin SHA256
  • Linux sha256sum esp-miner.bin www.bin
  • macOS shasum -a 256 esp-miner.bin www.bin

Onde gravar cada arquivo

Cada .bin vai num endereço diferente da flash. Gravar no offset errado derruba o aparelho — confira antes de dar enter:

  • esp-miner.bin0x10000 (partição factory)
  • www.bin0x410000 (partição www)

Os endereços abaixo valem para o esptool e para o ESP Web Flasher. Com o esptool, os dois arquivos numa tacada só:

esptool --port COM3 write-flash 0x10000 esp-miner.bin 0x410000 www.bin

Em versões mais antigas do esptool o comando é esptool.py e o subcomando usa underscore (write_flash) — os endereços são os mesmos. No ESP Web Flasher, informe esses offsets nos campos de endereço de cada arquivo.

! Faça backup antes de atualizar

Este é um fork não-oficial — use por sua conta e risco. Antes de gravar o novo firmware, faça um backup da sua configuração NVS (pool, carteira, Wi-Fi, frequência/tensão) por uma das duas formas abaixo.

Opção 1 — backup rápido (recomendado para a maioria)

  1. Acesse a interface do seu Bitaxe pelo navegador (ex: http://IP_DO_BITAXE).
  2. Abra http://IP_DO_BITAXE/api/system/info e salve o JSON retornado num arquivo de texto no seu computador — ele tem pool, usuário, frequência, tensão e demais ajustes atuais.
  3. Depois de atualizar, se algo vier com valor errado, reaplique manualmente pela aba de configurações da interface, usando o JSON salvo como referência.

Opção 2 — backup completo da partição NVS (restauração exata)

Precisa do esptool instalado e do Bitaxe conectado via USB. Descubra a porta serial (ex: COM3 no Windows, /dev/ttyUSB0 no Linux) e rode:

esptool --port COM3 read-flash 0x9000 0x6000 nvs_backup.bin

Isso grava os 24 KB inteiros da partição nvs num arquivo local. Para restaurar, caso algo dê errado:

esptool --port COM3 write-flash 0x9000 nvs_backup.bin

Depois de atualizar

  • Confirme em /api/system/info que a pool, o frequency/voltage e o Wi-Fi vieram corretos.
  • Se o dispositivo não conectar ou reiniciar em loop, restaure o firmware original antes de restaurar o NVS.

Apoie o projeto

Manter e auditar este firmware leva tempo. Se este trabalho te ajudou, uma forma de apoiar sem custo extra é comprar pelo link de afiliado abaixo.

Minerador Bitcoin Bitaxe Gamma 601 — 1,5 TH/s, 25W

O mesmo hardware (BM1370) para o qual este firmware corrigido foi auditado e testado.

ver preço atual na loja

Ver no aliexpress

Divulgação: este é um link de afiliado. Ao comprar por ele, você não paga nada a mais e ainda ajuda a manter este projeto.