A cellular plan using an EVDO modem can provide a connection with bandwidth of approximately 3Mbps to the client and 1.5Mbps up to the provider (comparable to DSL) for a much lower cost than alternatives such as satellite. For applications requiring high-quality audio transmission from remote locations, such as the radio remotes we do at the radio station where I work, a Linux laptop with an EVDO modem and VoIP software offers an inexpensive and reliable solution. Here's what you need to get started.
The first requirement is, of course, a laptop computer. For VoIP applications, the most important hardware requirement is processor power for encoding and decoding audio. The laptop also needs either a USB port or a PCMCIA slot for the EVDO modem, another USB port for a USB microphone, and enough memory and disk space to reliably run the Linux distribution you choose. To set up VoIP remotes for our radio station, I purchased a older Toshiba Satellite A10-S100 laptop with a 2GHz processor for under $200.
The choice of a Linux distribution is important, since many distributions do not work well with EVDO modems. I settled on Ubuntu Hardy Heron because few people reported issues getting EVDO modems to work with its kernel. The distribution you choose must include the usbserial kernel module and a modem dialer such as wvdial.
Choosing an EVDO provider and modem
Once you have your laptop ready, you need to choose a cellular provider. Four major providers offer EVDO coverage in the United States: AT&T, Verizon, Alltel, and Sprint. (Verizon and Alltel have merged, but currently, Alltel still offers separate services under separate branding.) I chose Alltel because it gave me the option to bring my own device and the option to forgo a contract if you buy (rather than rent) a device from Alltel or bring your own device. The other providers require a contract for service, and, as far as I could ascertain, do not allow you to provide your own device. Looking around eBay, I found an Alltel-branded UTStarcom PC5750 EVDO modem for around $35. Each provider has its own modem firmware, so the branding of the modem is important. Also, make sure to take the card to your local cellular store to have it activated, since currently there is no way to activate EVDO cards under Linux.
The modem was easy to get working under Ubuntu Hardy. All I had to do was blacklist the buggy Airprime driver and configure a dialer. To accomplish the former, add the following line to /etc/modprobe.d/blacklist:
After you reboot you should be able to use wvdial or another modem dialer to connect to your EVDO provider. I used wvdial with the following configuration (in /etc/wvdial.conf), which you can modify depending on your provider. The highlighted lines are provider-specific. (Authentication is performed with codes written to the card firmware during activation, and the username and password are the same for every service client on most providers.)
Stupid Mode = On
Modem = /dev/ttyACM0
Baud = 115200
Init = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Phone = #777
Username = firstname.lastname@example.org
Password = alltel
Init1 = ATZ
ISDN = 0
Modem Type = Analog Modem
Auto Reconnect = on
Carrier Check = no
Init3 = ATM0
Dial Command = ATDP
Thanks to Linux Screw for the original wvdial script. You can also find dialing information for the four major United States EVDO providers there.
You can add wvdial to /etc/rc.local to ensure that you have Internet connectivity on startup, as long as the EVDO modem is plugged in before boot.
Setting up VoIP
Once you've set up the operating system, the last piece of the puzzle is the VoIP application. First, the software must support SIP (Session Initiation Protocol). While SIP is not VoIP-specific, it is the de facto standard protocol for setting up VoIP calls. On Ubuntu, the Ekiga softphone application is installed by default. The setup wizard for Ekiga will help you set up an account for SIP service at ekiga.net. You need to do this both on the laptop and on the computer you will be calling. You can use ekiga.net with any SIP phone, not just the Ekiga application. In our radio studio, we set up a Windows XP computer that's also used for email and Web browsing with the X-Lite softphone and an ekiga.net account, and connected it to the radio board.
When talking about VoIP, you will hear a great deal about codecs. Codec is short for "coder-decoder," and refers to a method of digitally representing audio data. Most codecs include some form of compression to allow audio transmission through a lower bandwidth connection. In VoIP, codecs are small pieces of software that integrate with the phones or softphones at either end. Codecs encode data for transmission to the other party and decode it when it is received. The choice of codec determines the required bandwidth and quality of the voice transmission.
Since the purpose of VoIP in this case is to provide high-quality audio transmission, the choice of codecs is important. It is also important to configure fallback codecs when using a low quality link such as EVDO, where available bandwidth can vary greatly. To configure codecs in Ekiga, open Edit -> Preferences. In the preferences sidebar, under Codecs, choose Audio Codecs. Here you can enable and disable codecs and set codec priorites. I have had the most success with 16Khz Speex as my primary codec, followed by PCMU, 8Khz Speex, and finally GSM. GSM is the same codec used for cellular telephony, and should only be used in low-bandwidth situations. Configure the codecs for the softphones at both ends.
When you need audio transmission for a media application, you probably do not want to use the internal microphone of the laptop. For our application, a USB microphone, intended for podcasting, allowed me to feed much higher quality audio into the system. The mike was detected by Ubuntu immediately, but it had to be set as the default device in the Audio Devices panel in Ekiga preferences before Ekiga would utilize it.
How did our VoIP remote system perform? The Alive Festival is an outdoor music concert held every June in northeastern Ohio, a very hilly region with bad cellular coverage. Our cellular phones were unusable in some areas of the festival grounds. Fortunately, our station's booth was at the top of a hill, where we could pick up the signal from the cell tower. The PCMU codec worked nearly flawlessly even with the low bandwidth afforded by such a weak signal. The only glitch came while interviewing a popular singer. As people crowded around the booth, the cell signal decreased to the point that there was not quite enough bandwidth for PCMU. The interview wound up sounding choppy, but still understandable.
Even with such bad bandwidth conditions, Ekiga performed well. Without the VoIP setup, we would have had unreliable and low-quality audio for interviews, which is unacceptable for broadcast media. The VoIP application allowed us to control the quality of our audio and utilize a better microphone with improved noise immunity (a requirement at an outdoor concert).