TerraTec TerraCAM PRO an Linksys NSLU2

warning: fread(): Length parameter must be greater than 0 in /var/www/elchs-kramkiste.de/lapurd/includes/common.inc(1695) : eval()'d code on line 19.

Das Ganze bezieht sich auf den Wunsch, eine WebCam der Firma TerraTec, Modell TerraCam PRO (USB), an einem NSLU2 (bereits mit uNSLUng 6.X ausgestattet) zum Laufen zu bringen. Nach einigen Fehlschlägen, die WebCam an OpenSuse 10.1 bzw. 10.3 Desk- / Laptops in Betrieb zu nehmen, habe ich es dann nach dieser Anleitung direkt und unmittelbar an dem NSLU2 versucht.

Hier mal zum Vergleich die Ausgabe von "tail -f /var/log/messages" in einem OpenSuse 10.X-Konsolenfenster beim Anstöpseln der TerraCAM PRO:

Mar 18 17:55:12 sys1fst1 kernel: ohci_hcd 0000:00:02.0: wakeup
Mar 18 17:55:12 sys1fst1 kernel: usb 1-3: new full speed USB device using ohci_hcd and address 2
Mar 18 17:55:12 sys1fst1 kernel: usb 1-3: new device found, idVendor=05a9, idProduct=a518
Mar 18 17:55:12 sys1fst1 kernel: usb 1-3: new device strings: Mfr=1, Product=2, SerialNumber=0
Mar 18 17:55:12 sys1fst1 kernel: usb 1-3: Product: USB Camera
Mar 18 17:55:12 sys1fst1 kernel: usb 1-3: Manufacturer: OmniVision Technologies, Inc.
Mar 18 17:55:12 sys1fst1 kernel: usb 1-3: configuration #1 chosen from 1 choice
Mar 18 17:55:13 sys1fst1 kernel: Linux video capture interface: v2.00
Mar 18 17:55:13 sys1fst1 kernel: drivers/media/video/ov511.c: USB OV518+ video device found
Mar 18 17:55:13 sys1fst1 kernel: drivers/media/video/ov511.c: Device revision 0
Mar 18 17:55:13 sys1fst1 kernel: drivers/media/video/ov511.c: Compression required with OV518...enabling
Mar 18 17:55:13 sys1fst1 kernel: drivers/media/video/ov511.c: Sensor is an OV7620
Mar 18 17:55:14 sys1fst1 kernel: drivers/media/video/ov511.c: Device at usb-0000:00:02.0-3 registered to minor 0
Mar 18 17:55:14 sys1fst1 kernel: usbcore: registered new driver ov511
Mar 18 17:55:14 sys1fst1 kernel: drivers/media/video/ov511.c: v1.64 for Linux 2.5 : ov511 USB Camera Driver
Mar 18 17:55:14 sys1fst1 kernel: usbcore: registered new driver snd-usb-audio

Trotz dieser an sich erfolgversprechenden Meldungen ließ sich die WebCam mit keinem Programm ansprechen. Es wurde immer etwas über eine fehlende Kompression gemeldet.

Nach der Anleitung in dem o.a. Forenbeitrag ging ich dann so vor:

- Telnet per WebGUI auf dem NSLU2 enabled,
- 2 Telnet-Sessions zum NSLU2 in 2 verschiedenen Konsolen-Fenstern aufgemacht.
- in dem einen Konsolen-Fenster lief dauernd die Ausgabe von "tail -f /var/log/messages",
- in dem anderen Telnet-Fenster habe ich gewirkt.

Auf dem NSLU2 musste zunächst noch einiges nachinstalliert werden ("# " stellt nachfolgend den Systemprompt der Telnet-Session dar, ist also nicht mit einzugeben):


# ipkg install kernel-module-videodev
# ipkg install kernel-module-ov511
# ipkg install w3cam
# ipkg install libjpeg
Package libjpeg (6b-2) installed in root is up to date.
Nothing to be done
# ipkg install libpng

"libjpeg" war also schon installiert, der Rest ist ohne Fehler installiert und konfiguriert worden.

Hinweis: Das Ganze geht auch als Einzeiler:

# ipkg install kernel-module-videodev kernel-module-ov511 w3cam libjpeg libpng


Nun den USB-Hub mit Kartenleser angeschlossen:

Mar 18 21:08:53 (none) user.info kernel: hub.c: new USB device 00:01.2-1, assigned address 3
Mar 18 21:08:53 (none) user.warn kernel: Device descriptor:8 bytes received.
Mar 18 21:08:53 (none) user.warn kernel: Device descriptor:18 bytes received.
Mar 18 21:08:53 (none) user.info kernel: hub.c: USB hub found
Mar 18 21:08:53 (none) user.info kernel: hub.c: 4 ports detected
Mar 18 21:08:54 (none) user.info kernel: hub.c: new USB device 00:01.2-1.1, assigned address 4
Mar 18 21:08:54 (none) user.warn kernel: Device descriptor:8 bytes received.
Mar 18 21:08:54 (none) user.warn kernel: Device descriptor:18 bytes received.
Mar 18 21:08:54 (none) user.warn kernel: Protocol: Transparent SCSI
Mar 18 21:08:54 (none) user.warn kernel: *** detect:usb-storage
Mar 18 21:08:54 (none) user.warn kernel: * scsi_register: usb-storage-1,
Mar 18 21:08:54 (none) user.warn kernel: * scsi_reg, hostno:1 prot is 49
Mar 18 21:08:54 (none) user.warn kernel: * scsi_reg, retval->host_no:1
Mar 18 21:08:54 (none) user.info kernel: scsi1 : SCSI emulation for USB Mass Storage devices
Mar 18 21:08:54 (none) user.warn kernel: ! scan_scsis
Mar 18 21:08:54 (none) user.warn kernel: *** 49
Mar 18 21:08:54 (none) user.warn kernel:   Vendor: Generic   Model: USB SD Reader     Rev: 1.00
Mar 18 21:08:54 (none) user.warn kernel:   Type:   Direct-Access                      ANSI SCSI revision: 02
Mar 18 21:08:54 (none) user.warn kernel: *** 49
Mar 18 21:08:54 (none) user.warn kernel:   Vendor: Generic   Model: USB CF Reader     Rev: 1.01
Mar 18 21:08:54 (none) user.warn kernel:   Type:   Direct-Access                      ANSI SCSI revision: 02
Mar 18 21:08:54 (none) user.warn kernel: *** 49
Mar 18 21:08:54 (none) user.warn kernel:   Vendor: Generic   Model: USB SM Reader     Rev: 1.02
Mar 18 21:08:54 (none) user.warn kernel:   Type:   Direct-Access                      ANSI SCSI revision: 02
Mar 18 21:08:54 (none) user.warn kernel: *** 49
Mar 18 21:08:54 (none) user.warn kernel:   Vendor: Generic   Model: USB MS Reader     Rev: 1.03
Mar 18 21:08:54 (none) user.warn kernel:   Type:   Direct-Access                      ANSI SCSI revision: 02
Mar 18 21:08:54 (none) user.warn kernel: Attached scsi removable disk sdb at scsi1, channel 0, id 0, lun 0
Mar 18 21:08:54 (none) user.warn kernel: Attached scsi removable disk sdc at scsi1, channel 0, id 0, lun 1
Mar 18 21:08:54 (none) user.warn kernel: Attached scsi removable disk sdd at scsi1, channel 0, id 0, lun 2
Mar 18 21:08:54 (none) user.warn kernel: Attached scsi removable disk sde at scsi1, channel 0, id 0, lun 3

Es folgen noch zig Warnmeldungen, dass die Kartenslots nicht gelesen werden können. Der Hub ist wohl nicht nutzbar unter unSLUng..

Also mal die WebCam direkt an dem USB-Port, an dem sonst die WS-2300 hängt angeschlossen...

Mar 18 21:13:11 (none) user.warn kernel: Device descriptor:8 bytes received.
Mar 18 21:13:11 (none) user.warn kernel: Device descriptor:18 bytes received.
Mar 18 21:13:11 (none) user.warn kernel: usb.c: USB device 3 (vend/prod 0x5a9/0xa518) is not claimed by any active driver.

also erst mal wieder abgezogen....


# insmod videodev

Mar 18 21:15:59 (none) user.info kernel: Linux video capture interface: v1.00


# insmod ov511

Mar 18 21:16:34 (none) user.info kernel: usb.c: registered new driver ov511
Mar 18 21:16:34 (none) user.info kernel: ov511.c: v1.63 for Linux 2.4 : ov511 USB Camera Driver


# insmod ovcamchip

insmod: ovcamchip.o: no module by that name found

Also erst mal die WebCam einfach wieder angesteckt:

Mar 18 21:18:54 (none) user.info kernel: ov511.c: USB OV518+ video device found
Mar 18 21:18:54 (none) user.info kernel: ov511.c: Device revision 0
Mar 18 21:18:54 (none) user.warn kernel: ov511.c: Compression required with OV518...enabling
Mar 18 21:18:54 (none) user.info kernel: ov511.c: Sensor is an OV7620
Mar 18 21:18:55 (none) user.info kernel: ov511.c: Device at usb-00:01.0-1 registered to minor 0


# /opt/bin/vidcat -d /dev/video0 -s 640x480 -p y > /test.jpg

Can't open device /dev/video0

Ich machte ein Reboot des NSLU2. Irgendwann bin ich dann darauf gekommen, dass die Treiber nun unter

/lib/modules/2.4.22-xfs/kernel/drivers/usb/serial 

statt unter

/lib/modules/2.4.22-xfs/kernel/drivers/usb

liegen. Die

-rw-r--r--    1 root     root       111430 Mar 18 22:19 ov511.o
-rwxr-----    1 root     root        25595 Mar 18 22:01 ovcamchip.o

von TrapperJohn also in dieses Verzeichnis (.../serial) kopiert, ein


# rmmod ov511
# rmmod ovcamchip
# rmmod videodev

danach ein


# insmod videodev
# insmod ov511
# insmod ovcamchip

gemacht, anschließend ein


# /opt/bin/vidcat -d /dev/video0 -s 640x480 -p y > /ftpshare/test.jpg

abgesetzt und schon (puhhhh) hatte ich im Verzeichnis /ftpshare eine test.jpg, welche auch ein Bild enthielt...

Das Ganze funktionierte auch an einem 4-Port-USB-Hub

Mar 19 17:22:53 (none) user.info kernel: hub.c: new USB device 00:01.0-1, assigned address 3
Mar 19 17:22:53 (none) user.warn kernel: Device descriptor:8 bytes received.
Mar 19 17:22:53 (none) user.warn kernel: Device descriptor:18 bytes received.
Mar 19 17:22:53 (none) user.info kernel: hub.c: USB hub found
Mar 19 17:22:53 (none) user.info kernel: hub.c: 4 ports detected

Nun konnte ich an meinem NSLU2 neben der WebCam auch meine Wetterstation anschließen. Problem scheint nur: Sobald die Daten der Wetterstation ausgelesen wurden, habe ich im unteren Bereich der WebCam-Bilder nur noch rote/grüne/blaue oder schwarze Bereiche. Nach einigen Minuten scheint dieser Effekt aufzuhören, beginnt aber mit dem nächsten Auslesevorgang der WS-2300 wieder neu. Zudem wurde die Wetterstation WS-2300 nicht mehr ausgelesen, obwohl sich nach den Meldungen in "/var/log/messages" beim Anstöpseln der WS-2300 an den USB-Hub die Schnittstellenbezeichnung ttyUSB0 nicht geändert hatte.

(Vorläufiges) Fazit: Die TerraTec WebCam TerraCAM PRO läuft (für sich genommen) am NSLU2, die Kombination mit anderen USB-Devices ist aber nicht gewährleistet. Ich glaube, ich stelle jetzt alles auf einen Mini-PC um, der über genügend eigene USB- und serielle Schnittstellen verfügt.