Your Peace of Mind is our Commitment

Contact Us English Recent Articles

Vgetty and Voice Modems

First published: 15th December 2010

Traditional, fixed-line phones, modems and answering machines are fading into history, but they still have some advantages, they are cheap, and do not loose signal or run out of batteries. I had a working voice mail system using vgetty and an old Hayes Accura 336, and I needed to set up another line I even had a similar modem not doing anything. How hard could it be?

The problems I encountered were varied, but insufficient documentation was important. When it didn't work, I could find from the logfile (/var/log/vgetty.ttyxx.log) that vgetty and the modem were speaking different languages, so all I needed to do was check the type of my modem, and lookup what configuration options were required. The problem is, I couldn't find a reference that would tell me that. Now that I have usable information for two modems, I'm putting here.

Quick Summary

Based on Debian GNU/Linux 5.0, with packages mgetty, mgetty-docs, mgetty-pvftools, and mgetty-voice.

These parameters in the vgetty configuration file (/etc/mgetty/voice.conf) need to be correct for the modem:

The table below only lists these, the other parameters are as default, or your needs.

To play a message, the sound file must be in the correct format, the command pvftormd -L lists all the available formats. The table shows the successful command for converting from a wav.

Modem NameModel Numbervoice.confCreating a message file
Hayes Accura 3365312HK Version 6.20forceV253 FALSE
forceV253subset FALSE
rec_speed 0
wavtopvf Hello.wav | pvfspeed -s 7200 | pvftormd Rockwell 4 > Hello.rmd
Hayes Accura 2885312HK Version 6.00unknownunknown
Connexant USB 2.0 56KUSB ID: 0572:1329forceV253 FALSE
forceV253subset TRUE
rec_speed 0
wavtopvf Hello.wav | pvfspeed -s 8000 | pvftormd V253modem 9 > Hello.rmd

Hayes Accura 336

This works with the default voice.conf settings. This page provided a useful reference for converting the voice file.

The log file shows vgetty identifying the modem:

11/11 22:21:55 yS0  lowering DTR to reset Modem
11/11 22:21:56 yS0  send: \dATQ0V1H0[0d]
11/11 22:21:56 yS0  waiting for ``OK'' ** found **
11/11 22:21:56 yS0  send: AT[0d]
11/11 22:21:56 yS0  waiting for ``OK'' ** found **
11/11 22:21:56 yS0  mdm_send: 'ATI'
11/11 22:21:56 yS0  Generic Rockwell modem (33600)
11/11 22:21:57 yS0  mdm_send: 'ATI3'
11/11 22:21:57 yS0  mdm_send: 'ATI4'
11/11 22:21:57 yS0  additional info: 'a125040F084A770EF0C0'
11/11 22:21:57 yS0  modem quirks: 0004
11/11 22:21:57 yS0  mdm_send: 'AT+FCLASS=2' -> OK
11/11 22:21:57 yS0  mdm_send: 'AT+FCLASS=0' -> OK
11/11 22:21:57 yS0  mdm_send: 'AT+FAA=1;+FCR=1' -> OK
11/11 22:21:57 yS0  mdm_send: 'AT+FBOR=0' -> OK
11/11 22:21:57 yS0  mdm_send: 'AT+FLID=""' -> OK
11/11 22:21:57 yS0  mdm_send: 'AT+FDCC=1,5,0,2,0,0,0,0' -> OK
11/11 22:21:57 yS0  detecting voice modem type
11/11 22:21:59 yS0  Rockwell detected
11/11 22:21:59 yS0  initializing ROCKWELL voice modem
11/11 22:22:01 yS0  waiting...

Hayes Accura 288

It says it is a voice modem, but I have not discovered the vgetty settings to make it work. The log file shows vgetty identifying the modem, but failing to find voice modem capabilities:

11/11 22:15:38 yS0  lowering DTR to reset Modem
11/11 22:15:39 yS0  send: \dATQ0V1H0[0d]
11/11 22:15:39 yS0  waiting for ``OK'' ** found **
11/11 22:15:39 yS0  send: AT[0d]
11/11 22:15:39 yS0  waiting for ``OK'' ** found **
11/11 22:15:39 yS0  mdm_send: 'ATI'
11/11 22:15:39 yS0  Generic Rockwell modem (28800)
11/11 22:15:39 yS0  mdm_send: 'ATI3'
11/11 22:15:39 yS0  Could be a Hayes Optima/Accura modem
11/11 22:15:39 yS0  mdm_send: 'ATI7'
11/11 22:15:40 yS0  additional info: 'Copyright 1995 Hayes Microcomputer Products, Inc.'
11/11 22:15:40 yS0  modem quirks: 0005
11/11 22:15:40 yS0  mdm_send: 'AT+FCLASS=2' -> OK
11/11 22:15:40 yS0  mdm_send: 'AT+FAA=1;+FCR=1' -> OK
11/11 22:15:40 yS0  mdm_send: 'AT+FBOR=0' -> OK
11/11 22:15:40 yS0  mdm_send: 'AT+FLID=""' -> OK
11/11 22:15:40 yS0  mdm_send: 'AT+FDCC=1,5,0,2,0,0,0,0' -> OK
11/11 22:15:40 yS0  detecting voice modem type
11/11 22:15:53 yS0  vgetty: timeout while reading character from voice modem
11/11 22:15:53 yS0  modem detection failed

Any clues how to get this modem working with vgetty would be appreciated.

Connexant USB 2.0 56K

Connexant modems are widely available and cheap, in fact, they appear to be the only consumer-grade modem still available. Unfortunately, they are a software modem, meaning most of the work is done by the computer's CPU, and the modem is just a bare minimum of hardware. The disadvantages of this are that the CPU is more heavily loaded (perhaps not an issue with today's powerful processors), and you must have driver software for the operating system. Driver software is usually available for Windows, use with Linux is less certain.

In the package for this modem, there was a driver disc which had a Linux driver. I couldn't get the driver package to install, so I contacted the driver's developers, Linuxant, who provided two important pieces of information:

After the kernel headers installation, the driver installation script installed the DCG driver successfully, and the modem appeared as device ttyACM0. However, there was still a question of whether voice was supported, Linuxant advised, "the voice feature of our drivers is only limited to some HCF modems. You should try under Windows to see if the voice feature is supported for that modem". To test the voice capabilities, I attached the modem to a Windows machine and installed Advanced Call Center 7.0, the modem worked, playing and recording sound, so all that remained was to identify the correct voice.conf and sound file format to use with vgetty, as described above.

USB to Serial Converters

Like traditional modems, traditional serial ports are becoming rare, so for some tests, the Accura modems were connected via a USB to Serial converter. Two serial converters were tried.

The first converter was a cable with a USB plug at one end, and a 9-pin D-type connector at the other. When plugged in, the Linux log files identified that it was a "USB-Serial Controller", manufacturer "Prolific Technology Inc.", and installed the module pl2303: "Prolific PL2303 USB to serial adaptor driver" and device ttyUSB0 appeared. However, there was no response from the modem.

The first converter was returned as faulty. The replacement was a smaller device, with a USB socket at one end, a 9-pin D-type connector at the other, and a separate USB cable. It was also detected as exactly the same device, "USB-Serial Controller", manufacturer "Prolific Technology Inc.", and installed the module pl2303: "Prolific PL2303 USB to serial adaptor driver" and device ttyUSB0 appeared. It worked.

The first converter might just have been a manufacturing reject, or perhaps there was a design fault. It all adds to the frustration.

Updated: 04th May 2011

The Connexant USB 2.0 56K failed (phone always off-hook when the power is on) after about 6 months. As this is consumer-grade equipment, it might not have been robust enough for 24x7 usage.


More Information

Related Articles