How to do CU-SeeMe under Linux

IMPORTANT NOTE (6/18/97)

These notes here are months out of date and reference old, weird, crufty software. I no longer care abeout CU-SeeMe and don't do anything with it, I only leave this page here as archive.

The biggest change is it appears someone is writing a new CU-SeeMe client for Linux called Q-SeeMe. I haven't tried out the software, but it looks interesting. Try it out and if you're lucky, you don't need the rest of this page.


I thought it was silly that Windows people could do something I couldn't, so I spent about four hours getting all the pieces together to make CU-SeeMe work under Linux. In the end nothing was terribly complicated, but the lack of collected information was frustrating. With this document, you should be able to cobble together something that lets you do CU-SeeMe with Linux and a Connectix QuickCam. Most of the notes here have more to do with Unix video than anything Linux specific, so they may be of general use.

Please don't send me email saying "I can't make it work". I'm sorry, but I just don't have time to answer that much email. A lot of people are having trouble with this: the software is all a big hack, and things are hard to debug. You need to be patient. I promise I have it working, but a lot of folks haven't been so lucky. If it doesn't work download the sources and patches, and compile and debug yourself.

A lot of people have complained that the binary is corrupted when they download it. I have checked, the binary is right: be sure you download it in a way that your browser won't corrupt it (shift-click on Netscape seems to work most of the time).

The general setup you need is:

All conference participants connect to the reflector. In addition to being a handy meeting spot, reflect is necessary to translate between Mac/PC CU-SeeMe and NV's CU-SeeMe.

NV

NV is Network Video, a Unix tool for shipping pictures around. It's fairly general purpose, supporting a variety of video sources and encoding mechanisms. There is (currently) no CU-SeeMe software for Unix - NV does a similar thing, and seems to more or less speak CU-SeeMe protocol.

In addition to normal NV, you need a version that's been patched to fix an endianness problem with CU-SeeMe. You'll also want patches that enable quickcam support into NV. You have two routes: try a binary, or build from sources yourself.

Patched NV Binaries

If these work for you, you'll save yourself a lot of trouble. Again, I know the second binary is right - if it downloads corrupted, your browser is at fault.
http://www.infotainment.com.au/nv/
Contains nv3.3b patched for CU-SeeMe and QuickCam, compiled for a.out. I had trouble with the dynamic loading on this one, just coredumped on me.
nv33b-qcam-linux-elf.gz
nv3.3b patched for CU-SeeMe and QuickCam, compiled for ELF. Note that tk and tcl are statically linked in, so this is kinda big. The md5sum of the uncompressed binary is 31e88ce650e1b9e0330cd45ebd161d26.

Building NV from Sources

Building NV from sources is not too hard. It requires tk3.6/tcl7.3 - it will not work with tk4.0. The quickcam patch was a bit tricky, some of the files didn't end up in the right place so I had to move things around a bit.

ftp://munnari.oz.au/av/nv/nvsrc-3.3beta.tar.Z
Plain vanilla NV source. This doesn't do quickcam, and seems to have some sort of bug with CU-SeeMe encoding.
nvsrc-3.3beta.linux.mcast.cu.qcam.diff
Patches to NV 3.3beta for QuickCam, CU-SeeMe.
ftp://ftp.nas.com/laird/
qcam, a set of libraries and programs that use the quickcam. This stuff is very preliminary, but has the virtue of working right now. Needed for the qcam version of NV.
http://www.crynwr.com/qcpc/
Web page for people hacking Connectix support into Linux. Good general reference if you get confused.
First unpack and build the qcam library. This is pretty straightforward. Next, unpack the NV sources and apply the patch. Tinker with the NV Makefile so that it points to all the right directories (don't forget tk3.6!) and then run make. With luck you'll get an NV binary.

This binary is all you really need to do network video. Note, it has to run as root (it opens the parallel port directly). The only problem is that NV can't connect directly to Mac/PC CU-SeeMe software. Fortunately, the reflector software can help mediate between NV and CU-SeeMe: if you're both connected to the same reflector, you can see each other. Start up NV, switch to CU-SeeMe encoding, and connect to port 4444 on a reflector that has NV support enabled (port 4444 is the default). The White Pine's test reflector at 192.80.72.4 is supposed to support NV, but I haven't been able to connect to it. I have been able to connect to vdorm.taponline.com.

One nonobvious NV thing (if you don't read man pages) - in the main window, you can click on the pictures of people to put them in their own window. In addition, you can click in those windows to display a form with some performance data.

Potential Problems

All of this software is pretty marginal, especially the QuickCam support. If you think this is exciting, join the group of folks hacking QuickCam support into Linux. With luck, sometime we'll have a nice device in the kernel for video!

The main bug I run into now is that sometimes libqcam doesn't correctly detect the presence of the camera. It seems that if I run xfqcam (another Linux QuickCam hack) first, telling it explicitly which port the camera is on, then quit and run NV, it finds it.

Sometimes the image quality that comes out of the QuickCam at first is ugly. For some reason, selecting "6-bit" again in the grabber control panel fixes it.

I've been told that if there are not enough colormap entries running, then NV might coredump. Netscape is a big colormap hog - kill it, or look into the -install or -ncols # options.

NV doesn't seem to support anything other than video. In particular, I get no audio, chat messages, or lists of lurkers connected to the reflector.

NV has multicast support, I don't know anything about how it works and haven't tried it.

There's been a report that NV doesn't work so well over PPP links. I'm having no trouble connecting from my home box, over 28.8kbps PPP to a reflector run on the LAN on the other end of my PPP link. I have had trouble connecting farther away than that, though, and have seen several NV clients try to connect to my reflector and time out.


Running a Reflector

As mentioned above, NV can't talk directly to CU-SeeMe software. The reflector written by White Pine, however, can talk to both CU-SeeMe and NV and translate between them. If you can find a reflector that has the NV support enabled, in theory you should just connect directly there and everything will work.

You can also run your own reflector with very little effort. reflect-4.0b3 (binary distribution only) works fine under both SunOS and Linux. Start up the reflector, and tell everyone to talk to it. My standard connection right now is a reflector on a Sun hooked to a LAN so CU-SeeMe people can connect, and NV on my home Linux box, hooked via 28.8kbps PPP to the reflector. A bit convoluted, but it works.

There seem to be endianness problems with the free reflector. There's a commercial reflector also put out by White Pine which works better, you can try to connect to such a reflector at vdorm.taponline.com.

Note that reflect, by default, does not have NV support enabled. After you download the reflect binary, add the line NV-UC-PORT: 4444 to reflect.conf. I found it helpful to look at reflect.log and use the refmon program to see when my NV client was connected. Here's an output of who from refmon when one NV and one CU-SeeMe client are connected:

> who
CLIENT: foo@134.10.2.24 CRV
NV UNICAST: root@nelson.santafe@192.12.12.195

Total # of clients 1  senders 1  lurkers 0                         

Nelson Minar <nelson@santafe.edu>
Last modified: Wed Jun 18 18:03:05 EDT 1997