Videoconferencing under FreeBSD
CAIA Technical Report 040517A
May 17th, 2004
This report was the result of some experimentation inspired by the recent purchase by CAIA of Logitech QuickCam Express Webcams. Windows is not the only OS used at CAIA, in fact, FreeBSD is commonly used for experimental purposes and also as a desktop OS by many within CAIA. Given these new cameras, it was interesting to see whether or not they could be used in the FreeBSD environment as well as the Windows environment, and particularly with an application for which webcams are ideally suited for - video conferencing.
The effort in this experiment involved two stages:
- Getting the cameras to work with FreeBSD
- Running video-conferencing software with FreeBSD
The first task proved impossible to complete. Logitech, the makers of the Quickcam Express camera, only provide Windows drivers and do not provide any technical documentation to aid in the development of third-party drivers. While some work is being done to reverse engineer some drivers, this is being performed in the Linux environment and is not yet ported to FreeBSD.
The second task was more successful. The GnomeMeeting application can be successfully installed and executed under FreeBSD. Further, GnomeMeeting is compatible with, and can make calls to, Windows computers running Microsoft NetMeeting. GnomeMeeting users can properly decode video streams sent from NetMeeting enable workstations, allowing half-duplex video conferencing calls between a GnomeMeeting and a NetMeeting user.
2. The Quickcam Express and FreeBSD
The Quickcam Express camera is built by Logitech and unfortunately, Logitech do not provide drivers or support for any platform other than Windows. A further problem is that Logitech do not provide any technical information or support for developers wishing to create software that directly communicates with their cameras. As such, there is no official documentation on writing software to retrieve images from the Quickcam Express which can be used to develop drivers for other Operating Systems.
Some work has been done developers in developing open source drivers for the Logitech Quickcam Express and other Logitech cameras. This work is primarily through the efforts of reverse engineering the Logitech Windows drivers and by snooping on USB communications between the Windows drivers and the camera. Through this, developers have been able to determine some technical detail on the communications protocols used by Logitech cameras and have subsequently been able to develop some open source drivers for other operating systems. The primary effort appears to be QC-USB which itself is evolved from an earlier project QCE-GA. This development effort however, is geared towards producing a Linux driver to function in under the Video4Linux multimedia environment in particular - to date no work has been expended in producing a FreeBSD driver.
Another project - qcamview - and installable as a FreeBSD port provides some utilities to obtain and display a picture from a Quickcam Express on the FreeBSD platform. This implementation however is not a Quickcam driver for FreeBSD, nor does it integrate with other FreeBSD applications that may wish to access the camera and its images. Also, this application is described as not particularly efficient.
The conclusion is that at present it is not possible to use the Quickcam Express camera under FreeBSD. It is to be hoped that this will be remedied in the near future, either by developers turning their efforts to engineer a FreeBSD driver for this camera, by Logitech deciding to publicise some technical specifications on their camera protocols to facilitate developement of a third-party driver, or preferably by Logitech deciding to support platforms other than Windows and develop their own drivers. Even without the Quickcam driver, it is interesting to continue to install GnomeMeeting onto FreeBSD to use as a conferencing tool and in anticipation of a Quickcam driver at some stage in the future.
3. Installing GnomeMeeting on a FreeBSD platform
GnomeMeeting cannot simply be installed onto a FreeBSD platform, there are a series of steps that must be followed prior to running and executing this application. First, the FreeBSD kernel must be recompiled to support sound, GnomeMeeting will not execute unless it is able to find an audio device to both record and playback sound. Second, the FreeBSD platform must have XWindows and a suitable window manager installed as GnomeMeeting is an X application which requires the GNOME libraries. The default window manager in use at CAIA is KDE, but GNOME could also be used instead of KDE. Finally, and after installation, GnomeMeeting must be correctly configured to actually execute.
3.1. Recompiling FreeBSD to support sound
It is possible that your FreeBSD kernel has already been recompiled to support this functionality. If this is the case you may proceed to the following step, if not, the following series of instructions can be followed:
- Change directory to /usr/src/sys/i386/conf
- Copy the file GENERIC to GENERIC.audio
- Edit the file GENERIC.audio and append to the end of the file the text:
- Execute the command config GENERIC.audio
- Change directory to /usr/src/sys/compile/GENERIC.audio
- Execute the command make depend && make && make install
- Reboot the computer using the command reboot
Once the computer has successfully rebooted,FreeBSD should load your newly compiled kernel which now has sound support for recording and playing back sound from the sound card.
3.2. Installing KDE on your computer
If you already use FreeBSD as your desktop OS, it is highly likely that you already have XWindows and KDE installed. If this is not the case then complete the following steps:
- Log onto your system as root
- Execute the command /stand/sysinstall
- Select the menu option Configure
- Select the menu option Desktop
- Select the menu option KDE
- Select the menu option NFS
- Enter the path 126.96.36.199:/cdroms/freebsd49
- Exit the sysinstall program and logout from the root account
- In your home directory, create a file .xinitrc containing the single line startkde
The KDE windows environment can now be launched by executing the command startx from the command line.
3.3. Installing GnomeMeeting
GnomeMeeting can be installed by executing the following pkg_add command as root:pkg_add -rf gnomemeeting
It is necessary to force the installation of gnomemeeting as one of the dependencies requires an older version of the OpenLDAP package than that already installed on FreeBSD. Not forcing the installation will cause the GnomeMeeting installation to fail. The forced installation will not downgrade the existing OpenLDAP install, but rather allow continuation and the installation of the GnomeMeeting package. Once the GnomeMeeting package is installed, the rehash should be run to ensure that the newly installed application is in the path.
3.4. Configuring GnomeMeeting
GnomeMeeting is run by executing the command gnomemeeting from the command line. Upon first execution, the wizard will be run to perform basic configuration. You should enter the following values:
- Page 1: Welcome Page
- No information to enter here
- Page 2: Personal Information
- Enter your personal information
- Page 3: Network Connection
- Select connection type as T1/LAN
- Page 4: Audio Devices
- The default audio devices should be sufficient, however you may have some problems when testing the audio. It may be necessary to play around with the KDE audio controls in order to get audio functioning correctly. See below for instructions if you have any problems.
- Page 5: Video Devices
- Since the Quickcam doesn't work, you should select Picture here
- Page 6: PC-To-Phone Setup
- Unless you subscribe to the service, leave this page blank.
- Page 7: Summary Page
- Click Apply to close the wizard
From the GnomeMeeting application select the Menu option Edit|Preferences. Ensure the following options are as specified:
- General|General Settings
- Show splash screen - Disable the splash screen, this causes an occasional problem.
- Codecs|Video Codecs
- Enable video transmission - If you select yes, make sure you select a picture in Device|Video Devices.
- Enable video reception - Select yes to receive video from remote connections.
3.5. Troubleshooting Audio
If there are issues while testing the audio configuration of GnomeMeeting in the configuration wizard, following are some things you can try to get it all working:
- If you are getting error messages about being unable to open the sound device, type opening the KDE Control Centre and selecting the Sound System tool. Try turning full duplex off in the sound system. The GnomeMeeting wizard needs to be cancelled and restarted if you do this.
- If you get no error messages but cannot hear yourself in the headphones, first check to see that the headphone and microphone jack are plugged into the correct sockets. Then check the volume control on the headphones themselves. If this is all OK, Run the KDE KMixer application and ensure that the audio levels on both the Microphone and Recording Monitor are not muted.
4. Using GnomeMeeting
Once GnomeMeeting has started, we may want to place a conference call. This section describes how to place a calls between two or more workstations.
4.1. Direct One-to-One Calls
If you know either the IP address or Internet name of the computer that you wish to call, then simply enter this value in the address field of GnomeMeeting and click the connect button. GnomeMeeting will attempt to make a connection. If the remote end is not running GnomeMeeting or a compatible application then the call will be rejected. If the remote end is running GnomeMeeting or a compatible application (such as Microsoft NetMeeting) then the response will depend on how the remote application is configured - it can be configured to automatically accept calls, allow the remote user to choose whether to accept the call or not, or automatically reject all calls.
If the call is accepted, then we will be in the middle of a conference call. If the remote site has a webcam and the appropriate driver (eg. Microsoft NetMeeting) then we will see video of the remote end of the conversation, otherwise it will be an audio only link. A conversation ensues through the microphone and headphones as per a typical telephone call. There is also the text chat option, entering text in this area will result in the text message being displayed at the other end.
Newer versions of Windows, such as Windows XP installed at CAIA, do not have Microsoft NetMeeting as an option on the Windows Start menu. NetMeeting itself is still installed on the computer and can be run by executing the command conf.
4.2. Directory Initiated One-to-One Calls
It is possible to configure GnomeMeeting (and NetMeeting) to send your details to a directory server when you start the application. If other users do the same thing, then the server can be used to see who is currently online and able to receive calls. This also allows you to move between computers and have all incoming calls directed to the correct computer. There are numerous directory servers available on the Internet, CAIA may at some stage consider setting up one as well.
4.3. Multi-Party Conference Calls
Neither GnomeMeeting or Microsoft NetMeeting support multi-party conference call directly, instead this must be done through a conference server. In this scenario, the conferencing application (GnomeMeeting or NetMeeting) communicates with the server, which mixes and audio and video and sends the appropriate information to all members of the conference. There are some products, both free and commercial, which can be used to provide this functionality. In effect, the server acts as a hub with several individual point-to-point links to each individual particpant in the conference.
It is unfortunate that the recently purchased Logitech Quickcam Express cameras are not supported in the FreeBSD environment. Then again, it appears that not many web cameras are supported in this environment. Having said this, this report lists the trials of attempting to not only get the web camera working under FreeBSD but also in trying to get video conferencing calls working in this environment. While it turned out to not be possible to get the Quickcam functioning with FreeBSD, it was possible to install and correctly configure video conferencing software - on particular GnomeMeeting - and use this software to make conference calls.
GnomeMeeting, like Microsoft NetMeeting, does not directly support multi-party conferencing but this can be supplied through the use of a conference call server which appears as a single party to each participant in the call. Also, while the Quickcam Express could not be used with FreeBSD and GnomeMeeting to participate in a video conference call, FreeBSD and GnomeMeeting users could participate in a call with a NetMeeting user with video capability. In this case the GnomeMeeting user would see the video transmitted by the Windows/NetMeeting participant, while the Windows/NetMeeting participant would only receive audio from the FreeBSD/GnomeMeeting user.
The eventual aim is to hope for some support of the Quickcam Express under FreeBSD through the development of a driver. If this could be accomplished, it is expected that video conference calls from FreeBSD clients running GnomeMeeting would be possible.