I recently acquired a really handsome pair of speakers. The cabinets are made of a gorgeous solid walnut exterior, and have an ideal size that Goldilocks could only dream. You simply don’t find speakers that look this good anymore: veneer, plastics, and MDF rule the day when it comes to speaker materials.
There was one essential problem: they just didn’t sound very good. Equipped with 40+ year-old drivers, they lacked good definition and decent high end. As a remedy, I paid a visit to parts-express and used some of their great tools to find speakers that would fit the existing cutouts (more or less), be appropriate for the size of sealed cabinet, and find a crossover that would match the drivers.
(The crossover provides filtering for the drivers so they only reproduce sound that is appropriate for each speaker. There’s not much point in feeding the woofer high-frequency sound, and vice-versa for the tweeter.)
The other problem with these speakers is that I already have plenty of speakers. Too many, really. I needed a good reason to dig in and rebuild these beauties.
Enter C.H.I.P. and the software package music player daemon (mpd). Paired with a small amplifier to power the speakers and a spare 500GB hard drive, C.H.I.P. and mpd serve as the brains of the operation to manage files and playback music. After a few hours of work, I ended up with a great-looking, self-contained music system that can play a huge collection of songs. Here’s what I did.
The list below has some flexibility in it, of course. I have a LiPo battery for C.H.I.P. so I didn’t need the powered hub. You can also avoid using a hub if you use a USB thumb drive or some other storage that requires less power than a spinning disc.
- C.H.I.P. computer
- LiPo Battery
- Two handsome stereo speakers
- Low and high frequency drivers, a pair of crossovers, and a small amplifier*
- TRRS-to-RCA cable
- USB hard drive
- Powered USB hub (if hard drive enclosure does not have a power supply)
- USB cables
- WiFi Connection
- Speaker Wire
- Gloves and a mask are recommended for this project
*If you must know, here’s what I bought:
- Speaker Crossover 2-Way 8 Ohm 5,000 Hz 150W Part # 260-198
- Tymphany TC9FD18-08 3-1/2″ Full Range Paper Cone Woofer Part # 264-1062
- GRS 8FR-8 Full-Range 8″ Speaker Pioneer Type B20FU20-51FW Part # 292-430<
- Lepai LP-269FS 4x45W Mini Amplifier with Remote USB MP3 Media Card FM Part # 310-304
First, I had to remove all the old components and install the new ones. This didn’t require much more than a bit of work with a driver and a drill. I had to be careful with the baffling – old fiberglass will make your skin itch quickly, and the dust is pretty nasty!
Once the new drivers were in, wired up, and tested to work, I sealed up the cabinet, and even grabbed a nearby caulking gun to keep everything tight around the edges. The only air I want moving is what the drivers push around!
The Lepai amplifier is really quite cool. This model can drive up to 4 speakers, and is designed for people wanting to beef up systems in boats, cars, RVs, and motorcycles. It’s small, and has mounting wings to lock it down with screws. It also has an FM tuner and can read music from USB sticks and SD cards. This makes it easy to test the amp and speakers to make sure everything is working correctly.
I suppose many people would stop there: pop in a USB stick full of music and press play!
But my music collection is larger than the biggest SD and USB storage devices, and I wanted the ability to create playlists and control this thing from anywhere in WiFi range. C.H.I.P. to the rescue!
Not only was this incredibly easy to get running, it works great. I even went the extra step of re-flashing C.H.I.P. with a version of Debian with no desktop manager or windowing environment. Since all this C.H.I.P. does is play music and serve up an interface on the web, I don’t need a GUI to get around.
1. (Optional) Keep C.H.I.P. Simple
How? Simply flash C.H.I.P. with a Debian, no GUI image. Just follow the instructions in our docs using Option 2: Flash with Debian.
“Simple” here, of course relates to what C.H.I.P. has to do, not you. This step actually makes things slightly more complicated for you! However, most of the work for this is going to use the terminal, so it’s really a very slight difference.
2. Get On-board
If you skipped step one, you can hook up C.H.I.P. to a network like you would any other computer.
If you did step one, you’ll need to get on a network using the command-line network tool nmcli. You can connect C.H.I.P. to a computer’s USB port, and setup the network using a serial terminal, or you can hook up a monitor and keyboard to type commands on C.H.I.P.
Once you have a command line prompt, here the short version of how to connect with nmcli is:
sudo nmcli d wifi connect networkname password wifipassword ifname wlan0
You’re smart, so it’s probably obvious that you should put in your wifi network name for
networkname and your password for
wifipassword. But, for posterity’s sake, I’ll mention that. Just in case 🙂
Note: If you need more info about nmcli, check our documentation.
3. Make C.H.I.P. Do Music Things
For that, you’ll install the program mpd. It’s as simple as the name (which stands for “music player daemon.”).
To install mpd, in the terminal, enter the line below to update your package installer then install mpd:
sudo apt-get update && sudo apt-get install mpd
By default, mpd will look for music files in /var/lib/mpd. If you don’t want to add a drive to C.H.I.P., you can just add music to that directory and start playing with an mpd client (more on that later).
Note: You can learn a lot about mpd on the internet.
In short, the way mpd works is that it uses C.H.I.P. to play and organize music, but if you want to control it at all (like press play), you’ll need a client software of some sort.
What’s cool is that clients can run on C.H.I.P., your phone, tablet, or another computer, giving you instant access.
4. Add A Storage Unit.
I used a small hard drive leftover from various laptop upgrades. It’s 500GB, housed in an inexpensive USB case, and perfect for holding my music. C.H.I.P. needs a bit more power for the drive to operate, which can be achieved either by adding a battery to C.H.I.P. or a powered USB hub.
I like the battery option because it provides a power backup in case of outage and reduces the wire count.
Once the drive is hooked up, C.H.I.P. needs to be told where the drive is and how to deal with it. Back to the terminal!
While our documentation covers this topic, it’s worth condensing into this post:
Connect the drive to C.H.I.P.’s USB and use the command below to list all the attached devices.
You’ll most likely see.
This is the name of your drive, as far as the operating system is concerned.
Now that you know the drive name, create a directory that will serve as a mounting point for /dev/sda1.
sudo mkdir /drives
Give mpd permission to access file in the directory you just created.
sudo chmod -R 777 /drives
Next, mount the /dev/sda1 with the mounting point /drives.
sudo mount /dev/sda1 /drives
Finally, you’ll want this drive to mount when C.H.I.P. boots up. Edit the /etc/fstab and enter the information to properly mount /dev/sda1.
Note: Fstab is short for the file system table.
sudo nano /etc/fstab
Add the line below to the /etc/fstab.
/dev/sda1 /drives vfat defaults 0 0
Save your change and at the command line, make sure all is good with fstab by running
sudo mount -a. If no errors are produced, your setup is good to go.
5. Make It Work
Now it’s time to configure mpd. First, create a playlist directory on the hard drive.
Open up the mpd configuration file in a text editor.
sudo nano /etc/mpd.conf
Find the lines for music_directory and playlist_directory, and change them so they look like the lines below.
Note: ctl-w in nano makes it easy to find strings!
Of course, I’m assuming that you have all your music in a music folder on your /drive. Change as needed!
sudo reboot C.H.I.P. and move on to the next step.
6. Get Some Clients.
Not because you’re a lawyer fresh out of school, but because you need to play some music out of C.H.I.P. on some totally rad (not to mention handsome) speakers! There are a ton of clients available. I have an iPhone, and I use MPoD, which works well.
Note: I have been filling up my drive with music on my Mac. When I reconnected the drive to C.H.I.P. and tried to play the new music from MPoD, I had to go to the Settings and first select “Update Database” to tell C.H.I.P. to get to work, then “Refresh local cache” to get all the new listings on my phone.
At this point you should be good to go with C.H.I.P., mpd, and your upcycled speaker!
7. Going Further
But don’t stop here, what other cool things can you do now? You could add an external sound card to improve sound quality, you could setup icecast with mpd to make your own network radio, you could install Samba or AFP for network access to the files, or even just use SFTP with an FTP client and access your music files that way. Here’s a few resources that might help you out.
- IceCast – for network radio streaming
- Tips to run it as a user, rather than as root
- Full mpd documentation
- A good cross references that includes how to use a network attached storage system as your music source
For more C.H.I.P. specific projects, check out
- The C.H.I.P.play speaker, our take on a DIY airplay speaker
- C.H.I.P.py Ruxpin, a hacked Teddy Ruxpin that will say anything you want it to from the internet
- C.H.I.P. MIDI Arpeggiating Synth