<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-CA">
	<id>http://nikosapi.org/w/index.php?action=history&amp;feed=atom&amp;title=WIS_Go7007_Linux_driver</id>
	<title>WIS Go7007 Linux driver - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://nikosapi.org/w/index.php?action=history&amp;feed=atom&amp;title=WIS_Go7007_Linux_driver"/>
	<link rel="alternate" type="text/html" href="http://nikosapi.org/w/index.php?title=WIS_Go7007_Linux_driver&amp;action=history"/>
	<updated>2026-05-06T14:49:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>http://nikosapi.org/w/index.php?title=WIS_Go7007_Linux_driver&amp;diff=19&amp;oldid=prev</id>
		<title>Nikosapi: 1 revision</title>
		<link rel="alternate" type="text/html" href="http://nikosapi.org/w/index.php?title=WIS_Go7007_Linux_driver&amp;diff=19&amp;oldid=prev"/>
		<updated>2013-09-14T02:16:27Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Image:Plextor ConvertX M402U.jpg|right]]&lt;br /&gt;
== Intro ==&lt;br /&gt;
&lt;br /&gt;
WIS&amp;#039;s Go7007 MPEG-4 encoder chip is used in many video encoder boxes including the Plextor ConvertX (PX-M402U) which I own. The best part about this chip is it&amp;#039;s fully supported under Linux if you have the appropriate driver (which I might add is open source!). To see what devices are supported visit this page: http://oss.wischip.com &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The problem is that WIS hasn&amp;#039;t updated their driver in a while so it won&amp;#039;t work on most modern Linux distributions. Thanks to some talented programmers the driver will work with their patches. I&amp;#039;ve patched the wis-go7007-linux-0.9.8 source so it works on Fedora Core 5/6, Fedora 7/8/9 and Ubuntu Dapper/Edgy/Feisty/Gutsy/Hardy. I&amp;#039;ve also patched the gorecord program with an audio/video sync patch and most recently made it possible to record huge video files instead of being limited to 1GB recordings.&lt;br /&gt;
* All the patches are available in the &amp;#039;&amp;#039;&amp;#039;patches&amp;#039;&amp;#039;&amp;#039; directory of the source tarball&lt;br /&gt;
&lt;br /&gt;
== Driver Versions ==&lt;br /&gt;
&lt;br /&gt;
* [http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-2.tar.bz2 wis-go7007-linux-0.9.8-2]&lt;br /&gt;
** Applied a patch from [http://home.comcast.net/~bender647/go7007/ here] to support linux &amp;gt;= 2.6.24&lt;br /&gt;
* [http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-1.tar.bz2 wis-go7007-linux-0.9.8-1]&lt;br /&gt;
** New versions of the driver and gorecord.&lt;br /&gt;
*** Backwards compatibility fixes&lt;br /&gt;
*** No filesize limits for gorecord&lt;br /&gt;
*** Udev rules now work on Ubuntu&lt;br /&gt;
* [http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-patched.tar.bz2 wis-go7007-linux-0.9.8-patched]&lt;br /&gt;
** The first &amp;quot;patched&amp;quot; release&lt;br /&gt;
*** 2.6.22 kernel support&lt;br /&gt;
*** Many patches to improve the overall driver package&lt;br /&gt;
* [http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8.tar.bz2 wis-go7007-linux-0.9.8]&lt;br /&gt;
** The initial driver package from Micronas USA&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Installation is a bit different for each distro so follow the instructions for your distro. You can probably just copy the commands as one big chunk into your terminal but it&amp;#039;s better to do them one at a time.&lt;br /&gt;
&lt;br /&gt;
=== Fedora Core 5/6 and Fedora 7/8/9 ===&lt;br /&gt;
&lt;br /&gt;
 # Install required development packages&lt;br /&gt;
 su -c &amp;quot;yum install kernel-devel gcc ncurses-devel&amp;quot;&lt;br /&gt;
 # Get fxload RPM because the Fedora repos don&amp;#039;t carry this package&lt;br /&gt;
 su -c &amp;quot;rpm -ivh http://nikosapi.org/software/WIS_Go7007/fxload-2002_04_11-1.i386.rpm&amp;quot;&lt;br /&gt;
 # Get the driver source&lt;br /&gt;
 wget http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-2.tar.bz2&lt;br /&gt;
 # Unpack the source&lt;br /&gt;
 tar -xjvf wis-go7007-linux-0.9.8-2.tar.bz2&lt;br /&gt;
 # Decend into source directory&lt;br /&gt;
 cd wis-go7007-linux-0.9.8-2&lt;br /&gt;
 # Compile the software&lt;br /&gt;
 make&lt;br /&gt;
 # Install the software&lt;br /&gt;
 su -c &amp;quot;make install&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu Dapper/Edgy/Feisty/Gutsy/Hardy ===&lt;br /&gt;
 # Install required development packages (this is a big download)&lt;br /&gt;
 sudo apt-get install linux-headers-generic fxload libncurses5-dev&lt;br /&gt;
 # Get the driver source&lt;br /&gt;
 wget http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-2.tar.bz2&lt;br /&gt;
 # Unpack the source&lt;br /&gt;
 tar -xjvf wis-go7007-linux-0.9.8-2.tar.bz2&lt;br /&gt;
 # Decend into source directory&lt;br /&gt;
 cd wis-go7007-linux-0.9.8-2&lt;br /&gt;
 # Compile the software&lt;br /&gt;
 make&lt;br /&gt;
 # Install the software&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; Users of Ubuntu Feisty, Gutsy and Hardy have to follow the [[#Ubuntu_usbfs_fix|instructions to enable usbfs]] before the device will work.&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu Hardy with kernel &amp;lt;= 2.6.46-17 ====&lt;br /&gt;
The above instructions allow to compile the driver but it is not working. The driver crashed during the initialization of the ALSA sound input. For a detailed outline of the errors attempting to load the drivers, see this thread: [http://ubuntuforums.org/showthread.php?t=791842]. &lt;br /&gt;
&lt;br /&gt;
However, recompiling the kernel, after verifying that the required drivers are included, leads to working setup on Ubuntu with kernel 2.6.24. You can, e.g., follow the [https://bugs.launchpad.net/ubuntu/+bug/204578/comments/4 instructions by Benjamin Schleinzer]&lt;br /&gt;
&lt;br /&gt;
The exact cause is not clear, however:&lt;br /&gt;
* the wis-go7007 readme lists certain kernel configuration flags which habe to be set and are not on the stock kernel, most notably CONFIG_SND.&lt;br /&gt;
* the stock kernel provides ALSA 1.0.16 (cat /proc/asound/version.h), whereas the include files state that version 1.0.15 is used (more /usr/include/alsa/version.h).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Other solution for Hardy 8.04&amp;#039;&amp;#039;&amp;#039;  (maybe better?)&lt;br /&gt;
&lt;br /&gt;
It is not necessary to recompile the kernel! CONFIG_SND is not enabled in the kernel, but alsa driver and modules are provided via linux-ubuntu-modules (or LUM)&lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s a simple workaround to compile the wis-go7007 driver: Here, to simplify, I suppose that the current kernel version is 2.6.24-19-generic. If not, replace everywhere needed. &lt;br /&gt;
&lt;br /&gt;
Make sure the following packages are installed:&lt;br /&gt;
 linux-headers-lum-2.6.24-19-generic &lt;br /&gt;
 linux-headers-2.6.24-19-generic&lt;br /&gt;
&lt;br /&gt;
Get rid of the incorrect sound kernel headers (which should never be included): for example, rename&lt;br /&gt;
 /usr/src/linux-headers-2.6.24-19-generic/include/sound&lt;br /&gt;
to&lt;br /&gt;
 /usr/src/linux-headers-2.6.24-19-generic/include/sound-blacklisted&lt;br /&gt;
&lt;br /&gt;
In the wis-go7007 source, add the following line at the beginning of kernel/Makefile to take the right LUM alsa headers into account:&lt;br /&gt;
 EXTRA_CFLAGS += -I /usr/src/linux-headers-lum-2.6.24-19-generic -include sound/config.h&lt;br /&gt;
&lt;br /&gt;
Compile and install normally.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Recording ===&lt;br /&gt;
Plug in your (*supported*) video capture device and try the following command:&lt;br /&gt;
* for the composite input use: -input 0&lt;br /&gt;
* for the svideo input use: -input 1&lt;br /&gt;
 gorecord -input 0 -duration 20 test-video.avi&lt;br /&gt;
This will record video for 20 seconds then stop. The video file will be named test-video.avi&lt;br /&gt;
&lt;br /&gt;
=== Playback ===&lt;br /&gt;
&lt;br /&gt;
Playback is a bit tricky because the video is encoded to a so called &amp;quot;proprietary&amp;quot; format (mpeg-4). Which basically means it&amp;#039;s not encoded as theora or using some other non-proprietary video codec.&lt;br /&gt;
&lt;br /&gt;
==== Fedora ====&lt;br /&gt;
&lt;br /&gt;
* Enable the Livna repository:&lt;br /&gt;
 For FC5:&lt;br /&gt;
     su -c &amp;quot;rpm -Uhv http://rpm.livna.org/livna-release5.rpm&amp;quot;&lt;br /&gt;
 For FC6:&lt;br /&gt;
     su -c &amp;quot;rpm -Uhv http://rpm.livna.org/livna-release-6.rpm&amp;quot;&lt;br /&gt;
 For Fedora 7:&lt;br /&gt;
     su -c &amp;quot;rpm -Uhv http://rpm.livna.org/livna-release-7.rpm&amp;quot;&lt;br /&gt;
 For Fedora 8:&lt;br /&gt;
     su -c &amp;quot;rpm -Uhv http://rpm.livna.org/livna-release-8.rpm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Install mplayer:&lt;br /&gt;
 su -c &amp;quot;yum install mplayer&amp;quot;&lt;br /&gt;
* Play the video:&lt;br /&gt;
 mplayer test-video.avi&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu ====&lt;br /&gt;
&lt;br /&gt;
Should be as easy to install as:&lt;br /&gt;
 sudo apt-get install mplayer&lt;br /&gt;
&lt;br /&gt;
Then play the video:&lt;br /&gt;
 mplayer test-video.avi&lt;br /&gt;
&lt;br /&gt;
== Fun ==&lt;br /&gt;
=== GoGomini ===&lt;br /&gt;
I wrote a very simple little frontend to gorecord that can be found here: [[GoGoMini_-_Simple_Software_For_Controlling_gorecord|here]]&lt;br /&gt;
&lt;br /&gt;
=== Video Streaming ===&lt;br /&gt;
&lt;br /&gt;
You can use wis-streamer to stream video from your go7007-based device to your local network or even onto the internet. There is a cool piece of software on [http://www.goikoetxeta.com/archivos/03-11-2007/wisremote-10/ this page] that lets you easily control wis-streamer and there&amp;#039;s also a patched version of wis-streamer that will work with the go7007 devices.&lt;br /&gt;
&lt;br /&gt;
=== Recording audio only ===&lt;br /&gt;
* To record only audio, first you must initialize the device:&lt;br /&gt;
 gorecord -adevice /dev/dsp -vdevice /dev/video0 -nowrite&lt;br /&gt;
Note: /dev/dsp must not be the audio input of the device, use your sound card&amp;#039;s input otherwise this won&amp;#039;t work.&lt;br /&gt;
*Fire up audacity or any other audio recording software that can use an alsa input and start recording!&lt;br /&gt;
** For audacity, in the preferences window the device will look something like this: &amp;quot;ALSA: Plextor PX-M402U: (hw:1,0)&amp;quot;&lt;br /&gt;
** Remember to use a &amp;#039;&amp;#039;&amp;#039;2 channel (stereo)&amp;#039;&amp;#039;&amp;#039; recording&lt;br /&gt;
&lt;br /&gt;
=== Making long recordings ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; This shouldn&amp;#039;t be needed anymore when using the new version of gorecord because there is no longer is a filesize limit. The &amp;quot;%d&amp;quot; option is still provided but must be used with the -maxsize option to have any effect.&lt;br /&gt;
&lt;br /&gt;
Because of the filesize limitation by the &amp;#039;&amp;#039;&amp;#039;old&amp;#039;&amp;#039;&amp;#039; gorecord program, you can&amp;#039;t make really long recordings that are stored in one big avi file. The workaround is to use gorecord&amp;#039;s %d option to continue recording to a new file after hitting the limit. We can then put the files back together again into one big avi using mencoder.&lt;br /&gt;
 gorecord [options] filename-&amp;quot;%d&amp;quot;.avi&lt;br /&gt;
 mencoder -oac copy -ovc copy filename-*.avi -o final_video.avi&lt;br /&gt;
*Note: The individual files might not be playable until you string them back together with mencoder.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Ubuntu usbfs fix ===&lt;br /&gt;
&lt;br /&gt;
In enable for the fxload program to load the firmware onto your device you must have usbfs (or usbdevfs) mounted on /proc/bus/usb. To enable this /etc/init.d/mountdevsubfs.sh must be modified. &amp;lt;br /&amp;gt;&lt;br /&gt;
There is a simple patch that can be applied which is included in the latest driver source package, apply it as follows:&lt;br /&gt;
&lt;br /&gt;
 # Backup /etc/init.d/mountdevsubfs.sh&lt;br /&gt;
 cp /etc/init.d/mountdevsubfs.sh ~/Desktop/&lt;br /&gt;
 # Decend into source directory&lt;br /&gt;
 cd wis-go7007-linux-0.9.8-2&lt;br /&gt;
 # Apply the patch&lt;br /&gt;
 wd=`pwd`; sudo patch -d /etc/init.d -p0 -i &amp;quot;$wd&amp;quot;/patches/mountdevsubfs.sh-usbfs.patch&lt;br /&gt;
 # Mount the usbfs&lt;br /&gt;
 sudo /etc/init.d/mountdevsubfs.sh start&lt;br /&gt;
&lt;br /&gt;
=== Device not recognized ===&lt;br /&gt;
If when you plug in the device it isn&amp;#039;t recognized, the &amp;#039;&amp;#039;&amp;#039;dmesg&amp;#039;&amp;#039;&amp;#039; command will say something like this:&lt;br /&gt;
 usb 7-2: new high speed USB device using ehci_hcd and address 9&lt;br /&gt;
 usb 7-2: configuration #1 chosen from 1 choice&lt;br /&gt;
If it is recognized it should say something like this:&lt;br /&gt;
 usb 7-2: new high speed USB device using ehci_hcd and address 8&lt;br /&gt;
 usb 7-2: configuration #1 chosen from 1 choice&lt;br /&gt;
 Linux video capture interface: v2.00&lt;br /&gt;
 go7007-usb: probing new GO7007 USB board&lt;br /&gt;
 go7007: registering new Plextor PX-M402U&lt;br /&gt;
 wis-saa7115: initializing SAA7115 at address 32 on WIS GO7007SB&lt;br /&gt;
 usbcore: registered new interface driver go700&lt;br /&gt;
&lt;br /&gt;
This normally means that udev/hotplug isn&amp;#039;t doing it&amp;#039;s job (or you don&amp;#039;t have it setup). &lt;br /&gt;
&lt;br /&gt;
If you are using the latest driver, try running go7007_firmware_load to give you a clue as to why the firmware might not be loading.&lt;br /&gt;
&lt;br /&gt;
==== Activating the device manually ====&lt;br /&gt;
So here&amp;#039;s a little bash script to recognize the device and load the firmware for your PX-M402U or PX-TV402U.&lt;br /&gt;
&lt;br /&gt;
 devices=&amp;quot;093b:a002|093b:a004|0eb1:6666|0eb1:6668&amp;quot;&lt;br /&gt;
 device=`lsusb | grep -iE $devices`&lt;br /&gt;
 bus=`echo $device | cut -d &amp;quot; &amp;quot; -f 2`&lt;br /&gt;
 device_num=`echo $device | cut -d &amp;quot; &amp;quot; -f 4 | sed &amp;#039;s/://&amp;#039;`&lt;br /&gt;
 type=`echo $device | cut -d &amp;quot; &amp;quot; -f 6 | tr A-Z a-z`&lt;br /&gt;
 [ $type == &amp;quot;093b:a002&amp;quot; ] &amp;amp;&amp;amp; hex=&amp;quot;/lib/firmware/ezusb/hpi_PX-M402U.hex&amp;quot;&lt;br /&gt;
 [ $type == &amp;quot;093b:a004&amp;quot; ] &amp;amp;&amp;amp; hex=&amp;quot;/lib/firmware/ezusb/hpi_PX-TV402U.hex&amp;quot;&lt;br /&gt;
 [ $type == &amp;quot;0eb1:6666&amp;quot; ] &amp;amp;&amp;amp; hex=&amp;quot;/lib/firmware/ezusb/hpi_LR192.hex&amp;quot;&lt;br /&gt;
 [ $type == &amp;quot;0eb1:6668&amp;quot; ] &amp;amp;&amp;amp; hex=&amp;quot;/lib/firmware/ezusb/hpi_StarTrek.hex&amp;quot;&lt;br /&gt;
 /sbin/fxload -t fx2 -I $hex -D /proc/bus/usb/&amp;quot;$bus&amp;quot;/&amp;quot;$device_num&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s the easy way to get this script working (The script contains some more troubleshooting info):&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; The go7007_firmware_load script is now included under udev/ in the source package&lt;br /&gt;
 wget http://nikosapi.org/software/WIS_Go7007/go7007_firmware_load&lt;br /&gt;
 chmod +x ./go7007_firmware_load&lt;br /&gt;
 sudo ./go7007_firmware_load&lt;br /&gt;
&lt;br /&gt;
=== GoRecord fails to find the ALSA audio node ===&lt;br /&gt;
At least for Ubuntu 8.04 with Kernel 2.6.24, GoRecord from the 0.9.8.2 provided here fails to find the ALSA audio input provided by the snd_go7007 module. A simple fix is to change line 217 in gorecord.c &lt;br /&gt;
 if (!strcmp(gopath, canonpath))&lt;br /&gt;
to &lt;br /&gt;
 if (!strncmp(gopath, canonpath, strlen(gopath))&lt;br /&gt;
&lt;br /&gt;
On my system, for gopath and canonpath I have this values: &lt;br /&gt;
 gopath:    /sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1.1/5-1.1.4/5-1.1.4:1.0&lt;br /&gt;
 canonpath: /sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1.1/5-1.1.4/5-1.1.4:1.0/sound/card1&lt;br /&gt;
&lt;br /&gt;
The canonpath points to an actual subdir of gopath. The fix just verifies that gopath matches the prefix of canonpath. &lt;br /&gt;
&lt;br /&gt;
=== wis-streamer fails to find the ALSA audio node and emulated OSS device node ===&lt;br /&gt;
This is the same problem as the last one and the fix is similar. Use strncmp instead of strcmp in WISInput.cpp line 187.&lt;br /&gt;
&lt;br /&gt;
In addition, the next test in wis-streamer fails to find the emulated OSS device node. To fix it, replace the while loop of WISInput.cpp in line 206 with the while loop of gorecord.c in line 231.&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
# Chris P.&lt;br /&gt;
#* Created the patch to fix compilation issues on the 2.6.22 kernels&lt;br /&gt;
# [http://home.comcast.net/~bender647/go7007/index.html bender647]&lt;br /&gt;
#* Created the patch to fix compilation issues on the 2.6.24 kernels&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
# http://home.comcast.net/~bender647/go7007/&lt;br /&gt;
#* A collection of patches for the driver&lt;br /&gt;
# http://home.comcast.net/~bender647/go7007/gorecord.html&lt;br /&gt;
#* A tutorial on how to make DVDs of video recorded from the Plextor ConvertX boxes&lt;br /&gt;
&lt;br /&gt;
== Footnote ==&lt;br /&gt;
&lt;br /&gt;
I don&amp;#039;t know where the best place for this is, but I&amp;#039;ve found an bug in the wis-sony-tuner.c module which doesn&amp;#039;t seem to have made it into any of the patches.  Not needed for gorecord, but other v4l experiments may result in system instability:&lt;br /&gt;
&lt;br /&gt;
In the VIDIOC_G_TUNER ioctl, where it says:&lt;br /&gt;
&lt;br /&gt;
 memset(t, 0, sizeof(*tun) );&lt;br /&gt;
&lt;br /&gt;
it should be:&lt;br /&gt;
&lt;br /&gt;
 memset(tun, 0, sizeof(*tun));&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the bug results in system instability if the VIDIOC_G_TUNER ioctl is ever invoked.--[[User:Bifferos|Bifferos]] 06:13, 16 July 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Nikosapi</name></author>
	</entry>
</feed>