ForumWas fehlt oder warum ist das Modulformat falsch (compelieren fuer webcam)
Dieter Drewanz – Montag, 23. Januar 2006 05:34 Uhr

Hallo,

fuer eine neue webkam (ist noch nicht auf der Liste der unterstuetzten, Liste geht bis ID …:401d und ich habe :401f, will es trotzdem versuchen) habe ich den Treiber von unterem Link heruntergeladen. Die Kompelieranweisung habe ich befolgt und habe unten alle Ausgaben gelistet.
Das produzierte Modul konnte ich aber nicht laden. Jetzt frage ich mich ob ich was falsch gemacht haben koennte und wie es hinbekomme.

Nach der Durchsicht des Moduls mit kate, konnte ich einige Anhaltspunkte finden. Anscheinend wurde beim Erzeugen parallel die HW abgefragt. Da nichts genau passendes ermittelt wurde, zwar ein Modul gebaut, das aber nicht funktioniert, vermute ich.

Sorry, Anlage ist etwas lang geworden. Denke, aber jemand der schon viel wegen Hardware kompeliert hat, kann damit etwas anfangen.

Gruesse

Webcam:
Bus 002 Device 002: ID 041e:401f Creative Technology, Ltd Webcam Notebook
Modell PD1170 (till max 640×480)

Kernel (Quellcode ist auch installiert – Suse 9.3):
client7:/home/dieterd # dmesg
Linux version 2.6.11.4-21.10-default (geeko@buildhost) (gcc version 3.3.5 20050117 (prerelease) (SUSE Linux)) #1 Tue Nov 29 14:32:49 UTC 2005

Kompilerlauf mit allen Meldungen

client7:/home/dieterd/digicam/spca5xx-20060101 # make
Building SPCA5XX driver for 2.5/2.6 kernel.
Remember: you must have read/write access to your kernel source tree.
make -C /lib/modules/`uname -r`/build SUBDIRS=/home/dieterd/digicam/spca5xx-20060101 CC=cc modules
make[1]: Entering directory `/usr/src/linux-2.6.11.4-21.10-obj/i386/default’
make -C ../../../linux-2.6.11.4-21.10 O=../linux-2.6.11.4-21.10-obj/i386/default modules
CC [M] /home/dieterd/digicam/spca5xx-20060101/drivers/usb/spca5xx.o
CC [M] /home/dieterd/digicam/spca5xx-20060101/drivers/usb/spcadecoder.o
LD [M] /home/dieterd/digicam/spca5xx-20060101/spca5xx.o
Building modules, stage 2.
MODPOST
CC /home/dieterd/digicam/spca5xx-20060101/spca5xx.mod.o
LD [M] /home/dieterd/digicam/spca5xx-20060101/spca5xx.ko
make[1]: Leaving directory `/usr/src/linux-2.6.11.4-21.10-obj/i386/default’
client7:/home/dieterd/digicam/spca5xx-20060101 #

client7:/home/dieterd/digicam/spca5xx-20060101 # make install
mkdir -p /lib/modules/`uname -r`/kernel/drivers/usb/media/
rm -f /lib/modules/`uname -r`/kernel/drivers/usb/media/spca50x.ko
rm -f /lib/modules/`uname -r`/kernel/drivers/usb/media/et61x.ko
install -c -m 0644 spca5xx.ko /lib/modules/`uname -r`/kernel/drivers/usb/media/
/sbin/depmod -ae

Versuch das Modul zu laden:

client7:/home/dieterd/digicam/spca5xx-20060101 # lsmod | grep spc
client7:/home/dieterd/digicam/spca5xx-20060101 # insmod spca5xx.o
insmod: error inserting ‘spca5xx.o’: -1 Invalid module format
client7:/home/dieterd/digicam/spca5xx-20060101 #

Teile aus dem Ergebnis spca5xx.o – ich bin ganze Modul mit dem Editor kate durchgegangen (obwohl ein “binary”; Sind die Ausgaben fuer die Treiberprogrammierer eventuell hilfreich?):

/home/dieterd/digicam/spca5xx-20060101/drivers/usb/mr97311.h %s: [%s:%d] reg write: 0x%02X , result = 0x%x

%s: [%s:%d] reg write: error %d

%s: [%s:%d] usb_set_interface in pcamCameraStart , interface %d , alt 8

%s: [%s:%d] Register write failed

%s: Set packet size: set interface error
/home/dieterd/digicam/spca5xx-20060101/drivers/usb/pac207.h %s: [%s:%d] Pixart Sensor ID 0x%02X Chips ID 0x%02X !!

….. es gibt in dem Block noch mehr solche Eintraege ……..

/home/dieterd/digicam/spca5xx-20060101/drivers/usb/zc3xx.h %s: [%s:%d] sensor answer1 %d
%s: [%s:%d] sensor answervga %d
%s: [%s:%d] sensor answer2 %d
%s: [%s:%d] sensor 3w Vga ??? 0x%04X
%s: [%s:%d] starting new table index %d
%s: [%s:%d] Find Sensor MI0360
%s: [%s:%d] Our Sensor is unknow at the moment please report mxhaard@free.fr
%s: [%s:%d] Find Sensor TAS5130

………

GCC: (GNU) 3.3.5 20050117 (prerelease) (SUSE Linux) GCC: (GNU) 3.3.5 20050117 (prerelease) (SUSE Linux)

[1] http://mxhaard.free.fr/download.html

2 Antworten
Sven Krohlas – Montag, 23. Januar 2006 09:07 Uhr

Hmm, ich habe hier soweit ich das beurteilen kann die gleiche Webcam unter SuSE 10.0, und sie tut einwandfrei.

Ich musste -warum auch immer- nach der Übersetzung des Moduls die Maschine neu starten.

Viele Informationen kann ich sonst leider auch nicht geben (oder gäbe es vielleicht noch was bestimmtes, das dir helfen könnte?) , notfalls wende dich eben an die Entwickler, die helfen sicher gerne.

Um zu verifizieren, dass es wirklich die gleiche ist (aus /proc/bus/usb/devices):
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=ff(vend.) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=041e ProdID=401f Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 80mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=spca5xx
E: Ad=81(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 0 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=spca5xx
E: Ad=81(I) Atr=01(Isoc) MxPS= 128 Ivl=1ms
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 0 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=spca5xx
E: Ad=81(I) Atr=01(Isoc) MxPS= 192 Ivl=1ms
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 0 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=spca5xx
E: Ad=81(I) Atr=01(Isoc) MxPS= 256 Ivl=1ms
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 0 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=spca5xx
E: Ad=81(I) Atr=01(Isoc) MxPS= 384 Ivl=1ms
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 0 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=spca5xx
E: Ad=81(I) Atr=01(Isoc) MxPS= 512 Ivl=1ms
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 0 Alt= 6 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=spca5xx
E: Ad=81(I) Atr=01(Isoc) MxPS= 768 Ivl=1ms
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 0 Alt= 7 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=spca5xx
E: Ad=81(I) Atr=01(Isoc) MxPS=1023 Ivl=1ms
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms

man-draker – Montag, 23. Januar 2006 11:44 Uhr

Es könnte daran liegen, dass ein Modul mt der Namenserweiterung .ko installiert wird, jedoch versucht wird, eines mit der Erweiterung .o zu laden und Module für den Kernel 2.4.x die Endung .o verwenden, solche für den Kernel 2.6.x jedoch die Endung .ko.

Schau doch bitte mal, ob im zum aktuell laufenden Kernel (uname -a) gehörenden Modulbaum /lib/modules/ ein Modul spca5xx.o vorhanden ist und räume es gegebenenfalls aus dem Weg.

Dieter Drewanz – Montag, 23. Januar 2006 17:47 Uhr

Danke es laeuft jetzt.

Ich habe den Kernel 2.6. und das Modul spca5xx.ko mit dem Datum von meinem Kompilerlauf war in dem besagten Verzeichnis. Loeschen war nicht notwendig.

Ich traue es mich fast gar nicht zu schreiben. Der Fehler war etwas die Ungeduld. Ich hab nach dem Reboot gleich herumgemacht, warum es nicht geht. Ich habe nichts veraendert, auch nichts wie vorgeschlagen gemacht. Jetzt habe ich zwei mal gar nichts gemacht und richtig ausgeschaltet gehabt und hochgebootet. Beim zweiten boot hat es merklich etwas laenger gedauert. Bei usbview ist kein rotes Feld mehr und es ist der Treibername dort drin und die Webkam geht im Gnomemeetingfenster.

d.h. treiber laden, make, make install, zweimal booten mit abschalten (kaltstart), dann geht es; Der Treiber ist dann automatisch geladen, wenn webcam angeschlossen war. Der letzte Teil aus der Anleitung im Treiber verwirrt eher, da hier auf Endung .ko bei Kernel 2.6 nicht eingegangen wurde.