7 Punkte von GN⁺ 2026-01-26 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Ein Projekt portiert den Klassiker DOOM von 1993 so, dass er auf den Wireless-Earbuds PineBuds Pro läuft und sich über das Web aus der Ferne spielen lässt
  • Es besteht aus vier Komponenten: einem seriellen Server (serial server), der die Earbuds mit dem Webserver verbindet, einem Webserver, einer statischen Webseite und dem DOOM-Port
  • Über eine UART-Verbindung werden rund 2,4 Mbit/s Bandbreite erreicht; die Videoausgabe wird als MJPEG-Stream übertragen, was theoretisch bis zu 27 FPS ermöglicht
  • Die CPU wurde von 100 MHz auf 300 MHz übertaktet; durch Grenzen bei der JPEG-Kodierung liegt die tatsächliche Leistung bei etwa 18 FPS
  • RAM- und FLASH-Beschränkungen wurden durch Optimierungen und die abgespeckte Squashware-WAD-Datei gelöst und zeigen das Potenzial von Hardware-Experimenten auf Basis von Open-Source-Firmware

Projektüberblick

  • DOOM aus dem Jahr 1993 wurde so portiert, dass es auf PineBuds Pro-Earbuds läuft
    • PineBuds Pro werden als die einzigen Wireless-Earbuds erwähnt, die Open-Source-Firmware unterstützen
    • Besucher der Website können sich in eine Warteschlange einreihen und das Spiel aus der Ferne spielen
  • Das Projekt besteht aus vier Teilen
    • dem DOOM-Port, der auf den Earbuds läuft
    • dem seriellen Server, der die Earbuds mit dem Webserver verbindet und den MJPEG-Stream in Twitch umwandelt
    • dem Webserver, der Assets bereitstellt, die Warteschlange verwaltet, Tastatureingaben weiterleitet und den Stream anzeigt
    • der statischen Webseite, die für die Anzeige im Browser und die Kommunikation mit dem Server zuständig ist

Hardware- und Verbindungsaufbau

  • Die Earbuds haben kein Display und senden bzw. empfangen Daten daher über Bluetooth oder UART-Kontaktpads
    • Bluetooth ist mit etwa 1 Mbit/s zu langsam, daher eignet sich UART (2,4 Mbit/s) besser
  • Der Framebuffer von DOOM hat eine Auflösung von 320×200 bei 8-Bit-Farben und ist etwa 96 KB groß
    • Bei UART-Bandbreite wären damit nur etwa 3 FPS übertragbar
    • Um das zu verbessern, wurde ein MJPEG-Stream verwendet
  • Als JPEG-Encoder kommt bitbank2/JPEGENC zum Einsatz
    • Die durchschnittliche JPEG-Framegröße liegt bei 11 bis 13,5 KB
    • Theoretisch sind damit maximal 22 bis 27 FPS möglich

Anpassung der CPU-Leistung

  • Der CPU-Takt der Standard-Firmware liegt bei 100 MHz, wurde hier aber auf 300 MHz erhöht und der Energiesparmodus deaktiviert
  • Ein Cortex-M4F mit 300 MHz reicht für DOOM aus, aber die JPEG-Kodierung wird zum Flaschenhals
    • Die tatsächliche Bildrate liegt bei etwa 18 FPS

Speicheroptimierung (RAM)

  • Standardmäßig sind 768 KB RAM zugänglich; bei deaktiviertem Hilfsprozessor stehen 992 KB zur Verfügung
  • DOOM benötigt 4 MB RAM, daher wurden verschiedene Optimierungen vorgenommen
    • Vorabgenerierung von Lookup-Tabellen, Speicherung von const-Variablen im Flash, Deaktivierung des Caching-Systems, Entfernung unnötiger Variablen usw. sparen Speicher

Problem mit der FLASH-Kapazität

  • Die Standard-WAD-Datei von DOOM 1 ist 4,2 MB groß und überschreitet damit das 4-MB-Speicherlimit der Earbuds
  • Gelöst wurde das mit fragglets abgespeckter Version, der Squashware WAD (1,7 MB)
    • Damit passen alle Assets in den Flash-Speicher

Open Source und Zugänglichkeit

  • Der Projektcode ist in zwei GitHub-Repositories öffentlich verfügbar
    • DOOMBuds: DOOM-Port für die Earbuds
    • DOOMBUDS-JS: unterstützt die Interaktion zwischen Browser und Earbuds
  • Die Website arbeitet mit einer Warteschlange; ab Platz 5 wird der Twitch-Stream auf einen MJPEG-Stream mit niedriger Latenz umgeschaltet

Noch keine Kommentare.

Noch keine Kommentare.