HylaFAX The world's most advanced open source fax server

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

reset command is wrong !!

Hello all,

my system:

HylaFAX v4.0pl2 under Linux 2.2.13 Debian potato frozen;
with Boca SE1440 ISA modem, firmware 1.04.

I have found something which I think is a glaring bug.
faxsend does:

Feb  7 21:06:28 gate FaxSend[12347]: <-- [16:ATZE0V1Q0S0=0H0\r]

This is WRONG !!

Placing any commands behind an ATZ is prone to failure in many cases.
Even I remember such a limitation, and I haven't been using any modems since
95, and even until then not too actively.
In my case the ATE0 wasn't executed, which lead to the echo still
being on and faxsend yelling at me "modem is wedged".
(I hate that error message, BTW !!)
Of course I didn't find out what was wrong, because the modem just
correctly returned its OKs and suddenly there was this wedged thing:
Feb  7 21:08:51 gate FaxSend[12371]: <-- [16:ATZE0V1Q0S0=0H0\r]
Feb  7 21:08:52 gate FaxSend[12371]: --> [15:ATZE0V1Q0S0=0H0]
Feb  7 21:08:52 gate FaxSend[12371]: --> [2:OK]
Feb  7 21:08:52 gate FaxSend[12371]: <-- [21:ATS8=2S7=60\Q1&D2&C1\r]
Feb  7 21:08:52 gate FaxSend[12371]: --> [20:ATS8=2S7=60\Q1&D2&C1]
Feb  7 21:08:52 gate FaxSend[12371]: --> [2:OK]
Feb  7 21:08:52 gate FaxSend[12371]: <-- [12:AT+FCLASS=?\r]
Feb  7 21:08:52 gate FaxSend[12371]: --> [11:AT+FCLASS=?]
Feb  7 21:08:52 gate FaxSend[12371]: --> [3:0,1]
Feb  7 21:08:52 gate FaxSend[12371]: --> [2:OK]
Feb  7 21:08:52 gate FaxQueuer[12342]: MODEM /dev/ttyS1 appears to be wedged
Feb  7 21:08:52 gate FaxQueuer[12342]: MODEM WEDGED: bin/wedged "ttyS1" "/dev/ttyS1"

And of course I didn't figure out until lately that the echo thing
is the cause.

IMHO HylaFAX still is pretty crappy.
I had several rather severe problems to solve until I got even that far.

It would be a *very* good thing if HylaFAX emitted some *useful*
error messages instead of that stupid wedged thing.
This is much less useful than e.g. with pppd; and you know how many desperate
cries for help even with pppd the usenet has already seen...

So ultimately using minicom to do ATZ; ATE0; AT&W0 to modify the default
ATZ profile for using echo off did the trick.

All in all this is a pretty poor performance of HylaFAX.
(three complete evenings and several internet $$ wasted)

And of course I still have that faxrm problem "Operation not permitted"
waiting to be solved...
strace -p'ing on the hfaxd process responsible for that when doing a faxrm
shows that some weird things with failing stat()s and an ELOOP errno
are going on.
Don't ask me what that means...

My config, BTW:
ModemType:              Class1          # use this to supply a hint
ModemRate:              57600
ModemFlowControl:       rtscts          # RTC/CTS flow control
ModemSetupDTRCmd:       AT&D3           # setup so DTR drop resets modem
ModemSetupDCDCmd:       AT&C1           # setup so DCD follows carrier
ModemDialCmd:           ATDT0,%s
ModemResetCmds:         ATZ             # stuff to do when modem is reset
ModemAnswerCmd:         ATA             # use this to answer phone
ModemNoFlowCmd:         AT\Q0           # disable flow control cmd
ModemHardFlowCmd:       AT\Q3           # hardware flow control cmd
ModemSoftFlowCmd:       AT\Q1           # software flow control cmd (AT&K4)
ModemNoAutoAnswerCmd:   ATS0=0          # disable auto-answer
ModemSetVolumeCmd:      "ATM0 ATL0M1 ATL1M1 ATL2M1 ATL3M1"
ModemEchoOffCmd:        ATE0            # disable command echo
ModemVerboseResultsCmd: ATV1            # enable verbose command results
ModemResultCodesCmd:    ATQ0            # enable result codes
ModemOnHookCmd:         ATH0            # place phone on hook (hangup)
ModemSoftResetCmd:      ATZ             # do soft reset of modem
ModemWaitTimeCmd:       ATS7=60         # wait 60 seconds for carrier
ModemCommaPauseTimeCmd: ATS8=2          # comma pause time is 2 seconds
ModemRecvFillOrder:     LSB2MSB         # bit order of received facsimile
ModemSendFillOrder:     LSB2MSB         # bit order modem expects for transmit
Class1Cmd:              AT+FCLASS=1     # command to enter class 1
Class1TCFResponseDelay: 75              # 75ms delay between recv TCF & responseClass1SendPPMDelay:     75              # 75ms delay before sending PPM
Class1SendTCFDelay:     75              # 75ms delay between sending DCS & TCF
Class1TrainingRecovery: 1500            # 1.5sec delay after training failure
Class1RecvAbortOK:      200             # wait 200ms for abort response
Class1FrameOverhead:    4               # 4 byte overhead in recvd HDLC frames
Class1RecvIdentTimer:   40000           # 35+5secs waiting for ident frames
Class1TCFMaxNonZero:    10              # max 10% of data may be non-zero
Class1TCFMinRun:        1000            # min run is 2/3rds of TCF duration

ModemMfrQueryCmd:       AT+FMFR?
ModemModelQueryCmd:     AT+FMDL?
ModemRevQueryCmd:       AT+FREV?

(you can clearly see here that it's not me that's doing such crazy stuff
as placing commands behind an ATZ)
ATZ is *always* to be used with ATZ<return>, *nothing* else !

Thank you !

Andreas Mohr		Tel.: +49 7159 800604 private (preferred)
Stauferstr. 6			       927883 main line (family)
D-71272 Renningen	http://home.germany.net/100-30936/
Germany			languages: german, english, french

Project hosted by iFAX Solutions