Und es geht doch

Faxen unter Linux - ja, aber. Software für Modems ist ausreichend vorhanden, nur bei ISDN-Karten sah es bisher mager aus.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen
Lesezeit: 9 Min.
Von
  • Christian Kirsch
Inhaltsverzeichnis

Immer wieder führt die Frage ‘Wie kann ich mit meiner ISDN-Karte faxen’ in den Linux-Newsgroups zur selben Antwort: ‘Geht nicht.’ Ungläubiges Staunen beim Fragesteller: Unter Windows schließlich funktioniere das problemlos, sei Linux dem Redmonder System etwa doch nicht in allen Punkten überlegen?

Solche grundsätzlichen Fragen kann man kaum beantworten, aber ein paar Aspekte helfen bei der Klärung:

  • Obwohl ISDN ein eigenes, digitales Faxformat unterstützt (G4), interessiert immer nur das ältere analoge G3-Format - es gibt einfach zu wenige G4-Geräte.
  • Die G3-Norm legt nicht nur fest, wie die Daten zu übertragen sind, sondern auch wie lange die einzelnen Schritte dabei dauern dürfen.
  • Ein Multitasking-Betriebssystem könnte diese Zeiten beim Senden zwar noch garantieren, indem es erst die gesamten Daten als Audiodatei erzeugt und diese via ISDN verschickt.
  • Beim Empfangen jedoch ist in der Regel nicht zu verhindern, dass die CPU sich plötzlich entschließt, mit der Übersetzung des Kernels oder der Auslieferung einer Web-Seite fortzufahren. Dann bräche die Faxverbindung ab.
  • Heute übliche Hardware ist zwar in der Regel schnell genug, um im privaten Einsatz die Dekodierung der CPU überlassen zu können. Es fehlt jedoch bislang an der Software, die diese Arbeit in Echtzeit erledigen könnte.

Deshalb lautete die Empfehlung an faxwillige Linuxerinnen bisher, sie mögen sich ein billiges Modem beschaffen und es mit einem der beiden Standardpakete mgetty+sendfax oder HylaFAX betreiben. Modems nämlich erledigen die zeitkritische Kommunikation mit der Gegenseite selber, ohne die CPU zu behelligen.

Seit Ende Januar kann man nun auch mit einigen passiven ISDN-Karten Faxe versenden. Es handelt sich dabei um die Speedfax+ der Sedlbauer AG und die ISURF 1.x von Siemens. Beide verfügen wie Modems über einen DSP (Digital Signal Processor), der die Wandlung von analogen in digitale Signale und umgekehrt erledigt. Dieser Hybridcharakter trug den Karten das Attribut ‘semi-aktiv’ ein.

Da sich diese Karten wie ein Faxmodem (Class 1.0) verhalten, ist ihre Integration in HylaFAX relativ unkompliziert, mgetty+sendfax arbeitet jedoch nur mit Geräten zusammen, die dem Class-2-Standard entsprechen.

Für diese Lösung ist ein Kernel-Patch erforderlich, der auf Linux 2.2.14 basiert. Er funktioniert bisher nur mit den beiden erwähnten Karten, da er deren ISAR-Chip voraussetzt. Die nächste stabile Kernel-Version 2.2.15 soll den Patch ebenso enthalten wie die Entwicklerkernel 2.3.x. Sedlbauer hat für März oder April eine weitere Karte mit dem ISAR-Chip angekündigt, diesmal für den PCI-Bus. Die heute meistens zu bekommenden ISURF-2.0-Karten benutzen einen anderen Chip, sie sind deshalb nicht zum Faxen zu benutzen.

Das Patchen des Kernels verläuft wie immer unspektakulär. Bei der anschließenden Konfiguration sollte man jedoch darauf achten, sowohl Audio- als auch Fax-Class-2-Unterstützung für ISDN zu aktivieren. Vergisst man dies, scheitern die anschließenden Startversuche von HylaFAX-Programmen mit merkwürdigen Fehlermeldungen. Ist der neue Kernel samt Modulen erzeugt und installiert, aktiviert modprobe hisax die nötigen Module. Für die Speedfax+-Karte muss man Interrupt und I/O-Bereich mit isapnp festlegen, wenn es zu Kollisionen mit bereits installierter Hardware kommt.

Anschließend ist HylaFAX zu konfigurieren. Den größten Teil dieser Arbeit erledigt faxsetup. Die nötigen Daten für das ‘ISDN-Modem’ enthält die README-Datei für den Kernelpatch. In ihr ist neben den offensichtlichen Änderungen für Vorwahl und Telefonnummer die Anpassung des Eintrags ModemResetCmds nötig. Hier muss in "AT&E56789" für ‘56789’ die Telefonnummer eingetragen sein, unter der man Faxe empfangen will.

Sendefähig wird das Ganze durch Starten von hylafaxd und faxq; dafür ist in SuSE-Linux ein init-Script enthalten. Für das Empfangen von Faxen ist zusätzlich faxgetty ttyI0 & nötig. Im Übrigen verhält sich HylaFAX, als ob es mit einem Modem arbeitet: sendfax -d <Nummer> <Datei> etwa verschickt Datei an den Empfänger Nummer. Als Eingabeformate sind dabei TIFF, PostScript und ASCII-Text akzeptiert. Wer anderes versenden will, muss sich mit den Einstellungen in /usr/lib/fax/typerules befassen.

Eine kostspieligere Alternative gibt es bereits seit einiger Zeit: Aktive ISDN-Karten ermöglichen analoges Faxen, da sie die nötige Kommunikation mit der Gegenseite wie ein Modem selbst abwickeln, die CPU also nicht belasten.

Wie das funktionieren kann, zeigt die von der Berliner Firma AVM stammende Implementierung der ursprünglich für Windows entwickelten CAPI (Common ISDN API). Sie ist zusammen mit einigen Werkzeugen bei ftp://ftp.avm.de erhältlich. Bevor interessierte Entwickler jetzt losstürzen: Bisher funktioniert das alles nur mit den aktiven ISDN-Karten derselben Firma, die rund fünfmal soviel kosten wie passive Modelle. Verschiedene Interessenten arbeiten inzwischen an einer CAPI-Portierung auf diese.

Noch handelt es sich bei AVMs Implementierung nicht um ein fertiges Produkt, sondern um eine Sammlung einzelner Dateien. Deren Installation ist zwar nicht übermäßig kompliziert, aber Erfahrung mit dem Kernelkonfigurieren und -patchen erleichtert diese Arbeit. Zunächst besorge man sich vom erwähnten FTP-Server aus /cardware/b1/linux die Dateien isdn-xxxx-yy-zz.tar.gz und isdn4k-utils-xxxx-yy-zz.tar.gz. Die erste enthält die nötigen Korrekturen für den Linux-Kernel 2.2.13, die sich nach dem Auspacken mit tar zxf im Verzeichnis isdn befinden. Das danach zu startende Script std2kern erledigt die nötigen Anpassungen automatisch - es funktioniert allerdings nur mit der bash 2.0 ohne Fehlermeldungen.

Anschließend kann man die Kernelkonfigurierung in Angriff nehmen. Dazu sollte die Unterstützung experimenteller Features (CONFIG_EXPERIMENTAL) angeschaltet sein. Natürlich ist das ISDN-Subsystem auszuwählen (CONFIG_ISDN), der Treiber für die Karte sollte als Modul übersetzt werden (CONFIG_ISDN_DRV_AVMB1), und abhängig vom Kartentyp ist CONFIG_ISDN_DRV_AVMB1_B1ISA/PCI/PCMCIA zu wählen. Anschließend erzeugen die üblichen Schritte

make dep;
make clean;
make bzImage;
make modules;
make modules_install;

den neuen Kernel, der zum Abschluss mit lilo dem Bootloader bekannt zu machen ist.

Jetzt sind die nötigen Werkzeuge aus dem isdn4k_utils-Paket zu erzeugen. Welche das sind, hängt stark von den persönlichen Vorlieben und Interessen ab, unabdingbar sind jedoch isdnctrl und avmcapictrl. Mit ersterem lassen sich sämtliche Übertragungsparameter der Karte für den IP-Betrieb einstellen, letzteres ist für das Herunterladen der Firmware in die Karte erforderlich. Zum Faxen ist auf jeden Fall capifax in der Konfiguration anzuschalten.

Um die Karte in Betrieb zu nehmen, fehlt noch die passende Firmware-Version, auf dem FTP-Server in /cardware/b1/linux/firmware erhältlich. Für SuSE findet man dort ebenfalls fertige rc-Scripts zum Einbinden der Karte beim Start des Rechners. Sie erledigen folgende Schritte:

modprobe kernelcapi
modprobe capi
modprobe b1pci
avmcapictrl load /lib/isdn/b1.t4 1

avmcapictrl lädt die Firmware in die Karte, hier ist der Pfad anzupassen. Die Firmware findet sich auf dem FTP-Server im Verzeichnis /cardware/b1/linux/firmware. Statt b1pci muss man für die ISA- und PCMCIA-Varianten der Karte b1isa beziehungsweise b1pcmcia mit modprobe laden und anschließend mit avmcapictrl I/O IRQ die passenden Parameter setzen.

Hat bis hierher alles geklappt, enthält /var/log/messages entsprechende Meldungen über die erfolgreiche Installation der Karte. Je nach gewähltem Verzeichnis finden sich capifax und capifaxrcvd in /usr/bin beziehungsweise dem eingestellten Verzeichnis. Das erste Programm dient zum Senden von Faxen, das zweite fungiert als Server zum Empfangen.

Mehr Infos

Ganz so unkompliziert wie von den Modem-Faxlösungen unter Linux gewohnt lässt sich mit diesen beiden jedoch nicht arbeiten. capifax erwartet als Eingabe eine Datei im SFF-Format, das nur im Zusammenhang mit CAPI eine Rolle spielt. Es handelt sich dabei im Wesentlichen um das bei Faxen übliche G3-Format mit einem speziellen Header, der ähnlich wie TIFF mehrere Seiten in einer Datei erlaubt.

Bisher sind die Werkzeuge zum Erzeugen und Konvertieren von SFF eher spärlich (siehe Kasten ‘ISDN-Fax für Linux im Netz’): sff2misc wandelt das Format nach JPEG und PBM, sfftobmp nach BMP (Windows Bitmap-Format) und nach PBM. Umgekehrt konvertiert pbmtosff das Portable Bitmap Format in SFF.

Zur Integration in komplette Fax-Server-Lösungen wie HylaFAX gibt es Patches, die der aktiven ISDN-Karte den AT-Befehlssatz eines Modems beibringen. Alternativ kann man die Programme capifaxd und capisendfax verwenden, die einige Unzulänglichkeiten der in den isdnutils enthaltenen Tools beseitigen. Bezugsquellen finden sich im Kasten. (ck)