How I got the Winnov drivers and RealNetworks software running on a fresh install of RedHat Linux 6.2

May 21, 2000

This is based on my notes of all the commands I entered to put this together, and my memory. Some details are beyond the scope of this document. Some experience configuring and compiling the Linux kernel is required. The RedHat documentation has more info. General knowledge of basic Linux/UNIX commands, and how to edit text files will be helpful.
 

Start with a fresh workstation(?) install of RedHat 6.2.
Open a Terminal (command line prompt) window.
Make sure X Windows is running at least 15 bits color depth.

xwininfo -root
If it isn't, exit X Windows and run Xconfigurator and set it up.

Install kernel source code if it is not already installed. Take a look at the kernel source directory.

cd /usr/src/linux
ls
There should be several files including Makefile, CREDITS, etc., and about a dozen subdirectories full of source code. If not, install the kernel source from the RedHat CD disk 1. Put it in the drive, and wait for the system to mount it.
cd /mnt/cdrom/RedHat/RPMS
rpm -ihv kernel-source-*
Now we must compile the kernel. You have to compile the kernel before you can compile a driver. First we will edit the Makefile and change the version slightly so our rebuilt kernel and kernel modules don't get confused with the RedHat binaries. You don't want to mix-and-match kernel and module binary files!
cd /usr/src/linux
emacs Makefile
Go to the line "EXTRAVERSION =" and delete the stuff to the right of the = sign. Save and exit. Now set up kernel compile parameters, also called the kernel "config".
make xconfig
Set the processor type and features.
Enable the loadable module support.
Enable Video for Linux as a module (select the "m" option), and turn off everything else on the Video for Linux screen.
Also it helps to turn off anything you don't need, e.g. SCSI, RAID, IrDA, etc. The compile will be much faster.
Save changes and Exit.
Now you are ready to compile the kernel. (If you have more than one processor, you can greatly accelerate the compile by parallelizing it! Edit the Makefile again. Find the "MAKE =make" line and change it to "MAKE =make -j3". The number should be number-of-processors + 1.)
make dep; make clean; make bzImage
This will take a few minutes. Go get a Coke® or something.
Finished compiling, and there were no errors, right? Good. The kernel is a single file called bzImage. Copy it to the /boot directory.
cp arch/i386/boot/bzImage /boot/vmlinuz-2.2.14
cp System.map /boot/System.map-2.2.14
If your kernel version isn't 2.2.14, then use your kernel version number. Ditto where you see 2.2.14 elsewhere in this file. The System.map is just a list of the global symbols in the kernel, used for debugging and some kernel error messages. It is not critical to have it, but is saves you from getting a bunch of unprofessional-looking warning messages if you keep your System.map file correctly sync'd with the kernel.
The kernel file is not all of it. There are also the kernel modules (i.e. the drivers that aren't built in to the kernel). Compile and install them (no need to manually copy them).
make modules; make modules_install
Now some final setting up and we can boot our new kernel! Just have to point the boot loader (LILO) to our new kernel file, and set our new System.map.
cd /boot
rm System.map
ln -s System.map-2.2.14 System.map
emacs /etc/lilo.conf
Create a new image "block" by making a duplicate of the first "block". The new block should be first. Change the image= line to our new kernel: "image=/boot/vmlinuz-2.2.14". Change the label= line for the block that used to be the first block to "label=safe". If the new kernel doesn't work, then restart the machine and enter "safe" at the LILO boot: prompt, that will boot with the original RedHat kernel.
The changes to /etc/lilo.conf won't take effect until you run lilo, so don't forget! Then reboot and make sure the new kernel works.
lilo
shutdown -r now
You are up and running with the new kernel, right? Fantastic!

Now we must install the Winnov drivers. Then the Real software. No more reboots will be necessary. Get the new driver files. Get videodev20000113.tgz, wnv19991229.tgz and wnvaud19990923.tgz (or whatever are the latest). Videodev is available from

http://www.thedirks.org/v4l2/ or ftp://ftp.thedirks.org/pub/v4l2/kernel2.2/videodev. The Winnov files are available from http://www.thedirks.org/winnov/ or ftp://ftp.thedirks.org/pub/v4l2/kernel2.2/winnov.

When you've got the files, then unpack them and compile modules. All Winnov driver files are modules.

cd /usr/src/linux
cp drivers/char/videodev.c drivers/char/videodev1.c
cp include/linux/videodev.h include/linux/videodev1.h
tar zxvf videodev20000113.tgz
cd drivers/char
tar zxvf wnv19991229.tgz
cd ../sound
tar zxvf wnvaud19990923.tgz
emacs Makefile
Change the line "obj-m :=" to "obj-m := wnvaud.o".
cd ../char
emacs Makefile
Change the line "M_OBJS :=" to "M_OBJS := wnv.o wnvvid.o".
cd ../..
make modules; make modules_install
depmod -a
That should have compiled with no errors. Now we need to edit the module configuration file so the kernel will know about our new modules and how to load them.
emacs /etc/conf.modules
Add the following lines. This sets up four video capture devices.
alias char-major-81 videodev
alias char-major-81-0 wnvvid
alias char-major-81-1 wnvvid
alias char-major-81-2 wnvvid
alias char-major-81-3 wnvvid
options wnvvid unit_video=0,1,2,3
alias char-major-14 wnvaud
Make sure /dev/video0, /dev/video1, /dev/video2 and /dev/video3 exist. For me I only needed to add the last two.
mknod /dev/video2 c 81 2
mknod /dev/video3 c 81 3
You may have to do mknod's for additional audio devices too. The audio device files are /dev/dsp# and /dev/mixer#. I didn't do it yet.

Test the Winnov drivers. Get the file apps20000229.tgz, or whatever is latest. You can get it from

http://www.thedirks.org/v4l2/ or ftp://ftp.thedirks.org/pub/v4l2/apps/.
cd
mkdir apps
cd apps
tar zxvf apps20000229.tgz
make
./xcaptest /dev/video0&
./vidpanel /dev/video0&
If the xcaptest doesn't work, try adding -b to the command line: ./xcaptest -b /dev/video0&. You should see video from Videum board 0.

Install RealProducer.
I noticed that /usr/local/bin is not in the PATH. This is where the RealProducer exe file goes, so I thought it would be convenient to add it to the PATH.

emacs /etc/profile
PATH="$PATH:/usr/local/bin"
Add that PATH=... line to /etc/profile at an appropriate spot, and also type it on the command line. Get the RealProducer file from www.realnetworks.com. I put it in /usr/local/real.
mkdir /usr/local/real
cd /usr/local/real
tar zxvf rprod*
./install
Take all the default values. That's it. Run it with xrealproducer (for GUI version) or realproducer (for command line version).
xrealproducer&
I got an error message about an undefined symbol. There is a patch on the Real Networks web site that I am told fixes this. I have not tried it. (Unfortunately I did not have time to get RealProducer working before I had to return the machine I was working on to Winnov.)

Now install RealServer. Only if you want to serve streams from this machine to the public. Download RealServer and get license file. I put them in /usr/local/real.
You install it by executing the .bin file.

chmod +x g2_7_0*
./g2_7_0*
Enter the complete path to your license file including the license file name.
I recommend install in /opt/RealServer
Give a username and password for admin. Also write down the port number. You admin and configure RealServer by HTTP. Point a browser to http://<the IP or domain name of the server>:<admin port>/admin/index.html.

To start RealServer

/opt/RealServer/Bin/rmserver /opt/RealServer/rmserver.cfg
To stop RealServer
kill `cat /opt/RealServer/Logs/rmserver.pid`
Put your RealServer pre-recorded content files in /opt/RealServer/Content directory. See http://63.198.58.131/streamtest.html for an example of a web page with RealVideo links. (I did get RealServer working, contrary to RealProducer.)
 

That's all I've got. Hope it helps.

Bill.