The Server: AVR64DD32

Maurycy Z's latest project is a website hosted on an AVR64DD32 microcontroller. This 8-bit chip costs $1, runs at 24 MHz, has 8 KB RAM and 64 KB flash. It's similar to the Arduino Atmega328 but cheaper and with nicer peripherals. The goal: serve a web page over the internet.

Why Ethernet Won't Work

Ethernet at 10BASE-T runs at 10 Mbps, but Manchester encoding doubles that to 20 Mbps at the wire. The AVR's I/O pins max out at 12 MHz — too slow to generate Ethernet frames. A dedicated Ethernet chip would take weeks to arrive. So the author turned to SLIP (Serial Line Internet Protocol, RFC 1055).

SLIP Over USB Serial

SLIP is dead simple: wrap packets in 0xC0 bytes, escape 0xC0 and 0xDB inside. Linux still supports it natively:

stty -F /dev/ttyUSB0 115200 raw cs8
slattach -m -F -L -p slip /dev/ttyUSB0
# now it's a network interface

The MCU connects to a USB-to-serial adapter, drawing a few milliwatts from the adapter's 5V rail. No external components needed (though the author added blinkenlights and a reverse-polarity diode).

Minimal TCP/IP Stack

IP is easy: swap source/destination addresses, reset TTL. Modern OSes disable fragmentation, and IPv6 removed it. TCP is the hard part — tracking connection states, retransmitting lost packets, handling edge cases. The author's custom implementation took several days and still has bugs.

HTTP is not implemented: the server always sends the same hardcoded response. One URL, one page.

Getting Online

The MCU sits behind a residential connection with no public IPv4. The author uses a VPS in Helsinki and a WireGuard tunnel from a Linux router to the VPS. The VPS proxies requests under /mcu to the MCU's local IP. This is the same setup as the Vape Server (a website on a 32-bit MCU pulled from e-waste).

The Result

The site lives at https://maurycyz.com/mcu/. It's slow (effectively dial-up) and fragile, but it works. The author notes that IPv6 would solve the public address problem — if only it were widely deployed after 30 years.

Why This Matters

This project demonstrates that even the most resource-constrained devices can serve web content with clever protocol choices. It's a reminder that TCP/IP stacks don't need to be bloated, and that old protocols like SLIP still have niche uses. For embedded developers, it's a case study in minimal networking. For everyone else, it's a fun hack.