So läuft Windows 95 dank Tiny386 auf einem ESP32-S3.

Letzte Aktualisierung: 17/11/2025
Autor: Holger
  • Tiny386 emuliert einen i386 auf einem ESP32-S3 und startet. Windows 95 mit Video, Netzwerk und Ton.
  • Mäßige Leistung: Starten ~4 Minuten; Notepad, Solitaire und Internet Explorer funktionieren.
  • Code in C99 (~6k LOC), BSD-3-Lizenz; WebAssembly-Demo verfügbar.
  • Aktuelle Unterstützung für JC3248W535; mögliche Portabilität auf andere Mikrocontroller.

Windows 95 auf ESP32-S3

Was vor Kurzem noch wie ein Forumswitz wirkte, ist nun Realität: Windows 95 bootet dank eines minimalistischen x86-Emulators namens Tiny386 auf einem ESP32-S3. Auf einem kleinen Entwicklerkit mit 3,5-Zoll-Touchscreen startet das Microsoft-System, braucht ein paar Minuten und läuft etwas träge, öffnet aber Notepad, spielt Solitaire und lädt sogar eine alte Website über das Netzwerk.

Der verantwortliche Entwickler ist He Chunhui (hchunhui), der einen i386-Emulator von Grund auf in C99 programmierte und auf den Espressif-Mikrocontroller portierte. Bemerkenswert ist nicht nur, dass er funktioniert, sondern auch, dass es laut Informationen auf GitHub, Hackster/Hackaday und Fachmedien vermutlich das erste Mal ist, dass Windows auf ESP32- Hardware gestartet werden konnte . Zuvor wurden bereits Meilensteine ​​erreicht, wie das Booten von Linux 5.0 auf anderen ESP32-Boards und eines Linux-6.3-Images auf dem Olimex ESP32-S3-DevKit-LiPo.

Was ist Tiny386 und wer steckt dahinter?

Tiny386 ist im Wesentlichen ein virtueller x86-PC, geschrieben in C99 und für den mobilen Einsatz konzipiert . Kernstück ist ein – in den Worten des Autors – „einfacher und unkomplizierter“ Intel i386 -CPU-Emulator mit einem klaren Ziel: möglichst viel 16-Bit- und 32-Bit-Software auszuführen, ohne sie mit unnötiger Komplexität zu belasten.

Die virtuelle CPU implementiert den 80386-Befehlssatz und ergänzt ihn bei Bedarf um 486- und 586-Befehle, um moderne Linux-Kernel und aktuelle Windows-Systeme zu starten. Der Kernel umfasst etwa 6.000 Codezeilen (LOC), was angesichts seiner Rechenleistung überraschend ist, und beinhaltet optional eine x87-FPU-Emulation für Software, die diese benötigt.

Wie bei jedem jungen Projekt gibt es noch Lücken zu schließen. Tatsächlich fehlen Funktionen wie Debugging, Hardware-Tasks und bestimmte Berechtigungsprüfungen . Dennoch bleibt die Grundaussage bestehen: Für die meisten klassischen DOS/Windows 3.x/95-Programme und sogar zum Booten moderner Linux-Distributionen ist die aktuelle Implementierung ausreichend.

Wie man einen i386-PC auf einem ESP32-S3 emuliert

Um seine Bedeutung zu verstehen, sollte man sich vor Augen führen, was ein 80386 war: ein 32-Bit-x86-Prozessor mit sechsstufiger Pipeline und integrierter MMU, der Mitte der 80er-Jahre auf den Markt kam. Er bildete die Grundlage für eine ganze Ära von PCs, Laptops und sogar Servern und prägte mit seinen Real- und Protected-Modi die Entwicklung von Software maßgeblich.

Der ESP32-S3 hingegen ist ein aktueller, kostengünstiger Mikrocontroller mit zwei Tensilica Xtensa LX7-Kernen mit 240 MHz, WLAN/Bluetooth-Konnektivität und sehr geringem Stromverbrauch. Obwohl der Vergleich nicht ganz direkt ist (Emulation hat immer ihre Nachteile), ermöglichen die Rechenleistung dieses SoC und die Unterstützung von externem PSRAM-Speicher die Simulation eines funktionsfähigen 386-Rechners mit grundlegender Grafik, Netzwerkfunktionen und Sound – alles innerhalb des Mikrocontrollers selbst.

Der Clou liegt in einem pragmatischen Ansatz: Die CPU wird einfach emuliert, fehlende essentielle Befehle für moderne Anwendungen werden hinzugefügt, und die restliche PC-Funktionalität basiert auf virtuellen Peripheriegeräten, die bereits in anderen Projekten getestet wurden. Diese Kombination aus Minimalismus und cleverem Recycling ermöglicht es dem System, Windows 95 ohne Absturz zu starten.

Emulierte Peripheriegeräte und Firmware

Um das PC-Ökosystem zu vervollständigen, verwendet Tiny386 Code von TinyEMU und QEMU , um die klassischen Komponenten eines ISA-Rechners der frühen 90er-Jahre zu emulieren. BIOS und VGABIOS stammen hingegen aus dem SeaBIOS-Projekt, wodurch das Booten von Systemen ohne proprietäre ROMs vereinfacht wird.

Die Liste der unterstützten Peripheriegeräte umfasst Komponenten, die jedem, der schon einmal mit klassischer PC-Emulation experimentiert hat, bestens vertraut sind: Interrupt-Controller, Timer, Tastatur, Video, Festplatte, Netzwerk und Audio . Im Detail:

  • Interrupt-Controller 8259 (PIC) und Timer 8254 (PIT), unerlässlich für das Systemtiming.
  • 8042 und Tastatur-Controller CMOS-RTC für Uhrzeit und Grundeinstellungen.
  • VGA ISA mit Bosch VBE um kompatible Videomodi anzubieten.
  • IDE-Festplattencontroller für Lagerung.
  • NE2000 ISA-Netzwerkkarte, ein Klassiker, der weit verbreitet und leicht zu emulieren ist.
  • DMA ISA 8257, PC-Lautsprecher Adlib OPL2 und Sound Blaster 16 für den Ton.
  Get-ComputerInfo vs. SystemInfo: Echte Unterschiede, Verwendungsmöglichkeiten und Tricks

Dank dieses Katalogs kann das System nicht nur Grafiken anzeigen und ein Windows mit Benutzeroberfläche starten, sondern verfügt auch über Netzwerkverbindungen und kann mit den entsprechenden Treibern Sound abspielen , was das Erlebnis eines „alten PCs“ auf überraschend vollständige Weise abrundet.

Referenzhardware: JC3248W535 mit ESP32-S3

Die Demonstration, die alle in ihren Bann gezogen hat, basiert auf dem Guition JC3248W535 , einem Entwicklungsboard mit einem ESP32-S3 und einem 3,5-Zoll-Touchscreen-LCD. Dieses Entwicklerkit ist auf Plattformen wie AliExpress für etwa 25–30 US-Dollar erhältlich und enthält, soweit wir das beurteilen können, alles, was zum Spielen von Pocket-PC-Spielen im Stil der 90er-Jahre benötigt wird.

Ein wichtiger Punkt: Der USB-C-Anschluss dieser Platine scheint für Programmierung und Debugging gedacht zu sein, nicht als standardmäßiger ESP32-S3- USB -Peripherie-Host . Trotzdem ließe sich mit dem USB-OTG-Peripheriegerät des Chips ein Setup mit einem USB-Hub realisieren , an den Tastatur und Maus angeschlossen werden könnten – ein Mini-386 mit direkter kabelgebundener Eingabe.

Aktuell konzentriert sich der offizielle Projektsupport auf dieses spezielle Board, und der Autor gibt an, dass nur der ESP32-S3 nativ unterstützt wird. Die Architektur des Emulators legt jedoch Wert auf Portabilität: Mit vertretbarem Aufwand ließe er sich an andere Mikrocontroller und Plattformen anpassen und so die Unterstützung weiterer Formate und Displays ermöglichen.

Leistung und Benutzererfahrung

Die Frage, die sich alle stellen: Wie läuft es? Kurz gesagt: „ Es funktioniert, mit etwas Geduld .“ Ein vollständiger Systemstart von Windows 95 dauert in der öffentlichen Demo etwa vier Minuten. Nach dem Hochfahren ist das System zwar langsam, aber durchaus brauchbar: Man kann Notepad öffnen, Solitaire spielen und sogar den Internet Explorer starten.

Die Netzwerkverbindung ist implementiert, sodass der Emulator einfache Webseiten laden kann . Die Demo zeigt, wie er info.cern.ch öffnet, die erste Webseite der Geschichte, und verleiht der Szene von Windows 95 auf einem Mikroprozessor für unter 30 Euro einen Hauch von Nostalgie.

Leistungstechnisch ist es verständlich, dass das System an seine Grenzen stößt: Die Emulation verursacht zusätzlichen Aufwand, und dem ESP32-S3 fehlt die Grafikbeschleunigung eines PCs. Trotzdem entsteht der Gesamteindruck eher von „am Limit nutzbar“ als von einem simplen „Es startet und stürzt ab“. Verdoppelt man die Videogeschwindigkeit – ein beliebter Tipp unter denen, die das System bereits kennen –, wird es deutlich besser handhabbar.

Übrigens: Tiny386 kann Doom ausführen – der klassische Test: „Wenn es Doom nicht schafft, taugt es nichts.“ Und dank der virtualisierten Soundgeräte (PC-Lautsprecher, Adlib OPL2 und SB16) ist auch der Audioaspekt im Rahmen der Hardwarebeschränkungen bestmöglich abgedeckt.

Unterstützte Betriebssysteme und Software

Der Katalog, der bereits in einem Video gezeigt wurde, umfasst Windows 3.1/3.2 (einschließlich der chinesischen Variante von 3.1) und Windows 95. Darüber hinaus betont der Autor, dass Tiny386 „ die meisten 16/32-Bit-Softwareprogramme ausführen sollte “ und dass es mit der 486/586-Befehlssatzerweiterung möglich ist, sowohl relativ moderne Linux-Kernel als auch Windows NT aus dieser Zeit zu booten.

Eine besonders interessante Funktion ist, dass Tiny386 den Linux-Kernel direkt booten kann und dabei ein herkömmliches BIOS umgeht, was bestimmte Testabläufe vereinfacht. Für alle, die das Projekt erkunden möchten, ohne Hardware selbst zusammenzubauen, bietet es außerdem eine WebAssembly-Demo , die Windows 3.2 in einem Webbrowser startet, und erwähnt Alternativen wie FreeDOS oder JSLinux für diejenigen, die Emulationserfahrungen online vergleichen möchten.

Neben dem bereits erwähnten Doom haben sich auch die Standardprogramme von Windows 95 (Notepad, Solitaire und Internet Explorer ) als funktionsfähig erwiesen, wenn auch mit den üblichen Leistungseinschränkungen. Daraus lässt sich schließen, dass die Grafik-, Ein-/Ausgabe- und Netzwerkarchitektur recht gut integriert ist.

  So beheben Sie häufige Windows-Registrierungsfehler: Vollständige und aktualisierte Anleitung

Wie Eingänge und Ports gehandhabt werden

Auf dem JC3248W535-Board ist die Verwendung physischer Peripheriegeräte durch den programmierorientierten USB-C-Anschluss eingeschränkt . Um diese Einschränkung zu umgehen, können in der aktuellen Implementierung Tastatur und Maus per WLAN an den Emulator umgeleitet werden, wodurch eine Steuerung ohne dedizierte Anschlüsse auf dem Entwicklungskit möglich ist.

Zukünftig wären Entwicklungen denkbar, die den USB-OTG-Anschluss des ESP32-S3 als Host nutzen und so einen Hub für den Anschluss von Tastatur und Maus ermöglichen. Dies würde die Bedienung deutlich vereinfachen, ohne auf Touchscreen oder Fernbedienung angewiesen zu sein.

Lizenz-, Code- und Testressourcen

Das Projekt wird unter der 3-Klausel-BSD-Lizenz veröffentlicht , die Wiederverwendbarkeit und Portabilität fördert. Der vollständige Quellcode, grundlegende Kompilierungsanweisungen , die Dokumentation der Konfigurationsdatei sowie – für alle, die es eilig haben – vorkompilierte , flashbare Images sind im GitHub-Repository verfügbar.

Zusätzlich zur technischen Dokumentation gibt es eine Browser-Demo (GitHub Pages), mit der man sich einen Eindruck vom Startvorgang und der Systemleistung von Windows 3.2 verschaffen kann – ganz ohne zusätzliche Hardware. Wer tiefer in die Materie einsteigen möchte, findet Informationen und Diskussionen auf Seiten wie Hackster.io und Hackaday.io sowie in Communities wie /r/hardware , wo solche Retro-Technikprojekte oft für angeregte Gespräche sorgen.

Medien wie CNX Software und Tom's Hardware haben über die Entwicklung berichtet und dabei Details wie die Liste der emulierten Peripheriegeräte , die Abhängigkeit von SeaBIOS für BIOS/VGABIOS und den aktuellen Stand der Unterstützung für das JC3248W535-Board hervorgehoben. Tatsächlich stammt ein Teil des Interesses aus der Community – dank Hinweisen wie denen von Zoobab –, was erklärt, warum das Projekt in der Maker-Szene so schnell an Bedeutung gewonnen hat.

Von Linux auf AVR zu Windows 95 auf ESP32‐S3

Um das Ganze in Relation zu setzen: Wer sich noch an die Versuche erinnert, Linux auf 8-Bit-Mikrocontrollern (wie AVR) zu starten, weiß, wie endlos das dauern konnte. Im Vergleich dazu wirkt ein ESP32-S3, der einen 386er mit Windows 95 emuliert, geradezu „schnell“ und ist sicherlich viel praktischer.

Auch im ESP32-Ökosystem wurden bereits Erfolge erzielt: Linux 5.0 auf ESP32-Boards und, erst kürzlich, ein Linux-6.3-Image auf dem Olimex ESP32-S3-DevKit-LiPo . Doch die Einführung von Windows auf dieser Mikrocontroller-Familie markiert einen Wendepunkt, da die Zielsetzung einzigartig ist und die Ausführung einer klassischen grafischen Umgebung eine anspruchsvolle Aufgabe darstellt.

Aktuelle Einschränkungen und Verbesserungsmöglichkeiten

Die Liste der noch nicht implementierten Funktionen umfasst den integrierten Debugger , die Hardware-Aufgabenverwaltung und bestimmte Berechtigungsprüfungen sowie die unvermeidlichen Leistungsengpässe, die bei reiner Emulation auftreten. Ein weiterer Nachteil ist, dass die offizielle Unterstützung derzeit auf den JC3248W535 beschränkt ist , was die Auswahl an sofort verfügbaren Displays und Zubehör einschränkt.

Positiv hervorzuheben ist, dass Tiny386s Ansatz so unkompliziert ist, dass er deutliches Optimierungspotenzial bietet : Verbesserungen beim externen Speicher (PSRAM-Latenzen), Feinabstimmung der CPU-Emulation, potenziell kritische Pfade in Grafik- oder Festplattenperipheriegeräten sowie die Nutzung von USB OTG zur Verbesserung der Benutzererfahrung mit realen Geräten. Bei so knappen Ressourcen zählt jede Verbesserung.

Erhaltung, Bildung und Retro-Spaß

Abgesehen von der Tatsache, dass es möglich ist, besitzen Projekte wie dieses einen hohen Bildungs- und Erhaltungswert. Mit Tiny386 können Entwickler und Lehrkräfte historische x86-Umgebungen ohne die immer seltener und empfindlicher werdende Originalhardware auf einer extrem kostengünstigen und energieeffizienten Plattform nachbilden.

Für die Community eröffnet dies die Möglichkeit, alte Software zu testen , das Verhalten von Legacy-Systemen zu dokumentieren und Workshops einzurichten, in denen anhand konkreter Beispiele erklärt wird, wie der Real- und der Protected-Modus des 386 die Entwicklung von Betriebssystemen wie Windows 3.x/95 und die Evolution von Linux beeinflusst haben.

Auch der kulturelle Aspekt sollte nicht unterschätzt werden: Es ist paradox – und durchaus amüsant –, dass wir heute, um uns „leistungsfähig“ zu fühlen, einen Prozessor aus den 80er-Jahren auf einem modernen Prozessor emulieren müssen, obwohl wir Mobiltelefone in der Tasche tragen, die tausendfach leistungsfähiger sind als diese ursprünglichen PCs. Dieser Kontrast verdeutlicht, wie weit wir gekommen sind und warum Emulation ein so wirkungsvolles Werkzeug ist.

  Hohe CPU-Auslastungsspitzen durch System oder svchost.exe – Schritt-für-Schritt-Anleitung

Interne Architektur: Modi, Speicher und BIOS

Der echte i386 kombinierte Real- und Protected- Mode , Paging und eine MMU und legte damit den Grundstein für virtuellen Speicher auf PCs. Tiny386 bildet die entscheidenden Aspekte dieses Verhaltens nach, damit sich Betriebssysteme darauf wie zu Hause fühlen. Es kombiniert CPU-Emulation mit einer Reihe von Peripheriegeräten, die dort reagieren, wo Software traditionelle ISA-Signale erwartet.

Eine Schlüsselkomponente ist hier SeaBIOS , von dem das verwendete BIOS und VGABIOS abgeleitet sind. Dies gewährleistet Kompatibilität mit weit verbreiteten Boot-Routinen und vermeidet die Abhängigkeit von proprietären ROMs. Gleichzeitig kann der Emulator bei Bedarf das BIOS umgehen und den Linux-Kernel direkt laden – eine sehr nützliche Abkürzung für Tests.

Portabilität und Ökosystem

Da Tiny386 in C99 geschrieben ist und über einen so kompakten CPU-Kern verfügt, ist die Portierung auf andere Plattformen unkompliziert: Man muss lediglich die I/O-Schicht implementieren und die Integration mit Display, Eingabegeräten und Speicher anpassen. Der Autor selbst hebt die Portabilität als größte Stärke des Projekts hervor.

Dies kommt nicht nur denjenigen zugute, die es auf andere Mikroprozessoren oder SBCs bringen wollen, sondern erleichtert es auch Drittanbietern , Peripheriegeräte hinzuzufügen , Optimierungen zu testen oder sogar spezifische Frontends zu erstellen (zum Beispiel, um direkt verschiedene Windows-Images oder Retro-DOS/Linux-Distributionen zu starten).

Was wurde bisher gezeigt?

Das Highlight war die Demonstration der Lebensfähigkeit von Windows 95, das in etwa 4 Minuten hochfuhr . Auch Windows 3.1/3.2, einfaches Surfen im Internet (einschließlich info.cern.ch), Systemanwendungen und legendäre Software wie Doom wurden vorgeführt.

Parallel dazu gibt es eine WebAssembly-Demo , die Windows 3.2 im Browser startet – eine hervorragende Möglichkeit, Emulation ohne Löten oder Flashen zu erleben. Und für technisch versierte Nutzer bietet das Repository Konfigurationen und ein vorkompiliertes Image, um unkompliziert mit dem JC3248W535 loszulegen.

Vergleich mit anderen Erfahrungen auf dem ESP32

Planen Sie Aufgaben in Linux mit Cron und AT

Im Vergleich zu anderen Demos wie Linux auf ESP32 "bare" bietet der Sprung zu emuliertem Windows 95 einen besonderen Reiz: Er erzwingt die Reproduktion eines unberechenbareren Grafik- und Treiberstapels und die Auseinandersetzung mit Schnittstellenerwartungen, die es bei einem Konsolenstart nicht gab.

Die Erfahrungen mit dem Olimex ESP32-S3-DevKit-LiPo und Linux 6.3 zeigen, dass das ESP32-S3-Ökosystem noch Überraschungspotenzial birgt. Tiny386 erweitert diese Grenzen und dringt in den Windows-Bereich vor, wodurch ein Kreis geschlossen wird, der bisher leistungsstärkeren Einplatinencomputern wie dem Raspberry Pi vorbehalten schien.

Am Ende wird deutlich, dass sich mit etwas Einfallsreichtum ein kostengünstiger Mikrochip in eine durchaus überzeugende Retro-Maschine verwandeln lässt, die in der Lage ist, komplette Systeme zu starten und uns eine Meisterklasse in Computerarchitektur der 90er Jahre zu bieten.

Die Geschichte von Tiny386 vereint im Großen und Ganzen mehrere Errungenschaften: eine prägnante i386-Emulation , gut integrierte wichtige Peripheriegeräte, ein offenes BIOS, von Anfang an auf Portabilität ausgelegte Funktionen und eine Demo, die zwar langsam ist, aber das Wesentliche lehrt: dass Windows 95 und Linux auf einem ESP32-S3 mit mehr als ordentlicher Wiedergabetreue laufen können.

Und ja, es hat etwas Poetisches, dass wir, um den „Zauber“ von Windows 95 im Jahr 2025 wiederzuerleben, keinen alten Pentium mehr benutzen werden, sondern einen 6.000-Zeilen-Emulator und ein Entwicklerkit mit Touchscreen im Taschenformat. Programmieren macht manchmal viel mehr Spaß, wenn Nostalgie mit Einfallsreichtum einhergeht.

Arduino CLI-Tutorial
In Verbindung stehender Artikel:
Vollständiges Arduino CLI-Tutorial: Installation, Verwendung und Tipps