Build fun projects with a PC,
 Linux, some free software,
 and a few extra

Click for Linux books by Christopher Negus

 Linux Toys II   FC-RHEL4 Bible   Linux Troubleshooting Bible cover   Linux Bible   Linux Toys   Red Hat Linux 9 Bible

Linux Toys II   ¤   Hardware for Projects   ¤   Linux Toys   ¤   Starting with Linux  ¤   Advancing with Linux

About Linux Toys

Linux Toys I had the idea for Linux Toys (Wiley Publishing, 2003) before I had even heard of Linux. In the early 1990s, someone handed me a disk with "free" software on it that ran in UNIX. Although UNIX, as it was delivered by my co-workers a AT&T, was brilliant, it was also rather boring. But, add some free software and put together the pieces the way you liked (since it was free, as in freedom to use it as you please),  and you could have UNIX Toys.

I never did write UNIX Toys, since my attention soon turned to Linux. After writing a few successful Linux books, I felt it was time to revitalize the idea as Linux Toys. So, in 2002 I approached Chuck Wolber to work with me to put together some projects from free and open source software and some PC hardware. We finished the book in late 2003. It became the first publication in the Extreme Tech book imprint and was nicely slashdotted in late December.

I learned some lessons from Linux Toys that I took into account with Linux Toys II. Primarily, I gained a new respect for successful, on-going open source initiatives. The original site was created as a Linux Toys community, with forums, news, articles and polls. We also planned to maintain and enhance the 13 projects in the book going forward.

Over time, the effort to maintain the community became too much for the few of us that were trying to keep the site going. Also, maintaining enhancements for thirteen different project also turned out not to be feasible. So, because of the fast-paced nature of open source software development, some of the projects in Linux Toys will no longer run on most Linux systems as we describe in the book. (As a result, for Linux Toys II, I stuck close to existing open source initiatives and point readers to those initiatives for forums, software updates, and ways to contribute.)

In any case, the rest of this page describes the projects in Linux Toys and notes some of the challenges of getting the now several-year-old software working as described in the book.  Here are links to descriptions of those projects:

Music Jukebox    Home Video Archive
  Television Recorder/Player  Arcade Game Player
Home Network Server   Home Broadcast Center   Temperature Monitor
Digital Receptionist    Mini ISP   Web Hosting
Doghouse Linux   Toy Car Controller   Digital Picture Frame

Project 1: Music Jukebox

Linux Toys Music Jukebox Create the Linux Toys Music Jukebox on an elegant PC and add it to your entertainment center. The Linux Toys Music Jukebox project started as a way to be able to play your whole CD music collection from a PC's hard disk instead of from the individual CDs. It's turning out to be a pretty good foundation for that and a lot more.

Turn on the project and you can continuously rip and play your entire music CD collection. This is one Linux Toys project that is immediately fun and useful. Here's how it works: Install the Linux Toys Music Jukebox software from the Linux Toys CD. Start up the service. Any music that has been copied to your hard disk (in the specified location) begins to play randomly. (Or you can play from your own playlist instead.) Any music CD that you insert into the CD drive is automatically ripped and stored by artist, album and song name.

The jukebox can grab the CD information it needs from any CD database on the Internet (valid ones are set up by default, so this happens automatically if you are connected to the Internet). To make it a standalone unit, the Linux Toys CD contains a copy of the CD database. CDs that aren't in the database, we describe how to add manually.

The majority of the software used in the jukebox comes from the following projects:
The project will run on most any PC that can run Fedora or Red Hat Linux and has a supported sound card. An Internet connection (Ethernet or modem) makes it so you don't have to set up your own CD database.

Project 2: Home Video Archive

Archive movies on CD or DVD Copy home videos to your PC, then burn them to CD, DVD, or VCDs. The Linux Toys Video Archive project simply steps you through the process of capturing video from an outside source (like your VCR or camcorder), then copying to another medium (such as a CD, DVD, or VCD). The quality of the video isn't so great, but it's still fun the play with.

The project goes something like this: Install the Linux Toys Home Video Archive software from the Linux Toys CD. Add a TV card and connect video hardware to your computer. Play the video into your computer and capture it to your hard disk. Burn the video to a medium of your choice (including possibly converting it to a low-quality VCD you can play on your home DVD player). You can playback your recorded video to make sure it came out alright.

Software for the Home Video Archive comes from the following projects:

An old junker PC probably won't work very well with this project. A slow CPU will have trouble keeping up with the video processing. You need to add at least a TV card to get your video input. You will probably also want a CD and/or DVD burner, a VCR or camcorder to input your video, and possibly a new video card (if yours can't cut it).

In this project's Linux Toys chapter, we describe some of the different options you can use to record video/audio streams. We also describe how to create CD and DVD disk images and burn them on to the appropriate media.

Project 3: Television Recorder/Player

WebVCR+ Display TV listings and select shows to record now or cue for later recording.

NOTE: When XMLTV changed its format because of changes to how the television listings are formatted, WebVCR+ broke. The changes required to fix it are so extensive that we are recommending MythTV as a better project for TV recording. (Setting up a personal video recorder with MythTV is described in Linux Toys II.)

The Linux Toys Television Recorder/Player is for those of you who are too cheap to buy a TIVO or other type of personal video recorder. With a bit of luck, you'll be able to record your television programs from listings that reflect your local broadcast television, cable or satellite provider.

In general, here's what you do to get your Linux Toys Television Recorder/Player going: Install the Linux Toys Television Recorder/Player software from the Linux Toys CD. Add a TV card and connect your antenna or cable input to the TV card. Set up channel names and numbers, as well as other xawtv settings for viewing television. Download television listings for your local area. Use the graphical WebVCR+ window to get the correct settings to do your recording. Again using WebVCR+, choose the shows you want to record, then record one that's on now or cue shows to record later. Use mplayer to play back your recorded television shows.

Software for the Linux Toys Television Recorder/Player comes from the following projects:
As with our other video projects, the faster the speed of your CPU, the better your resulting video will be. You will also need a lot of disk space to store your shows. As for hardware, you'll need a modem or broadband connection to get your TV listings and a TV card to connect to the antenna/cable.

Project 4: Arcade Game Player

MAME arcade games Play classic arcade games using the multiple arcade machine emulator.
The Arcade Game Player project is based on the Multiple Arcade Machine Emulator (MAME). We include the X version of MAME called XMAME (strangely enough). With XMAME, you have software that runs on a Linux desktop that emulates classic game consoles from the 1970s, 1980s, and 1990s.

We include three game ROMs that are in the public domain that you can use to try out XMAME. We also included a graphical front-end called gRustibus for launching the games. MAME can emulate more than 1900 unique games (and more than 3000 when you add in different versions of the same game).

With this project, we tell you how to:
Software for the Linux Toys Arcade Game Player comes from the following projects: Not much to learn about Linux with this project. However, we do show you some hacks for modifying your login screen and describe how to launch an application (in this case, a game) immediately when you log into Linux.

Project 5: Home Network Server

Home network server Safely share printers, files, and an Internet connection using the Linux Toys Home Network Server.

Everything for this project comes with the Fedora Core or Red Hat Linux distributions (no additional Linux Toys software). For the home user, setting up Red Hat Linux as a server for sharing an Internet connection with the other computers in your home is a great way to use an old PC. And since the computer is secure (with a firewall in place) and on all the time, why not use it to share files and printers with your other home computers?

With this project, we tell you how to: Install Red Hat Linux and configure the server's network interface. Configure the server to hand out IP addresses to computers on your LAN (using DHCP). Tune up the server's firewall to protect your home network from intruders and route traffic from your network to the Internet. Set up Red Hat Linux to do file and printer sharing with other computers in your home. Add some other Linux Toys projects so they work on your home network.

Software for the Linux Toys Home Network Server comes from the following projects:

Besides the features just mentioned, there is a short lesson in the Home Network Server chapter that describes how to configure on-demand dialing. If you are stuck with a regular dial-up connection for reaching the Internet, on-demand dialing allows your server to only start up the Internet connection when someone makes a request for something from the Internet.

The software described in the Home Network Server project is quite stable and commonly used. Opportunities for enhancing this server fall into the category of personalization. Things you might want to consider adding to your own server include:

Project 6: Home Broadcast Center

 Home broadcast center Stream video and audio from your Linux Toys Home Broadcast Center to others on your LAN or the Internet Stuff in Home Broadcast Center Stuff to learn Stuff to improve There are lots of different ways of geting video into your Linux computer (Webcam, cable television, surveillance camera, etc.). Using software that comes with the Linux Toys Home Broadcast Center, you can stream that video and audio to other computers on your LAN or on the Internet. Although the software in this project does not produce professional quality video, it does give you a chance to play with streaming video.

The Linux Toys Home Broadcast Center chapter of Linux Toys describes how to: Install the Linux Toys Home Brodcast Center software from the Linux Toys CD. Add a TV card and connect video hardware to your computer. Check that video is working properly on your Linux computer. Configure the server to stream video.
Configure the video stream to direct the video to the server. Display the streaming video on a remote client as it comes in.

Software for the Home Broadcast Center comes from the following projects:

In this project's chapter in Linux Toys, we suggest how to manipulate your video output to get a good balance of quality and performance. This project presents a very rudimentary introduction to streaming video. You can work to improve the project by trying different codecs and compression settings to maximize the quality of your streaming video.

Project 7: Temperature Monitor

Temperature monitor Monitor the temperature from Linux, then read it into a Web page, email message, or anything else you like.

NOTE: Shortly after Linux Toys came out,  the person we had building and selling the temperature monitor hardware stopped doing so.  The standard one-wire sensors don't seem to work with the software that comes on the Linux Toys CD.  I suggest you refer to the
DigiTemp site if you would like to follow up on this project.

The Linux Toys Temperature Monitor is based on the DigiTemp project. Using DigiTemp, you can continuously monitor the temperature from 1-Wire sensors attached to a serial port on your Linux computer. Then you can use the temperature readings any way you like (in a mail message, Web site, or graph).

With this project, we tell you how to: Install DigiTemp software from the Linux Toys CD. Obtain and set up the 1-Wire temperature sensors. Continuously read temperatures from all sensors and save them to a file. Set up your email and/or Web page to read in the current temperature settings.

Software in this project includes the following:
In the Temperature Monitor chapter, we teach a little bit about using the cron facility to have commands run at set times. We use cron to start the script that checks and stores the temperature at set intervals.

Project 8: Digital Receptionist

VOCP digital receptionistTurn your Linux system into a telephone answering machine that forwards audio voice messages in email.

The VOCP project forms the basis for the Linux Toys Digital Receptionist project. This was a very challenging project for us to get going, but it was fun enough to play with that we decided to keep it in the book.

Start with a supported voice modem (not just any modem will do) to avoid what was our biggest impediment. The project takes you through setting up the voice modem to receive calls, creating multiple voice mail boxes, and forwarding messages (either the full audio message or just text saying it's there) to your email. There are some really cool features we haven't even touched yet (like routing messages to specific mail boxes based on incoming caller ID). With this project, we tell you how to:

Software for the Linux Toys Digital Receptionist comes from the following projects:

We offer some suggestions for debugging your voice modem. The project also offers the opportunity to create a series of voicemail boxes to navigate the voicemail system. Here are some ways of enhancing this project:

Project 9: Mini Internet Service Provider

Mini ISP Set up services that are used by real Internet Service Providers to support dial-in customers.

Inside Fedora and Red Hat Linux are features used everyday by Internet Service Providers (ISPs) to allow their customers to dial-in to the Internet, publish personal Web pages, and access e-mail. All the basics are there. Although being a real ISP requires much more diligent support, with nothing more than a PC and a couple of modems, you can set up Red Hat Linux to offer the same basic services to a friend or two. (Check your ISP's acceptable use policy first, to make sure this is legal for you.)

With the Mini ISP project, we tell you how to:

Software for the Linux Toys Mini ISP project is all in Fedora and Red Hat Linux. The packages used come from the following projects: This chapter is a great way to touch on many of the basic services that are in Red Hat Linux that you can offer on the Internet. Because these services are only touched on, however, you need to do some serious further study on securing your computer from intruders if you are using the server for business. (Security topics are covered in the Red Hat Linux Bible, as well as other books on Red Hat Linux.)

Project 10: Web Hosting Service

Project 11: DogHouse Linux and BSD Games

Doghouse LinuxCreate a Linux distro on a floppy and play old character-based games.

There are lots of Linux-on-a-floppy and Linux-on-a-CD projects around. They provide a cool way to see what Linux is like without bothering whatever you have on your hard disk. Doghouse Linux is a small Linux distribution that fits on a floppy disk. If you bought Linux Toys to run on a 486 (which we told you not to do), this is the one project that should run on that old box. Chuck named the project during the 72-hour weekend Chuck, Kevin and I spent over my garage polishing off the projects.

Besides playing with some Linux commands, we packaged in a few old character-based games I used to play at Syracuse University a few decades ago. Games like adventure, wump, and fish will give you the idea of what the first games were like that ran in UNIX. With the DogHouse Linux project, we tell you how to:
Software for the Linux Toys DogHouse Linux and BSD Games project comes from the following projects:
There's not much in this project for old Linux hacks. However, there is some discussion of obtaining, mounting, and copying disk images (for floppy disks or CDs). This can open your eyes to some really cool bootable Linux distributions. Check out for other bootable distros. As for the games, you can think of those as mostly a way of seeing how computer games were played with just a keyboard and character terminals.

Project 12: Toy Car Controller

Toy car controller Operate a toy car from Linux.

The Linux Toys Toy Car Controller is a fun project for showing how you can control remote devices from Linux. We tell how to wire a radio control (RC) car to a relay board (we used a Lynx-PORT board). Then we describe how to:

We also illustrate how to use the toy car controller scripts as login shells, so that you can login and control a toy car over the network. (Of course you need some sort of video stream to watch your results.)

Software in this project includes the following:
This project is more about remote control than toy cars. Once you can control the relay board, there are a lot of thing you can control from that board. Of course, any kind of remote car, plane, blimp, and so on should work. Also, if you have not done soldering before, Chuck offers a few good tips.

We need to work out some latency problems we have with the video when we run the toy car over a network. Aside from that, we are looking for really cool ways to use the
Lynx-PORT board for other projects. In particular, we're looking at using the X.10 features of the board to expand our use of the board to control a whole house of X.10 equipment (lights, sprinklers, garage doors, and so on).

Project 13: Digital Picture Frame

Digital picture frame Adapt a laptop computer into a picture frame to continuously display digital images.

The Linux Toys Digital Picture Frame project describes how to adapt an old laptop computer into a picture frame that can be used to continuously display your digital images. Then we describe how to:

The trick is to start with a cheap laptop that you can spare if you break it by mistake. Once it's built, you can just put it on your coffee table, sit back, and watch.

Software in this project includes the following:
This project is primarily a hardware project. Chuck painstakingly disassembled a laptop and put it inside a picture frame for this project. I tried as best I could how to recreate the process for you. We also briefly teach you what tools in Linux let you load images from digital cameras or over the network. Using a LAN card from the laptop is a good way to feed images to the laptop later without having to add a keyboard.

© Christopher Negus, 2005