Modem (hylafax) hängt sich beim Faxempfang auf
Hallo zusammen, Nachdem wir das System unseres kombinierten Mail-/Fax-Server von W2k nach Linux portiert haben, treten zeitweise Fehler beim Faxempang auf. Der Rechner basiert auf SuSE 8.2 und hylafax-4.1.5-190 kommt zum Einsatz. Die Modems werden problemfrei durch FaxGetty initalisiert und empfangen tadellos - zumindest in den meisten Fällen ;-) In den vergangenen Tagen ist jedoch mehrfach der folgende Fehler aufgetreten: Ein Anruf wurde angenommen, nach der Zeile "MODEM set XON/XOFF/DRAIN: input interpreted, output disabled" vermerkt das Logfile jedoch nichts mehr. Über mehrere Stunden liefert 'faxstat' den gleichen Status: mail:~ # faxstat HylaFAX scheduler on mail.tett.de: Running Modem ttyS0 (+49 2202 957229): Running and idle Modem ttyS1 (+49 2202 246754): Receiving from "+49 6432 xxxxxxx" Lediglich ein 'kill -SIGKILL pid' führt ttyS1 wieder in empfangsbereiten Zustand, 'faxabort' bringt keine Abhilfe. mail:~ # faxstat HylaFAX scheduler on mail.tett.de: Running Modem ttyS0 (+49 2202 957229): Running and idle Modem ttyS1 (+49 2202 246754): Running and idle Die eingehenden Faxe kamen von verschiedenen Absendern, das Problem tritt ohne Zusammenhang an beiden Modems auf. Außerdem nutzen keine weiteren Geräten die seriellen Port. Eine Suche in Mailinglisten und Googlen führte nur zu diesem Ergebnis, wo das Problem leider auch ungelöst bleibt: -> http://www.geocrawler.com/mail/msg.php3?msg_id=9708801&list=289 Die relevanten Konfigurationszeilen enthalten das Folgende: mail:/var/spool/fax/etc # cat config LogFacility: daemon CountryCode: 49 AreaCode: 2202 LongDistancePrefix: 1 InternationalPrefix: 011 DialStringRules: "etc/dialrules" ServerTracing: 1 SessionTracing: 0xffffffff mail:/var/spool/fax/etc # cat config.ttyS0 # $Id: class2.0,v 1.6 2002/06/09 01:42:01 darren Exp $ # # HylaFAX Facsimile Software [...] # # Generic Class 2.0 modem configuration. # # EDIT THIS CONFIGURATION TO REFLECT YOUR SETUP # CountryCode: 49 AreaCode: 2202 FAXNumber: "+49 2202 xxxxxx" LongDistancePrefix: 1 InternationalPrefix: 011 DialStringRules: "etc/dialrules" ServerTracing: 1 SessionTracing: 0xffffffff RecvFileMode: 0600 LogFileMode: 0600 DeviceMode: 0600 RingsBeforeAnswer: 1 SpeakerVolume: off GettyArgs: "-h %l dx_%s" LocalIdentifier: "NothingSetup" TagLineFont: etc/lutRS18.pcf TagLineFormat: "From %%l|%c|Page %%P of %%T" MaxRecvPages: 25 # # # Modem-related stuff: should reflect modem command interface # and hardware connection/cabling (e.g. flow control). # ModemType: Class2.0 # use this to supply a hint #ModemRate: 19200 # max rate for DCE-DTE communication #ModemFlowControl: xonxoff # XON/XOFF flow control assumed #ModemSetupDTRCmd: AT&D2 # setup so DTR drop resets modem #ModemSetupDCDCmd: AT&C1 # setup so DCD reflects carrier (or not) # # We can append the "@" symbol to the dial string so that # the modem will wait 5 seconds before attempting to connect # and return result codes that distinguish between no carrier # and no answer. This makes it possible to avoid problems with # repeatedly dialing a number that doesn't have a fax machine # (kudos to Stuart Lynne for this trick.) # # NB: If you need to prefix phone numbers to get through a PBX, # put it in the ModemDialCmd; e.g. "DT9%s@". # #ModemDialCmd: ATDT%s # T for tone dialing # # Other possible configuration stuff. The default strings are # shown below. Only those that are different from the defaults # need to be included in the configuration file. # #ModemResetCmds: "" # stuff to do when modem is reset #ModemAnswerCmd: ATA # use this to answer phone #ModemNoFlowCmd: AT&K # disable flow control cmd #ModemHardFlowCmd: AT&K3 # hardware flow control cmd #ModemSoftFlowCmd: AT&K4 # software flow control cmd #ModemNoAutoAnswerCmd: ATS0=0 # disable auto-answer # # Set modem speaker volume commands: OFF QUIET LOW MEDIUM HIGH. # Note that we both turn the speaker on/off and set volume. # #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 #ModemSoftResetCmdDelay: 3000 # pause after soft reset #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 # # Configuration parameters for Class 2.0 modems. # Class2Cmd: AT+FCLASS=2.0 # command to enter class 2.0 Class2BORCmd: AT+FBO=0 # bit order for phase B/C/D (direct) Class2CQCmd: "" # commands to enable copy quality proc. Class2AbortCmd: AT+FKS # abort session command Class2CQQueryCmd: AT+FCQ=? # query for copy quality capabilities Class2DCCQueryCmd: AT+FCC=? # query for modem capabilities Class2TBCCmd: AT+FPP=0 # setup stream mode Class2CRCmd: AT+FCR=1 # enable capability to receive Class2PHCTOCmd: AT+FCT=30 # set phase C timeout parameter Class2BUGCmd: AT+FBU=1 # enable HDLC frame tracing Class2LIDCmd: AT+FLI # set local identifier command Class2DCCCmd: AT+FCC # set modem capabilities command Class2DISCmd: AT+FIS # set session parameters command Class2DDISCmd: "" # disable pre-dial DIS command hack Class2CIGCmd: AT+FPI # set polling identifier command Class2NRCmd: AT+FNR=1,1,1,1 # setup status reporting command Class2PIECmd: AT+FIE=0 # disable interrupt-enable command Class2PTSCmd: AT+FPS # set post-page status command Class2PTSQueryCmd: AT+FPS? # set post-page status query command Class2SPLCmd: AT+FSP # set polling indicator command Class2NFLOCmd: AT+FLO=0 # set no flow control command Class2SFLOCmd: AT+FLO=1 # set software flow control command Class2HFLOCmd: AT+FLO=2 # set hardware flow control command mail:/var/spool/fax/config # cat elsa-microlink-56k-basic-2.0 # # HylaFAX Facsimile Software # [...] # # Configuration for using the Class 2.0 command interface with # a Elsa MicroLink 56k basic # # CONFIG: CLASS2.0: *ELSA*MicroLink*56k*basic*-RTSCTS # CONFIG: CLASS2.0: *ELSA*MicroLink*56k*basic*-DEFAULT # # BEGIN-SERVER # END-SERVER # # EDIT THIS CONFIGURATION TO REFLECT YOUR SETUP # # # Modem-related stuff: should reflect modem command interface # and hardware connection/cabling (e.g. flow control). # ModemType: Class2.0 # use this to supply a hint ModemRate: 115200 # max rate for DCE-DTE communication ModemFlowControl: rtscts # XON/XOFF flow control assumed ModemSetupDTRCmd: AT&D2 # setup so DTR drop resets modem ModemSetupDCDCmd: AT&C1 # setup so DCD reflects carrier (or not) # # We can append the "@" symbol to the dial string so that # the modem will wait 5 seconds before attempting to connect # and return result codes that distinguish between no carrier # and no answer. This makes it possible to avoid problems with # repeatedly dialing a number that doesn't have a fax machine # (kudos to Stuart Lynne for this trick.) # # NB: If you need to prefix phone numbers to get through a PBX, # put it in the ModemDialCmd; e.g. "DT9%s@". # ModemDialCmd: ATDT%s # # Other possible configuration stuff. The default strings are # shown below. Only those that are different from the defaults # need to be included in the configuration file. # ModemResetCmds: ATX3 # stuff to do when modem is reset ModemAnswerCmd: ATA # use this to answer phone ModemNoFlowCmd: AT&K ModemHardFlowCmd: AT&K3 ModemSoftFlowCmd: AT&K1 ModemNoAutoAnswerCmd: ATS0=0 # disable auto-answer # # Set modem speaker volume commands: OFF QUIET LOW MEDIUM HIGH. # Note that we both turn the speaker on/off and set volume. # ModemSetVolumeCmd: "ATM0 ATL0M1 ATL1M1 ATL2M1 ATL3M1" ModemEchoOffCmd: ATE0 # disable command echo ModemVerboseResultsCmd: ATV1 # enable verbose command results ModemResultCodesCmd: ATQ0 # enable result codes ModemOnHookCmd: ATH # 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 # # Configuration parameters for Class 2.0 modems. # Class2Cmd: AT+FCLASS=2.0 # command to enter class 2.0 Class2BORCmd: AT+FBO=0 # bit order for phase B/C/D (direct) Class2CQCmd: "" # commands to enable copy quality proc. Class2AbortCmd: AT+FKS # abort session command Class2CQQueryCmd: AT+FCQ=? # query for copy quality capabilities Class2DCCQueryCmd: AT+FCC=? # query for modem capabilities Class2TBCCmd: AT+FPP=0 # setup stream mode Class2CRCmd: AT+FCR=1 # enable capability to receive Class2PHCTOCmd: AT+FCT=30 # set phase C timeout parameter Class2BUGCmd: AT+FBU=1 # enable HDLC frame tracing Class2LIDCmd: AT+FLI # set local identifier command Class2DCCCmd: AT+FCC # set modem capabilities command Class2DISCmd: AT+FIS # set session parameters command Class2DDISCmd: "" # disable pre-dial DIS command hack Class2CIGCmd: AT+FPI # set polling identifier command Class2NRCmd: AT+FNR=1,1,1,1 # setup status reporting command Class2PIECmd: AT+FIE=0 # disable interrupt-enable command Class2PTSCmd: AT+FPS # set post-page status command Class2SPLCmd: AT+FSP # set polling indicator command Class2NFLOCmd: AT+FLO=0 # set no flow control command Class2SFLOCmd: AT+FLO=1 # set software flow control command Class2HFLOCmd: AT+FLO=2 # set hardware flow control command Class2APQueryCmd: none # not supported mail:/var/spool/fax # cd log/ mail:/var/spool/fax/log # cat c00000041 Nov 20 14:19:20.18: [21140]: SESSION BEGIN 00000041 492202xxxxxx Nov 20 14:19:20.18: [21140]: HylaFAX (tm) Version 4.1.5 Nov 20 14:19:20.18: [21140]: <-- [4:ATA\r] Nov 20 14:19:26.91: [21140]: --> [74:+FHT: FF 03 40 20 20 20 20 20 20 20 20 50 55 54 45 53 47 4E 49 48 54 4F 4E] Nov 20 14:19:26.91: [21140]: --> [26:+FHT: FF 13 80 00 6E FA 00] Nov 20 14:19:29.56: [21140]: --> [4:+FCO] Nov 20 14:19:29.56: [21140]: ANSWER: FAX CONNECTION DEVICE '/dev/ttyS0' Nov 20 14:19:29.56: [21140]: STATE CHANGE: ANSWERING -> RECEIVING Nov 20 14:19:29.56: [21140]: MODEM input buffering enabled Nov 20 14:19:29.56: [21140]: RECV FAX: begin Nov 20 14:19:29.56: [21140]: RECV FAX: CDPN Nov 20 14:19:31.06: [21140]: --> [74:+FHR: FF 03 43 36 35 38 35 34 31 34 31 33 36 39 34 2B 20 20 20 20 20 20 20] Nov 20 14:19:31.27: [21140]: --> [23:+FHR: FF 13 83 00 22 78] Nov 20 14:19:34.42: [21140]: --> [27:+FTI:" +49631xxxxxx"] Nov 20 14:19:34.42: [21140]: REMOTE TSI "+4963xxxxxx" Nov 20 14:19:34.42: [21140]: --> [20:+FCS:0,5,0,2,0,0,0,0] Nov 20 14:19:34.42: [21140]: REMOTE wants 14400 bit/s Nov 20 14:19:34.42: [21140]: REMOTE wants page width 1728 pixels in 215 mm Nov 20 14:19:34.42: [21140]: REMOTE wants unlimited page length Nov 20 14:19:34.42: [21140]: REMOTE wants 3.85 line/mm Nov 20 14:19:34.42: [21140]: REMOTE wants 1-D MR Nov 20 14:19:34.42: [21140]: --> [2:OK] Nov 20 14:19:34.42: [21140]: <-- [7:AT+FDR\r] Nov 20 14:19:34.54: [21140]: --> [14:+FHT: FF 13 84] Nov 20 14:19:36.47: [21140]: --> [7:CONNECT] Nov 20 14:19:36.47: [21140]: RECV: begin page Nov 20 14:19:36.47: [21140]: MODEM set XON/XOFF/FLUSH: input ignored, output generated Nov 20 14:19:36.47: [21140]: RECV: send trigger 022 Nov 20 14:19:36.47: [21140]: <-- data [1] Nov 20 14:19:51.64: [21140]: RECV/CQ: Bad 1D pixel count, row 1155, got 0, expected 1728 Nov 20 14:19:51.64: [21140]: RECV/CQ: Bad 1D pixel count, row 1156, got 0, expected 1728 Nov 20 14:19:51.64: [21140]: RECV/CQ: Bad 1D pixel count, row 1157, got 0, expected 1728 Nov 20 14:19:51.64: [21140]: RECV/CQ: Bad 1D pixel count, row 1158, got 0, expected 1728 Nov 20 14:19:51.64: [21140]: RECV/CQ: Bad 1D pixel count, row 1159, got 0, expected 1728 Nov 20 14:19:51.64: [21140]: RECV: 24629 bytes of data, 1160 total lines Nov 20 14:19:51.64: [21140]: MODEM set XON/XOFF/DRAIN: input interpreted, output disabled Hat jemand von Euch eine Idee? Jeder Tipp ist willkommen. Vielen Dank und Grüße, Thorsten -- Thorsten Büker * Bärenstr. 19-21 / WG 3106 * 52064 Aachen Tel 0241 - 8865315 * Mobil 0163 - 2572057 * http://bueker.net Nail here for a new monitor -----> [x]
On Thu, Nov 20, 2003 at 04:30:19PM +0100, Thorsten Büker wrote:
Hallo zusammen,
Nachdem wir das System unseres kombinierten Mail-/Fax-Server von W2k nach Linux portiert haben, treten zeitweise Fehler beim Faxempang auf. Der Rechner basiert auf SuSE 8.2 und hylafax-4.1.5-190 kommt zum Einsatz. Die Modems werden problemfrei durch FaxGetty initalisiert und empfangen tadellos - zumindest in den meisten Fällen ;-)
In den vergangenen Tagen ist jedoch mehrfach der folgende Fehler aufgetreten: Ein Anruf wurde angenommen, nach der Zeile "MODEM set XON/XOFF/DRAIN: input interpreted, output disabled" vermerkt das Logfile jedoch nichts mehr. Über mehrere Stunden liefert 'faxstat' den gleichen Status:
Was sagen denn die LEDs am Modem zum Status (falls es welche gibt) ? Am besten als Vergleich den Status beim Empfang und im Idle Fall mit angeben. Ich koennte mir vorstellen das die Verbindung unterbrochen wurde und das Hylafax das nicht mitbekommt.
mail:~ # faxstat HylaFAX scheduler on mail.tett.de: Running Modem ttyS0 (+49 2202 957229): Running and idle Modem ttyS1 (+49 2202 246754): Receiving from "+49 6432 xxxxxxx"
Lediglich ein 'kill -SIGKILL pid' führt ttyS1 wieder in empfangsbereiten Zustand, 'faxabort' bringt keine Abhilfe.
Was ist mit kill -SIGHUP pid ?
TagLineFont: etc/lutRS18.pcf TagLineFormat: "From %%l|%c|Page %%P of %%T" MaxRecvPages: 25 # # # Modem-related stuff: should reflect modem command interface # and hardware connection/cabling (e.g. flow control). # ModemType: Class2.0 # use this to supply a hint #ModemRate: 19200 # max rate for DCE-DTE communication #ModemFlowControl: xonxoff # XON/XOFF flow control assumed #ModemSetupDTRCmd: AT&D2 # setup so DTR drop resets modem #ModemSetupDCDCmd: AT&C1 # setup so DCD reflects carrier
Mal probiert diese beiden einzuschalten ? ... -- Karsten Keil SuSE Labs ISDN development
Hallo,
Was sagen denn die LEDs am Modem zum Status (falls es welche gibt) ? Am besten als Vergleich den Status beim Empfang und im Idle Fall mit angeben.
Habe ich nachgefragt, der Rechner steht nicht so ganz in der Nähe ;-)
Ich koennte mir vorstellen das die Verbindung unterbrochen wurde und das Hylafax das nicht mitbekommt.
Merkwürdig ist allerdings, daß die Verbindung so häufig unterbrochen wird. Hatte auch simultan an die Liste hylafax-users geschrieben und daraufhin hylafax-4.1.5-190.src.rpm um einen Patch ergänzt, der in diesen Fällen mehr Logs ausgibt. Vermutet wird folgendes:
At this point HylaFAX awaits the +FPS response from the modem and will wait 3 minutes for it. If there isn't a response within 3 minutes there should be a timeout and an error. I assume that this is not happening in your case.
The code that waits (loops) and is supposed to timeout is ModemServer::getModemLine(). I don't see any obvious error there, and it seems to work fine otherwise.
The default ModemPageDoneTimeout is a rather large integer (180000). So it is bigger than 16-bits, so it requires a 32-bit allocation by the compiler. It and ModemPageStartTimeout are the only default timeout values that large. You could try setting it lower, say at 60000 (one minute, and within a 16-bit range) to see if the size of the timeout value is a factor.
Warten wir mal auf den nächsten Hänger...
Was ist mit kill -SIGHUP pid ?
Nicht probiert, mache ich beim nächten Fall.
#ModemSetupDTRCmd: AT&D2 # setup so DTR drop resets modem #ModemSetupDCDCmd: AT&C1 # setup so DCD reflects carrier
Mal probiert diese beiden einzuschalten ?
Die Optionen sind in /var/spool/fax/config/elsa-microlink-56k-basic-2.0 anstelle von /var/spool/fax/etc/config.ttyS0 gesetzt. Nehme an, daß beide Dateien abgearbeitet werden, oder? Danke für Deine Hilfe, Thorsten -- Thorsten Büker * Bärenstr. 19-21 / WG 3106 * 52064 Aachen Tel 0241 - 8865315 * Mobil 0163 - 2572057 * http://bueker.net Nail here for a new monitor -----> [x]
On Fri, Nov 21, 2003 at 12:29:35PM +0100, Thorsten Büker wrote:
Hallo,
Was sagen denn die LEDs am Modem zum Status (falls es welche gibt) ? Am besten als Vergleich den Status beim Empfang und im Idle Fall mit angeben.
Habe ich nachgefragt, der Rechner steht nicht so ganz in der Nähe ;-)
Ich koennte mir vorstellen das die Verbindung unterbrochen wurde und das Hylafax das nicht mitbekommt.
Merkwürdig ist allerdings, daß die Verbindung so häufig unterbrochen wird. Hatte auch simultan an die Liste hylafax-users geschrieben und daraufhin hylafax-4.1.5-190.src.rpm um einen Patch ergänzt, der in diesen Fällen mehr Logs ausgibt. Vermutet wird folgendes:
At this point HylaFAX awaits the +FPS response from the modem and will wait 3 minutes for it. If there isn't a response within 3 minutes there should be a timeout and an error. I assume that this is not happening in your case.
The code that waits (loops) and is supposed to timeout is ModemServer::getModemLine(). I don't see any obvious error there, and it seems to work fine otherwise.
The default ModemPageDoneTimeout is a rather large integer (180000). So it is bigger than 16-bits, so it requires a 32-bit allocation by the compiler. It and ModemPageStartTimeout are the only default timeout values that large. You could try setting it lower, say at 60000 (one minute, and within a 16-bit range) to see if the size of the timeout value is a factor.
Warten wir mal auf den nächsten Hänger...
Was ist mit kill -SIGHUP pid ?
Nicht probiert, mache ich beim nächten Fall.
#ModemSetupDTRCmd: AT&D2 # setup so DTR drop resets modem #ModemSetupDCDCmd: AT&C1 # setup so DCD reflects carrier
Mal probiert diese beiden einzuschalten ?
Die Optionen sind in /var/spool/fax/config/elsa-microlink-56k-basic-2.0 anstelle von /var/spool/fax/etc/config.ttyS0 gesetzt. Nehme an, daß beide Dateien abgearbeitet werden, oder?
Nein beim faxaddmodem wird /var/spool/fax/config/elsa-microlink-56k-basic-2.0 bei einem erkannten microlink 56k als Grundlage für die spätere /var/spool/fax/etc/config.ttyS0 genommen. Manchmal klappt das aber nicht so richtig und es werden doch wieder defaults eingesetzt. Also mal die Zeilen die Unterschiedlich sind austauschen. -- Karsten Keil SuSE Labs ISDN development
Hallo zusammen,
Was sagen denn die LEDs am Modem zum Status (falls es welche gibt) ? Am besten als Vergleich den Status beim Empfang und im Idle Fall mit angeben.
Gleiche Anzeige wie das Nachbar-Modem, das auf idle steht.
Die Optionen sind in /var/spool/fax/config/elsa-microlink-56k-basic-2.0 anstelle von /var/spool/fax/etc/config.ttyS0 gesetzt. Nehme an, daß beide Dateien abgearbeitet werden, oder?
Nein beim faxaddmodem wird /var/spool/fax/config/elsa-microlink-56k-basic-2.0 bei einem erkannten microlink 56k als Grundlage für die spätere /var/spool/fax/etc/config.ttyS0 genommen.
Manchmal klappt das aber nicht so richtig und es werden doch wieder defaults eingesetzt.
Also mal die Zeilen die Unterschiedlich sind austauschen.
Ah, danke, gut zu wissen, daß faxaddmodem dies nicht automatisch übernimmt. Habe in den /var/spool/fax/etc/config.ttySx alle Unterschiede zur elsa-microlink-56k-basic-2.0 manuell angepaßt bzw. bislang kommentierte Optionen ergänzt. Gruß, Thorsten -- Thorsten Büker * Bärenstr. 19-21 / WG 3106 * 52064 Aachen Tel 0241 - 8865315 * Mobil 0163 - 2572057 * http://bueker.net Nail here for a new monitor -----> [x]
participants (3)
-
Karsten Keil
-
Thorsten Büker
-
Thorsten Büker