Remote video baby monitoring

My stuff:
Other stuff:

The problem

We decided that an audio baby monitor does not fill our needs as parents. If we hear movement or strange noises over the monitor, we have to peek into Jacob's room to see what is going on. Sometimes he's just snoring, sometimes he's groaning himself to sleep, and sometimes he's standing up, looking at the door, waiting for us to pick him up. If he's almost asleep, opening up the door is a sure way to startle him awake, so we needed a way to peek without getting his attention.

Plan A

I suggested to my wife that we put a Linux box in his room with my old parallel B/W Quickcam, which works great in low light and we already have. I could just run some CAT5 cable along the baseboards (we live in an apartment and can't tear holes in the wall to do nice wiring) and connect it to the rest of our home network. She insisted, though, that since I have an office to keep computers in, she didn't want one in his bedroom.

Plan B

The next best option I could think of is a network-capable camera. There are many models available, mostly ethernet, but some even support 802.11 (the ultimate in convenience). There is also a selection of X10 (brand) wireless cameras. All these are expensive, though. We needed a solution in the $50 ballpark. My home office is right next to Jacob's room (there's a six inch wall segment between the hinge sides of the two doors. If we owned the place, we could just put a cable straight through the wall, and maybe even use that Quickcam (parallel extension cables are a big gamble, plus I'd have to extend the power connector). The distance from my USB-equipped workstation into his room was right at 16 feet, the limit for a USB link. I knew we'd have to use a USB camera, and most come with a 6 foot cable, so I started shopping around for a 10-foot USB extension cable. That would only get me partway up the wall right behind the door, though, not giving me a good overhead view of the crib. I started looking for a 16-foot cable and a cheap powered hub, but the cable would be around $15-20 and the hub would be at least another $30.

Soon I found an alternate solution: Active USB extension cables. From Sewell Direct (I checked prices at PriceGrabber and Amazon), I found that Sewell had a 16 foot extension for just under $20, shipped. These cables are basically a combination of a long USB cable and a bus-powered single-port hub at the end, allowing you to extend another 16 feet from the end, leaving plenty of room for a mere 6-foot camera cord. When I connected the cable, it actually identified itself as a 4 port hub, so I assume they just used a cheap hub chip and only connected one port.

I also had to find a camera. The hard part is that although cheap USB cameras are plentiful, they are almost always color, and have much worse low-light performance than my old Quickcam. Nonetheless, I finally settled on the $30 GE EasyCam Pro from Target. Not a perfect camera, but it can do up to 30fps at 320x240 or 15fps at 640x480. Monitoring a baby is easy even at 1-2 fps, but I needed the wide field of view of a 640x480 camera. It also includes a microphone supported as a USB-audio device, more on that later.

Our investment is just under $50. That's not as cheap as Plan A, but it still works.

The EasyCam Pro touts good low-light performance, but I wasn't under any illusion that we would see much at night. I happened to have a FireCracker set lying around (usually available from X10 for $5 or so), so the addition of a $8.50 non-fancy incandescent (3-way, 50/100/150 watts) floor lamp from Target and the X10 dimmable lamp module gave me a way to add light slowly until we can see Jacob well.

I've recently remounted the camera upside-down on the ceiling, since we've moved the crib across the room (away from the no-longer-baby-proof light switch). This is no problem for camsource, the Linux-based video streaming application I selected. I simply updated the configuration to flip the image vertically and horiontally.

I had some trouble getting anywhere with the EasyCam's microphone when it was connected to the extension cable instead of directly to the PC, but eventually the right combination of drivers offered some new hope. I grabbed the latest ov511 driver (v2.28) and recompiled it for my kernel. Since I'm using ALSA, I compiled its own snd-usb-audio module and specifically removed the generic in-kernel USB audio driver (audio). I setup Icecast2 to serve encoded audio across the network, and DarkIce to grab the audio from the camera, encode it to MP3, and stream it to Icecast. Once I get the PC running again (hard drives don't last as long as they used to), I'll upload some of the configuration details -- the camera only outputs in a very specific format. If you don't match DarkIce's configuration appropriately, you'll have horrible results. Now, as long as the PC is functional, I can watch the video via a web browser (setup camsource to push video), and listen to the audio separately with iTunes on our iBook.

That's all for now, I'll probably add more info later.