Ein Pi-hole-ähnlicher DNS-Werbeblocker läuft auf einem $2 ESP32-C3 ohne PSRAM, indem er Blocklisten-Domänen als sortierte 40-Bit-FNV-1a-Hashes im Flash-Speicher speichert. Das Projekt, das auf Tom's Hardware, XDA Developers und Korben präsentiert wurde, fasst mehr als 140.000 Domänen in etwa 0,7 MB Flash mit einer Suchzeit von etwa 10 ms unter Verwendung von nur etwa 50 KB RAM unter. Im Gegensatz zu typischen ESP32-Senken, die Domänen-Strings in den RAM laden und PSRAM erfordern, vermeidet dieser Ansatz RAM-Druck durch binäre Suche von Hashes direkt aus dem Flash.
Bei 141k Domänen sind Hash-Kollisionen vernachlässigbar (~0); bei 537k Domänen tritt etwa eine Kollision auf. Die 40-Bit-Hash-Größe balanciert Flash-Nutzung und Kollisionsrisiko: 32 Bit erhöhen Kollisionen, 64 Bit verschwenden Platz. Die gleiche Methode lässt sich auf größere Chips wie ESP32-S3 hochskalieren, die etwa 2,7 M Domänen in 16 MB Flash im Vergleich zu etwa 466 k für Strings in 8 MB PSRAM unterbringen.
Die Hardware-Anforderungen umfassen ein beliebiges ESP32-C3-Board mit 4 MB Flash (getestet auf C3 Super Mini), das über USB mit Strom versorgt wird. Ein druckbarer Gehäuse ist verfügbar, wobei Antennenabstand und Belüftung für die thermische Verwaltung empfohlen werden. Firmware und Blocklisten-Update erfolgen über Wi-Fi nach dem initialen USB-Flash mit PlatformIO.
Das Web-Dashboard ermöglicht die Verwaltung über /ban, /addblock usw., geschützt durch WEB_USER/WEB_PASS/OTA_PASS. Die Build-Schritte beinhalten das Kopieren der Secrets-Vorlage, das Erstellen der Blocklisten-Hash-Tabelle und das Flashen der Firmware + Dateisystem.
Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing