Hylafax mit Fritz!Card

Die Installation von Hylafax mit ISDN gilt immer als etwas schwierig. Das ist so nicht ganz korrekt. Es ist durchaus machbar sofern man die ISDN-Karte richtig ins System einbindet und weiß, was in den Konfigurations-Files des Hylafax mindestens stehen muß.

Voraussetzungen

  • Ein funktionierendes  Debian GNU/Linux "Lenny"
  • Eine funktionierende AVM Fritz!Card PCI v2.0 ISDN
  • CAPI Version 2.0
  • ISDN-Karte am NTBA über den S0-Bus angeschlossen

Nachdem Hylafax keine direkte Anbindung an CAPI 2.0 Interfaces bietet,  benötigen wir für die AVM Fritz!Card zusätzlich das Paket capi4hylafax.

Einbinden der AVM-Treiber

Für seine AVM Fritz!Card v2.0 ISDN stellt die AVM Computersysteme Vertriebs GmbH nach wie vor keine aktuelle Firmware für die derzeit aktuellen Kernel zur Verfügung. Aus diesem Grund steht hier eine gepachte Version für den Kernel größer 2.6.26 zum Download bereit:

https://belug.de/~lutz/pub/fcpci/

Als Erstes entpacken wir das Tar-File und verlinken die Objektdatei "fcpci-lib.o" richtig. Denn das Modul fcpci funktioniert nicht ohne weiteres mit einem 64-bit Kernel. Das läßt sich an Fehlermeldungen wie


ld: Relocatable linking with relocations from format elf32-i386 (/var/lib/fritz/fcpci-lib.o) to format elf64-x86-64 (/usr/src/fritz_2.6.26.1/fcpci-3.11.07/fcpci.o) is not supported


erkennen.


cd /usr/src
bunzip2 fritz-fcpci-src-2.6.26.1.tar.bz2 | tar xv -
cd fritz_2.6.26.1/lib


In diesem Verzeichnis muß die Objektdatei fcpci-lib.o entsprechend der Prozessorarchitektur verlinkt werden:


ln -s 64_fcpci-lib.o fcpci-lib.o
ls -l /usr/src/fritz_2.6.26.1/lib/
-rwx------ 1 root root 581653 4. Nov 2008  32_fcpci-lib.o
-rw-r--r-- 1 root    root 823752 04. Nov 16:01 64_fcpci-lib.o
lrwxrwxrwx 1 root    root     14  4. Nov 16:36 fcpci-lib.o -> 64_fcpci-lib.o


oder für 32-bit


ln -s 32_fcpci-lib.o fcpci-lib.o


Anschließend wird das fcpci.ko-Modul gebaut. Dazu müssen wir uns in dem Verzeichnis fcpci-3.11.07 befinden.


cd /usr/src/fritz_2.6.26.1/fcpci-3.11.07
make clean
make all
mkdir /lib/modules/`uname -r`/kernel/extras
cp fcpci.ko /lib/modules/`uname -r`/kernel/extras
depmod -a


Jetzt kann das Modul geladen und getestet werden.


modprobe -r fcpci
modprobe fcpci


Somit ist die FRITZ!Card auch mit neueren Kernelversionen einsetzbar. Man generell davon ausgehen, dass die neueren Kernel mit der neuesten Modul-Version funktionieren.

CAPI einrichten

Zuerst benötigen wir das Paket Isdnactivecards.

apt-get install isdnactivecards 

Vor allem muß in der Datei /etc/isdn/capi.conf die gewünschte Karte aktiviert werden. Wir benötigen für die AVM FRITZ!Card den Zeileneintrag mit fcpci, vor dem wir das #-Zeichen entfernen:

# card          file            proto   io      irq     mem     cardnr  options
#b1isa          b1.t4           DSS1    0x150   7       -       -       P2P
#b1pci          b1.t4           DSS1    -       -       -       -
[...]
#t1pci          t1.t4           DSS1    -       -       -       -
fcpci           -               -       -       -       -       -
#fcpcmcia       -               -       -       -       -       -
#fcusb          -               -       -       -       -       -
#fxusb          -               -       -       -       -       -
[...]

Im nächsten Schritt muß der Gruppe dialout auch der Zugriff auf /dev/capi20 gewährt und der User „uucp“ auch in diese Gruppe hinzugefügt werden. Des Weiteren sollten wir zur besseren Übersicht einen Link „faxCAPI“ auf /dev/capi20 erstellen.

usermod -G dialout uucp

ls -l /dev/capi20
crw-rw---- 1 root dialout 68, 0 12. Nov 07:40 /dev/capi20

chown -R uucp:dialout /dev/capi*

grep dialout /etc/group
dialout:x:20:chipcard,uucp

ln -s /dev/capi20 /dev/faxCAPI

Da nach jedem Neustart der Link und der Besitzer uucp für /dev/capi20 fehlen, empfiehlt es sich, diese Befehle in die /etc/rc.local einzutragen, damit diese Einstellungen beim Starten des Rechners automatisch gesetzt sind:

/etc/rc.local

#!/bin/sh -e
#
# rc.local
#
/bin/chown -R uucp:dialout /dev/capi*
/bin/ln -s /dev/capi20 /dev/faxCAPI
/etc/init.d/capi4hylafax restart
/etc/init.d/hylafax restart

exit 0

 

Installation von Hylafax und Capi4hylafax

Über

apt-get -y install hylafax-server hylafax-client capi4hylafax psrip

wird Hylafax, die CAPI Schnittstelle capi4hylafax installiert. Anschließend müssen beide Dienste noch konfiguriert werden.

/etc/default/capi4hylafax:

run_capi4hylafax=1

/etc/default/hylafax:

USE_FAXGETTY=no
RUN_HYLAFAX=1

/etc/inittab:

T5:23:respawn:/usr/bin/c2faxrecv

Diese Zeile wird am Ende der inittab eingefügt.

/etc/hylafax/config:

Damit Hylafax nicht „sendfax“ für ausgehende Faxe verwendet, das mit der ISDN Karte nicht viel anfangen kann, machen wir in dieser Konfigurationsdatei den Eintrag, daß Hylafax den Ersatz „c2faxsend“ unter capi4hylafax für den Versand verwendet.

SendFaxCmd: "/usr/bin/c2faxsend"

Weitere Einträge machen wir hier mit

DialStringRules:       "etc/dialrules"
InternationalPrefix:    011
SendFaxCmd:             "/usr/bin/c2faxsend"
Use2D:                  "no"
MaxTries:               1
MaxDials:               3

 /etc/hylafax/setup.cache:

Hier tragen wir

IMPRIP='/usr/bin/psrip'

ein, sofern es noch nicht oder nicht korrekt drin steht.

/etc/hylafax/config.faxCAPI:

Die Einträge hier sind nicht unwesentlich, weil sie das Modem - in unserem Fall die ISDN-Karte - konfigurieren.

SpoolDir:               /var/spool/hylafax
FaxRcvdCmd:             /usr/bin/c2faxrecv
PollRcvdCmd:             /var/spool/hylafax/bin/pollrcvd
FaxReceiveUser:         uucp
FaxReceiveGroup:        dialout
LogFile:                /var/spool/hylafax/log/capi4hylafax
LogTraceLevel:          4
LogFileMode:            0600
{
    HylafaxDeviceName:          faxCAPI
    RecvFileMode:               0666
    FAXNumber:                  +49.711.6929510
    LocalIdentifier:            "IT-LINUXMAKER"
    MaxConcurrentRecvs:         2
    OutgoingController:         1

Dabei sind die beiden Werte für "OutgoingMSN" und "IncomingMSN" sehr wichtig. Diese sollten auf jedem Fall belegt sein.

    OutgoingMSN:                6929510
    SuppressMSN:                0
    NumberPrefix:
    UseISDNFaxService:          0
    RingingDuration:            0
    {
        Controller:             1
        AcceptSpeech:           1
        UseDDI:                 0
        DDIOffset:              "12345"
        DDILength:              3
        IncomingDDIs:
        IncomingMSNs:           "6929510"
        AcceptGlobalCall:   0
    }
}

So habe ich jetzt bereits öfters in Foren lesen können, daß die ISDN-Karte direkt am NTBA auf dem S0-Bus steckt und sich bei eingehenden Anrufen auf den anderen MSN die ISDN-Karte mit Faxtönen meldet.

Das ist dann der Fall, wenn die Software hinter der ISDN-Karte nicht weiß, auf was sie reagieren/horchen soll. Kommt also ein Anruf rein, wird die Software, in diesem Fall der Hylafax, immer antworten.

Wichtig ist es also hier diese zwei Parameter zu belegen, damit Hylafax weiß, wofür er sich verantwortlich fühlen soll. Das können auch durchaus mehrere Telefonummern sein.

Server-Neustart

Prinzipiell liegen unter Debian alle Konfigurations-Files auf “/etc“. Aus Sicherheitsgründen ist Hylafax gechrootet und deshalb befinden sich seine Konfigurations-Files unter “/var/spool/hylafax/etc“.
Bei Debian ist deshalb im Init-Script von Hylafax ein Kopierjob integriert, der die Files unter /etc/hylafax bei jeden Start von Hylafax überprüft und bei Bedarf nach /var/spool/hylafax/etc kopiert. Aus diesem Grund sind Änderungen direkt unter “/var/spool/hylafax/etc“ zwecklos, weil diese ohnehin vom Init-Script wieder überschrieben werden. Ergo werden Änderungen an Hylafax erst mit einem Reboot des Servers wirksam:

/etc/init.d/hylafax restart
/etc/init.d/capi4hylafax restart

 

Automatisches Versenden eines Deckblattes

Laut der Manpages von sendfax, generiert sendfax, das HylaFax zuarbeitet, vor einem Sendejob ein Deckblatt mit den Benutzerangaben und Faxnummer. Ist das nicht gewünscht, weil man bereits mit OpenOffice ein passendes Deckblatt hat, dann muß dem sendfax-Befehl eine Option '-n' mitgegeben werden.

Also, so sähe ein Sendebefehl ohne das Deckblatt aus:

sendfax -n -d Faxnummer Datei.ps