Archive

Archive for 2005

MP3 Box v0.1

December 18th, 2005

Its been a busy few weeks since my last posting. I spent a couple Sundays working on the web interface and the streaming interface. It still needs quite a bit of work, but it is very usable now. I “released” it for Jessica to use about a week and a half ago.

Here is the software I ended up with:

The hardware hasn’t changed much. I’ve given up temporarily on the Saitek speakers for now. I’ve also added an ALLNET ALL0271 802.11g card. I tried a few other 802.11g cards but this one has the Prism54 chipset and a firmware that works, almost out of the box. The only thing special I had to do to get it to work under FC4 was to take the WL54GT.ARM firmware file off of the CD that came with the card and drop it into the /lib/firmware directory on the machine and rename it to “isl3890″. After that it came right up with a 54Mbit link and so far zero problems. You can get other 802.11g cards for a little bit less, but this one was worth every penny for the headaches it saves.

Here’s what the unit looks like. Its on top of a DirecTV TiVo based DVR model R10 for size comparison (on my desk so I could have it handy while I did the development). And just to the right, you can see some of my ever present inspiration, the Einstein Action Figure.

MP3 Box - Front

The picture I took of the back of the unit didn’t turn out too well. I didn’t look at it before I moved the Box into its permenent home in Jessica’s den.

MP3 Box - Rear

It has the basic I/O ports, a standard VGA output, an S-Video output, composite video, RCA audio, optical audio out, two USB ports, two 100Mbit ethernet connections, and a combo PS/2 keyboard/mouse port.

I kind of switched gears on the software a few weeks ago (the GMediaServer) because I found a good deal on a Netgear MP101 box during the “Black Friday” sales. The Netgear (and I would guess all of the other streaming media boxes) use a UPnP server to get their stream from. Its not too much more than an http stream, but it is a different protocol. I tried both ushare and GMediaServer, and I liked GMediaServer a bit better. So, I start up the MP3 box, start GMediaServer pointed at the directory with all of the MP3’s in it, power on the Netgear and it sees it without doing anything else special. Pretty slick, and no Windows software required. A big bonus since my Windows machine is turned off most of the time and Jessica uses a laptop. The other bonus is that it made the previously mentioned HomePod useful. It uses the same method to stream its music and it also recognized the GMediaServer’s streams without doing anything else special.

We have encountered one or two glitches with the Netgear MP101, though. On certain songs it gets stuck, pauses or skips. Not sure if its the MP3 itself or if its a network issue. So, I’ve also been re-working our wireless network at the same time. I added a Hawking HSB2 signal booster to our new Netgear access point, and now get near 100% power in the room with the MP101. Jessica will try it this week and if it works we’ll move the HomePod into the bedroom.

So, with all of this done now we have music in three rooms (her den via MPD), the front room via the Netgear, and the bedroom using the HomePod. I’ll be adding one more media server into our entertainment room as soon as the tests with the Netgear are done. Don’t know which one we’ll be getting for that yet. The I’ll also be adding a repeater into the Entertainment room since even with the signal booster added the wireless signal to the bedroom is very, very week and I don’t think it would be quite reliable enough. The bedroom and my den (where the main access point is) are on opposite ends of the house, and a floor apart. The bedroom is also on the second floor and there is also a brick chimney in the way, so a repeater is going to be only way we’ll really be able to get a signal up there.

I know this is a pretty big post and contains a lot of scattered information, so I’ll try to write a step-by-step guide for anyone who may want to build one of these things themselves. It has been a fun project, and from what Jessica tells me, its the type of system she’s been wanting for years, but no one makes anything like this. As to why no one makes anything like this, we have no idea. It would seem to us that there would be a pretty good market for a system like this if someone could build it a bit smaller and less expensive than we did. Cheaper shouldn’t be a big issue since all of the parts I used were off-the-shelf and retail. So, if a VC happens to be reading this, get a hold of me and maybe we could talk. If TiVo can put out a small box (basically the same parts) and make money selling them for $200 there is no reason this couldn’t be a good consumer gadget… I think the time is right for something like this on the market.

Oh, and here is a screenshot of the playlist viewer in the first version of the web interface. It needs quite a bit of work still, but it is fully functional. Once its a bit more polished, I’ll put up the code for it.

MP3 Box - Web Interface

I also used ncmpc to replace the standard console on the first tty. This way, if you turn on the TV or plug a monitor into it this is the screen you’ll see:

Text Interface

This is also how LIRC is hooked in, so when signals are received from the ATI Remote Wonder they get sent here to control the unit. Its easier to use the web interface, though. The best part of having the remote is that while she is in her den, she can just hit the remote to do basic functions like play/pause, stop, next, previous and volume. I’ll include all my configurations for this later.

Oh, and for managing her music collection, I’ve used Samba. She attaches to MP3 Box as a network drive and can just use Windows to copy, etc. It makes a nice central storage location for copying songs to her portable MP3 player as well.

More later….

marc Projects

MP3 Player base distribution update

November 24th, 2005

So, I’ve been working on the MP3 player project quite a bit over the last few weeks. Christmas is a month away, so with the limited time I’ve got to work on it, I’d rather do that than post.

The remote control that comes with the Allwell box doesn’t work. Well, it does, but they tried to be clever and map it to the PS/2 mouse/keyboard port. It would probably work fine if their documentation matched and if they didn’t use the null character for the play button. Thats very difficult to match since many devices and programs use 0 to terminate arrays and strings and such.

So, I got an ATI Remote Wonder from NewEgg. That works pretty well using LIRC, but I had to completely re-map everything. I’ll post my configurations for it later.

Then, Woot had a product launch. The Saitek A-250 wireless speakers. That would work perfectly. It is a USB device which registers itself and automatically loads the USB Audio drivers correctly. So its plug and play, right? Nope. The ALSA documentation is horrid and almost impossible to follow. Its scattered all over the ‘Net and is horribly incomplete. It is a very powerful subsystem, but its configuration is so difficult I’m amazed anyone but the authors manage to get it working. I’ve tried three different distributions now, trying to get one that would recognize the Saitek speakers.

A few things that I’ve encountered with each of them.

First, I tried the CaOS distribution, which is fairly nice. I went with it because it was small, RPM based and seemed to have all of the features that I was looking for. It comes really, really, really close. I spent about a week trying to get the Saitek speakers working with CaOS but never was able to. I did manage to get everything else working including LIRC, MPD, NCMPC and a few others. It was very close to being ready to use. I’ve even got the web interface about 75% of the way done. But I couldn’t get the Saitek’s working under CaOS, so I tried something else…

SuSE 10, well, more specifically Open SUSE 10.0. I’ve got a soft spot for SuSE Linux. There is something about it that feels solid. SuSE has a great KDE setup which is perfect for some of my co-workers (I use Gnome primarily for myself) and it has lots of support for drivers that other distributions don’t. So, I installed it. Right off the bat I ran into troubles on this GTC Allwell box. The graphical boot loader doesn’t like the video hardware at all. When you first start booting, you are supposed to be able to hold down Shift and Alt to get a text installation. That works. Sort of. The problem is you can start it in text mode, but it still uses a bizarre framebuffer mode for text that isn’t compatible with the TV output. So, the only way I could get it installed was to use the RGB output, load the graphical loader then tell the graphical loader to only use text and no FB. There is no way to tell it not to use th FB from the Shift-Alt boot sequence. I proceeded on anyways, since I didn’t need to install it more than once. I managed to get it all installed. It was installed for a day. It didn’t recognize the Saitek device at all, which was quite a dissapointment. That wasn’t the deal breaker for me. The real problem was that the GTC Allwell box uses a VIA Nehemiah class CPU. The SuSE kernel and libraries are all compiled for 586 or 686. Apparently there is a “Padlock” function in the VIA chips for improving crypto performance, but things need to be compiled with it. Long story short, I wasn’t able to generate SSH keys for the machine, each time I tried it bombed out with various glibc errors (invalid free(), segfault were the two most common). Tried a few suggestions I could find on the net, but finally gave up.

Now I’ve just finished installing Fedora Core 4 on it. I’m familiar with Fedora Core more than any of the other distributions. We’ve been running RedHat on our network at work since the 3.0 days and use mostly RedHat ES on things now. My workstation at home is Fedora Core 3, as is my workstation at the office. Even if I can’t get the Saitek’s working, I’ll at least be very familiar with the distribution.

Installation of FC4 was tricky. When the boot screen comes up, you have to use ‘linux text nofb’ or it kicks things into a video mode that the GTC box can’t handle. I also had to plug a mouse into it to finish the installation becuase the installer didn’t really give me an option for text installation once it detected the “mouse” (which is the remote control that can’t actually function as a mouse — at least not that I’ve figured out). After the install, I got everything back into runlevel 3 with no framebuffer.

FC4 did recognize the Saitek speakers without any problem. The problem came in when I tried to play a test sound using the ’system-config-audio’ tool. It appears to play, but if you look at the console, you get these errors:
amixer: Unable to find simple control 'Master',0

amixer: Unable to find simple control 'PCM',0

amixer: Unable to find simple control 'PCM-2',0

amixer: Unable to find simple control 'DRC Range',0

aplay: main:508: audio open error: No such file or directory

Not sure exactly why ALSA isn’t able to find a mixer device. There isn’t a /dev/dsp1 entry for it either. ‘alsaplay -l’ doesn’t list the Saitek as a device, either. A few things I’ve read indicate that the A-250 might be a bluetooth device, but I don’t think so. Another thing I’ve read indicates that it is a USB headphone type device. Either way, it has no PCM controls and no Master controls so there doesn’t appear to be a way for ALSA to access it. Maybe I’m missing something…

So, here’s where I’m at. I’ve pretty much decided on FC4 for the distro, mostly because I’m familiar with it. Combine that with the large user base, and I may eventually be able to figure out the issues I’ve got with the Saitek. Unfortunately, the A-250 was a “Woot Launch”, so its a new product, not a lot of users out there at this point.

More updates later….

marc Projects

Happy Halloween!

October 31st, 2005

So, yesterday afternoon Jessica and I went out to get pumpkins to carve. Its become a bit of a tradition for us over the last several years that we both really enjoy. Since we went out on the day before Halloween, pickings were a bit slim, but we managed to find a couple good ones.

We got them home about 5:00 and started in on cleaning them out. That was the easy part. Neither of us has ever attempted what we were about to do — complex patterns. In previous years, we would just kind of look at some pictures or do something freehand. We started carving about 6:00 or so. Three hours later, here is what we ended up with. Jessica’s is on the left, mine on the right:

Carved Pumpkins

They don’t look like too much just sitting on the table like that. Just like ordinary pumpkins, really. Put a candle in them and turn off the lights and its a different story:

Carved Pumpkins - Lit

Next year we’ve decided to start a day or two earlier. A three hour carving marathon is a bit more than either one of us was expecting. We liked the results though.

marc Ego

MP3 Player Update

October 17th, 2005

Quick update on the MP3 player project. I spent several hours yesterday looking at cases, embedded systems, and got really, really frustrated. The Home Theater PC (HTPC) is just now starting to catch on, but the manufacturers are charging way too much for a case. Granted, these are some really nice looking cases, but the prices they want for some of them took them right out of the running.

After looking at the pricing for the AllWell STB’s thats what I decided on. Today I ordered a Metallic6086N2 and a Maxtor 250G 5400RPM hard drive, not the fastest, but it will run quetly and without a lot of heat. I’ll post pictures when the items arrive.

marc Projects

Simple Set Top MP3 Player

October 15th, 2005

For a couple years now, Jessica has wanted a simple, standalone MP3 player that she could put on her desk or on a shelf, or entertainment cabinet or someplace else thats out of the way. Thats all it needs to do is play MP3’s, have a simple LCD or VFD display on it to show what song is playing and have a web or other interface to make and save playlists. Oh, and it needs to have a hard drive in it to store all this stuff. Software MP3 players for Windows try to do too much and be too flashy. Plus she wants to be able to stream or otherwise listen to music in other rooms of the house. So this means a full fledged computer is out of the question. Too much power, too loud, too expensive just for this purpose.

Last year I thought I found the answer. I got her a HomePod from Macsense and an 80G Maxtor USB drive. It was small, fanless (i.e. quiet) and had a nice simple interface for playing from the attached USB drive. Unfortunately, it didn’t live up to its claims. Its slow, locks up frequently and is a royal pain to use. She doesn’t use it unless she is desparate for music, and even then she would rather grab our Rio Cali and use that with headphones. Its also not overly attractive because it stands by itself and then you have this big bulky USB chassis next to it.

The concept of it was quite good, though. I’ve been continuing my quest for this device and most of the things I’ve found are either way to expensive ($1499 or more), don’t have the right features (remember, I want this simple), require a stream or other software to be playing on your computer, or are just plain ugly. I’ve been searching for this device for years now. No luck.

So, I’ve decided to build my own and write about the hell I’m sure to go through here, maybe in the hopes to spare some other poor and unfortunate soul from going through the same thing I have.

I’ve promised her this device for Christmas, so now I have to deliver or I’ll probably never hear the end of it. As I was typing this she was reading of my shoulder. She simply looked at me, gave me a wry smile and said “You’re right.” The pressure is on.

A quick review of the requirements:

  • Small
  • Internal hard drive
  • Remote control for play, stop, pause, fast forward, reverse, etc.
  • LCD or VFD for display of the current song
  • Web interface for managing playlists
  • Quiet

Doesn’t sound that difficult to accomplish, but sadly, it is.

I have narrowed down the software I’m going to use, at least. It will of course be running Linux of some sort. Probably a derivative of Damn Small Linux or maybe Fedora, but probably the former since I want this system to be light-weight since the processor will probably be a Via Eden or something else with relatively low processing power.

I’ve also selected the player software, that will be the Music Player Daemon. It is simple, well documented and stable. It doesn’t require a GUI and its client/server approach is perfect for everything I need. The latest test versions even let you send to a Shoutcast or Icecast server that will take care of my need to stream it to other rooms in the house using something like the HomePod or Netgear’s Wireless Digital Music Player, though I haven’t tested it yet. Samba will be used for her to transfer files to and from it and as a nice bonus it will give her someplace to back up her laptop. The remote control stuff will all be done with LIRC and probably the mpc command line tool for MPD.

The web interface I’m going to write myself since all of the others that I’ve looked at are horrible. They try to cram way to much onto a single page and aren’t intuitave at all. I’ll be using B. Carlisle’s mpd-class for PHP as the interface, though I’m a bit leary of it. Within my first 5 minutes of toying around with it I found a serious design bug in it, I was able to fix it without any problems, and I’ll send it to him. As long as I don’t run into any other serious problems, it will be a good framework. The interface itself will be simple, much like a portable MP3 player. All of the elements of it will be different sections, i.e. one area for playlists, one area to view the loaded playlist, one area to show the current information and status. Ideally, she would be able to interface with the device using her PDA, so the web interface must be very light weight. Plus on a low powere CPU, smaller is better.

The hardware is an entirely different story. Thats the part thats giving me the most grief. I’ve been looking seriously at the GTC Allwell set top boxes, because they have the right mix of size and performance, as well as built in LAN and audio. They also have MPEG hardware and TV output which is less important for me, but someday I might want to branch this out a bit more into something that can also do video playback on a TV. I doubt it since it would expand my simple requirements, but its nice to have the option. The metallic model has an exposed 5.25″ drive bay that I can put an LCD into, such as the Thermaltake Media Lab or a Crystalfontz LCD Module and an internal 3.5″ hard drive. The problem is that the 6802NC2 unit seems like the drive bay is curved and I don’t know if the LCD would fit seamlessly. Plus, when you’re dealing with silver colors, color matching isn’t always easy. I would prefer black, but thats not an option in this unit.

Another option I’ve encountered is the Cooler Master CM Media 260 case. The big down side with this is that its a full fledged PC. I’d then have to go get a motherboard, CPU and memory. By the time I did all that, it would be kind of pointless and “why not just get a silent computer” to run it. I may go with this route since the case is nice, is available in black, and does have the option for a VFD and remote control.

I have decided on the hard drive I’m going to use at least. I can’t remember who makes it, but its a 300G 5400RPM drive. Big and quiet. Speed isn’t important.

As I progress with this project, I’ll post updates….

marc Projects