Table of Contents

Getting started

When you receive your camera it is delivered with a recent firmware version and factory default settings. The camera doesn't provide a serial RS232 connection. Instead you log in via Telnet to the default IP address. Please setup your network appropriately to reach the camera from your connecting PC. You must connect from the same subnet since the camera's factory defaults doesn't contain a default gateway (see Network Configuration for more details on how to setup your camera's IP address). An often used way to initially connect is to unplug your computer from enterprise network, set it up with a fixed IP address like 192.168.2.20 and connect to the camera by means of a cross link network cable (if no switch is at hand):

> telnet 192.168.2.10
Trying 192.168.2.10...
Connected to 192.168.2.10.
Escape character is '^]'.

sbo-00-0e-f0-01-02-a3 login: root

Password: Festo

BusyBox v1.5.1 (2007-10-11 10:48:56 CEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

~ $

Now you are logged in.

Mounted File Systems

To have a first orientation about file systems you can display the mount list:

~ $ mount
rootfs on / type rootfs (rw)
/dev/root on / type ext2 (rw)
/proc on /proc type proc (rw,nodiratime)
/devpts on /dev/pts type devpts (rw)
/dev/mtdblock5 on /ffx type jffs2 (rw,noatime)
/dev/mtdblock6 on /ffxusr type jffs2 (rw,noatime)
/dev/ram1 on /tmp type minix (rw)
~ $ 

This file systems have the following meaning:

User applications should be best stored under /ffx or /ffxusr and started from there. To start applications automatically each time the camera boots, the user may modify the startup script /ffx/rcS. This script is executed at the end of boot process.

Process List

Logged in on the camera, you can display the currently running processes with the command ps:

~ $ ps
  PID  Uid        VSZ Stat Command
    1 root       1964 S   init
    2 root            SWN [ksoftirqd/0]
    3 root            SW< [events/0]
    4 root            SW< [kblockd/0]
    5 root            SW< [khelper]
    6 root            SW  [pdflush]
    7 root            SW  [pdflush]
    9 root            SW< [aio/0]
    8 root            SW  [kswapd0]
   10 root            SW  [mtdblockd]
   41 root       1964 S   syslogd -s 100 -m 0
   45 root       1972 S   telnetd -l /bin/login
   48 root            SWN [jffs2_gcd_mtd5]
   51 root            SWN [jffs2_gcd_mtd6]
   55 root       1972 S   httpd -h /ffx/online-doku/ -c /ffx/etc/httpd.conf
   56 root       1976 S   -ash
   57 root       2048 S   -ash
   58 root       1968 R   ps
~ $

All processes are listed with their process number (PID), the user who created the process (Uid), the virtual memory size in kByte (VSZ), the current process status (Stat) and the command that started the process. You can see the init process an the first line with PID 1, which is the first process created on the camera. The PID is incremented every time a new process is spawned. Process states are: S = sleeping, R = running, W = swap candidate (which is not possible in case of the disk less camera), N = low priority (nice to other processes), < = high priority (not nice to other processes). Command names in brackets denote so called Italic Textkernel threads, i.e. processes spawned by the kernel, not by any user command (see the Linux kernel documentation for further information about individual meaning of individual kernel threads). You can see that syslog http and telnet daemons are running and that two shell processes (ash) are started. The currently running process is the ps command itself.

Command Line Commands

To see which commands are available on the camera you can use the command completion functionality of the shell by pressing the TAB key twice:

~ $ <TAB><TAB>
[               date            gdbserver       last            netstat         startftp        time
[[              dd              getty           ldconfig        nice            starthttp       top
adduser         df              grep            ldd             nohup           startimgsrv     touch
ar              diff            gunzip          less            nslookup        startservices   tr
arp             dirname         gzip            ln              passwd          starttftp       tty
arping          dmesg           halt            loadfpga        php             stat            udhcpc
ash             du              head            logger          pidof           strace          umount
basename        echo            hexdump         login           ping            strings         uname
bunzip2         egrep           hostid          losetup         poweroff        stty            unzip
busybox         env             hostname        ls              printf          sum             uptime
bzcat           expr            httpd           lsmod           ps              sync            usleep
cat             false           id              makepasswd      pwd             syslogd         vi
chgrp           fconfig         ifconfig        md5sum          reboot          tail            vsftpd
chmod           fgrep           imgsrv          mkdir           reset           tar             watchdog
chown           find            init            mkfifo          rm              tcpdump         wc
chroot          flash_eraseall  insmod          mkfs.minix      rmdir           tee             wget
clear           flash_info      ipcrm           mknod           rmmod           telnet          xargs
cmp             flash_unlock    ipcs            mount           route           telnetd         yes
cp              free            ipkg-cl         mounttarget     sed             test            zcat
cpio            ftpget          kill            mv              sh              tftp
cut             ftpput          killall         nc              sleep           tftpd
~ $

You should find the most important shell commands in this list. The majority of commands is just a symbolic link to the single binary busybox. The busybox project aims to provide a wide range of shell commands in a single binary to save as much program code as possible. Embedded systems typically make use of busybox to save file system space. See the busybox web site for further information.

Please note that vi is available as editor to modify startup scripts etc. In addition some debugging tools, like strace, tcpdump and gdbserver are available, too.

Device Drivers

To see which drivers are loaded you can use the command lsmod. See the table below for explanation of individual drivers:

~ $ lsmod
Module                  Size  Used by
fpgapi                  2656  0
fram                    5224  0
mcp2515                74240  0
inout                   8380  0
datamap                 2092  0
ds18s20                 3504  0
i2cfpga                 3624  0
camlink               560268  0
dm9000x                13240  0
config                  8684  0
~ $ 
Driver Puropse Interface Explanation
fpgapi Visual Applets /dev/fpgapi0, /include/fpgapi.h Access to Visual Applet parameters
fram FRAM /dev/fram0 Access to FRAM chip via SPI
mcp2515 CAN /dev/can0, /include/can.h CAN messages driver interface
inout I/O and LEDs /proc/inputs, /proc/outputs, /proc/leds Digital IO and status LED interface
ds18s20 Unique ID, Temperature /proc/id, /proc/temp Access to Unique ID and temperature
i2cfpga I2C Interface /dev/i2c0 Used for communication with image sensors
camlink Image sensor /dev/camlink0, /include/OCamera.h Image qcquisition API
dm9000x Ethernet /dev/eth0 Ethernet network interface, BSD socket API
config Configuration /proc/config/*, fconfig Configuration settings driver

Configuration Settings and Versions

Several useful information about the camera can be accessed from the /proc/config filesystem (a complete list can be found here). E.g. the current firmware version can be read by

~ $ cat /proc/config/firmware

3.1.4-festo0

The firmware version can also be read from /etc/issue:

~ $ cat /etc/issue

Firmware version 3.1.4-festo0 - revision: 226

The additional revision code at the end of line gives information about the exact firmware repository revision at the manufacturer.