![]() |
I've got hylafax set up on a linux box, using a Trendnet TFM-560x modem, carefully chosen for its serial-port interface -- not a soft modem. It answers Agere OCM V.92 Ver2.7a (Jun 14 2004) Voice Mercury DP2SH mode-ii SERIAL to an AT+FMM query. Everything works fine, but there is one puzzling bit of lossage I'm having: I can configure hylafax to receive faxes, or I can configure it to permit me to make a data connection (that is, dial in). But not both. If I simply configure it in config.ttyS0 as a class-1 modem (and set the flow control to rts/cts), then the system will send & receive faxes, but I can't dial in. Suppose I add these two lines to config.ttyS0: # Listen in class 0 so I can dial in for a non-fax/data connection. ModemSetupAACmd: AT+FCLASS=0 # ubuntu's getty is agetty: getty <options> <baudrate> <port> # -h means rts/cts flow control; -t 120 means nice long 120sec timeout. GettyArgs: "-h -t 120 %s %l" Then I can dial in (and send faxes), but, of course, it will no longer receive faxes -- it won't make fax connections when receiving a call. A typical log of a session where I successfully dialed in with kermit, logged in over the serial line & then logged right back out looks like this: Feb 02 21:04:01.73: [ 4700]: SESSION BEGIN 000000127 16175551212 Feb 02 21:04:01.73: [ 4700]: HylaFAX (tm) Version 4.4.0 Feb 02 21:04:01.73: [ 4700]: <-- [4:ATA\r] Feb 02 21:04:15.17: [ 4700]: --> [20:CONNECT 31200 V42bis] Feb 02 21:04:15.17: [ 4700]: ANSWER: DATA CONNECTION Feb 02 21:04:15.17: [ 4700]: GETTY: START "/etc/hylafax/getty-link -h -t 120 19200 ttyS0", pid 4731 Feb 02 21:06:05.82: [ 4700]: GETTY: exit status 0 Feb 02 21:06:05.82: [ 4700]: SESSION END OK, so we know it handles data & fax. Now I'd like to set things up so I can do both. So I change the setup command to one of these: ModemSetupAACmd: AT+FCLASS=1;+FAA=1 ModemSetupAACmd: AT+FCLASS=0;+FAA=1 And I lose. The system will receive faxes (even when the setup command puts the modem in class 0) but in both cases I cannot make a data connection and log in, via, say, kermit. A typical log of a successful fax call looks like this: Feb 02 21:10:50.08: [ 5853]: SESSION BEGIN 000000128 16175551212 Feb 02 21:10:50.08: [ 5853]: HylaFAX (tm) Version 4.4.0 Feb 02 21:10:50.08: [ 5853]: <-- [4:ATA\r] Feb 02 21:10:54.10: [ 5853]: --> [3:FAX] Feb 02 21:10:54.10: [ 5853]: ANSWER: FAX CONNECTION DEVICE '/dev/ttyS0' Feb 02 21:10:54.10: [ 5853]: RECV FAX: begin Feb 02 21:10:54.10: [ 5853]: <-- data [32] Feb 02 21:10:54.10: [ 5853]: <-- data [2] ... A typical log of an unsuccessful data call looks like this: Feb 02 22:24:17.78: [17501]: SESSION BEGIN 000000143 16175551212 Feb 02 22:24:17.78: [17501]: HylaFAX (tm) Version 4.4.0 Feb 02 22:24:17.78: [17501]: <-- [4:ATA\r] Feb 02 22:24:22.04: [17501]: --> [4:DATA] Feb 02 22:24:22.04: [17501]: ANSWER: DATA CONNECTION Feb 02 22:24:22.04: [17501]: GETTY: START "/etc/hylafax/getty-link -h -t 120 19200 ttyS0", pid 17641 Feb 02 22:25:23.41: [17501]: GETTY: exit status 0 Feb 02 22:25:23.41: [17501]: SESSION END Note the timing: hylafax *instantly* realises it's a data call, then hands off to getty, but even after that I can hear my sending modem whistling away for about a minute. Then my kermit session prints out "NO CARRIER" and the log file goes to "SESSION END". Now, here's the weird thing. Suppose I go to the receiving machine, shut down its hylafax server and simply run a kermit there. In that kermit, I do the *same setup*: AT+FCLASS=1;+FAA=1 Then I dial in from a kermit on my sending machine, answering with ATA in the kermit on my receiving machine. If I do this, I win: Receiving side Sending side -------------- ------------ atz atz OK OK AT+FCLASS=1;+FAA=1 atdt6175551212 OK CONNECT 31200 V42bis RING <here I type the "I'm typing this ..." text ata seen on the receiving side, which isn't echoed locally> DATA CONNECT 31200 V42bis I'm typing this on the sending machine, but seeing it on the receiving machine. NO CARRIER If I then try to send a fax with kermit receiving instead of hylafax, I see the following in kermit: OK RING RING ATA <-- me answering; all other text produced by the modem FAX CONNECT ERROR <-- modem realises kermit is not a fax machine. This seems to indicate that the modem can do the job in adaptive-answer mode. So something is going wrong with the handoff to getty. What that might be is a mystery to me. Can anyone advise me? By the way, I also tried this less desireable hack, as discussed in the handbook: AdaptiveAnswer: yes # enable adaptive answer AnswerRotary: "data fax" # answer for fax, then data ModemAnswerCmd: AT+FCLASS=0;A # default is to answer as data ModemAnswerFaxCmd: ATH+FCLASS=1;A # hangup and answer as fax Class1RecvIdentTimer: 10000 # timeout fax answer in 10 secs ModemAnswerResponseTimeout: 300000 # nice, long 300 sec timeout This doesn't work. The modem answers with the ATA+FCLASS=0;A, but then it listens for longer than 10 secs (which is odd), then it simply terminates the session, in much less than 300 secs (which is odd): Feb 02 22:08:41.93: [15225]: SESSION BEGIN 000000140 16175551212 Feb 02 22:08:41.93: [15225]: HylaFAX (tm) Version 4.4.0 Feb 02 22:08:41.93: [15225]: <-- [14:AT+FCLASS=0;A\r] Feb 02 22:09:11.14: [15225]: --> [10:NO CARRIER] Feb 02 22:09:11.14: [15225]: ANSWER: Ring detected without successful handshake Feb 02 22:09:11.14: [15225]: Ring detected without successful handshake Feb 02 22:09:11.14: [15225]: SESSION END -Olin ------------------------------------------------------------------------------- My entire config.ttyS0 file, stripped of comments, is just these 31 lines: ------ CountryCode: 1 AreaCode: 617 FAXNumber: +1.617.555.1212 LongDistancePrefix: 1 InternationalPrefix: 011 DialStringRules: etc/dialrules.neu ServerTracing: 1 SessionTracing: 11 RecvFileMode: 0600 LogFileMode: 0600 DeviceMode: 0600 RingsBeforeAnswer: 0 SpeakerVolume: low LocalIdentifier: "Olin Shivers/NEU CCIS" TagLineFont: etc/lutRS18.pcf TagLineFormat: "From %%l|%c|Page %%P of %%T" MaxRecvPages: 100 ModemSetupAACmd: AT+FCLASS=1 GettyArgs: "-h -t 120 %s %l" ModemType: Class1 # use this to supply a hint ModemFlowControl: rtscts Class1Cmd: AT+FCLASS=1 # command to enter class 1 Class1PPMWaitCmd: AT+FTS=7 # command to stop and wait before PPM Class1TCFWaitCmd: AT+FTS=7 # command to stop and wait before TCF Class1EOPWaitCmd: AT+FTS=9 # command to stop and wait before EOP Class1SwitchingCmd: AT+FRS=7 # silence between HDLC recv and trans 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 ------ Note that I have RingsBeforeAnswer set to 0; I currently always manually answer this line using faxanswer. My global hfaxd.conf file has nothing in it that should affect things -- just these three lines (plus comments, which I've stripped out): LogFacility: daemon # syslog facility (want this 1st)) ServerTracing: 0x001 # just server operation FaxContact: root # who gets questions/complaints ____________________ HylaFAX(tm) Users Mailing List _______________________ To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi On UNIX: mail -s unsubscribe hylafax-users-request@xxxxxxxxxxx < /dev/null *To learn about commercial HylaFAX(tm) support, mail sales@xxxxxxxxx*