Boom-Box: The Guts Behind the Glory

By Ahmi Wolf

The Bass-Station's guts consists of a mini-itx motherboard using an 800MHz processor (, 256 megs of ram, a Prism based PCI wireless interface card, and a 120 Gig IDE hard drive. It runs Debian Linux (Woody 3.01) which uses the HostAP drivers ( to put the wi-fi card into an access-point mode so the machine appears as a managed node (like other true access points) as opposed to an AdHoc client mode.

We have a DHCP server for dishing out IP addresses to wireless clients. It is the standard ISC DHCP server that comes with almost all Linux distros, configured in the standard manner.

The Bass-Station also runs a DNS server configured to serve as the top-most authoritative DNS server on "the net" -- the so called "." (dot) domain -- which resolves all domains to the IP address of the Bass-Station. This way any URL that a user points to (.com, .org, .gov -- you don't even need a dot) will take that user to the Bass-Station's Web server.

There are also alternative ways to take users to a specific Web page. Using active portal software like NoCat ( will do this, BUT, the purpose of such software is to be a portal or entryway to a network. The problem with this software is that it tries to resolve the intended URL before it shows you the portal page. Since the Bass-Station is not connected to or associated with any other network, there is no means to resolve an external intended address. So the program tries to resolve and resolve and doesn't show anything.

So here's the hack-around. Starting from a clean installation of the DNS system Bind (we used version 9). Then...

In /etc/bind/named.conf change the zone "." entry to the following:
zone "." {
type master;
file "/etc/bind/db.root";
notify no;

then replace the default db,root file (back it up first) with a file that contains only the following:
;-----------Beginning of file------------;
$TTL 604800
@ IN SOA . root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS .
* IN A
;-----------End of File----------------;

Replace the IP address with the IP address to which you want all domains to be resolved.

Data lives in a MySQL database, and is displayed through the Apache web server. Togeher these provide the interface to all functionalities. For now these include:

We use mpg123 for media file playback. I also wrote the back-end program for control of mpg123 and interaction with our databases (c++ source should be available on our site sometime in the future -- it's kind of messy right now).