Modul für Logitech QuickCam Pro 3000 Dunkler Focus Ring

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
George Mason
Beiträge: 1175
Registriert: 01.03.2006 22:55:19
Lizenz eigener Beiträge: MIT Lizenz

Modul für Logitech QuickCam Pro 3000 Dunkler Focus Ring

Beitrag von George Mason » 01.04.2007 20:16:57

Hallo liebe Linux-Gemeinde,

seit ca. 8 Jahren bin ich begeisterter Debian-User, und genauso lange versuche ich, erfolglos, meine Logitech-USB-Webcam zum Laufen zu bringen. Das Ding war früher mal teuer und hatte unter Windows ein super-Bild.

Ich hole jetzt extra ein bißchen weiter aus, damit andere Besitzer der Kamera die Schritte nachvollziehen können. Die Fehlermeldung kommt weiter unten.

Mein System: Debian Etch, frisch installiert und eingerichtet. Kernel ist 2.6.18-4-486 (Stock Kernel). Läuft ansonsten wie ne Eins.

Die Kamera ist eine Logitech Quickcam Pro 3000 (Dunkler Focus Ring). Unter ähnlichem Namen gibt es leider auch andere USB-Kameras. Die ersten Jahre habe ich daher gedacht, dass der PWC (Philips Webcam) Treiber der richtige ist. Der ließ sich auch laden, fand aber nie die Kamera.

Erst 2003 kam ich auf die Idee, auch mal nach der USB-ID zu suchen:

046d:d001

und fand auf dieser Seite den Hinweis, dass es sich um eine Webcam nicht mit Philips, sondern mit DIVIO-Chip handelt:
http://www.qbik.ch/usb/devices/showdev.php?id=307

Einen Treiber gibt es hier, sogar für den 2.6er Kernel:
http://nw802.sourceforge.net

Jetzt geht es los: habe mir die CVS-Version runtergeladen und entpackt.
Dann dies hier:

Code: Alles auswählen

cd nw802-2.4
cp Makefile.26 Makefile
patch -p0 < patch-2.6
make clean
soweit so gut. Jetzt kommt

Code: Alles auswählen

make

In file included from /usr/src/nw802-2.4/nw8xx_jpgl.c:38:
/usr/src/nw802-2.4/nw8xx_jpgl.h:43:22: error: usbvideo.h: Datei oder Verzeichnis nicht gefunden
kurzer prüfender Blick: im nw802-2.4 Verzeichnis hat es 2 symbolische Links angelegt, die ins Leere führten:

Code: Alles auswählen

usbvideo.c -> /lib/modules/2.6.18-4-486/build/drivers/media/video/usbvideo/usbvideo.c
usbvideo.h -> /lib/modules/2.6.18-4-486/build/drivers/media/video/usbvideo/usbvideo.h
ich fand die gesuchten Dateien dann unter
/usr/src/linux-source-2.6.18/drivers/media/video/usbvideo/usbvideo.h
/usr/src/linux-source-2.6.18/drivers/media/video/usbvideo/usbvideo.c

und habe sie kurzerhand einfach mal an die gewünschte Stelle unter /lib/modules/ usw. kopiert. Und siehe da: der Treiber lässt sich kompilieren. Ich erhalte u.a. eine Datei nw802.o und usbvideo.o

Sp sieht das dann aus:

Code: Alles auswählen

ln -sf /lib/modules/`uname -r`/build/drivers/media/video/usbvideo/usbvideo.h .
ln -sf /lib/modules/`uname -r`/build/drivers/media/video/usbvideo/usbvideo.c .
make -C /lib/modules/`uname -r`/build SUBDIRS=`pwd` modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.18-4-486'
  CC [M]  /usr/src/nw802-2.4/nw8xx_jpgl.o
  CC [M]  /usr/src/nw802-2.4/nw802.o
  LD [M]  /usr/src/nw802-2.4/nw8xx.o
  CC [M]  /usr/src/nw802-2.4/usbvideo.o
  Building modules, stage 2.
  MODPOST
  CC      /usr/src/nw802-2.4/nw8xx.mod.o
  LD [M]  /usr/src/nw802-2.4/nw8xx.ko
  CC      /usr/src/nw802-2.4/usbvideo.mod.o
  LD [M]  /usr/src/nw802-2.4/usbvideo.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.18-4-486'
Super! Soweit bin ich vorher noch nie gekommen. Es keimt Hoffnung auf. Ich folge weiter der Beschreibung:

modprobe videodev: klappt!

insmod usbvideo.o: klappt nicht - insmod: error inserting 'usbvideo.o': -1 Invalid module format

das gleiche passiert mit:
insmod nw802.o - insmod: error inserting 'nw802.o': -1 Invalid module format

Seltsam, oder? Laut Webseite des Maintainers sollte der Treiber doch mit einem 2.6er Kernel laufen! Bin ich kurz davor, es endlich hinzubekommen, oder wieder ganz am Anfang?

Vielen Dank schon mal fürs Lesen, ich würde mich wahnsinnig über jeden Tip freuen!

Gruß
George Mason

Benutzeravatar
bse
Beiträge: 468
Registriert: 19.03.2006 19:58:00
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von bse » 02.04.2007 00:46:38

Die Meldung deutet darauf hin, dass das Modul nicht zum Kernel passt. Schau mal mit "dmesg" nach, steht vermutlich, dass das Modul eine andere Versions-Magic hat als der Kernel, und das darf nicht sein.

Vermutlich stimmt die Compiler-Version nicht überein. In dem Fall musst du das Modul wie folgt compilieren:

Code: Alles auswählen

make CC=gcc-3.4
falls der Kernel mit gcc 3.4 compiliert wurde, sonst halt die entsprechende version.

Vorher ein "make clean" nicht vergessen :)

Benutzeravatar
George Mason
Beiträge: 1175
Registriert: 01.03.2006 22:55:19
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von George Mason » 02.04.2007 10:35:29

Danke schonmal! Wenn ich versuche, es wie in der Doku beschrieben zu machen, also mit

insmod usbvideo.o

kommt die Fehlermeldung

Code: Alles auswählen

insmod: error inserting 'usbvideo.o': -1 Invalid module format
und die Meldung unter dmesg lautet:

Code: Alles auswählen

No module found in object
Wenn ich

Code: Alles auswählen

make CC=gcc-3.4
eingebe, dann bekomme ich aber genau die gleiche Meldung!

Übrigens: unter anderem erhalte ich folgende Dateien beim kompilieren:

Code: Alles auswählen

nw800.init
nw801.init
nw802.c
nw802.init
nw802.o
nw8xx_jpgl.c
nw8xx_jpgl.h
nw8xx_jpgl.o
nw8xx.ko
nw8xx.mod.c
nw8xx.mod.o
nw8xx.o
nw8xx_regedit.c
usbvideo.ko
usbvideo.mod.c
usbvideo.mod.o
usbvideo.o
Ich habe dann mal dies hier probiert:

Code: Alles auswählen

insmod usbvideo.mod.o 

Code: Alles auswählen

usbvideo: version magic '2.6.18-4-486 mod_unload 486 REGPARM gcc-3.4' should be '2.6.18-4-486 mod_unload 486 REGPARM gcc-4.1'
Aha! Also

Code: Alles auswählen

make clean
make CC=gcc-4.1
insmod usbvideo.mod.o
und es scheint zu klappen! Jetzt fehlt nur noch das Modul nw802.o, bzw. nw8xx.mod.o. Wenn ich die laden will, dann erhalte ich folgende Fehlermeldungen:

Code: Alles auswählen

insmod nw802.o

führt wieder zu:

Code: Alles auswählen

insmod: error inserting 'nw802.o': -1 Invalid module format
dmesg:

Code: Alles auswählen

No module found in object
also versuche ich es mit:

Code: Alles auswählen

insmod nw802.o
oder

Code: Alles auswählen

insmod nw8xx.mod.c
oder

mit dem gleichen Ergebnis!

Benutzeravatar
George Mason
Beiträge: 1175
Registriert: 01.03.2006 22:55:19
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von George Mason » 08.04.2007 14:14:03

Fortschritt: wenn ich die beim kompilieren entstandenen .ko Dateien nw8xx.ko und usbvideo.ko nach /lib/modules/2.6.18-4-486/kernel/drivers/media/video/ usw... kopiere, anschließend depmod ausführe, dann kann ich mittels modconf den nw8xx - Treiber laden und er lädt automatisch den usbvideo- Treiber mit rein.

Super! Jetzt habe ich nur noch ein Problem, dass ich ein schwarzes Bild habe...

Benutzeravatar
George Mason
Beiträge: 1175
Registriert: 01.03.2006 22:55:19
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von George Mason » 08.04.2007 14:42:15

Nachtrag: xawtv -device /dev/video1 gibt mir folgende Fehlermeldung aus:

Code: Alles auswählen

This is xawtv-3.95.dfsg.1, running on Linux/i686 (2.6.18-4-486)
X Error of failed request:  XF86DGANoDirectVideoMode
  Major opcode of failed request:  136 (XFree86-DGA)
  Minor opcode of failed request:  1 (XF86DGAGetVideoLL)
  Serial number of failed request:  65
  Current serial number in output stream:  65
Noch ein Nachtrag: die letzte Fehlermeldung liegt anscheinend am nvidia-Treiber meiner GraKa! Mit dem nv-Treiber habe ich ein Bild, das schreckliche Farben hat, aber ich habe ein Bild!! Unglaublich!

noch ein Nachtrag: wenn ich xawtv mit der option -nodga aufrufe, klappts auch mit dem nvidia-Treiber. So, jetzt nur noch die Farben korrigieren... wenn ich den Raum etwas abdunkle, sehen auch die Farben OK aus... ob man da was automatisieren kann??

Update: Die Cam funktioniert mittlerweile unter gnome-meeting, camstream, webcam-server und xawtv. Jetzt suche ich noch ein Programm, mit dem ich einen automatischen Helligkeits oder Farbabgleich machen kann. gqcam funktioniert leider nicht, Kopete gibt nur ein schwarzes Bild aus.

auch mplayer zeigt jetzt ein Bild:

Code: Alles auswählen

gmplayer tv:// -tv driver=v4l:width=320:height=240:outfmt=rgb24:device=/dev/video1:noaudio
oder

Code: Alles auswählen

mplayer tv:// -tv driver=v4l:width=320:height=240:outfmt=rgb24:device=/dev/video1:noaudio -flip
nächstes Update: auch VLC mag jetzt mit der Kamera zusammenarbeiten:

Code: Alles auswählen

vlc v4l:// :v4l-vdev="/dev/video1" :v4l-caching=300 :v4l-chroma="RV24" :v4l-width=320 :v4l-height=240
Das heisst, ich kann jetzt die Webcam auch ins Netz streamen!

Antworten