Plextor Convertx PX-M402U
Plextor Convertx PX-M402U (auch: Plextor ConvertX PX-M402U) enthält den Videoencoderchip WIS Go7007 MPEG-4, der ursprünglich von der Firma Micronas hergestellt wurde. Micronas stellte ein Kernelmodul für den Linux-Kernel 2.6.x zur Verfügung, das komprimierte Videodaten über die Programmierschnittstelle Video4Linux2 und unkomprimierte Audiodaten über die Programmierschnittstelle ALSA lieferte.
Leider hat WIS den Treiber schon länger nicht mehr aktualisiert, weswegen er auf den meisten modernen Linux-Distributionen nicht funktioniert. Einige nette Programmierer haben deswegen passende Patches geschrieben, sodass die wis-go7007-linux-0.9.8-Quelldateien auch unter Fedora Core 5/6, Fedora 7/8/9 und Ubuntu Dapper/Edgy/Feisty/Gutsy/Hardy funktionieren. Auch das Programm gorecord kann mit einem audio/video Sync-Patch nun Videodateien grösser als 1 GB aufnehmen.
Installation
Ubuntu 8.04 Hardy Heron (Linux 2.6.24-24)
Herunterladen: http://nikosapi.org/wiki/index.php/WIS_Go7007_Linux_driver
Installation der benötigten Entwicklungspakete.
$ sudo apt-get install linux-headers-generic fxload libncurses5-dev $ sudo apt-get install linux-headers-lum-2.6.24-24-generic
Entfernen der inkorrekten Sound-Kernelheader.
$ sudo mv /usr/src/linux-headers-2.6.24-24-generic/include/sound \ /usr/src/linux-headers-2.6.24-24-generic/include/sound-BACKUP20090812
Herunterladen der Datei "wis-go7007-linux-0.9.8-2.tar.bz2", welche bereits einige notwendige Patches enthält.
$ mkdir Plextor && cd Plextor $ wget http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-2.tar.bz2 $ tar xjf wis-go7007-linux-0.9.8-2.tar.bz2 $ cd wis-go7007-linux-0.9.8-2
In den wis-go7007-Quelldateien muss folgende Zeile am Anfang der Datei "Makefile" eingefügt werden, damit der richtige LUM ALSA-Header berücksichtigt wird.
$ vi kernel/Makefile EXTRA_CFLAGS += -I /usr/src/linux-headers-lum-2.6.24-24-generic -include sound/config.h
Zumindest unter Ubuntu 8.04 Hardy Heron mit Linux-Kernel 2.6.24 kann gorecord aus 0.9.8.2 die vom snd_go7007-Modul mitgeteilte ALSA-Audioeingabe nicht finden (und gibt dann folgende Fehlermeldung aus: "Unable to find associated ALSA device node"). Zur Behebung dieses Problems wird in der Datei "gorecord.c" die Zeile 213 wie folgt geändert:
if (!strcmp(gopath, canonpath))
zu
if (!strncmp(gopath, canonpath, strlen(gopath)))
$ vi ~/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/apps/gorecord.c
Kompilieren und Installieren.
$ make ***** Using kernel source in /usr/src/linux-headers-2.6.24-24-generic ***** make modules -C /usr/src/linux-headers-2.6.24-24-generic M=/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel make[1]: Betrete Verzeichnis '/usr/src/linux-headers-2.6.24-24-generic' CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/go7007-v4l2.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/go7007-driver.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/go7007-i2c.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/go7007-fw.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/go7007.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/go7007-usb.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.o In Datei, eingefügt von /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.c:39: /usr/src/linux-headers-lum-2.6.24-24-generic/sound/driver.h:1:2: Warnung: #warning "This file is deprecated" In Datei, eingefügt von /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.c:39: /usr/src/linux-headers-lum-2.6.24-24-generic/sound/driver.h:1:2: Warnung: #warning "This file is deprecated" CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-saa7115.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-tw9903.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-uda1342.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-sony-tuner.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-saa7113.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-ov7640.o CC [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-tw2804.o Building modules, stage 2. MODPOST 10 modules WARNING: "snd_pcm_period_elapsed" [/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko] undefined! WARNING: "snd_card_disconnect" [/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko] undefined! WARNING: "snd_device_new" [/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko] undefined! WARNING: "snd_pcm_set_ops" [/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko] undefined! WARNING: "snd_card_free_when_closed" [/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko] undefined! WARNING: "snd_pcm_lib_ioctl" [/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko] undefined! WARNING: "snd_card_new" [/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko] undefined! WARNING: "snd_card_free" [/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko] undefined! WARNING: "snd_card_register" [/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko] undefined! WARNING: "snd_pcm_new" [/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko] undefined! CC /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/go7007-usb.mod.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/go7007-usb.ko CC /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/go7007.mod.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/go7007.ko CC /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.mod.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/snd-go7007.ko CC /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-ov7640.mod.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-ov7640.ko CC /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-saa7113.mod.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-saa7113.ko CC /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-saa7115.mod.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-saa7115.ko CC /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-sony-tuner.mod.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-sony-tuner.ko CC /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-tw2804.mod.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-tw2804.ko CC /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-tw9903.mod.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-tw9903.ko CC /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-uda1342.mod.o LD [M] /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/kernel/wis-uda1342.ko make[1]: Verlasse Verzeichnis '/usr/src/linux-headers-2.6.24-24-generic' sed -e s/@FIRMWARE_DIR@/\\/lib\\/firmware/ \ -e s/@FXLOAD@/\\/sbin\\/fxload/ \ <hotplug/wis-ezusb.in >hotplug/wis-ezusb sed -e s/@FIRMWARE_DIR@/\\/lib\\/firmware/ \ -e s/@FXLOAD@/\\/sbin\\/fxload/ \ <udev/go7007_firmware_load.in >udev/go7007_firmware_load sed -e s/@DESTDIR@// <udev/91-wis-ezusb.rules.in >udev/91-wis-ezusb.rules make -C apps CFLAGS="-I/usr/src/linux-headers-2.6.24-24-generic/include -I../include" make[1]: Betrete Verzeichnis '/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/apps' gcc -Wall -I/usr/src/linux-headers-2.6.24-24-generic/include -I../include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -o gorecord gorecord.c tv-freq.c gcc -Wall -I/usr/src/linux-headers-2.6.24-24-generic/include -I../include -o modet modet.c -lncurses make[1]: Verlasse Verzeichnis '/home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/apps'
$ sudo checkinstall ... Done. The new package has been installed and saved to /home/mik/backup/hardware/Plextor/wis-go7007-linux-0.9.8-2/wis-go7007-linux-0.9.8_2-1_i386.deb You can remove it from your system anytime using: dpkg -r wis-go7007-linux-0.9.8
Damit fxload die Firmware ins Gerät laden kann, muss usbfs (oder usbdevfs) nach "/proc/bus/usb" eingehängt werden. Dazu muss die Datei "/etc/init.d/mountdevsubfs.sh" angepasst werden. Dafür gibt es einen einfachen Patch, der im neuesten Treiberpaket enthalten ist.
$ cd /etc/init.d $ sudo cp mountdevsubfs.sh mountdevsubfs.sh-BACKUP20090812 $ cd wis-go7007-linux-0.9.8-2 $ wd=`pwd`; sudo patch -d /etc/init.d -p0 -i "$wd"/patches/mountdevsubfs.sh-usbfs.patch patching file mountdevsubfs.sh $ sudo /etc/init.d/mountdevsubfs.sh start
Im Verzeichnis "/proc/bus/usb" sollten jetzt Inhalte zu sehen sein.
Test
Das Quellgerät (in meinem Fall ein Videorekorder Daewoo ST242) besitzt einen SCART-Anschluss. Auf diesen wird ein SCART-Adapter gesteckt, woran die roten, weissen (Audio) und gelben (Video) Cinch-Stecker stecken. Deren andere Enden werden ans Plextor Convertx-Gerät gesteckt.
Vom Plextor Convertx-Gerät her wird schliesslich das USB-Kabel an einen freien USB-2.0-Port am Aufnahmerechner eingesteckt.
Auf dem Aufnahmerechner werden nun zur Überprüfung folgende Aktionen durchgeführt.
$ lsmod | grep 7007 go7007_usb 15748 0 go7007 55040 2 wis_saa7115,go7007_usb videodev 29440 1 go7007 v4l2_common 18304 2 go7007,videodev snd_go7007 7716 1 go7007 snd_pcm 78596 5 snd_go7007,snd_emu10k1,snd_ac97_codec,snd_pcm_oss snd 56996 24 snd_go7007,snd_emux_synth,snd_seq_virmidi,snd_emu10k1,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss, snd_pcm,snd_hwdep,snd_seq_dummy,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device i2c_core 24832 4 wis_saa7115,go7007_usb,go7007,nvidia usbcore 146412 4 go7007_usb,ehci_hcd,uhci_hcd
In der Ausgabe von lsusb sollte der Eintrag "Plextor" erscheinen.
$ lsusb Bus 005 Device 003: ID 093b:a102 Plextor Corp. Bus 005 Device 001: ID 0000:0000 Bus 004 Device 001: ID 0000:0000 Bus 003 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000
Mit Hilfe von dmesg ist zu sehen, ob die Treiber korrket geladen wurden.
$ dmesg ... [ 194.430748] usb 5-3: new high speed USB device using ehci_hcd and address 2 [ 194.563106] usb 5-3: configuration #1 chosen from 1 choice [ 194.877531] usb 5-3: USB disconnect, address 2 [ 196.625026] usb 5-3: new high speed USB device using ehci_hcd and address 3 [ 196.757806] usb 5-3: configuration #1 chosen from 1 choice [ 196.980243] Linux video capture interface: v2.00 [ 197.047195] go7007-usb: probing new GO7007 USB board [ 197.332068] go7007: registering new Plextor PX-M402U [ 197.341036] wis-saa7115: initializing SAA7115 at address 32 on WIS GO7007SB [ 199.651762] usbcore: registered new interface driver go7007 [ 200.107954] go7007: unsupported ioctl -2143521279
Der folgende Befehl prüft, ob das Video4Linux-System die Konverterbox erkannt hat. Sollte das System das Convertx-Modul nicht erkennen, so wird stattdessen das Netzteil aus der Steckdose gezogen und direkt wieder eingesteckt. Hilft auch das nicht, so wird das System einmal vollständig neu gestartet - in diesem Fall wird der Konverter eingesteckt und eingeschaltet gelassen.
$ grep go7007 /sys/class/video4linux/video*/name go7007
Der Shell-Befehl gorecord dient der Aufzeichnung von Audio- und Videodaten. Aufgerufen mit dem Schalter "-verbose" sollte er folgende Ausgabe zeigen:
$ gorecord -verbose /dev/video0 is a GO7007 device at USB address 5-3:1.0 Attempting to determine audio device...using audio device /dev/dsp1 Driver: go7007 Card: Plextor PX-M402U Version: 0.9.8 Formats supported: Motion-JPEG, MPEG1/MPEG2/MPEG4 Input ports available: input 0: Composite (NTSC, PAL/SECAM) input 1: S-Video (NTSC, PAL/SECAM) Sensor controls available: Brightness Range: ( 0, 255) Default: 128 Contrast Range: ( 0, 127) Default: 64 Saturation Range: ( 0, 127) Default: 64 Hue Range: ( -128, 127) Default: 0
Nun wird mit gorecord eine erste Testaufzeichnung gemacht. Dabei werden 10 Sekunden Filmmaterial nach der NTSC-Norm im Format MPEG-4 (Divx) in die Ausgabedatei "testvideo.avi" geschrieben.
- "-input 0" für den Composite-Eingang.
- "-input 1" für den Svideo-Eingang.
$ gorecord -input 1 -duration 10 testvideo.avi /dev/video0 is a GO7007 device at USB address 5-3:1.0 Attempting to determine audio device...using audio device /dev/dsp1 Using input port S-Video Warning: no video standard specified; using NTSC Capturing video at 640x480, 29.97 FPS 00:00:20.00 Frames: 501 AVI size: 6MB A-V: 2200.86ms Video: 1298kbps Video data written to file: 3183981 bytes of MPEG4 Audio data written to file: 3644988 bytes of uncompressed PCM AVI file format overhead : 25339 bytes Total file size : 6854308 bytes Total A/V correction : -213444 bytes
Nun wird mit gorecord eine weitere Testaufzeichnung gemacht. Diesmal werden 10 Sekunden Filmmaterial nach der PAL-Norm mit einer Auflösung von 720x576 Bildpunkten im MPEG-2-Format in die Ausgabedatei "testvideo.avi" geschrieben.
$ gorecord -input 1 -duration 10 -mode pal-bg -width 720 -height 576 -format mpeg2-dvd testvideo.avi /dev/video0 is a GO7007 device at USB address 5-3:1.0 Attempting to determine audio device...using audio device /dev/dsp1 Using input port S-Video Capturing video at 720x576, 25.00 FPS 00:00:20.00 Frames: 501 AVI size: 7MB A-V: -29.83ms Video: 1650kbps Video data written to file: 3773144 bytes of MPEG2 Audio data written to file: 3857312 bytes of uncompressed PCM AVI file format overhead : 25330 bytes Total file size : 7655786 bytes Total A/V correction : -9312 bytes
Test der Wiedergabe.
$ mplayer testvideo.avi
Weblinks
- http://ubuntuforums.org/showthread.php?t=791842
- http://www.bcchardware.com/index.php?option=com_content&task=view&id=71&Itemid=40
- http://www.linux.com/archive/articles/46113
- http://www.mythtv.org/wiki/Plextor_PX-TV402U
Alte Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|