
vor mehr als 2 monaten hatte ich den wunsch, live-bilder von meinem wohnzimmer aus ins internet zu streamen. hardware hatte ich schnell gefunden, die logitech quickcam pro 9000 sollte meine bedürfnisse abdecken, zumal hd-qualität [1600x1200] unterstützt wird.
leider gibt es unter dem derzeitigen kernel [2.6.21.7] von slugos 4.8 keine oder nur mangelhafte v4l [video for linux] unterstützung und die suche nach dem passenden treiber wurde zu einem hürdenlauf. dennoch läuft bei mir seit heute erfolgreich ein mjpg streamer server dienst unter slugos. legt man auf die distro weniger wert, findet man unter diesem blog bereits ein binary firmware image basierend auf openwrt für die nslu2. hier eine anleitung für all jene die slugos als zielplattform haben.
wir werden die v4l sourcen gegen den aktuell laufenden kernel kompilieren. innerhalb dieses paketes gibt es auch den passenden treiber [ http://linux-uvc.berlios.de/ ] für die logitech quickcam pro 9000.
der reihe nach - wir stecken die camera am usb hub der slug an. lsusb erkennt das device sofort und meldet:
# lsusb –s 2:4 -v
Bus 2 Device 4: ID 046d:0990 Logitech, Inc.
somit kommen wir zur treiberinstallation. download des archives
# wget http://linuxtv.org/hg/~pinchartl/uvcvideo/archive/tip.tar.gz
# gzip –d tip.tar.gt
# tar xvf tip.tar
dannach ins ausgepackte archiv wechseln
# cd uvcvideo-33fd4f6f3afa
# make
# make install
um erfolgreich zu kompilieren wird eine aktuelle linux-src-umgebung vorausgesetzt, zudem benötigt man eine ‚cross-compile-umgebung’ [benötigte packages mittels ipkg zu installieren - autoconf, automake, cpp, g++, g++-symlinks, gcc, glibc-utils, gnu-config, kernel-dev, ldd, libgcc, libglib, make, makedevs, ncurses, ncurses-dev, update-modules ]. ausserdem um kernel module zu kompilieren – git und svn [optware repository].
linux sourcen installieren:
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.7.tar.gz
# gzip –d linux-2.6.21.7.tar.gz
# tar –xvf linux-2.6.21.7.tar
# ln –s /usr/src/ linux-2.6.21.7 linux
# ipkg install kernel-dev
# cp /boot/ config-2.6.21.7 /usr/src/ linux/.config
damit eventuelle referenzen des treiberpaketes [uvc] auf native kernel-objects gelinkt werden können, kompilieren wir alle kernel-module [nativ auf der slug dauert das etwas ~2h]
# cd /usr/src/linux
# make menuconfig
# make modules
jetzt haben wir unter /lib/modules/2.6.21.7/kernel/drivers/media/video die aktuellen kernel-module der video4linux umgebung, und diese werden von nun an in das memory geladen.
# cd /lib/modules/2.6.21.7/kernel/drivers/media/video
# insmod v4l2-compat-ioctl32.ko
# insmod v4l1-compat.ko
# insmod videodev.ko
… der erste erfolg dmesg liefert
Jan 10 12:07:43 nwal002 Linux video capture interface: v2.00 - von nun an haben wir unser device [ /dev/video0 ]
# cd uvc
# insmod uvcvideo.ko
…
Jan 10 12:08:36 nwal002 uvcvideo: Found UVC 1.00 device
Jan 10 12:08:36 nwal002 input: UVC Camera (046d:0990) as /class/input/input4
Jan 10 12:08:36 nwal002 usbcore: registered new interface driver uvcvideo
Jan 10 12:08:36 nwal002 USB Video Class driver (v0.1.0)
die installation etwaiger kompatibler softwarepakete [ http://www.quickcamteam.net/software/linux/v4l2-software ] verläuft unspektakulär. recht schnell findet man sich mit uvccapture-0.5, uvc-streamer und eben mjpg-streamer zurecht.
von nun an läuft
# ./mjpg_streamer -o "output_http.so -w `pwd`/www" -o "output_file.so -f pics -d 300000"
als daemon unter non-root-user [ ! /dev/video sollte gruppen berechtigung write gesetzt haben! ] und schreibt zudem alle 5 minuten ein statisches bild, wie z.b. hier. 
um den mjpg stream zu genießen [mozilla firefox], browser auf
http://80.109.78.83:443/webcam/ [user:walcherstrasse17, pwd: webcam] und
geniessen...

Hallo Karl-Martin,
AntwortenLöschenich habe versucht deiner Anleitung zu folgen. Dabei stosse ich auf folgendes Problem:
Die Packages libgcc und makedevs für die Cross-Compile-Umgebung sind weder per ipkg noch opkg zu installieren.
Trotzdem bin ich der Anleitung weiter gefolgt. Dabei hab ich festgestllt, dass in meinem Fall zusätzlich das Paket gcc-symlinks installiert werden musste. Beim Aufruf von "make menuconfig" kommt folgender Fehler:
root@LKG7E9838:/usr/src/linux-2.6.27.8# make menuconfig
HOSTCC scripts/basic/fixdep
gcc: error trying to exec 'as': execvp: No such file or directory
make[1]: *** [scripts/basic/fixdep] Error 1
make: *** [scripts_basic] Error 2
An der Stelle komme ich dann nicht mehr weiter. Kannst du helfen ?
Gruss Reinhard