How to do CU-SeeMe under Linux

I sent this out a couple of days ago, but don't think it made it out,
at least one list memeber didn't see it and it's not on the archive.
This is a text copy of http://www.santafe.edu/~nelson/cuseeme-linux.html
After I get a bit of comment, I'll publicize it to the net, probably
on the CU-SeeMe page on Yahoo.

How to do CU-SeeMe under Linux

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. Many of the notes here have more to do with Unix video
than anything Linux specific, so they may be of general use.

The general setup you need is:

   * NV, Network Video, compiled with special patches for CU-SeeMe
     endianness bugfix and QuickCam support.
   * reflect, the White Pine's CU-SeeMe reflector

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 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.

     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
     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.

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.

     Plain vanilla NV source. This doesn't do quickcam, and seems to have
     some sort of bug with CU-SeeMe encoding.
     Patches to NV 3.3beta for QuickCam, CU-SeeMe.
     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.
     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. The White Pine's test reflector at is supposed
to support NV, but I haven't been able to connect to it.

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

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

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.


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.

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
NV UNICAST: root@nelson.santafe@

Total # of clients 1  senders 1  lurkers 0

Nelson Minar <nelson@santafe.edu>
Last modified: Sun Jan 28 22:17:02 MST 1996