Webcam Hacking unter Linux, Teil II

Fast auf den Tag genau ein Jahr ist es nun her, dass ich durch einen selbst geschriebenen Patch des GSPCA Treibers meine Webcam ans Laufen brachte.
Da der GSPCA Treiber mittlerweile Einzug in den Linux-Kernel gehalten hat (ab 2.6.27), war ein überarbeiteter Patch fällig; Der alte Patch funktionierte mit dem stark überarbeiteten Treiber nicht länger. Doch diesmal habe ich mich nicht nur auf ein Patchen der Software beschränkt, sondern mich auch an die Hardware selbst gewagt…
Der neue Patch war allerdings eine Sache von wenigen Minuten: ein find Befehl machte die Sourcen des Treibers ausfindig (/usr/src/linux-2.6.27.7-9/drivers/media/video/gspca/), die dann durch das Refactoring (die Kernel Coding-Guidelines lassen grüßen) so übersichtlich waren, dass die zu patchende Stelle binnen weniger Minuten gefunden war. Der resultierende Patch (diesmal sogar nur noch ein Einzeiler) ließ sich allerdings erst nach einer Anpassung des Makefile Datei kompilieren.
Hier der Patch: --- drivers/media/video/gspca/vc032x.c.orig     2008-12-27 18:06:49.000000000 +0100 +++ drivers/media/video/gspca/vc032x.c  2008-12-27 18:09:10.000000000 +0100 @@ -1740,6 +1740,7 @@  static const __devinitdata struct usb_device_id device_table[] = {         {USB_DEVICE(0x046d, 0x0892), .driver_info = BRIDGE_VC0321},         {USB_DEVICE(0x046d, 0x0896), .driver_info = BRIDGE_VC0321},        +{USB_DEVICE(0x046d, 0x0897), .driver_info = BRIDGE_VC0321},         {USB_DEVICE(0x0ac8, 0x0321), .driver_info = BRIDGE_VC0321},         {USB_DEVICE(0x0ac8, 0x0323), .driver_info = BRIDGE_VC0323},         {USB_DEVICE(0x0ac8, 0x0328), .driver_info = BRIDGE_VC0321}, Und hier das überarbeitete Makefile:
obj-m   += gspca_main.o
        gspca_conex.o gspca_etoms.o gspca_mars.o
        gspca_ov519.o gspca_pac207.o gspca_pac7311.o
        gspca_sonixb.o gspca_sonixj.o gspca_spca500.o gspca_spca501.o
        gspca_spca505.o gspca_spca506.o gspca_spca508.o gspca_spca561.o
        gspca_sunplus.o gspca_stk014.o gspca_t613.o gspca_tv8532.o
        gspca_vc032x.o gspca_zc3xx.o

gspca_main-objs := gspca.o
gspca_conex-objs := conex.o
gspca_etoms-objs := etoms.o
gspca_mars-objs := mars.o
gspca_ov519-objs := ov519.o
gspca_pac207-objs := pac207.o
gspca_pac7311-objs := pac7311.o
gspca_sonixb-objs := sonixb.o
gspca_sonixj-objs := sonixj.o
gspca_spca500-objs := spca500.o
gspca_spca501-objs := spca501.o
gspca_spca505-objs := spca505.o
gspca_spca506-objs := spca506.o
gspca_spca508-objs := spca508.o
gspca_spca561-objs := spca561.o
gspca_stk014-objs := stk014.o
gspca_sunplus-objs := sunplus.o
gspca_t613-objs := t613.o
gspca_tv8532-objs := tv8532.o
gspca_vc032x-objs := vc032x.o
gspca_zc3xx-objs := zc3xx.o

KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
Für alle, denen das Patchen und Kompilieren von Software zu komplex ist, habe ich einen gute Nachricht: Ich habe meinen Patch an das Kernel-Team eingereicht und er wurde nach kurzer Prüfung angenommen. Somit wird die eingebaute Webcam des Dell XPS M2010 ab Kernel 2.6.29 von Haus aus unterstützt.
Allerdings hatte ich immer noch das Problem des auf dem Kopf stehenden Bildes. Zwar hatte ich mit einer Kombination des vlooback Kernelmoduls und camsource das Bild nachträglich drehen können, aber die Lösung war sehr komplex und funktionierte zudem in Skype leider nicht; camsource konnte den von Skype geforderten Farbraum nicht zur Verfügung stellen.
Die Lösung war ein weiterer "Patch", wenn auch an der Hardware. In den von Dell frei angebotenen Service-Handbüchern meines Geräts entdeckte ich eine Explosionszeichnung, die mich vermuten ließ, dass man mit ein wenig Geschick die Webcam andersherum einbauen könne. Gesagt, getan: Nach einer langwierigen Frickelorgie hatte ich die Display-Klappe meines Laptops sachgemäß zerlegt. Mit ein wenig Fleiß und Feingefühl ließ sich die Kamera tatsächlich um 180 Grad versetzt einbauen. Wie erhofft lieferte die Kamera nun ein richtig herum stehendes Bild.
Der Zusammenbau ging flotter vonstatten, als ich gehofft hatte. Zwar büßt die Kamera mangels Spielraum im Gehäuse nun ihre Möglichkeit zur Auf- und Abbewegung ein, aber dank des schwenkbaren Display-Deckels ist eine Feinjustierung auch weiterhin problemlos möglich.
Meinen Laptop im voll zerlegten Zustand habe ich selbstverständlich fotografisch festgehalten:
Umbau der integrierten Webcam meines Dell XPS M2010
Um Unkenrufen direkt vorzubeugen: JA, ich habe das Gerät wieder einwandfrei zusammengebaut bekommen, und es sind sogar kaum Schrauben übrig geblieben! ;-)
Alles in allem ist es wahrscheinlich wesentlich einfacher und unaufwändiger, sich eine neue Webcam zu kaufen und ans Gehäuse zu stecken, aber der Umbau hat meinem Ehrgeiz keine Ruhe gelassen und sich im Nachhinein wirklich gelohnt; Die Webcam funktioniert nun ohne weitere Software und ist – anders als externe Webcams – jederzeit und immer verfügbar.


 
 
 

2 Kommentare zu “Webcam Hacking unter Linux, Teil II”


  1. Ben
    19. Januar 2009 um 13:09

    Und am Ende auf den easy-Button gehauen? :)

  2. Andreas Demmer » Sound nach über zwei Jahren
    17. September 2009 um 08:57

    [...] Im Falle der Webcam war das auch so; Sie wurde von Linux prinzipiell unterstützt aber nicht erkannt. Das Problem hatte ich schnell behoben. [...]

Kommentar abgeben: