USB-Webcam "Chicony Electronics" (04f2:b109) und Linux - oder "unverhofft kommt oft"

Status
Für weitere Antworten geschlossen.

Rain_Maker

Administrator
Teammitglied
USB-Webcam "Chicony Electronics" (04f2:b109) und Linux - oder "unverhofft kommt oft"

Gestern zeigte mir einer meiner Kollegen nicht ohne (wohl begründeten, das Ding ist wirklich ein nettes Stück Hardware) Stolz sein neues Notebook auf dem sich der Pinguin in Form von Debian Testing breit gemacht hatte.

Im Übrigen positiv zu bemerken, daß er selbiges ohne vorinstalliertes Redmond-OS kaufen konnte.

Die meisten Komponenten liefen entweder Out of the Box (was anhand der von ihm sehr sorgfältig ausgewählten Hardware zu erwarten war) oder waren zumindest als "wird bald erledigt" (NVidia-Grafikkarte, 9600 *irgendwas*) zu kennzeichnen (NVidia-Treiber nachinstallieren und fertig).

Nach einigem Herumspielen fiel uns beiden (kein Witz, das Ding war wirklich nicht explizit augewählt worden sondern eben "einfach so dabei") gleichzeitig dieses kleine Fensterchen im Notebookdeckel auf

"Oh, eine Webcam, na sowas!"

und der Spieltrieb erwachte.

Ein beherztes lsusb ergab:

Code:
Bus 008 Device 003: ID 04f2:b109 Chicony Electronics Co., Ltd
Die Allwissende Müllhalde meinte dazu enttäuschenderweise:

Ergebnisse 1 - 1 von 1 für 04f2:b109. (0,12 Sekunden)
(OK, in ein paar Stunden, nachdem die Google-Bots mal wieder über diese Forum gekrabbelt sind, werden es mindestens zwei sein).

Kurzfassung des einen Threads: "Funktioniert nicht"

Nachdem die erste Enttäuschung (so wichtig war ihm das Ding eh nicht, aber es ging ja um die Befriedigung des Spieltriebs) verflogen war, kam mein Kollege auf die geniale Idee mal nach Webcams des selben Herstellers zu suchen.

Und siehe da, ein wenig weiteres "Gurgeln" ergab

Linux UVC - Supported Devices

daß einige Webcams des obigen Herstellers und sehr ähnlicher USB-ID mit dem Treiber "uvcvideo" betrieben werden können.

Kernelversion war 2.6.26, ergo ist der uvcvideo selbst schon vorhanden, aber leider ergab ein

Code:
modinfo uvcvideo | grep -i 04f2 | grep -i 019b
das erwartete Ergebnis, nämlich keine Ausgabe.

Nun gut, einen Versuch ist es wert, warum nicht die USB-ID zur Devicelist im Quellcode hinzufügen und dann den Treiber neu kompilieren?

Danach wird die Cam vom Treiber sicherlich "erkannt", ob sie anschliessend auch läuft wird sich zeigen.

- Entsprechende Buildtools und Kernelheaders installiert (build-essentials und linux-headers-$(uname -r) via apt-get gezogen)

- Neusten SVN-Snapshot von uvcvideo via SVN gezogen

BerliOS Developer: SVN Repository

- Quellcode gepatcht, um genaue zu sein, die entsprechende USB-ID in die Datei usb_driver.c hinzugefügt (rot markiert).

Code:
/* ------------------------------------------------------------------------
 * Driver initialization and cleanup
 */

/*
 * The Logitech cameras listed below have their interface class set to
 * VENDOR_SPEC because they don't announce themselves as UVC devices, even
 * though they are compliant.
 */
static struct usb_device_id uvc_ids[] = {
[COLOR='Red']         /* Chicony Webcam */
         { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
                                 | USB_DEVICE_ID_MATCH_INT_INFO,
           .idVendor             = 0x04f2,
           .idProduct            = 0xb109,
           .bInterfaceClass      = USB_CLASS_VENDOR_SPEC,
           .bInterfaceSubClass   = 1,
           .bInterfaceProtocol   = 0 },[/COLOR]
- Die Datei Makefile ebenfalls angepasst, damit das Modul in ein Verzeichnis installiert wird, welches die "module-init-tools" bevorzugen und somit sicher gestellt ist, daß auch wirklich das "neugbaute" Modul geladen wird.

Code:
INSTALL_MOD_DIR := updates
- Ein beherztes

Code:
make

su -c "make install"

su -c "modprobe uvcvideo"
gefolgt von einem "Wenn das klappt dann gibts Du mir ein Bier aus"

- Die Anwendung "cheese" gestartet und zu unser beider Erstaunen durfte mir mein Kollege ein "Biertje" ausgeben

Konsequenz für openSUSE-Nutzer (nach dem Bierchen gleich mal die neue USB-ID als Patch eingebaut und die Buildmaschine angeworfen).

openSUSE 11.0, kernel-default und 32 Bit

uvcvideo-kmp-default-r251_2.6.25-SVN.rm.0.i586.rpm

openSUSE 11.0, kernel-pae und 32 Bit

uvcvideo-kmp-pae-r251_2.6.25-SVN.rm.0.i586.rpm

openSUSE 11.0, kernel-default und 64 Bit

uvcvideo-kmp-default-r251_2.6.25-SVN.rm.0.x86_64.rpm

(thx @jkeiper für den Rebuild)

Source-RPM

uvcvideo-r251-SVN.rm.0.src.rpm

Anmerkung: Die Pakete werden regelmässig aktualisiert, alles was "r251" oder höher im Namen hat, enthält den obigen Patch.

Greetz,

RM
 

Rain_Maker

Administrator
Teammitglied
AW: USB-Webcam "Chicony Electronics" (04f2:b109) und Linux - oder "unverhofft kommt o

Nachtrag:

Mittlerweile bin ich stolzer Besitzer des selben Notebooktyps und auch damit der selben Webcam.

Unter openSUSE 11.1 und Kernel 2.6.27 funktioniert dieses Gerät "Out of the Box" mit dem im Kernel enthaltenen "uvcvideo"-Treiber.

Greetz,

RM
 
Status
Für weitere Antworten geschlossen.
Oben