HylaFAX The world's
most advanced open source fax server
|
|
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
Re: [hylafax-users] Voice Modem Problems
Thanks for the reply. What do you use for your egetty program?
David
Vyacheslav Frolov writes:
>
>
> 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