# USB Webcam?



## Dr Dau (22. Januar 2007)

Hallo!

Ich habe hier grad eine Mandriva 2006 LiveCD (Kernel 2.6.16.17.rdm1.smp) am laufen.
Darauf versuche ich nun meine "Genius VideoCAM Live" zum laufen zu bekommen.
Offensichtlich wird sie auch am USB-Port erkannt (dmesg):
	
	
	



```
usb 1-1: new full speed USB device using ohci_hcd and address 2
```
Zumindest habe ich keine anderen USB Geräte angeschlossen. 
Aber irgendwie kann auf die Webcam wohl nicht zugegriffen werden. 
KMplayer stürzt beim Scan ab.
TVtime sagt "No video source".

Was ich bisher rausgefunden habe, soll sie sich wohl in /dev/video oder /dev/vidoe0 befinden (da gibt es unterschiedliche Angaben).
Aber beide Verzeichnisse existieren nicht..... daher vermute ich dass es keinen passenden Treiber für die Webcam gibt.

Was kann ich also machen?

Gruss Dr Dau


----------



## Dennis Wronka (22. Januar 2007)

Es werden vom Kernel her scheinbar nicht all zu viele Webcams unterstuetzt, wohl eher die mit den verbreiteren Chips. Fuer meine Webcam musste ich mir Gspca runterladen und installieren, was an sich kein grosser Akt ist. Der Treiber wird als Modul kompiliert und sollte dann automatisch beim Systemstart laden, oder man laedt ihn manuell mit *modprobe gspca*.
Schau auf der Website einfach mal ob Deine Webcam in der Liste aufgefuehrt ist, aber bei der grossen Anzahl unterstuetzter Cams kann ich mir das gut vorstellen. 
Um VendorID und ProductID zu bekommen hilft Dir *lsusb*, welches Teil der usbutils ist. Diese sollten eigentlich bei jeder aktuellen Distribution mitgeliefert werden.

Weiterhin muss natuerlich der Kernel auch ueber Video4Linux-Support verfuegen.


----------



## Dr Dau (22. Januar 2007)

Irgendwas zu kompilieren kann ich vergessen..... durch das Live-System bin ich doch "etwas" eingeschränkt. 

lsusb sagt dazu:
	
	
	



```
Bus 001 Device 004: ID 03e8:1004 EndPoints, Inc.
```
Harddrake2 sagt dazu:
	
	
	



```
Identification
Vendor: ?EP

Description: ?AIC

Media class: ?

Connection
Bus: ?USB

Bus PCI #: ?1

PCI device #: ?2

Vendor ID: ?1000

Device ID: ?4100

Misc
Module: ?unknown
```
In der *.inf vom Windows Treiber steht noch etwas von "Aox" und "SE402".

Video4Linux ist verfügbar..... schon zwangsweise, weil es eine angepasste CD zur Videoüberwachung ist.
Die Software (ZoneMinder) wollte ich mir halt mal ansehen, weil ein System mit ~20 Webcams geplant ist.
Ich wollte nur zum testen nun aber nicht extra Linux installieren..... darum habe ich die LiveCD von ZoneMinder genommen.
Linux (.inkl MySQL, Apache&Co.) zu installieren, währe ja noch nicht das Problem.
Aber ich brauche ja auch noch Video4Linux (von FFmpeg habe ich auch irgendwas gelesen) und was weiss ich noch alles..... und dann auch noch ZoneMinder.
Tja, ohne deutsche Anleitungen würde es in richtige Schwerstarbeit für mich ausarten (ohne zu weissen ob ich mit ZoneMinder überhaupt etwas anfangen kann).

[edit]


Dennis Wronka hat gesagt.:


> Fuer meine Webcam musste ich mir Gspca runterladen und installieren, was an sich kein grosser Akt ist.


Ich erweitere die Liste mal um die Linux OVCam Drivers. 
[/edit]


----------



## Dr Dau (30. Januar 2007)

So, es gibt Neuigkeiten.

Da ich mit einer LiveCD dass kompilieren ja vergessen konnte (nur das kompilieren bringt ja nichts  ), habe ich mir Debian 3.1 aufgesetzt.
Nach anfänglichen Schwierigkeiten (wie soll man Pakete installieren wenn man nicht weiss welche man braucht und wie sie genau geschrieben werden?!), habe ich es geschafft einen Kernel zu kompilieren.
Schlussendlich habe ich mir dann aber Grub zerschossen (ich mochte Grub noch nie).
Alle Versuche (die mir Google so ausgespuckt hat) Grub am Grub-Promt zu "reparieren" sind fehlgeschlagen.
Es kam zwar immer die Meldung dass keine Fehler aufgetreten sind, aber geändert hat es nichts.
Also habe ich mir kurzerhand einen 2. Eisfair als Entwicklerumgebung aufgesetzt. Dieser ist bei fast gleicher Grösse (~180MB) sogar wesentlich schlanker als es bei Debian schon alleine die "Basisinstallation" (~160MB) ist.
Da im original Kernel kein USB-Support einkompiliert ist, war dieses also mein erster Schritt.
Fazit: Kernel erfolgreich kompiliert und in Lilo eingebunden.
Das System lässt sich mit beiden Kerneln booten.
USB funktioniert nun auch.

Jetzt bleibt aber noch das Treiberproblem für die Webcam.
Nach langen googlen bin ich dann auf diese Seite gestossen, die mich dann wiederum zu dieser weitergeführt hat.
Tja, nur was muss ich nun mit dieser "epcam....diff" machen?
Und welche davon kann ich verwenden, da ich den Kernel 2.4.26-1 habe?


----------



## Dennis Wronka (31. Januar 2007)

Ich konnte da jetzt nur was fuer Kernel 2.4.20 und irgendeinen 2.6er sehen. Da 2.6 doch einen ordentlichen Unterschied zu 2.4 darstellt wuerde ich hier zu dem Patch fuer 2.4.20 raten. Der duerfte funktionieren, muss aber nicht.

Ansonsten schau doch nochmal auf der Seite die ich zuvor verlinkt hab, vielleicht hilft Dir der Treiber ja auch. Dort wird einfach nur ein zusaetzliches Modul kompiliert, ein Kernel-Patch ist hierbei nicht noetig, wenn ich mich recht erinnere.


----------



## Dr Dau (31. Januar 2007)

Der Patch für den 2.4.20 Kernel hat irgendwie nicht funktioniert..... frage mich aber nicht warum.
Ich habe mir dann mal den 2.6.1 Kernel runtergeladen und den entsprechenden Patch eingespielt.
Beim kompilieren ist der PC dann auch rund 1 Stunde am rummachen, aber es wird kein bzImage angelegt.
Ich habe mal ein wenig gegoogelt und rausgefunden wie ich den Kompiliervorgang loggen kann.
Beim groben überschlagen habe ich auch einige "Warnings" gesehen..... muss ich mir aber nochmal genauer ansehen (hatte heute eh schon genug zu tun gehabt).

Die von Dir verlinkte Seite bringt mir nichts, da dort weder meine Product ID noch meine Vendor ID vorhanden ist.

Ansonsten werde ich evtl. noch den 2.4.20 Kernel runterladen und es mit diesem probieren.
Was ich mit dem *.diff File anfangen muss, weiss ich ja nun.

Ich habe aber noch ein anderes Problem: ich kann keine neue initrd.gz anlegen.
Bei mkinitrd und mk_initrd bekomme ich immer nur ein "command not found". 
Ich finde aber auch nicht raus zu welchen "Tools" dieses Programm gehört (scheint also ein Teil eines Programmpaketes zu sein).


----------



## Dennis Wronka (31. Januar 2007)

Besteht Eisfair auf eine Initial RamDisk oder brauchst Du die fuer irgendwas spezielles?


----------



## Dr Dau (31. Januar 2007)

Gute Frage..... die wird halt schon bei der Installation per default angelegt.
Eigentlich brauche ich sie auch nur neu anlegen, wenn ich z.b. den SCSI-Support einkompiliere (laut FAQ).
Nur stand zum dem "wie" nichts in den FAQ. ;-] 
Ich will damit eigentlich auch nur mögliche Fehlerursachen ausschliessen.
Immerhin sind es jetzt ja erst meine ersten Versuche überhaupt irgendwas zu kompilieren.
Und dann ist noch alles auf Englisch. 
Dafür bin ich in den wenigen Tagen aber schon ganz schön weit gekommen (USB funktioniert ja schon)..... und bin sogar von make config auf make menuconfig umgestiegen (ist irgendwie übersichtlicher  ).

[edit]
Tja, das bzImage für den 2.6er Kernel habe ich nun zwar hinbekommen, aber beim kompilieren bekomme ich noch immer Warnings..... und die beziehen sich ausgerechnet auf den Treiber für die Webcam (welch Schicksal).

Dafür bekomme ich nun aber beim booten haufenweise Fehlermeldungen beim laden der Module.....





> Der Mechanismus zum dynamischen laden von Modulen in den Kernel wurde umgeschrieben zwischen dem 2.4 und 2.6 Kernel. Konsequenz daraus ist dass die alten "modutils" (insmod, modprobe ...) nicht mehr kompatibel sind mit dem 2.6 Kernel. Sie benötigen neue "module-init-tools".


Quelle: netzwech.de
Das dürfte dann wohl auch der Grund für die Fehlermeldungen beim booten sein. 

Und wie es das Schicksal so will, gibt es für Eisfair kein Paket "module-init-tools".
Wozu auch, es gibt für Eisfair ja auch keinen 2.6er Kernel. 
Und die module-init-tools, die vorhanden sind, gehören vermutlich zum "Base" Paket.
Ich müsste mir also die Sourcen für die module-init-tools von kernel.org runterladen, kompilieren und installieren..... ohne zu wissen ob der Kernel nun hinhaut (wegen den Warnings).

Also werde ich mein Glück jetzt erstmal mit dem 2.4.20 Kernel versuchen.
[/edit]

[edit2]
Er (der Kernel 2.4.20) läuft..... oder wie wir bei uns sagen: he löpt. 
Zumindest schaltet sich die Webcam nun an und wird anscheinend auch korrekt erkannt.


			
				dmesg hat gesagt.:
			
		

> Linux video capture interface: v1.00
> usb.c: registered new driver hub
> uhci.c: USB Universal Host Controller Interface driver v1.1
> uhci.c: USB UHCI at I/O 0x6200, IRQ 10
> ...


Allerdings habe ich die Zeile
	
	
	



```
+ { USB_DEVICE(0x03e8, 0x1004), driver_info: (unsigned long)"Genius VideoCAM Live - Endpoints SE402" },/* Reference model*/
```
manuell in die *.diff eingefügt, da es die Product ID 0x1004 nicht gab (0x1003 und 0x1005 sind aber vorhanden gewesen).

Ich bekomme beim booten aber noch Fehler angezeigt:
	
	
	



```
loading usb drivers ...
modprobe: Cant't locate module usbcore
modprobe: Cant't locate module uhci
modprobe: Cant't locate module ehci-hcd
mount: mount point /proc/bus/usb does not exist
```
Mir ist schon klar was die Meldungen bedeuten, mir ist aber nicht klar ob die letzte Meldung mit denen von modprobe zusammen hängt oder ob es reicht den (hoffentlich richtigen) Eintrag in der fstab vorzunehmen.

Und warum erscheinen solche Meldungen nicht im Syslog, wenn doch eigentlich alles (*.*) geloggt werden sollte?!  
Wenn ich nicht zwangsweise in den Keller laufen müsste um make menuconfig lokal auszuführen (per SSH ist make menuconfig praktisch nicht nutzbar), würde ich von solchen Meldungen garnichts mitbekommen.
[/edit2]

[edit3]
Tja, offensichtlich ist Apache von irgend einer Konfiguration im Kernel abhängig.
Apache lässt sich nicht starten (Apache error_log):

```
[Sat Feb 03 09:30:45 2007] [crit] (38)Function not implemented: mod_rewrite: could not create rewrite_log_lock
Configuration Failed
```
"RewriteEngine Off" hat daran auch nichts geändert.
Auch ein auskommentieren von mod_rewrite bei LoadModule hat nichts gebracht.

Da Apache aber mit dem originalen Kernel ohne Probleme läuft, schliesse ich daraus dass es nur an der Konfiguration des neuen Kernels liegen kann.
Nur läuft meine Webcam mit dem originalen Kernel ja nicht (sonst könnte ich mir die ganze Arbeit auch ersparen).
Hat jemand eine Ahnung welcher Punkt in der Kernelkonfiguration für das Problem verantwortlich ist?
[/edit3]


----------



## mkoeni1 (4. September 2007)

Hallo Dennis,

meine WebCam war unter den 240 unterstützten USB-WebCams auch dabei. Ich habe mir den Treiber -> for kernel up from 2.6.11 : gspcav1-20070508.tar.gz heruntergeladen und mit xfvz [ARCHIV].tar.gz entpackt. Da ich ein Linux Anfänger bin würde ich gern wissen mit welchem Befehl ich den Treiber erfolgreich installieren kann. Ich nutzte openSUSE 10.2 und ein lsusb ergibt:

```
lsusb
Bus 002 Device 002: ID 046d:08a2 Logitech, Inc. Labtec WebCam Pro
```

Und ein uname -r:

```
uname -r
2.6.18.8-0.5-default
```

Ein dmesg liefert unter anderem:

```
dmesg
...
usb 2-1: new device found, idVendor=046d, idProduct=08a2
usb 2-1: new device strings: Mfr=0, Product=0, SerialNumber=0
usb 2-1: configuration #1 chosen from 1 choice
...
```

ein make && make install bricht er ab

```
ftrobo:/home/matze/Downloads/WebCam Treiber/gspcav1-20070508 # make && make install
make -C /lib/modules/`uname -r`/build SUBDIRS=/home/matze/Downloads/WebCam Treiber/gspcav1-20070508 CC=cc modules
make[1]: Entering directory `/usr/src/linux-2.6.18.8-0.5'
make[1]: *** Keine Regel, um »Treiber/gspcav1-20070508« zu erstellen.  Schluss.
make[1]: Leaving directory `/usr/src/linux-2.6.18.8-0.5'
make: *** [default] Fehler 2
```

Weiteres:
Das Licht der USB Cam ist aus, ich nehme an das hat mit der fehlenden richtigen Treiberanbindung zu tun, oder?

Vielen Dank
Gruß Matze


----------



## mkoeni1 (5. September 2007)

Hallo Leute,

ich hatte kurzzeitig die Camera am Laufen. Ich bin einfach nach dieser Anleitung vorgegangen:
http://www.linuxforen.de/forums/showthread.php?t=236311
Das ist jetzt etwas Fremdwerbung, aber ich muss weitermachen.

Wenn ich die dort beschriebene Vorgehensweise nach einem Neustart des Rechners erneut durchspiele, tut sich an der Cam wieder nichts. D.h. das Licht bleibt wieder aus. Kann es sein, dass ich den Linux-Kernel neu kompilieren soll, damit dies dauerhaft bleibt.

Gruß
Matze


----------



## Dennis Wronka (5. September 2007)

Der GSPCA-Treiber wird eigentlich immer als Modul gebaut. Entsprechend muss dieses, vor dem Einsatz der Hardware, geladen werden, z.B. mit modprobe.
Den Kernel neu zu bauen bringt Dir nichts da dadurch das Modul auch nicht fest integriert ist, wie andere externe Treiber, z.B. NDISWrapper, KQEmu oder auch fglrx, stehen diese nur als Modul zur Verfuegung.
Das hat, wie erwaehnt, die Konsequenz dass die Treiber nach dem Systemstart, oder zumindest bei Bedarf, geladen werden muessen.
Falls Du UDev hast, wovon ich stark ausgehe wenn Du nicht unbedingt eine steinalte Distribution nutzt, sollte dies auch darueber moeglich sein. Wie genau kann ich Dir jetzt leider nicht sagen.


----------



## mkoeni1 (5. September 2007)

Danke für die Antwort.
Ich lade in der Ziwschenzeit die Cam mit dem Befehl:

```
modprobe -v gspca
```
Damit lässt dieses Modul sauber einbinden. *udev *habe ich auf dem System gefunden ;-)
Mit diesem Tool werde ich mich weiter beschäftigen. Vielleciht kann ich damit so eine Art Cron-Job oder sowas machen, indem ich sage: wenn ein neues Gerät angeschlossen ist lade den Treiber für dieses Modul nach oder führe eine andere Regel aus .

Vielen Dank
Matze

Wie kann ich dir sagen:
http://de.wikipedia.org/wiki/Udev


----------

