Plextor Convertx PX-M402U

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Der Videokonverter Plextor Convertx PX-M402U (auch: Plextor ConvertX PX-M402U) enthält den Videoencoderchip WIS Go7007 MPEG-4, der ursprünglich von der Firma Wischip International (später Micronas USA) hergestellt wurde. Dabei wurde ein Kernelmodul für den Linux-Kernel 2.6.x zur Verfügung gestellt, das komprimierte Videodaten über die Programmierschnittstelle Video4linux 2 und unkomprimierte Audiodaten über die Programmierschnittstelle ALSA lieferte.

Leider wurde der 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 und 6, Fedora 7, und 9 sowie unter Ubuntu 6.04, 6.10, 7.04, 7.10 und 8.04 funktionieren.

Das Gerät eignet sich, um den Inhalt analoger VHS-Videokassetten noch vor der Weitergabe an den Rechner zu digitalisieren.

Technische Daten

Merkmal Beschreibung
Hersteller Plextor
Modell Convertx PX-M402U
Videoeingang Composite, S-Video
Audioeingang Composite
PC-Schnittstelle USB 2.0
Fernsehstandards NTSC, PAL, SECAM
Videoausgabe AVI, Divx, MPEG-1, MPEG-2, MPEG-4, WMV
Lieferumfang Konvertergerät, Netzteil, Kabel (USB, Video, Audio), Software für Microsoft Windows
Preis 80 Euro (2006)

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. Das Paket "fxload" wird zur Übertragung der im Gerät arbeitende Firmware benötigt.

$ 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 0 -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 0 -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

Herausgeber Sprache Webseitentitel Anmerkungen
Nikosapi Electronics eng WIS Go7007 Linux driverwbm
Corporation Service Company eng Patches for Wischip Go7007 Linux Driverwbm
Colabti eng Drivers for the GO7007wbm
Imploder eng Something about the go7007 driver for Linux...wbm
Linux User ger Filme mit Plextor Convertx umwandelnFilme mit wbm

Alte Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
WIS Technologies eng Micronas USA : oen source software
http://oss.wischip.com/
Offizielle Homepage