Elphel Software Kit for Ubuntu
Contents
About
This page is a simple howto for running Elphel software on Ubuntu GNU/Linux.
Our software kit is tested on Ubuntu 8.04.1 and is starting to be tested with Ubuntu 8.10 (Intrepid)
You can download this GNU/Linux distribution freely from http://www.ubuntu.com/
If you are new to GNU / Linux
Many forums and wikis are available in many languages to help you to install and use Ubuntu. Ex: http://www.google.com/search?q=forum+ubuntu (you can add "&hl=fr" or any language code to the URL)
Most instructions below are commands that you need to enter in the in the terminal window. For the lines that do not end with "\" sign you just copy them one-by-one and paste in the terminal window (in KDE it is Konsole in the "System" menu). For pasting you can not use <cntrl-V> - you need to right-click in the terminal window and select "Paste" from the drop-down context menu. Alternatively you can use the middle mouse button to both copy (drag while middle mouse pressed) and paste - click it in the console window.
Character "\" at the end of the line means continuation, so you can copy the whole block of text where each line but the very last ends with "\" and paste them together.
Many of the commands start with "sudo" - first time system will ask you for your user password that you enter without any starts (provided you have administrative privileges).
If you get some problems it is very useful to copy the error message that system outputs (avoiding anything specific to your particular installation - like user directories names) and paste them into the search box of you browser.
User software
Some software need to be patched and recompiled even if they exist in Ubuntu software repositories, some softwares are not yet packaged in Ubuntu, so you have to compile them from sources also. We try to push our software patches to the mainstream applications, but it take time and is not always possible.
Mplayer
As for now MPlayer have to be patched and recompiled we document here the most simple way to do it on an Ubuntu or Debian based workstation.
First install some complilation dependencies, mainly libraries...
sudo apt-get install build-essential debhelper libncurses5-dev libesd0-dev liblircclient-dev libgtk2.0-dev \ libvorbis-dev libsdl1.2-dev sharutils libasound2-dev liblzo-dev gawk libjpeg62-dev libaudiofile-dev \ libsmbclient-dev libxv-dev libpng3-dev libgif-dev libcdparanoia0-dev libxvidcore4-dev libdv-dev \ liblivemedia-dev libfreetype6-dev em8300-headers libgl1-mesa-dev libdvdread-dev libdts-dev libtheora-dev \ libglu-dev libartsc0-dev libfontconfig-dev libxxf86dga-dev libxinerama-dev libxxf86vm-dev \ libxvmc-dev libggi2-dev libmpcdec-dev libspeex-dev libfribidi-dev libfaac-dev libaa1-dev libcaca-dev \ libx264-dev libpulse-dev libmad0-dev ladspa-sdk libdbus-glib-1-dev libaudio-dev liblzo2-dev libdvdnav-dev \ libopenal-dev libjack-dev libtwolame-dev libsvga1-dev libenca-dev libmp3lame-dev
If you are under Ubuntu 8.10 (Intrepid) replace liblame-dev at the end by libmp3lame-dev
Get the MPlayer ubuntu source package:
apt-get source mplayer
patch the sources and compile:
cd mplayer-1.0~rc2/ sed s/\#define\ MAX_RTP_FRAME_SIZE\ 50000/\#define\ MAX_RTP_FRAME_SIZE\ 5000000/g \ libmpdemux/demux_rtp.cpp > libmpdemux/demux_rtp.cpp_ mv libmpdemux/demux_rtp.cpp_ libmpdemux/demux_rtp.cpp sudo dpkg-buildpackage cd ..
install mplayer package:
sudo dpkg --install mplayer_1.0~rc2-0ubuntu*.deb
You should be able now to play videos with up to 5MB frames (highest quality 5MPix images are around 1 MB) as a multicast or unicast video stream. (the streamer in the camera should be ENABLED)
mplayer rtsp://192.168.0.9:554 -vo x11 -fs -zoom
For developers
Adding universe and multiverse sources
Please follow this howto for adding universe and multiverse sources.
https://help.ubuntu.com/community/Repositories/Ubuntu
or
https://help.ubuntu.com/community/Repositories/Kubuntu
Install needed packages
Minimal packages:
sudo apt-get install cvs build-essential autoconf flex byacc bison libglib2.0-dev tcl gettext libncurses5-dev patch zlib1g-dev nfs-kernel-server bash xutils-dev
Suggested packages:
sudo apt-get install kinfocenter minicom firefox graphviz doxygen kdevelop ctags cervisia php5 php5-cli sudo gecko-mediaplayer # gecko-mediaplayer should be installed before mplayer as it installes the unpatched one
Download and install Cris-GCC compiler:
wget http://www.axis.com/ftp/pub/axis/tools/cris/compiler-kit/cris-dist-linux-headers-1.64.tar.gz wget http://www.axis.com/ftp/pub/axis/tools/cris/compiler-kit/cris-dist-linux-headersv32-1.64.tar.gz wget http://www.axis.com/ftp/pub/axis/tools/cris/compiler-kit/cris-dist-glibc-1.64.tar.gz wget http://www.axis.com/ftp/pub/axis/tools/cris/compiler-kit/cris-dist-1.64.tar.gz tar zxvf cris-dist-1.64.tar.gz cd cris-dist-1.64/ tar zxvf ../cris-dist-linux-headers-1.64.tar.gz tar zxvf ../cris-dist-linux-headersv32-1.64.tar.gz tar zxvf ../cris-dist-glibc-1.64.tar.gz sudo ./install-cris-tools
answer by default (enter, enter, ...)
If in Ubuntu 8.10 you get an error like:
In function 'open', inlined from 'collect_execute' at /home/oleg/Public/cris-dist-1.64/./gnu-toplev/gcc/collect2.c:1622: /usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments make[1]: *** [collect2.o] Error 1 make[1]: Leaving directory `/home/oleg/Public/cris-dist-1.64/tmpdir/install-cris-tools.2390/top/elf/gcc' make: *** [all-gcc] Error 2
solution 1 (you'll need to apply it to all the files use this function):
Add as a last 3rd argument - 0666, like open(file_name,O_RDWR|O_CREAT,0666)
solution 2 (downgrade from gcc-4.3 to gcc-4.2 - probably, you can migrate back to gcc-4.3 after compiling cris-gcc):
sudo apt-get remove gcc sudo apt-get install gcc-4.2 g++-4.2 sudo ln -s /usr/bin/gcc-4.2 /usr/bin/gcc sudo ln -s /usr/bin/g++-4.2 /usr/bin/g++ sudo ln -s /usr/bin/gcc-4.2 /usr/bin/cc
Configure your NFS server
Let's say you want to configure an NFS server on your machine and your IP address is 192.168.0.100.
Edit /etc/exports file with your favorite editor. Here I use nano.
sudo nano -w /etc/exports
Add at the end of the file:
/nfs 192.168.0.0/255.255.255.0(rw,sync)
save the file.
If it does not yet exist make /nfs directory and make it world writable to make it possible to write logs from the camera.
sudo mkdir /nfs sudo chmod 777 -R /nfs
And finally export the filesystem.
sudo exportfs -a
Install sources of Elphel camera
CVS
Get elphel353_install_from_cvs.sh script and execute it.
Release
http://sourceforge.net/projects/elphel
- get one of the elphel353-7.1 or elphel353-8.0 releases
- decompress the archive
- execute the ./install_elphel script
./install_elphel
In Ubuntu 8.10 there can be an error like (update - solved with installation xutils-dev for 'makedep' utility at 8.10):
*** No rule to make target `../../include/openssl/idea.h', needed by `hmac.o'.
The solution is to create a link:
cd /cvs_sync/elphel353-7.1.8/elphel353-7.1/apps/crypto/openssl-IR0_9_7f-3/openssl/include/openssl ln -s ../../crypto/idea/idea.h
Elphel SDK
We provide our clients with a complete SDK to develop software, FPGA code and even to redesign the hardware.
PHP
KDevelop IDE
FPGA Development in Elphel cameras
- FPGA Development in Elphel cameras is the page to read if you want to install Xilinx tools to do some FPGA development.
- iverilog
- GTKWave
EeeBox (K)Ubuntu 8.10 installation
ACPI configuration
EeeBox will suspend and freeze after some time w/o any activity on it, so it's better to turn off suspend. Run this script at this new folder with root privileges (for example, put text to go file, make that file executable chmod a+x go, and run with sudo sudo ./go):
#!/bin/sh # patch ACPI config to turn off suspend patch -N /etc/default/acpi-support << 'EOP' --- a 2008-12-31 00:40:41.000000000 +0200 +++ acpi-support 2008-12-31 00:40:08.000000000 +0200 @@ -56,7 +56,7 @@ # Please specify a space separated list of options. The recommended value is # "dbus pm-utils" # -SUSPEND_METHODS="dbus-pm dbus-hal pm-utils" +SUSPEND_METHODS="" @@ -69,10 +69,10 @@ # # Comment the next line to disable ACPI suspend to RAM -ACPI_SLEEP=true +#ACPI_SLEEP=true # Comment the next line to disable suspend to disk -ACPI_HIBERNATE=true +#ACPI_HIBERNATE=true # Change the following to "standby" to use ACPI S1 sleep, rather than S3. # This will save less power, but may work on more machines EOP # and apply changes /etc/init.d/acpi-support restart /etc/init.d/acpid restart
Network configuration
Please, someone, have a look how to configure network at Kubuntu 8.10 - I have bad luck with that. The main idea is: setup WiFi for internet, and local interface for local network to work with camera. Possible problem: Oleg told me what with POE adapter, not POE switch (as I do) local network will not work - network manager shut down eth0 every time when contact is lost, for example, when cable disconnected from the camera for reflash with button (this used with prod353 system).
GCC-CRIS cross-compiler installation
Make a directory where you will build cross-compiler and store sources of it, and run this script at this new folder with root privileges (for example, put text to go file, make that file executable chmod a+x go, and run with sudo sudo ./go):
#!/bin/sh # install packages to build cross-compiler apt-get install build-essential gcc-4.2 g++-4.2 xutils-dev libncurses5-dev autoconf automake byacc bison zlib1g-dev patch cvs gettext # create links to GCC-4.2 rm /usr/bin/gcc rm /usr/bin/g++ ln -s /usr/bin/gcc-4.2 /usr/bin/gcc ln -s /usr/bin/g++-4.2 /usr/bin/g++ # download sources - if links are broken, check developer.axis.com wget -c http://www.axis.com/ftp/pub/axis/tools/cris/compiler-kit/old/cris-dist-1.64.tar.gz wget -c http://www.axis.com/ftp/pub/axis/tools/cris/compiler-kit/old/cris-dist-glibc-1.64.tar.gz wget -c http://www.axis.com/ftp/pub/axis/tools/cris/compiler-kit/old/cris-dist-linux-headers-1.64.tar.gz wget -c http://www.axis.com/ftp/pub/axis/tools/cris/compiler-kit/old/cris-dist-linux-headersv32-1.64.tar.gz # unarch that tar -xvf cris-dist-1.64.tar.gz cd cris-dist-1.64 cp ../cris-dist-glibc-1.64.tar.gz ./ tar -xvf cris-dist-glibc-1.64.tar.gz cp ../cris-dist-linux-* ./ tar -xvf cris-dist-linux-headers-1.64.tar.gz tar -xvf cris-dist-linux-headersv32-1.64.tar.gz # build and install - agree with all questions, at the finish also ./install-cris-tools # delete build directory - we don't need it anymore cd .. rm -R cris-dist-1.64 # restore host GCC links - out of the box, Ubuntu 8.10 use GCC-4.3 as default rm /usr/bin/gcc rm /usr/bin/g++ ln -s /usr/bin/gcc-4.3 /usr/bin/gcc ln -s /usr/bin/g++-4.3 /usr/bin/g++ # it's all, cross-compiler was installed; but while we still root, install packages needed to build firmware here apt-get install libglib2.0-dev pkg-config flex gettext tcl8.5
NFS installation and configuration
Before firmware build, we should install and configure NFS, because firmware build process will put firmware images in to it for remote (and local) camera reflashing. Run this script with root privileges:
apt-get install nfs-kernel-server mkdir /nfs mkdir /nfs/elphel353-2.10 chmod -R a+r /nfs chmod -R a+w /nfs echo "/nfs 192.168.0.0/24(rw,async)" >> /etc/exports /etc/init.d/nfs-kernel-server restart
build firmware
other steps
...to be continued - network setup, Firefox,KDeveloper,MPlayer installation...