Pages

2012-06-05

Battery powered, Wireless, Motion detecting Raspberry Pi

Hardware

Software

  • Arch Linux ARM
  • Motion
  • Lighttpd

Set up

Update Arch

Before installing any new software it's a good idea to get up-to-date. I was caught out with an issue which seems to be catching others out too - when upgrading I got this:
error: failed to commit transaction (conflicting files)
hwids: /usr/share/hwdata/pci.ids exists in filesystem
hwids: /usr/share/hwdata/usb.ids exists in filesystem
Errors occurred, no packages were upgraded.
In this case, for these two files, it's OK to rename them and try again - it seems that there's been a change of which package supplies these files and it's not handled very gracefully.
[root@alarmpi ~]# mv /usr/share/hwdata/pci.ids /usr/share/hwdata/pci.ids.save
[root@alarmpi ~]# mv /usr/share/hwdata/usb.ids /usr/share/hwdata/usb.ids.save
[root@alarmpi ~]# pacman -Syu

Wifi

I chose the ASUS USB-N10 because of its size and the fact that it works out-of-the-box with Arch. It uses the r8712u module which is already installed with the distro. Getting the wireless to work well enough is not particularly straightforward. However there are some good instructions here: ArchWiki Wireless Setup. For the wireless management software I chose netcfg and wrote a script similar to the one given under "Intermittent Connection Failure" so I had complete control over what I wanted to do whenever I lost connection to my router. This was helpful for troubleshooting and useful when you're walking around the garden trying to find a good place to put the box.

Motion

Motion is a great piece of software. Just use pacman to install it and then follow the instructions on the Motion site for setting this up. My top tip would be to edit /etc/motion/motion.conf to set up the stream and control ports and switch off webcam_localhost and control_localhost. Then run it on the console "motion -s" and use the web control to fiddle with the settings - for some changes you'll have to restart motion. Sometimes you might need a mask file. I found that taking one of the snapshots, loading it in Gimp and painting over the top was the best way to do this. You can then export the file in pgm format. At 320x240 the Raspberry Pi was quite happy to run at 5fps with motion using about 20 to 25% CPU and low memory usage (I've still got 194M free).

Lighttpd

To get at the snapshots and movies that Motion has captured it's nice to be able to grab them from a web page. I'm going to write some Python to do this nicely, but in the mean time I've set up lighttpd to present the capture directory really quickly. Simply use pacman to install it and then edit /etc/lighttpd/lighttpd.conf following the quick instructions here: Tutorial Configuration

Note: I am now uploading my videos to Google Drive rather than keeping them on the Raspberry Pi. See: Motion Google Drive Uploader and Emailer

Results

I have been consistently getting nearly 12 hours running time from the battery pack on a full charge. That gave me enough time to leave the box out all day and catch some "wildlife". Now I just need to write some software at last! (More posts on that coming soon)

53 comments:

  1. This might be a really stupid question but after playing for ages to use wicd-curses and it keep dropping my wifi connection i want to install netcfg but dont know how to install it. Do i have to compile it first?

    ReplyDelete
  2. Sorry I should add im using a PI with Debian Squeeze. Should i just install Arch?

    ReplyDelete
  3. This is very interesting, and the battery life looks promising, but have you had much luck with larger images? I'm finding, even at 320x240, results have been a bit choppy - and 640x480 will just crash the system after a while. It is some reassurance that you're using the same camera as I am though.

    I moved to raspbian to enjoy the benefit of the hard floating point - but having seen your getting 5fps I'm going to try archlinux again. Last time i tried arch, network connectivity locked up when motion was running -but i don't know if i had run rpi-update...

    Out of interest, are you over clocking? I was running at 800MHz on raspbian.

    ReplyDelete
  4. By the way -do you know off hand if there's a 3G modem that will do this?

    I was going to run offline... but realised i am going to need a real time clock to get meaningful timestamps.

    Getting the system online could be a neat workaround... besides being a very useful thing in it's own right!

    ReplyDelete
  5. @corruptsector I'm no expert at this. I use Linux a lot but this is the first time I've set up Wifi on any Linux box. I can't really comment on Debian Squeeze either, I've heard that a recent update has improved it and I am running it on my other Pi (the one serving the web site) but I've found Arch just seems to work well and is minimalist - just what you need for the little Pi. As far as netcfg goes - I read about the other options and decided that netcfg would simplify things a bit but leave me to write the "keep-alive" script. Why not get another SD card and give Arch a go - what have you got to lose?

    ReplyDelete
  6. @michael hartup I tried 640x480 for a while but it was a struggle for the hardware - I certainly haven't tried it on wifi. I haven't got round to updating the firmware yet either, and no, I'm not overclocking. I've found that if you push the network too hard on wifi it gives up - one of the reasons why I wrote my own script to restart the wifi if it loses connection to the router.

    ReplyDelete
  7. Thanks for the feedback - I suppose that confirms my results for 640x480, and it wasn't just something i had done.

    ReplyDelete
  8. Jeremy, any reason you ditched the PS3 eye? Cheers, Ashley

    ReplyDelete
  9. I had to give the PS3 EyeToy back to the kids! Also I wanted a higher res camera for another project.

    ReplyDelete
  10. [I had to give the PS3 EyeToy back to the kids! Also I wanted a higher res camera for another project.]

    No argument there :-) just wondered because I have one on order for my pi, thanks for publishing your efforts!

    ReplyDelete
  11. Are you able to stream audio and video? Is so...how?

    ReplyDelete
  12. @Anonymous - I haven't had a go at streaming Audio and Video yet. No.

    ReplyDelete
  13. This is exactly the setup that I want the Raspberry Pi to do. I have the ASUS USB-N10 and I have successfully used it on Fedora with the r8712u driver. I downloaded the archlinuxarm-29-04-2012 distribution from the rPi downloads site, but that driver isn't included. The firmware is there, but no driver. What did I do wrong?

    ReplyDelete
  14. @jbuehl - Try a complete system upgrade: pacman -Syu

    A lot has changed since the 29-04-2012 release.

    ReplyDelete
  15. I tried that according to what you posted above, but it failed with "error: failed to commit transaction (conflicting files)". I had previously updated some other packages related to getting the camera to work, so maybe that caused the conflict. I'm going to start over from the downloaded distro. I just wanted to confirm that 29-04-2012 was the one that you started with.

    ReplyDelete
  16. @jbuehl - Yes, I started with 29-04-2012.

    ReplyDelete
  17. When I view the live webcam stream, I only see the video with the motion tracking in process, i.e. black screen attempting to identify motion. Is it possible to just view the actual live stream as a standard live stream without the motion tracking?

    ReplyDelete
  18. You should see a normal stream when you're not in setup mode. Make sure you're not running: motion -s. See the getting it running page

    ReplyDelete
  19. Oops - knew I was probably doing something stupid!

    Thanks.

    ReplyDelete
  20. 1 other thing I meant to ask - your camera runs straight off the rpi? My logitech doesnt seem to get enough power when I run it from the rpi. The camera light doesnt come on and the terminal shows a problem opening video. Any tips on what I could try? It works 100% when I use a powered USB hub, but in doing so I am unable to create a fully wireless version like yours.

    ReplyDelete
  21. I was able to upgrade the software and now the wireless driver is loading, but it required a couple of additional steps. First, I had to upgrade pacman, and then it complained about the existence of /var/lock and /var/run, so I deleted those.

    # mv /usr/share/hwdata/pci.ids /usr/share/hwdata/pci.ids.save
    # mv /usr/share/hwdata/usb.ids /usr/share/hwdata/usb.ids.save
    # pacman -S pacman
    # rm /var/lock
    # rm /var/run
    # pacman -Syu

    ReplyDelete
  22. Do you now why i get this error? it works but i get errors :S

    Corrupt JPEG data: premature end of data segment

    ReplyDelete
  23. Do you now why i get this error? it works but i get errors :S

    Corrupt JPEG data: premature end of data segment

    ReplyDelete
  24. Please I need the file (raspberry pi-conf)

    /etc/motion/motion.conf

    makaco.link@gmail.com

    ReplyDelete
  25. I have managed to follow your blog for RaspPi and I have motion up and running with Logitech STX Communicate at 640x480.
    I even plugged my TP Link wifi card that runs Atheros 9k.

    The only issue I have is the stability of WiFi link, so I am going back to wired Ethernet.

    Thanks for nice tutorial :)

    ReplyDelete
  26. Have you considered something like this to power it: http://cgi.cottonpickers.plus.com/~cottonpickers/forum/viewtopic.php?f=5&t=4#p4

    ReplyDelete
  27. Hi, nice job!
    I try run motion but I cannot get images greater then 352x288. more.
    http://www.lavrsen.dk/foswiki/bin/view/Motion/SupportQuestion2012x07x20x193051
    I try to only snap one images but there no aps for that in Arch-linux.
    I found http://aur.archlinux.org/packages.php?ID=28170 but I do not know how to install.. :( pacman -S uvccapture do not work.
    make DO NOT work :(

    ReplyDelete
  28. I'm interested in the battery pack, did you have to make any modifications to the cord or use any sort of converter?

    ReplyDelete
  29. @freezerburn No modifications required. Just plug in and switch on!

    ReplyDelete
  30. is it possible to stream with motion live flv?

    ReplyDelete
  31. Not sure if it would be possible using the battery approach, and I needed both the USB ports, but two webcams at once can work on the Rapsberry Pi. I used Motion under the "Raspian" distribution.

    ReplyDelete
  32. Did you consider Power over Ethernet (PoE) for the Raspberry Pi? This seems to work OK in my limited testing so far, and means just one cable to run :)

    ReplyDelete
  33. Excellent work Jeremy!

    would it be possible to skip the wifi part altogether if this is running in my house and over ethernet?
    would I need to do anything other than ignore that step?

    thank you...

    ReplyDelete
    Replies
    1. @kevin just skip that bit. In fact that's the most problematic part anyway due to the USB power problem. Have fun!

      Delete
  34. Brilliant thanks for the reply am on it now...love arch!

    ReplyDelete
  35. Strange... Using the vx 700 which is supported and dmesg picks it up but lsusb doesn't... Works fine in windows but not on arch... /scratches head

    ReplyDelete
  36. It's impressive! I've got a simple question about LifeCam Cinema. Does it work well in bad light? I've got hedgehog breeding and I am using old cheap Creative cam with Motion to show hedgehogs live on my website. Main activity of the animals is at night (and I don't want them to feel like it's a day - turning on strong light), so I need a camera that works well in bad light.

    ReplyDelete
  37. Regarding low light usage for hedgehogs, I would modify the camera to make it infra-red sensitive by removing the red glass filter (example). This is done for astronomy usage too. You could then supplement this with an infra-red light source. This is also done for bird nesting boxes (example). The downside of IR is the colours don't look natural.

    ReplyDelete
  38. Can i combine this power pack with a solar panel for better mobility?

    I am actually happy that you are so involved with the raspberry pi.

    ReplyDelete
  39. Response to KEnikuv: I am also seeing the limitation to 352x288 resolution. It must be a problem with the USB camera driver, since I see the same limitation with fswebcam and mjpg-streamer. It has nothing to do with motion itself.

    ReplyDelete
  40. I'm currently using an NSLU2 with a Quickcam Pro 9000 running Openwrt and MJpeg Streamer and it works great as a remote internet webcam streamer. the NSLU2 is less powerful than the Raspberry Pi and I am planning on using a Pogoplug or my dockstar to replace the NSLU2 as soon as I have time (I'm planning on using it as a security webcam storing recordings. For me I think the RPi, although more powerful than the NSLU2 or Pogoplug, is a waste of CPU for just webcam duties as the GPU won't be used.. I am using my RPi as portable XBMC device instead...

    ReplyDelete
  41. Jeremy, after following your instructions I too have built this system.

    Picture : www.flickr.com/photos/ajbevan/7900597230/
    Video : www.flickr.com/photos/ajbevan/7913993492/

    Although it's running off mains electricity at the moment, it will also get it's own custom built wooden box to live in.

    Regards, Adrian...

    ReplyDelete
  42. Interesting project and comments . I am disappointed to hear that the rpi struggles with a resolution greater than 320x240. I currently use scrap $20 pentium machines and can record 2Mpixel at 5fps. Anything less is useless for a security system. I was hoping to relplace the desktop boxes with rpi even though it would cost more. Now...no way.

    ReplyDelete
  43. If you need audio, then you have to opt for a camera system having audio recording equipment wherein you not only see what happens, but can hear as well.

    ReplyDelete
  44. Wow , thats neat. Adding a solar panel (like a cottonpickers panel) should be easy and keep running for days. Just need to improve picture quality now!

    ReplyDelete
  45. what about heat? I want to install in 90+ F , with high humidity environment. You think it's doable?

    ReplyDelete
  46. Awesome. I have my Raspberry Pi w/ that same webcam. I was wanting to use it for a security system. The HD cameras provide great quality, but using 10m extension USB cables daisy chained can only get you so far.. I was wanting to switch to ethernet, but then I thought Raspberry Pi would be a great video server, which could be read from a Security DVR and recorded.. Hopefully they get PoE working on future generations of Raspberry Pi..

    ReplyDelete
  47. Great stuff. Thanks Jeremy.
    Got this all working nicely with an XBox Live Vision camera (tiny little thing, but it does the job!)

    ReplyDelete
  48. Just for all people's info, I've noticed that the 256MB RAM version does not handle well 640x480..but 512MB versions can handle something like 1-2 frames a second at 864x480 even over WiFi.
    This however comes with a 3-4 second delay. I am using the recommended Debian Wheezy and Motion and a little overclocking (~800..900MHz) with Logitech C910 or B910 USB webcams. Changing CPU/GPU RAM proportions with 256MB version did not seem to affect outcome.

    ReplyDelete
  49. It's probably failing to make a pid file in /var/run - I'd check permissions.

    ReplyDelete
  50. I just got this working with a Microsoft HD-5001 camera using Motion, 640x480 @ 5fps. Using the new v2 Pi.

    I would like to monitor the performance of the Pi so I can tweak the Motion settings and find the sweet spot. How would I do that exactly?

    (Linux noob here, so please be kind...)

    ReplyDelete
  51. то же самое я выжимал из роутера tp link 3020 с той же камерой. распберру тут использовать явно нет смысла

    ReplyDelete