Linux on a cash register
11/13/02

<< 014.html Return to index 016.html >>

Well, my cash register project has been very, very low on the "important project" list (or even the not-so-important project list). I've had it installed on the edge of my desk, on its own little table, on the floor, and in pieces as you can see here. I had Veteran's Day off, and decided to fix up the cash register. Here's what's happened to it, and what I've done with it since my last update. (This is by far the longest page, BTW. The others are fairly short.)

The whole deal started falling by the wayside when the thermal printer quite working. That was an important bit, you see, because without the printer you can't open the cash drawer. I really wanted the full effect and without a working cash drawer I didn't have much of a "cash register" -- just a really small, underpowered PC with a cool pole display thing (as everyone and their anonymous brother pointed out on Slashdot).

I have only the one printer and its one integral power supply feed, so I've not been able to test it to see what's wrong. I hooked it up to another computer's parallel port and it still didn't work. Sometime in June I managed to get another printer from my brother, but it didn't work either. So my last trip out in October I nabbed another power supply from another complete unit. You can see it on the top there, turned over (the original PSU is still bolted into the main housing; you can see its wires coming out the back). Trying the new PSU with the old printer produced no results. Trying the new PSU with the new printer produced... no results. So cable must be bad. I actually found 2 other printer cables and neither had any effect. Then I tried the new PSU, the old printer, and another computer. Bingo, the printer works. So the actual register's parallel port must be wonky. Still means no cash register. I found a better use for it, though.

I've come into a need for a headless, low-powered Linux PC to act solely as a web and remote login server which can be exposed to the Internet. I'm going to use read-only NFS mounts from it to my main fileserver in order to get web content out to the world. Usernames and passwords will be different than on any other internal machine. Services running will be at a bare minimum, and various other hardening bits (a separate 'compile' group, gcc and libs set to 'o-rx' perms, /tmp mounted noexec, etc, etc). I have a set of programs I wrote for my last employer (sssshhhhhh.... don't tell) which can automatically detect a wide range of software upgrades and patches (I usually hear about new errata RPMs well before I get an up2date announcement email from Red Hat, actually; no, I can't distribute any code) which means I'm going to be patched as soon as practical. So the box can be reasonably secure and the stuff behind it can be reasonably soft (although I firewall internally as well as externally).

Well, after casting about looking for a solution (one though that popped into my head was mounting the guts from my old AMD K6-3/450 on a piece of plywood and bolting it to the wall), I noticed my poor sad sack of a cash register sitting there gathering dust. Turns out it'd be perfect for what I want. And I'd get to use the LED-on-a-stick in conjunction with the server for fun and amusement if I could find a way to mount it. I didn't want to give up all the room the main housing takes up (for what it is, it's really, really big -- and I wouldn't be needing register functionality anyway). I essentially only needed the bare PC. But if I wanted the stick, then I needed the PSU as well (since it powers the stick). So I went about figuring how to mount all three pieces such that the footprint was as small as possible.