The Rasbpian Linux distribution was recently released, offering a significant performance boost for Raspberry Pis by using an architecture that supports hard floating-point calculations on the Pi’s ARM processor.
Raspbian is based on Debian Wheezy, so very few changes were required to port the Raspberry Tank system to Raspbian. The steps followed were roughly:
Step 1: Back up the files
With the steps in the Raspberry Tank Build Diary followed exactly, the only significantly modified files and directories were:
/home/pi/* # Remember to copy recursive! /var/www/* /etc/init.d/rt_http /etc/init.d/webcam /etc/network/interfaces
These directories/files were copied to an ext3-formatted memory stick (to ensure that permissions were preserved, which would not be the case on a FAT-formatted stick).
Various files were also modified during the installation of the WiFi dongle drivers, but as Raspbian includes the drivers for our device anyway, we don’t need to worry about these.
Step 2: Install Raspbian
The Raspbian 2012-08-16 image was downloaded on another computer and
dded onto the Pi’s SD card. The newly Raspbian’d Pi was booted with a keyboard and monitor attached, as the network connection would not necessarily be set up. (I forgot to make a note of Raspbian’s default network settings.)
The Raspbian setup utility was used to expand the normally 2GB image to fill the rest of my 8GB SD card.
Step 3: Restore the files
The backed up files and directories were restored from the memory stick to their previous locations. The init scripts then needed to be re-added to the default run level with the following commands:
sudo update-rc.d webcam defaults sudo update-rc.d rt_http defaults
Step 4: Restore the Programs and Libraries
lighttpd web server was still missing from the Rasbpian build, along with a couple of libraries required to compile
mjpg_streamer. The Raspbian system was updated, and these installed, using the following commands:
sudo apt-get update sudo apt-get upgrade sudo apt-get install lighttpd libjpeg8-dev libpthreads-dev
Step 5: Recompile rt_http
Because the Raspbian system uses the
armhf architecture rather than
armel, we need to re-compile the two programs that we compiled from source under the
armel Debian system –
The easy one is
rt_http, which was compiled without issues by executing:
cd /home/pi/rt_http make
Step 6: Recompile mjpg_streamer
mjpg_streamer was a little more difficult.
make script expects to see Video4Linux version 1, which is no longer installable in Raspbian’s version of Debian. Video4Linux 2 is available, but
mjpg_streamer has not yet been updated to support it.
I did a quick hack to make
mjpg_streamer think that V4L 1 was installed:
sudo ln -sf /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
This makes a symlink from the location of a V4L 1 header file, pointing at the equivalent V4L 2 header. The majority of
mjpg_streamer is actually compatible with V4L 2, so this allows most of it to compile. The only remaining issue is with a plugin,
input_gspcav1, that thankfully is not necessary for the Logitech C200 webcam. References to this plugin were removed from
Makefile, resulting in a file that looks like this. After the modification,
make clean all successfully built the program.
One restart later, with the WiFi dongle and webcam attached, and the Raspberry Tank was back in working order!