A number of modems are automatically supported by vgetty - a greater number still can be made to work by using our force_detect patch described in the Vgetty installation guide. But if you are having difficulty with your modem or are trying to get it supported by mgetty and vgetty, this page can help you out.
This document describes basic interaction and queries to your voice modem.
It is aimed primarily at helping you troubleshoot your modem, in cases where
you've been through the vgetty
installation and the mgetty/vgetty docs and still can't get some (or
all) features of your modem working.
We will not attempt to describe everything you need to know in order to install
and configure your modem - please see the Modem-HOWTO
or one of the other related HOWTOs from the linux
documentation project
Which modem should you install? Vgetty and VOCP are evolving and the list of supported modems changes - as does the modems that are available at your local outlets. A somewhat outdated list may be found on the vgetty modem database page. Modems that have been reported to function are
If you are unsure about your modem model or its capabilities, the text below will help you out.
If you have access to the modem's manual from your manufacturer, you may be
in luck. If it is more than mere marketroid fluff and includes information
about the chipset and AT command set used, you should have everything you
need. Read it, focusing on voice and/or caller id related info.
starting minicom
If you are new to minicom, here is a little guide that should get you
started.
Open a console or xterm. As root, start minicom, with the setup
switch
# minicom -s
In the configuration menu that appears, use the arrow keys to go down
to serial port setup, hit <ENTER>.
You can see the first line in the new screen is something like:
A - Serial Device : /dev/modem
Hit the 'A' key to edit this field and erase the /dev/modem.
If you know which tty your modem is on, enter it now. If you do not,
start by trying /dev/ttyS0 and work your way up (ttyS1, ttyS2...).
Hit the <ENTER> key to complete the edit and <ENTER> to exit
this menu. Use the arrow keys to go down to Exit (not Exit
from Minicom!), press <ENTER>.
You will see an "Initializing Modem" screen. Then, if all goes well, you
will see something like:
AT S7=45 S0=0 L1 V1 X4 &c1; E1 Q0
OK
Great, you are now online with your modem. If you see nothing at all,
get an error message or nothing happens when you type "AT<ENTER>",
try again using the next ttyS[123].
modem queries
The AT (often called "Hayes") command set used by your modem may and
will probably differ from that shown here. Often times, if you don't
have the manual handy and can't find anything relevant on the net, you
can guess at variations, for instance replacing '+' characters with
'#' and vice versa.
Ask your modem a few basic questions and ponder the responses. Some commands
will ouput interesting info, all should ouput some kind of status (OK/VCON/CONNECT/other
stuff when things are going well, ERROR otherwise). Here are a few information
queries that may produce interesting results:
ATI
ATI3
ATI9
ATI11
AT&Vn;
Now that you've gotten to know your modem a bit better, try a few commands
to determine it's capabilities and settings.
AT+FCLASS=?
or
AT#CLS=?
Will show the "modes" in which the modem may be set, often these are :
0 - data
1 - fax 1
2 - fax 2
2.0 - fax 2.0
8 - voice
You can query the current mode using:
AT+FCLASS?
And set it, for instance to voice mode, using
AT+FCLASS=8
Certain commands will only function from within a specific mode, so if
your trying out voice related commands be sure to do an
AT+FCLASS=8
before proceeding. If you get an ERROR or the only modes supported are
0,1,2 you may not have a voice modem, but check the docs to make sure.
Now we can try to see the available voice compression modes. These will
vary between modems. Use
AT+VSM=?
AT#VCI=?
Here's the output for a Hayes accura v.92 external (Lucent Venus chipset):
AT+VSM=?
128,"8-BIT LINEAR",(7200,8000,11025)
129,"16-BIT LINEAR",(7200,8000,11025)
130,"8-BIT ALAW",(8000)
131,"8-BIT ULAW",(8000)
132,"IMA ADPCM",(7200,8000,11025)
OK
And here's the output for an old GVC (cirrus logic CL-MD56xx chipset):
AT+VSM=?
0,"8-Bit Linear",8,0,(4800,7200,8000,9600,11025),(0),(0)
1,"16-Bit Linear",16,0,(4800,7200,8000,9600,11025),(0),(0)
2,"4-Bit ADPCM",4,0,(4800,7200,8000,9600,11025),(0),(0)
128,"8-Bit Linear",8,0,(4800,7200,8000,9600,11025),(0),(0)
129,"16-Bit Linear",16,0,(4800,7200,8000,9600,11025),(0),(0)
132,"4-Bit ADPCM",4,0,(4800,7200,8000,9600,11025),(0),(0)
140,"CL1",8,0,(4800,7200,8000,9600,11025),(0),(0)
141,"3-Bit ADPCM",3,0,(4800,7200,8000,9600,11025),(0),(0)
The possibilities are quite different on the two modems and so are the
default settings for voice compression:
Hayes:
at+vsm?
129,"16-BIT LINEAR",8000
GVC:
at+vsm?
140,8000,0,0
You should try out some other voice parameter queries, using either the
"list all" (i.e. =?) or "show current" (i.e. ?) suffix:
AT+VLS or AT#VLS (Analog source/destination selection
and DTMF/tone reporting) - try AT+VLS=? and AT#VLS=?
AT+VCID or AT#CID (caller id enable) - Try AT+VCID=?
or AT#CID=?
The actual AT commands to use are, as stated above, completely modem dependent
and vary (wide|wild)ly but with standards like IS 101 things seem to
be getting a little better. Here are a few voice related AT commands
that you can try out.
You should now have a clearer understanding of both your modem's operation
and it's capabilities. Note that even if you managed to elicit some sane
responses for caller-id related commands, it doesn't mean your modem actually
supports it - only that its chipset does (see the Caller
ID section).
On the other hand, if you managed to get your modem into voice mode (FCLASS/CLS
8), there is a good chance that you can have fun with voice and VOCP operation.