ubuntuusers.de

DVB-T USB Stick ITE:9135 installieren ergibt: fatal error: dvb-usb.h

Status: Gelöst | Ubuntu-Version: Ubuntu 11.04 (Natty Narwhal)
Antworten |

Dermeineeine

Anmeldungsdatum:
30. April 2011

Beiträge: Zähle...

Hallo Zusammen,

ich habe gestern ein Update auf Natty(Neuinstallation!) gemacht und seit dem funktioniert mein DVB-T Stick nicht mehr. Unter Maverick lief mit Kaffeine alles super. Hatte damals die Anleitung von http://www.linuxtv.org/wiki/index.php/Kworld_UB499-2T benutzt.

lsusb sagt zum Stick folgendes:

Bus 001 Device 005: ID 048d:9135 Integrated Technology Express, Inc. 

Dachte mir ih versuchs mit der Anleitung nochmal, leider bekomme ich folgenden Fehler bei Schritt: make

make -s -C /lib/modules/2.6.38-8-generic/build SUBDIRS=/home/helge/IT9135_SRC modules
In file included from /home/helge/IT9135_SRC/it9135-core.c:21:0:
/home/helge/IT9135_SRC/it9135.h:14:21: fatal error: dvb-usb.h: Datei oder Verzeichnis nicht gefunden
compilation terminated.
make[2]: *** [/home/helge/IT9135_SRC/it9135-core.o] Fehler 1
make[1]: *** [_module_/home/helge/IT9135_SRC] Fehler 2
make: *** [default] Fehler 2

Ich weiß, dass die Anleitung eigentlich für ältere Kernelversionen gedacht ist.

Hat vielleicht trotzdem jemand eine Idee wie ich den Stick dennoch zum laufen bringen kann?

Wenn noch Informationen benötigt werden bitte melden!

Dankeschön!

Dermeineeine

(Themenstarter)

Anmeldungsdatum:
30. April 2011

Beiträge: 14

Ich hab mal ein bisschen getestet, leider bekomme ich immernoch eine Fehlerausgabe.

Erstmal was ich gebastelt habe:

Im Ordner /IT9135_SRC/v4l/ sind alle Dateien zu allen Kernelversionen hinterlegt, mein aktueller Kernel jedoch nicht. Deswegen habe ich hier folgenden Ordner erstellt: kernel-2.6.38-8-generic Anschließend mit folgendem leicht angepasstem Script (ganz unten!) von http://www.linuxtv.org/wiki/index.php/Kworld_UB499-2T#Updating_for_the_2.6.36_.26_2.6.37_kernel die notwendigen Dateien in den Ordner /IT9135_SRC/v4l/kernel-2.6.38-8-generic kopiert. Jetzt hab ich dem Makefile unter /IT9135_SRC/Makefile in Zeile 120 noch folgenden hinzugefügt:

ifneq (,$(findstring 2.6.38,$(CURRENT)))
	@cp -f v4l/kernel-2.6.38-8-generic/* ./
endif

Damit wäre der Fehler aus Post 1 schonmal behoben, er findet ja die Dateien.

Jetzt das Problem wenn ich im Ordner /IT9135_SRC

make

ergibt folgendes:

make -s -C /lib/modules/2.6.38-8-generic/build SUBDIRS=/home/helge/Downloads/IT9135_SRC modules
In file included from /home/helge/Downloads/IT9135_SRC/it9135.h:14:0,
                 from /home/helge/Downloads/IT9135_SRC/it9135-core.c:21:
/home/helge/Downloads/IT9135_SRC/dvb-usb.h:202:22: error: ‘FIRMWARE_NAME_MAX’ undeclared here (not in a function)
In file included from /home/helge/Downloads/IT9135_SRC/user.h:7:0,
                 from /home/helge/Downloads/IT9135_SRC/type.h:467,
                 from /home/helge/Downloads/IT9135_SRC/iocontrol.h:16,
                 from /home/helge/Downloads/IT9135_SRC/it9135.h:15,
                 from /home/helge/Downloads/IT9135_SRC/it9135-core.c:21:
/home/helge/Downloads/IT9135_SRC/type.h:905:7: warning: extra tokens at end of #endif directive
In file included from /home/helge/Downloads/IT9135_SRC/iocontrol.h:16:0,
                 from /home/helge/Downloads/IT9135_SRC/it9135.h:15,
                 from /home/helge/Downloads/IT9135_SRC/it9135-core.c:21:
/home/helge/Downloads/IT9135_SRC/type.h:905:7: warning: extra tokens at end of #endif directive
/home/helge/Downloads/IT9135_SRC/it9135-core.c:23:1: warning: data definition has no type or storage class
/home/helge/Downloads/IT9135_SRC/it9135-core.c:23:1: warning: type defaults to ‘int’ in declaration of ‘DVB_DEFINE_MOD_OPT_ADAPTER_NR’
/home/helge/Downloads/IT9135_SRC/it9135-core.c:23:1: warning: parameter names (without types) in function declaration
/home/helge/Downloads/IT9135_SRC/it9135-core.c:125:2: warning: initialization from incompatible pointer type
/home/helge/Downloads/IT9135_SRC/it9135-core.c: In function ‘it9135_probe’:
/home/helge/Downloads/IT9135_SRC/it9135-core.c:196:72: error: ‘adapter_nr’ undeclared (first use in this function)
/home/helge/Downloads/IT9135_SRC/it9135-core.c:196:72: note: each undeclared identifier is reported only once for each function it appears in
/home/helge/Downloads/IT9135_SRC/it9135-core.c:196:3: error: too many arguments to function ‘dvb_usb_device_init’
/home/helge/Downloads/IT9135_SRC/dvb-usb.h:390:12: note: declared here
make[2]: *** [/home/helge/Downloads/IT9135_SRC/it9135-core.o] Fehler 1
make[1]: *** [_module_/home/helge/Downloads/IT9135_SRC] Fehler 2
make: *** [default] Fehler 2

Das erschlägt mich jetzt erstmal ziemlich.

Kann jemand nachvollziehen was ich hier gemacht hab und ob das richtig oder falsch war? Und hat jemand eventuell eine Lösung?

Schönen Sonntag

edit: Achja, wenn ich dann

sudo make install

eingebe funktioniert der Stick danach immernoch nicht... ☹

Dermeineeine

(Themenstarter)

Anmeldungsdatum:
30. April 2011

Beiträge: 14

Mein Gedanke war, dass diese Anleitung http://www.linuxtv.org/wiki/index.php/Kworld_UB499-2T#Updating_for_the_2.6.36_.26_2.6.37_kernel ja für den Kernel gedacht ist und es bei mir mit Maverick mit einem 2.6.37 Kernel funktioniert hat. Also mache ich ein KernelDowngrade!

Jetzt meine Frage:

Welchen Kernel soll ich am besten installieren? Habe mich mal hier http://kernel.ubuntu.com/~kernel-ppa/mainline/ umgeschaut. Ich tendiere zu diesem hier http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.37.6-natty/ ganz einfach weil es der aktuellste ist.

Und:

Was genau muss laden? Wie geht das installieren genau? Hier http://wiki.ubuntuusers.de/Mainline-Kernel steht noch was von linux-header-* und linux-source-* Paketen. Brauch ich die auch?

Und: Kann ich dann im GRUB die Kernelversion zum booten auswählen? Muss ich an noch irgendwas denken?

Wäre nett wenn mir jemand mal sagen könnte, ob das generell eine sinnvolle Idee ist, was ich so vorhabe. Und vielleicht hat ja jemand die Muße mir mehr oder weniger haarklein zu erklären wie so ein Downgrade auf einen älteren Kernel funktioniert oder hat zumindest den ein oder anderen Link parat? Links auf englisch sollten kein Problem sein.

Recht herzlichen Dank für eure Aufmerksamkeit! 😉

Dermeineeine

(Themenstarter)

Anmeldungsdatum:
30. April 2011

Beiträge: 14

Ein netter Mensch hat sich die Mühe gemacht: http://linuxtv.org/wiki/index.php/Kworld_UB499-2T#Updating_for_the_2.6.38_and_Beyond

Ich werde es die Tage mal testen.

5h1mmy

Anmeldungsdatum:
15. Mai 2011

Beiträge: Zähle...

solltest du es zum laufen bringen wäre eine detailierte anleitung super, ich habs versucht und bin daran gescheitert...

Dermeineeine

(Themenstarter)

Anmeldungsdatum:
30. April 2011

Beiträge: 14

Also, bin der Anleitung Schritt für Schritt gefolgt.

Jetzt ausführlich, Terminal starten:

cd ~/Downloads                                                                      //Wechsel in den Downloads Ordner, optional, hilft aber die Dateien zu finden
wget http://wasietsmet.nl/wp-content/uploads/2010/07/V10.12.30.1.zip                //herunterladen der Dateien
unzip V10.12.30.1.zip                                                               // entpackt das *.zip aktuellen Ornder
cd ~/Downloads/v10.12.30.1                                                          // Wechsel in den Unterordern v10.12.30.1
sh IT9135_Installer_i686.sh                                                         // Starten der Installation, hier für i686

Soweit so gut, jetzt werdet ihr gefragt:

1. Install ITEtech IT9135 Driver
2. Remove  ITEtech IT9135 Driver
Please Input Your Choise:

Neues Terminal öffnen, altes Terminal NICHT schließen:

cp -R /tmp/ite-install ~/ite-install                                               // kopiert die lokalen Dateien der Installation nach /home/user/ite-install

Jetzt kann das erste Terminal geschlossen werden, der Installer geht eh nicht. Jetzt müssen ein paar Veränderungen im Makefile gemacht werden:

gedit ~/ite-install/installer/IT9135_SRC/Makefile                                  // öffnet das Makefile mit Gedit

Dann:

ifneq (,$(findstring 2.6.38-8-generic,$(CURRENT)))
	@cp -f v4l/kernel-2.6.38-8-generic/* ./
endif

an entsprechender Stelle im Makefile einfügen, ihr seht schon wo, einfach mal runterscrollen bis was kommt was so ähnlich aussieht 😉 Das gilt aber nur wenn die Ausgabe von

uname -r
2.6.38-8-generic

ergibt, wenn nicht bitte entsprechend anpassen! Außerdem muss

.ioctl = it9135_usb_ioctl,

zu

.unlocked_ioctl = it9135_usb_ioctl,

umbenannt werden.

Jetzt wird die Linux-Source benötigt, falls noch nicht installiert

sudo apt-get install linux-source                                                  // bitte darauf achten, das die Source auch zum aktuellen Kernel passt
cd /usr/src/linux-source-2.6.38
sudo tar -xjf linux-source-2.6.38.tar.bz2                                          // entpackt das Source-Paket, 

Jetzt muss das Script etwas angepasst werden ich poste mal meins:

#!/bin/bash

KERNEL_VERSION=$(uname -r | cut -d. -f1-3)

if [ -d "IT9135_SRC/v4l/kernel-${KERNEL_VERSION}" ]; then
	echo "Looks like this kernel has already been configured.  Exiting."
	exit 1
else
	mkdir IT9135_SRC/v4l/kernel-${KERNEL_VERSION}
fi

REQD="dvb_frontend.h
dmxdev.h
dvb_ringbuffer.h
dvb_demux.h
dvb-pll.h
dvb-usb.h
dvb_net.h
dvbdev.h
demux.h
dvb-usb-ids.h"

for x in $REQD; do
	echo -n "Processing $x: "
	find /usr/src/linux-source-2.6.38/drivers/media/dvb/ -name "$x" -print0 -exec cp "{}" IT9135_SRC/v4l/kernel-${KERNEL_VERSION} \;
	echo
done

Im Terminal erst in den Ordner wechseln:

cd ~/ite-install/installer

dann das Script ins Terminal einfügen und mit Enter bestätigen. Es sollten keine Fehler ausgegeben werden.

Es fehlt nur noch:

make

und wenn keine Fehler und Errors ausgegeben werden, dann:

sudo make install

Hoffentlich funktioniert euer Stick jetzt.

Bei mir tut das blöde Teil es leider nicht, ich bekomme mit

dmesg | grep -i dvb

leider folgendes

[ 2488.805420] dvb_usb_it9135: disagrees about version of symbol dvb_usb_device_init
[ 2488.805429] dvb_usb_it9135: Unknown symbol dvb_usb_device_init (err -22)

Jodi, der Schreiber des Wiki auf http://linuxtv.org/wiki/index.php/Kworld_UB499-2T hatte wohl das selbe Problem und meinte unter "Diskussion" er hätte die falsche kernel-source benutzt aber jetzt würde alles funktionieren. Da komme ich nicht weiter, habe meine Source halt wie oben installiert und auch mal über Synaptic hinzugefügt, das kann man ja nicht viel falsch machen.

Wäre nett, wenn jemand mal über meinen Post schauen könnte und im besten Fall seinen Stick ans Laufen bekommt.

eishailiga

Avatar von eishailiga

Anmeldungsdatum:
31. Oktober 2006

Beiträge: 5401

Wohnort: Sauerland

Dermeineeine schrieb:

Dann

ifneq (,$(findstring 2.6.38-8-generic,$(CURRENT)))
	@cp -f v4l/kernel-2.6.38-8-generic/* ./
endif

Wenn ich das richtig interpretiere, müsste der Eintrag aber so aussehen:

ifneq (,$(findstring 2.6.38,$(CURRENT)))
	@cp -f v4l/kernel-2.6.38/* ./
endif

Vielleicht solltest du den Treiber deinstallieren.

Ins Installationsverzeichnis wechseln und dort

sudo make distclean
make clean

und das Makefile korrigieren und dann erneut installieren.

Dermeineeine

(Themenstarter)

Anmeldungsdatum:
30. April 2011

Beiträge: 14

Moin, danke fürs drüberschauen und die Verbesserungen. Hast recht, hab mich selbst verwirrt.

Hab auch noch was wichtiges übersehen:

.ioctl = it9135_usb_ioctl,

zu

.unlocked_ioctl = it9135_usb_ioctl,

umbenennen, aber bitte in der richtigen Datei, nämlich src/it9135-core.c

Leider sagt

sudo make distclean
make: *** Keine Regel, um »distclean« zu erstellen.  Schluss.

Und die Änderungen hab ich natürlich übernommen, eine erneute Installation bringt den selben Fehler. Kann es sein, dass ich mir meinen Kernel total zerschossen hab mit der ganzen Testerei? Gibts ne Möglichkeit den Kernel zu säubern, quasi zurück zu setzen?

Andere Frage, hab ich die richtigen Quellen installiert? Kann ich prüfen ob ich die passenden Linux-Sources geholt hab?

eishailiga

Avatar von eishailiga

Anmeldungsdatum:
31. Oktober 2006

Beiträge: 5401

Wohnort: Sauerland

Ich habe mir das Makefile mal angesehen, dort funktioniert kein distclean, wie es sonst üblich ist.

cd ~/ite-install/installer/IT9135_SRC/
make remove
make clean

sollte funktonieren.

Dermeineeine

(Themenstarter)

Anmeldungsdatum:
30. April 2011

Beiträge: 14

Aha, vielen Dank, damit klappt das Entfernen.

Leider habe ich immer noch den version symbol Fehler.

eishailiga

Avatar von eishailiga

Anmeldungsdatum:
31. Oktober 2006

Beiträge: 5401

Wohnort: Sauerland

Poste doch mal die Ausgabe von

lsmod | grep dvb

Dermeineeine

(Themenstarter)

Anmeldungsdatum:
30. April 2011

Beiträge: 14

Bitteschön!

lsmod | grep dvb
dvb_usb                27545  0 
dvb_core               90009  1 dvb_usb
rc_core                25697  7 ir_lirc_codec,ir_sony_decoder,ir_jvc_decoder,ir_rc6_decoder,ir_rc5_decoder,dvb_usb,ir_nec_decoder

eishailiga

Avatar von eishailiga

Anmeldungsdatum:
31. Oktober 2006

Beiträge: 5401

Wohnort: Sauerland

Der Treiber ist noch installiert?

Dermeineeine

(Themenstarter)

Anmeldungsdatum:
30. April 2011

Beiträge: 14

Ne, war natürlich nicht.... Sorry,,,

also jetzt richtig:

lsmod | grep dvb
dvb_usb                27545  0 
dvb_core               90009  1 dvb_usb
rc_core                25697  7 ir_lirc_codec,ir_sony_decoder,ir_jvc_decoder,ir_rc6_decoder,ir_rc5_decoder,dvb_usb,ir_nec_decoder

aber da tut sich nix dran, oder?

eishailiga

Avatar von eishailiga

Anmeldungsdatum:
31. Oktober 2006

Beiträge: 5401

Wohnort: Sauerland

Wenn der Treiber installiert, ist dann versuche

sudo modprobe -r dvb_usb_af9015
sudo rmmod dvb_usb dvb_core
sudo modprobe -v dvb-usb-it9135

und dann die Ausgabe von

dmesg | grep -i dvb
Antworten |