Een ISDN fax met Linux

ArticleCategory:

SystemAdministration

AuthorImage:

Sebastian Bauer

TranslationInfo:

original in de Sebastian Bauer 

de to en Sebastian Bauer

en to nl Guus Snijders

AboutTheAuthor:

In het begin van mijn tijd aan de universiteit liep ik tegen Linux aan. Sindsdien heb ik wat geleerd en waardeer de vrijheid en de mogelijkheden die men heeft met Linux en open source. Mijn homepage is te vinden op www.goblin.kicks-ass.org

Abstract:

In dit artikel gaan we kijken hoe je je Linux box kunt gebruiken als ISDN fax machine met een ISDN kaart van AVM en de hylafax suite.

ArticleIllustration:

pinguin_fax

ArticleBody:

Introductie

Je hebt niet veel software nodig om Linux te gebruiken voor het versturen van faxen over ISDN.

In dit artikel zal ik me beperken tot passieve kaarten van AVM, omdat ik alleen voor deze drivers voor Linux heb gezien. Behalve die kaarten zouden actieve kaarten ook moeten werken, maar die kon ik niet testen, omdat ik me die niet kon veroorloven (voor hardware vrijgevigheid kun je contact met me opnemen). Ik zal ieder programma in dit artikel van source compileren om me er van te verzekeren dat het op zoveel mogelijk Linux distributies werkt. Ik heb het getest met een FritzCard PCI en een ISDN Adaptor Classic (ISA) met SuSE 8.1 en Redhat 8.0 (het werkte hiermee). Helaas kan ik niet garanderen dat het werkt met andere configuraties.

Kernel instellingen

Voor de volgende stappen MOET je een kernel hebben met ondersteuning voor capi, dus moet je eerst een nieuwe kernel compileren. Informatie over het compileren van een kernel is te vinden op The Linux Documentation Project, bijvoorbeeld in de kernel HowTo. Veel distributies hebben geen capi ondersteuning in hun kernel of gebruiken geen standaard sources, het is dus het handigste om de standaard kernel source van www.kernel.org te gebruiken. Behalve de kernel instellingen die nodig zijn voor je hardware, moet je de volgende ISDN specifieke opties inschakelen.

Kernel Settings

De kernel kun je zoals gewoonlijk compileren met

make dep
make bzImage
make modules
make modules_install

Daarna dien je te herstarten met de nieuwe kernel, en vervolgens kun je verdergaan met de installatie van capi4linux.

capi4linux

Officiëel zijn de capi4linux drivers van AVM alleen beschikbaar voor SuSE Linux, maar je kunt ze met iedere andere distributie (kernel) gebruiken. Eerst download je de drivers voor jouw kaart van www.avm.de. Controleer of het de juiste drivers voor jouw kaart zijn. De versie van SuSE is bijna irrelevant, maar het zou op z'n minst dezelfde major release versie van gcc moeten zijn als jij gebruikt. Nu kun je het archief uitpakken met

tar xfz fcpci-suseX.X-XX.XX.XX.tar.gz

of

tar xfz fcclassic-suseX.X-XX.XX.XX.tar.gz

respectievelijk. Vervolgens kun je het bestand src.drv/fcpci.o of src.drv/fcclassic.o compileren met

make

in de directory fritz. Het bestand dient dan gekopieerd te worden naar /lib/modules/2.4.XX/kernel/drivers/isdn/avmb1/. Daarna moet je een


 depmod
doen, om de systeem afhankelijkheden goed te krijgen. De foutmelding Unresolved symbols in /lib/modules/2.4.XX/kernel/drivers/isdn/avmb1/fcpci.o die zeker zal opduiken kan genegeerd worden. om de configuratie van je ISDN kaart af te ronden, maak je het bestand /etc/capi.conf. Het voorbeeld bestand van AVM ziet er als volgt uit:

# card      file    proto  io     irq  mem  cardnr  options
#b1isa      b1.t4   DSS1   0x150  7    -    -       P2P
#b1pci      b1.t4   DSS1   -      -    -    -
#c4         c4.bin  DSS1   -      -    -    -
#c4         -       DSS1   -      -    -    -
#c4         -       DSS1   -      -    -    -       P2P
#c4         -       DSS1   -      -    -    -       P2P
#t1isa      t1.t4   DSS1   0x340  9    -    0
#t1pci      t1.t4   DSS1   -      -    -    -
#fcpci      -       -      -      -    -    -
#fcclassic  -       -      0x300  5    -    -

Hier dien je het commentaarteken (#) voor de regel met jouw kaart te verwijderen. Als je de fcclassic regel gebruikt, moet je deze waarschijnlijk bewerken, zodat deze overeenkomt met je hardware instellingen.

capi4k-utils

De capi4k-utils bieden een paar bruikbare tools voor de capi interface. Om deze te installeren heb je het broncode bestand nodig, welke je capi4k-utils-XXXX-XX-XX.tar.gz hier kunt downloaden. Deze kun je uitpakken met

tar xfz capi4k-utils-XXXX-XX-XX.tar.gz

Nu kun je de capi4k-utils compileren en installeren met

cd capi4k-utils
make menuconfig
make
make install

Je kunt de opties bij make menuconfig laten zoals zijn als je twijfeld, maar je moet zeker weten dat ze overeenkomen met de andere instellingen die je later opgeeft. Nu zou je de volgende ingangen in /etc/modules.conf moeten toevoegen of wijzigen:

alias char-major-43 capidrv
alias char-major-44 capidrv
alias char-major-45 capidrv

Na deze voorbereiding, kun je de capi modules laden met

capiinit start
modprobe capidrv

en ze weer ontladen met

rmmod capidrv
capiinit stop

Als er foutmeldingen optreden tijdens het ontladen van de modules - negeer ze! ik heb een klein opstart script geschreven dat deze laad/ontlaad procedure geautomatiseerd:

#!/bin/bash
#
# System startup script for the isdn-capi subsystem

case "$1" in
     start)
        echo -n "Setting up capi-drivers for ISDN subsystem"
        capiinit start
        modprobe capidrv
        ;;

     stop)
        echo -n "Remove capi-drivers for ISDN subsystem"
        rmmod capidrv
        capiinit stop
        ;;
     restart)
        $0 stop
        $0 start
        ;;
     *)
        echo "Usage:$0{start|stop|restart}"
        ;;
esac
exit 0

Dit script kun je kopiëren naar /etc/init.d of /etc/rc.d respectievelijk en kun je gebruiken om de capi moduls automatisch te laden tijdens het booten.

libtiff

Als je libtiff niet hebt geïnstalleerd op je systeem of je de libtiff rpm niet de benodigde header bestanden oplevert, zul je deze moeten compileren van source en installeren, voordat je verder kunt gaan met hylafax. Het libtiff pakket kan worden gedownload van www.libtiff.org en alles zou moeten werken met

tar xfz tiff-vX.X.X.tar.gz
cd tiff-vX.X.X
./configure
make
make install

Nu kun je verder gaan met de installatie van hylafax.

hylafax

Om hylafax te installeren, heb je de broncode nodig van www.hylafax.org. Na

tar xfz hylafax-X.X.X.tar.gz

gebruik je

cd hylafax-X.X.X
./configure

Bij de volgende vragen stel je de spool directory (optie 7) in op /var/spool/fax en de papier grootte (optie 13) op A4. De overige instellingen kun je laten zoals ze zijn. Daarna kun je hylafax installeren met

make
make install
faxsetup

Nu kun je faxsetup gebruiken om de instellingen goed te zetten voor je regio nummer, internationale code (beide zonder de eerste nullen - deze komen bij de Long Distance Prefix en Int. Distance Prefix) enzovoort. Belangrijk: De laatste vraag, degene voor

faxaddmodem

moet beantwoord worden met NO. Tenslotte dien je het script /etc/init.d/hylafax of /etc/rc.d/hylafax resp. een beetje aanpassen. Voeg

$ECHO "Starting capifax receive..."
/usr/local/bin/c2faxrecv &

toe aan het einde van de start sectie en

$ECHO "Shutting down capifax receive..."
killall -15 c2faxrecv

aan het begin van de stop sectie. Deze aanpassingen zijn om de faxreceive daemon te starten als hylafax wordt gestart.

capi4hylafax

hylafax was gemaakt voor "echte" modems en daardoor dien je de capi4hylafax patch te installeren. Deze patch laat je ISDN kaart aan hylafax als een modem zien. Om de patch te installeren, kun je de tarball ophalen van www.avm.de en uitpakken met

tar xfz capi4hylafax-XX.XX.XX.tar.gz

Vervolgens gebruik je

cd capi4hylafax-XX.XX.XX
./install

om de patch te configureren en te installeren. De parameters die gezet moeten worden, worden uitgelegd in de volgende tabel:

Outgoing MSN (uitgaande MSN) Dit is het nummer (zonder regiocode) dat capi4hylafax gebruikt om een fax te versturen. Als Supress MSN niet op 0 wordt gezet, kan de ontvangen dit nummer ook bovenaan de fax zien.
Incoming MSN (binnenkomende MSN) Dit is het nummer (weer zonder regiocode) dat wordt gebruikt om faxen te ontvangen. Als je meerdere nummers wil gebruiken, kun je ze scheiden met kommas.
DDI Parameter Deze opties zijn nodig voor operatie met een PBX ISDN point-to-point lijn met direct dial-in (DDI). DDIOffset is het nummer dat voorgaat, de extensie en DDILength is de lengte van de extensie. Bij IncomingDDIs kun je een lijst van gebruikte extensies opgeven.
Voorbeeld: fax number 123456-78
DDIOffset = 123456, DDILength = 2
FaxNumber Dit nummer zal de ontvanger zien. Hylafax kan niet overweg met spaties, dus zou de vorm 00XX.XX.XXXXXXXX gebruikt moeten worden. De punten worden vervangen door spaties.
FaxIdentifier Hier kun je je naam of bedrijfsnaam opgeven. Deze entry duikt ook op in de faxen die je verstuurd.
NumberPrefix Deze optie definieert de digit die nodig is om een buitenlijn te benaderen als je gebruik maakt van een PBX (meestal "0").

Na het instellen van alle opties zoals beschreven zou je in staat moeten zijn om een fax te versturen met

c2faxsend -f TIFF -d [TelNum] [TIFF-File]

en om er een te ontvangen met

c2faxrecv -f TIFF

Tot dit punt heb je hylafax niet nodig. Bovenstaande commando's zijn gewoon een basis controle om te zien of de installatie werkt.

Testen

Nu alles is geïnstalleerd en zou moeten werken, is het tijd om hylafax te herstarten (/etc/init.d/hylafax restart of iets dergelijks) en probeer eens om een fax naar iemand te sturen.

sendfax -n -d [TelNum] [Fax-File]

Je kunt vele bestandsformaten gebruiken voor Fax-File, zoals PostScript, PDF of TIFF. Wanneer een fax wordt ontvangen, zou c2faxrecv de oproep moeten accepteren en de fax in /var/spool/fax/recvq plaatsen als een TIFF bestand.

Ten Slotte...

Volgens AVM kun je de capi drivers gebruiken alleen met een passieve ISDN kaart gebruiken omdat bijvoorbeeld het versturen van een fax nogal een belasting op de cpu legt. Voor mij werkte het vesturen en ontvangen van faxen goed, zelfs wanneer ik (tegelijkertijd) een kernel compileerde (Pentium-MMX 166 MHz). Er zijn ook berichten geweest van ambitieuze ISDN gebruikers in de.comp.os.unix.linux.isdn van mensen die met succes twee of meer passieve ISDN kaarten tegelijkertijd hebben gebruikt. Maar dit alles en ook de vele mogelijkheden behalve de standaard ie hylafax levert zijn teveel voor dit artikel.

Ik weet uit mijn eigen ervaring dat het versturen van faxen over ISDN niet de eenvoudigste taak is - als je niet weet waar en hoe ermee te beginnen kan echt irritant zijn. Maar ik hoop dat ik iemand kan helpen wijs te worden uit de capi chaos.

Iedereen die het probeert - succes met faxen...