Um bloqueador de anúncios DNS no estilo Pi-hole funciona em um ESP32-C3 de $2 sem PSRAM armazenando domínios de lista de bloqueio como hashes FNV-1a de 40 bits ordenados na memória flash. O projeto, destacado no Tom's Hardware, XDA Developers e Korben, cabe mais de 140.000 domínios em cerca de 0,7 MB de flash com um tempo de pesquisa de cerca de 10 ms usando apenas cerca de 50 KB de RAM. Ao contrário dos típicos poços de sombra ESP32 que carregam strings de domínios na RAM e exigem PSRAM, esta abordagem evita a pressão de RAM pesquisando hashes diretamente do flash.
Com 141k domínios, as colisões de hash são negligenciáveis (~0); com 537k domínios, ocorre aproximadamente uma colisão. O tamanho de hash de 40 bits equilibra o uso de flash e o risco de colisão: 32 bits aumenta colisões, 64 bits desperdiça espaço. O mesmo método se escala para chips maiores como ESP32-S3, contendo aproximadamente 2,7M de domínios em 16 MB de flash versus aproximadamente 466k para strings em 8 MB de PSRAM.
Os requisitos de hardware incluem qualquer placa ESP32-C3 com 4 MB de flash (testada em C3 Super Mini), alimentada via USB. Uma carcaça imprimível está disponível, com espaço para antena e ventilação recomendados para gerenciamento térmico. O firmware e a atualização da lista de bloqueio são feitos via Wi-Fi após o flash inicial USB usando PlatformIO.
O painel web permite gerenciamento via /ban, /addblock, etc., protegido por WEB_USER/WEB_PASS/OTA_PASS. As etapas de construção envolvem copiar o modelo de segredos, construir a tabela de hash da lista de bloqueio e flashar firmware + sistema de arquivos.
Fonte: Hacker News · Resumido por HeadlinesBriefing