I bought a wireless router for my home network, but it was having issues where it would randomly no longer accept any connections. To solve this, I took random old computer parts from around my house and threw together a computer with 2 network cards, installed Debian, and set up iptables so that I would have my own homebrew router, leaving the wireless router to bridge the wired and wireless networks together only.

This solved the problem I was having, and the router worked fine for as long as I used it, but there was still one thing this homebrew router was lacking -- blinking lights.

At first, I wrote something in Perl, but after implementing it, I noticed my router's performance dropping significantly as traffic came through, and realized Perl wasn't a very good choice for something that ran on all network traffic coming through.

After rewriting it in C, I then added code to have it differentiate between different network protocols (TCP, UDP, and misc), and blink the 3 keyboard LEDs accordingly. I then relabeled the keyboard LEDs with a ballpoint pen for their new purpose, leaving me with a fully functional router!

Download: beepboop.c (Linux only, should technically work in other *NIXes after changing the keyboard LED code itself)
To compile: cc -o beepboop beepboop.c -Wall -O3 -s -lpcap
Requires: libpcap, a sane build environment, keyboard LEDs

Go back to the main page.

Site created by Rob Bloom.