Hylafax Mailing List Archives
|
[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
Re: [hylafax-users] Voice Modem Problems
David Ronis wrote:
> I'm trying to get hylafax to work with a ZYXEL omni 56K modem on an
> i686-linux-gnu box. I can get vgetty to answer the modem by itself,
> but would prefer to stick with hylafax. So far I fax and data calls
> work fine, but I've been completely unsuccessful getting faxgetty to
> answer/recognize voice calls. I always start with a data connection.
> I use agetty for data and want to use vgetty for voice.
>
> My configuration file is appended.
>
> I've played around with the ModemSetupAACmd, AdaptiveAnswer, and
> AnswerRotary parameters, but so far, without success.
>
> Has anybody gotten any voice modem to work? If so, could you send me
> a copy of your configuration file?
Yes, I use ZYXEL U1496+.
Configuration is
-----------
AnswerRotary: extern
EGettyArgs: "...<args>..."
-----------
My egetty program plays voice promt and exits with code 2 if detected fax tone.
If fax tone was not detected it records voice message.
The typical sessiÏns for egetty program are:
----------- voice call sessiÏn
>>> 'AT\r'
<<< '\r\nOK\r\n'
>>> 'AT+FCLASS=?\r'
<<< '\r\n0,2,2.0,6,8\r\nOK\r\n'
>>> 'AT+FCLASS?\r'
<<< '\r\n2.0\r\nOK\r\n'
>>> 'AT+FCLASS=8\r' # voice class
<<< '\r\nOK\r\n'
>>> 'ATS39.6=1\r' # enable receiving DLE codes
<<< '\r\nOK\r\n'
>>> 'AT+VLS=2\r' # voice connection
<<< '\r\nVCON\r\n'
>>> 'AT+VTX\r' # start sending voice
<<< '\r\nCONNECT\r\n'
>>> [RMD file] # sending voice prompt
>>> <NUL><DLE><ETX> # stop sending voice
<<< '\r\nVCON\r\n'
>>> 'AT+VTS=[1200,0,15]\r' # beep
<<< '\r\nOK\r\n'
>>> 'AT+VRX\r' # start receiving voice
<<< '\r\nCONNECT\r\n'
<<< [RMD file] # receiving/recording voice message
<<< '<DLE>b' # busy signal detected
>>> 'AT\r' # stop receiving voice
<<< '\r\nVCON\r\n'
>>> 'ATS39.6=0\r' # restore
<<< '\r\nOK\r\n'
>>> 'AT+FCLASS=2.0\r' # restore
<<< '\r\nOK\r\n'
>>> 'AT+VLS=0\r' # on hook
<<< '\r\nOK\r\n'
exit 5 # return to faxgetty with CALLTYPE_DONE
-----------
----------- fax call sessiÏn
>>> 'AT\r'
<<< '\r\nOK\r\n'
>>> 'AT+FCLASS=?\r'
<<< '\r\n0,2,2.0,6,8\r\nOK\r\n'
>>> 'AT+FCLASS?\r'
<<< '\r\n2.0\r\nOK\r\n'
>>> 'AT+FCLASS=8\r'
<<< '\r\nOK\r\n'
>>> 'ATS39.6=1\r'
<<< '\r\nOK\r\n'
>>> 'AT+VLS=2\r'
<<< '\r\nVCON\r\n'
>>> 'AT+VTX\r'
<<< '\r\nCONNECT\r\n'
>>> [RMD file] # sending voice prompt
<<< '<DLE>c' # fax tone detected
>>> <NUL><DLE><ETX> # interrupt sending voice
<<< '\r\nVCON\r\n'
>>> 'ATS39.6=0\r'
<<< '\r\nOK\r\n'
>>> 'AT+FCLASS=2.0\r'
<<< '\r\nOK\r\n'
>>> 'ATA\r' # answer fax
<<< '\r\nCONNECT FAX\r\n'
exit 2 # return to faxgetty with CALLTYPE_FAX
-----------
I'm not using the mgetty+sendfax's vgetty but it seems that it can be used instead egetty.
NOTE: It seems there is a bug in HylaFax on Linux (see below).
If so you can try to patch HylaFax or use egetty script that runs vgetty
(replace "print "ATA\r"; exit 2;" to "exec '/sbin/vgetty...';").
Vyacheslav Frolov wrote:
> Dmitry Bely wrote:
>
> > [---cut---]
> > #!/usr/bin/perl
> > print "ATA\r"; # always answer as a fax
> > exit 2;
> > [---cut---]
> >
> > The problem is that after returning to Hylafax the modem file descriptor
> > becames broken and all commands to the modem fails with the write error :-(
>
> On Linux You can fix that two ways: in HylaFax source (cut1) or in egetty script (cut2).
>
> [---cut1---]
> --- ../org/hylafax-4.1beta2/faxd/GettySysV.c++ Sun Jun 13 11:41:03 1999
> +++ ../hylafax-4.1beta2/faxd/GettySysV.c++ Fri Mar 17 17:40:00 2000
> @@ -95,6 +95,7 @@
> * the login process that follows.
> */
> setsid();
> +#define sco
> #ifndef sco
> fd = Sys::open(getLine(), O_RDWR|O_NONBLOCK);
> #else
> [---cut1---]
>
> [---cut2---]
> #!/usr/bin/perl
> require 'asm/ioctls.ph';
> require 'asm/termios.ph';
> sub termios_t() { 'IIIICC32C3II'; }
> sub m_open() {
> local $SIG{'HUP'} = sub {};
> ioctl(STDOUT, &TIOCNOTTY, 0);
>
> my $termios = "";
> ioctl(STDOUT, &TCGETS, $termios);
> my @ar = unpack(termios_t, $termios);
> $ar[2] |= &CLOCAL;
> $termios = pack(termios_t, @ar);
> ioctl(STDOUT, &TCSETS, $termios);
> }
> m_open();
> print "ATA\r";
> exit 2;
> [---cut2---]
>
> Sorry, I had't test the example. It's only the cut from my working script.
>
> Regards,
> Vyacheslav.
____________________ HylaFAX(tm) Users Mailing List _______________________
To unsub: mail -s unsubscribe hylafax-users-request@hylafax.org < /dev/null