This Web Server Runs on a Single 8-Bit Microchip
Who says 8-bit is dead? Maurycyz just built a custom web server and networking stack on an AVR microcontroller.
An 8-bit AVR microcontroller isn’t exactly a beast in terms of computing power, but in the right hands, these chips can still do some amazing things. Over the years, you’ve probably seen all sorts of Arduino-based robots, game consoles, and productivity tools that are powered by an AVR chip. Just recently, a maker known as Maurycyz has taken AVR hacking one step further by developing a public web server that runs on one.
The specific chip used for the server is a Microchip AVR64DD32. It has just a single 8-bit AVR core running at up to 24 MHz with 8 kB of SRAM and 64 kB of flash memory. No, that isn’t much, but Maurycyz managed to not only build a web server within these constraints but also handle network connections.
Rather than using a dedicated Ethernet controller for networking, the project takes a more unconventional route by using SLIP, or Serial Line Internet Protocol, over a standard UART serial connection. SLIP was commonly used during the dial-up era to carry internet traffic over serial links, and Linux still supports it today with built-in tools. By connecting the AVR to a USB-to-serial adapter running at 115200 baud, the microcontroller gains its own network interface without any specialized hardware.
That workaround was necessary because implementing Ethernet directly on the AVR would have been impractical. Even 10BASE-T Ethernet signals run at speeds too high for the chip’s peripherals to reliably generate, especially with Manchester encoding doubling the signaling rate on the wire. Instead, the lightweight serial approach lets the AVR focus entirely on packet handling and serving web pages.
The microcontroller runs a fully custom TCP/IP stack written from scratch. IPv4 support was simplified by ignoring legacy features like packet fragmentation, which modern systems rarely use anyway. TCP proved much more difficult, requiring state tracking, retransmission logic, and handling of connection edge cases. Once a request is received, the server simply returns a hardcoded response. This is enough for hosting a single-page site, but nothing more.
Two 1500-byte packet buffers consume a large portion of the available memory, but the AVR still has enough RAM left to theoretically track around 200 simultaneous TCP connections. Real-world throughput is quite low, with transfer speeds landing around 2 kB/s due to conservative TCP settings and the limited serial bandwidth.
To make the server publicly accessible, Maurycyz routes traffic through a Linux machine connected to a VPS using WireGuard. Requests are proxied to the AVR over the serial SLIP link, allowing the tiny 8-bit system to appear online to the wider internet. You can access it here — if publicity hasn’t taken it offline completely.