1980s Videophone

VideophoneRemember those TV shows in the 70s and early 80s which depicted a videophone that we’d all be using in the near future? You know, the one where a person could pick up the telephone receiver, and see the person on the other end via a little screen? Well, that’s what I wanted to build. With Linux. GnomeMeeting is an open source H.323 video confencing program used primarily in Linux. It is very similar to Microsoft’s NetMeeting, but much more versatile. Gnomemeeting has everything you wished NetMeeting had. Initially I was going to use OpenH.323‘s ohphone, but GnomeMeeting has more features, more support, and a larger user base. As far as the rotary phone, well, I couldn’t be talking about anything but your 1980s-era real-bells rotary dial telephone.

Hardware

In addition to my Linux server (Debian Sarge, 2.6.10 kernel, running on an A-BIT BP6 motherboard, dual 466 Celeron), I needed the following:

  • Video card with Composite-Out and Composite Monitor (please see an earlier post on how I got those two things working under Linux. I am using a video card with the nVidia chipset that I bought from NewEgg and an old Commodore 1702 Monitor, for 1980s sake :) )
  • Video Capture Card (I have one based on the Brooktree BT878 chipset I purchased from Computer Geeks awhile back which has composite and S-Video inputs.)
  • Video Camera (I used a video conferencing camera I had laying around that has an S-Video output.)
  • 1970s-1980s Rotary Telephone (You can easily find these on eBay.)
  • QuickNet PhoneJack Card (I was able to purchase the PhoneJack ISA card on eBay for around $20. If you have ISA slots on your motherboard, this is the cheaper way to go. There is also a PhoneJack PCI card. I chose the PhoneJack card because of its support in Linux and its reputation of being one of the better VOIP interfaces around. Note: The 2.6.10 kernel has the latest PhoneJack drivers, which give a dialtone and ring the phone. The 2.4 kernel does not and requires the PhoneJack driver to be compiled from the OpenH.323 project’s CVS drivers. Also, I had experimented with the Creative Labs VOIP Blaster as an alternative to the PhoneJack card, but, the VOIP Blaster won’t ring the old-style bell phone.
  • (Optional) Cordless Phone (I have this tucked away in the closet for dialing purposes. Gnomemeeting will only accept DTMF tones for dialing, not the rotary pulses.)
  • (Optional) Phone Answering Machine (Now you know what you can do with that microcassette answering machine you have laying around!)

Kernel Setup

Initially, I was running Debian Sarge with the 2.4.28 kernel. I had many problems getting the Quicknet and Brooktree drivers to work with this kernel. Also, Gnomemeeting kept locking up when trying to use these drivers. To make matters worse, the GLX driver in X Windows wouldn’t load when using the composite-out on my video card. Also, the Brooktree driver that’s included with kernels 2.4.20 and above conflict with the i2c drivers and don’t work right. To remedy all of these problems, I compiled a new kernel based on 2.6 instead of 2.4. This made a WORLD of difference. Everything seems to work great once I switched to the 2.6.10 kernel.

When compiling the 2.6.10 kernel, I had to add module support for the following devices:

Brooktree Capture Card with BT878 chipset (the capture card I’m using):
Device Drivers - Multimedia Devices
Module: Video for Linux

Device Drivers - Multimedia Devices - Video for Linux
Module: BT848 Video for Linux
Even though the module is named “BT848,” it is really meant for BT8xx cards.
Device Drivers - I2C Support
Module: I2C device Interface

QuickNet PhoneJack ISA Card (for providing a POTS jack for the telephone):
Device Drivers - Telephony Support
Module: Linux Telephony Support
Module: QuickNet Internet LineJack/PhoneJack support

After compiling the kernel with these modules and rebooting my server, I used dselect (a menu front end to the apt-get utility in Debian) to install module-init-tools and modconf so I could easily install and remove the drivers with the modconf command. (For the 2.6 kernel, you need to use the modconf command that comes with module-init-tools.) Using the modconf command, I added the Brooktree driver (under kernel/drivers/media/video -> bttv) and the PhoneJack driver (under kernel/drivers/telephony -> ixj). Adding both drivers will add the associated drivers automatically and come up at boot.

Check and make sure /dev/phone0 is present by issuing a ls /dev/phone0 and seeing if it’s present. If /dev/phone0 is not present, create it (as root, of course) with the following command:
mknod /dev/phone0 c 100 0

X Windows Configuration

You will need to have X Windows already installed, as well as Gnome. You can install both of these via dselect. You will have to modify a few files:

You will have to enable Video for Linux support in X in order for the video capture in Gnomemeeting (or any video capture program in X) to work. Edit /etc/X11/XF86Config-4 and add the following line in your Section "Module" area:

Load "v4l"

Having the screen blank after a certain time period in X Windows was annoying, and I wanted to have Gnome and Gnomemeeting start automatically when I typed startx. I created a file in my home directory called .xinitrc and added the following:

xset -dpms s off s noblank
gnomemeeting &
exec gnome-session

Note the “&” after the gnomemeeting. X won’t continue to the next line to start Gnome unless you put “&” after any X Windows programs you want to run.

(Optional) I also wanted to stop the console terminal from blanking, so I created a file named .bash_profile in my home directory, and added the following:

setterm -blank 0

(Optional) After installing X, I kept getting a graphical login screen. I like to boot to a text console, so in order to remove the graphical login, I modified /etc/X11/default-display-manager and commented out the /usr/bin/X11/xdm line.

BrookTree Video Capture Card

To test the video capture card, I connected my S-Video camera to the Brooktree capture card. I used dselect to install xawtv. Xawtv is a great program for checking your video capture card. Since I always forget, the three inputs on my BT capture card are addressable as follows:

Composite0
Composite1
S-Video

I logged in as root and typed startx. I opened a terminal window, and typed xawtv -device /dev/video0 (sometimes xawtv chooses a different v4l device, so I had to specify it.). No matter which input I selected (and I should’ve seen something on the S-Video input), nothing would come up in Xawtv. All I saw was a blue or black blank screen. I typed xawtv -hwscan (make sure you are running this command from a shell within X, otherwise do xawtv -hwscan -display :0.0 ) and saw that I had Input/Output errors reported by v4l2. Then, I could hear my geek hobby cohort Doug’s voice in the back of my mind saying, “Move the capture card to another PCI slot!” Sure enough, that was the problem. I had forgotten that particular video capture card was choosy with its PCI slot. While the server was off, moving the capture card to another PCI slot solved my error problem. Xawtv finally gave me a nice video image coming from my camera.

GnomeMeeting

To download GnomeMeeting on my Debian Linux system, I logged in as root. Using dselect, I selected GnomeMeeting (version 1.0), and downloaded it to my system. From within X, I typed gnomemeeting at a Terminal prompt. I went into GnomeMeeting’s prferences, and made sure that in the Video Devices, the V4L Video plugin was selected, and the Input device was set to “BT878 video”. For the S-Video input on the capture card, I had to set the Channel to 3. In the Audio Devices area, I made sure the Audio plugin was set to Quicknet, and the Audio Input and Output devices were set as /dev/phone0.

1980s Videophone

Since my Linux server is in the basement, I could’ve ran some long cables up to my desk for the composite monitor and camera. Instead, I used a Cable TV cable (with F-connectors) that was already run to my office for the composite signal. I purchased some F-connector to RCA-connector adapters from Radio Shack in order to convert the coax F-connector to something that could plug into a composite RCA connector.

In order to keep my home network secure by not opening a range of ports on my router, I use OpenVPN. With OpenVPN, I am able to set up VPN connections between my friends, family, and I. OpenVPN also allows me to encrypt all H.323 traffic, as H.323 is not secure. OpenVPN works great, especially when setting up a H.323 connection between here and the Philippines!

In GnomeMeeting’s Audio Codecs Preferences, I enabled G.723.1. G.723.1 is a proprietary H.323 protocol, and can only be enabled in GnomeMeeting if you are using a device that has licensed the G.723.1 protocol. The QuickNet card has this license, so Gnomemeeting allows you to enable G.723.1. One of the benefits of enabling this protocol is that it allows interoperability with any callers using OpenH.323 and the VOIP Blaster. (The VOIP Blaster only uses G.723.1.) Also, by default, NetMeeting uses the G.723.1 protocol.

For clients calling me with NetMeeting, one of two things had to happen:

On the server side, since I enabled G.723.1, I had to move that codec to the top of the “Available Audio Codecs” list in GnomeMeeting. Otherwise, a NetMeeting caller would not hear or transmit any audio during a call. Alternatively, the NetMeeting client could change a setting on their side. The NetMeeting client would have to tweak their Audio Codec section to not use the G.723.1 protocol. In NetMeeting, under Tools -> Options…, click the Advanced… button. Check the “Manually configure…” box, and choose the “CCITT u-Law…” codec, click OK, then click OK again.

For the Mac OS X side of the house, the ohphoneX client worked well when communicating with GnomeMeeting.

Now I have my 1980s Videophone working! It’s great; having a conversation with a telephone tranceiver (rather than a PC microphone and speakers) makes a huge difference. This setup also allows “free” calling to my friends and family (who are set up with NetMeeting and OpenVPN) and ranks up there on the geek scale.

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.