Un bloqueador de anuncios DNS estilo Pi-hole funciona en un ESP32-C3 de $2 sin PSRAM almacenando dominios de listas de bloqueo como hashes FNV-1a de 40 bits ordenados en memoria flash. El proyecto, destacado en Tom's Hardware, XDA Developers y Korben, caben más de 140,000 dominios en aproximadamente 0.7 MB de flash con un tiempo de búsqueda de aproximadamente 10 ms utilizando solo aproximadamente 50 KB de RAM. A diferencia de los típicos sumideros ESP32 que cargan cadenas de dominios en RAM y requieren PSRAM, este enfoque evita la presión de RAM buscando hashes directamente desde flash.
Con 141k dominios, las colisiones de hash son despreciables (aproximadamente 0); con 537k dominios, ocurre aproximadamente una colisión. El tamaño de hash de 40 bits equilibra el uso de flash y el riesgo de colisión: 32 bits aumenta las colisiones, 64 bits desperdicia espacio. El mismo método se escala a chips más grandes como ESP32-S3, albergando aproximadamente 2.7M de dominios en 16 MB de flash frente a aproximadamente 466k para cadenas en 8 MB de PSRAM.
Los requisitos de hardware incluyen cualquier placa ESP32-C3 con 4 MB de flash (probado en C3 Super Mini), alimentada por USB. Hay disponible un estuche imprimible, con espacio para antena y ventilación recomendados para la gestión térmica. El firmware y la actualización de la lista de bloqueo se realizan por Wi-Fi después de la programación inicial por USB usando PlatformIO.
El panel web permite la gestión a través de /ban, /addblock, etc., protegido por WEB_USER/WEB_PASS/OTA_PASS. Los pasos de construcción implican copiar la plantilla de secretos, construir la tabla de hash de la lista de bloqueo y flashear el firmware + sistema de archivos.
Fuente: Hacker News · Resumido por HeadlinesBriefing