ubuntuusers.de

Cinergy T Stick Black - Fehler beim Kompilieren

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

SiWi

Anmeldungsdatum:
16. September 2011

Beiträge: 9

Hallo zusammen, ich bin seit heute im Besitz eines Cinergy T Stick Black und versuche diesen auf Ubuntu zum Laufen zu bekommen. Dazu habe ich den entsprechenden Treiber von http://linux.terratec.de/tv_en.html heruntergeladen. Allerdings erscheint beim Ausführen von make folgende Fehlermeldung:

make -C /home/simon/Downloads/v4l-dvb-abd3aac6644e/v4l 
make[1]: Betrete Verzeichnis '/home/simon/Downloads/v4l-dvb-abd3aac6644e/v4l'
Updating/Creating .config
Preparing to compile for kernel version 2.6.35
File not found: /lib/modules/2.6.35-25-generic/build/.config at ./scripts/make_kconfig.pl line 32, <IN> line 4.
make[1]: *** Keine Regel vorhanden, um das Target ».myconfig«, 
  benötigt von »config-compat.h«, zu erstellen.  Schluss.
make[1]: Verlasse Verzeichnis '/home/simon/Downloads/v4l-dvb-abd3aac6644e/v4l'
make: *** [all] Fehler 2

Das liegt wohl daran, dass ich den Kernel in der Version 2.6.38-11-generic-pae verwende. Gibt es eine Möglichkeit dem Treiber beizubringen, dass er sich für diese Version installieren soll? Oder muss ich extra für diesen Treiber die Kernel-Version 2.6.35 installieren? Wenn ja ist das ohne Weiteres möglich?

SiWi

(Themenstarter)

Anmeldungsdatum:
16. September 2011

Beiträge: 9

Hat keiner eine Idee? Ich habe bereits versucht den älteren Kernel zu installieren, aber das haut mir bis jetzt auch noch nicht so hin...

hakunamatata Team-Icon

Supporter
Avatar von hakunamatata

Anmeldungsdatum:
30. Juni 2009

Beiträge: 5130

Hallo SiWi,

Hat keiner eine Idee? Ich habe bereits versucht den älteren Kernel zu installieren, aber das haut mir bis jetzt auch noch nicht so hin...

eine Lösung wäre mit

make clean && make distclean

die vorkonfigurierten Reste für alte Kernelversionen zu entfernen, dann beginnt

make

auch für Kernel 2.6.38 zu kompilieren. Allerdings nicht lange, denn alle Kernelanpassungen, die bei v4l-dvb seither gemacht wurden, fehlen. Natürlich kannst du jetzt jede Änderung manuell patchen, aber das ist harmlos formuliert: ärgerlich 👿

Ich denke, dass du mit dem Wiki v4l-dvb schneller zum Erfolg kommst. Da wird beschrieben wie du eine aktuelle Version, die auch für Kernel 2.6.38 kompilierbar ist, installieren kannst.

Die Änderungen an v4l-vdb, die du für deinen Stick benötigst, sollten lt. italienischen Ubuntu-Forum 🇮🇹, so möglich sein:

wget http://xgazza.altervista.org/Linux/DVB/Drivers/RTL2832U_patch_v4l_dvb.diff
patch -p1 < RTL2832U_patch_v4l_dvb.diff

Nachdem alle benötigten Pakete lt. Wiki v4l-dvb installiert sind, wäre das also:

git clone git://linuxtv.org/media_build.git 
cd media_build
./build

hier beim Kompilieren mit Strg + C abbrechen und dann so fortsetzen:

wget http://xgazza.altervista.org/Linux/DVB/Drivers/RTL2832U_patch_v4l_dvb.diff
patch -p1 < RTL2832U_patch_v4l_dvb.diff
make
sudo make install

edit: Das ist leider keine getestete Komplettlösung (einen Test kann ich mangels Stick auch nicht machen), aber vielleicht kommst du mit diesen Lösungsansatz trotzdem zum Erfolg.

SiWi

(Themenstarter)

Anmeldungsdatum:
16. September 2011

Beiträge: 9

Hallo hakunamatata,

erst mal vielen Dank für die ausführliche Hilfe! ☺

Ich habe jetzt die Installation so durchgeführt wie geschildert und es wurde alles ohne Fehler installiert und kompiliert.

Allerdings erhalte ich bei der Eingabe von

dmesg | grep -i dvb

keine Ausgabe.

Während der Installation war der DVB-T Stick die ganze Zeit nicht angesteckt, war das so richtig? Ansonsten habe ich beim Ausführen von

patch -p1 < RTL2832U_patch_v4l_dvb.diff

eine Meldung erhalten, dass eine Änderung verweigert worden sei.

Wie kann ich nun weiter vorgehen?

hakunamatata Team-Icon

Supporter
Avatar von hakunamatata

Anmeldungsdatum:
30. Juni 2009

Beiträge: 5130

Während der Installation war der DVB-T Stick die ganze Zeit nicht angesteckt, war das so richtig?

Ja war richtig, ist erst sinnvoll nach

sudo make install

dann ist der neue Treiber installiert. Wenn noch alte Treiber geladen sind, musst du die vielleicht noch entladen oder alternativ einen Neustart durchführen.

Allerdings erhalte ich bei der Eingabe von

dmesg | grep -i dvb

Eventuell siehst du noch wesentliche Meldungen, wenn du nur

dmesg

nach dem Anstecken des Sticks eingibst.

Ansonsten habe ich beim Ausführen von

patch -p1 < RTL2832U_patch_v4l_dvb.diff

eine Meldung erhalten, dass eine Änderung verweigert worden sei.

Das sehe ich mir am Abend noch an. Habe zwei davon in Erinnerung, die aber nicht den Programmcode der Module selbst betrafen, sondern nur Steuerdaten, wo angegeben wird, was erstellt und installiert wird.

SiWi

(Themenstarter)

Anmeldungsdatum:
16. September 2011

Beiträge: 9

Ich vermute, dass ich mit

make rmmod

die Treiber entladen kann. Nur welchen Treiber muss ich dann mit modprobe laden?

hakunamatata Team-Icon

Supporter
Avatar von hakunamatata

Anmeldungsdatum:
30. Juni 2009

Beiträge: 5130

SiWi schrieb:

Ich vermute, dass ich mit

make rmmod

die Treiber entladen kann. Nur welchen Treiber muss ich dann mit modprobe laden?

wenn du den Rechner einmal neugestartet hast und die neuen Module vorher mit

sudo make install

installiert wurden, sollten nach dem Anstecken des Sticks ohnedies alle benötigten Module geladen werden.

SiWi

(Themenstarter)

Anmeldungsdatum:
16. September 2011

Beiträge: 9

Ok das hab ich schon gemacht. Wenn ich dmesg ausführe, kann ich nichts erkennen, das von dem Stick handelt.

hakunamatata Team-Icon

Supporter
Avatar von hakunamatata

Anmeldungsdatum:
30. Juni 2009

Beiträge: 5130

Bin einen Schritt weiter. Wenn du im Verzeichnis media_build vor dem Erstellen noch die Arbeitsumgebung für make zurücksetzt:

cd media_build
make clean
make distclean
make

werden auch die gepatchten Module kompiliert wie z.B.: rtl2832u. Da gibt es aber leider Fehler.

hakunamatata Team-Icon

Supporter
Avatar von hakunamatata

Anmeldungsdatum:
30. Juni 2009

Beiträge: 5130

Habe inzwischen ein für Natty funktionstüchtiges Kernelmodul dvb-usb-rtl2832u gefunden, das für deinen Stick benötigt wird: http://jms.id.au/wiki/EzcapDvbAdapter

git clone http://jms.id.au/~shenki/git/rtl2832u
cd rtl2832u

dann muss die gelbmarkierte Zeile in der Datei rtl2832u.h eingefügt werden:

#define   USB_PID_RTL2836_2ND_WARM             0x2839

#define	USB_PID_TERRATEC_WARM			0x00A9

#define	USB_VID_GOLDENBRIDGE				0x1680

und in der Datei rtl2832u.c die gelbmarkierten Änderungen:

static struct usb_device_id rtl2832u_usb_table [] = {
	{ USB_DEVICE(USB_VID_REALTEK, USB_PID_RTD2832U_WARM) },
        { USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_WARM) }, 
     /* { USB_DEVICE(USB_VID_AZUREWAVE, USB_PID_AZUREWAVE_USB_WARM) }, */

Kompilieren und installieren ist dann wie in der Anleitung:

make
sudo make modules_install

Danach Stick anstecken und falls das Modul nicht geladen wird, manuell nachhelfen:

sudo depmod -a
sudo modprobe dvb-usb-rtl2832u

und dann mit

dmesg

kontrollieren. Ich hoffe du hast dann ein Erfolgserlebnis.

SiWi

(Themenstarter)

Anmeldungsdatum:
16. September 2011

Beiträge: 9

Hallo hakunamata, zuerst nochmal vielen Dank für die Hilfe! ☺ Hab das Ganze jetzt ausprobiert, es wurde bis auf ein paar Warnungen auch alles fehlerfrei kompiliert. Allerdings ergab sich nach dem Anstecken des Sticks bei dmesg immer noch keine entsprechende Ausgabe. Danach habe ich dann also folgende Befehle ausgeführt:

sudo depmod -a
sudo modprobe dvb-usb-rtl2832u

Dabei ergab sich beim zweiten folgende Fehlermeldung:

FATAL: Error inserting dvb_usb_rtl2832u (/lib/modules/2.6.38-11-generic-pae/extra/dvb-usb-rtl2832u.ko): Invalid argument

Nun erhalte ich für

dmesg | grep dvb

die Ausgabe:

[  374.924155] dvb_usb_rtl2832u: disagrees about version of symbol dvb_usb_device_init
[  374.924160] dvb_usb_rtl2832u: Unknown symbol dvb_usb_device_init (err -22)

Kann man mit diesem Status etwas anfangen?

hakunamatata Team-Icon

Supporter
Avatar von hakunamatata

Anmeldungsdatum:
30. Juni 2009

Beiträge: 5130

[  374.924155] dvb_usb_rtl2832u: disagrees about version of symbol dvb_usb_device_init

Da stimmen die Programmversionen der einzelnen Module nicht zusammen. Das Modul dvb-usb-rtl2832u wurde so erstellt, dass es mit den Modulen zusammenarbeitet, die mit dem Kernel mitgeliefert wurden. Es existieren aber noch neuere Module von v4l-dvb.

Also entweder die Version von v4l-dvb deinstallieren:

cd media_build
sudo make uninstall

oder den Kernel neu installieren (linux-image Paket deines aktuell installierten Kernels). Dann solltest du das Modul dvb-usb-rtl2832u nochmals erstellen.

FATAL: Error inserting dvb_usb_rtl2832u (/lib/modules/2.6.38-11-generic-pae/extra/dvb-usb-rtl2832u.ko): Invalid argument

Bei mir gab es keine Fehlermeldungen, weil ich den Stick nicht anstecken konnte, aber versuch die Parameter für das Modul anzugeben:

sudo modprobe dvb-usb-rtl2832u debug=2 demod=0 dtmb_err_discard=0 adapter_nr=0

SiWi

(Themenstarter)

Anmeldungsdatum:
16. September 2011

Beiträge: 9

Hallo hakunamatata, ES KLAPPT JETZT!!!! Es war nämlich so, dass ich nur noch die neuesten Aktualisierungen für den Kernel herunterladen musste, die just zur selben Zeit zum Update angeboten wurden, als ich den Treiber installierte. Vielen Dank nochmal! ☺

hakunamatata Team-Icon

Supporter
Avatar von hakunamatata

Anmeldungsdatum:
30. Juni 2009

Beiträge: 5130

ES KLAPPT JETZT!!!!

👍 Super. Ich hatte schon befürchtet, dass die Modifikation, die ich dir vorgeschlagen habe (Die ID deines Terratec-Sticks einzutragen und die Konfiguration eines AzureWave-Sticks zu verwenden) zu wenig sein wird.

Das Verzeichnis mit dem modifizierten Treiber kannst du dir übrigens aufbewahren und dann nach Kernel-Updates wieder verwenden:

cd rtl2832u
make clean
make
sudo make modules_install
sudo depmod -a
Antworten |