BeagleBoard-xM - HylaFAX+ installieren

Nun, da ich auf meinem BeagleBoard-xM (BBxM) unter Angstrom-Linux ein USB-Modem installiert und die Voraussetzungen für das Übersetzen von C++-Programmen geschaffen hatte, konnte ich mein nächstes großes Ziel ins Auge fassen: Die Installation von HylaFAX+.

Damit sollte das BBxM in die Lage versetzt werden, in meinem Netzwerk als Faxserver für das Versenden und Empfangen von Faxen zu arbeiten. Da es kein fertiges Installations-Paket für HylaFAX(+) im Repository von Angstrom gab und wegen der fehlenden Binärkompatibilität der von HylaFax+ bereitgestellten Binaries musste ich dieses Paket selbst übersetzen und installieren.

Nach Download der Datei HylaFAX 5.5.1 und kopieren das Verzeichnis "/usr/src" auf dem BBxM ging es weiter...

Entpacken


# tar xzvf hylafax-5.5.1.tar.gz


in das Verzeichnis des entpackten Quellcodes wechseln


# cd hylafax-5.5.1/


Und nun der Anfang des Dreisatzes "./configure, make, make install"


# ./configure


meldete

... checking TIFF library version

Missing TIFF Library.

also


# opkg install libtiff-dev


dabei wurden auch gleich die JPEG-Libs mitinstalliert, die beim obigen "./configure" zwar als fehlend gemeldet wurden, den Vorgang aber nicht abbrachen (so wie die fehlenden TIFF-Libs).

Using uid uucp and gid uucp for controlling access to fax stuff.
Using uid bin and gid bin for installing programs.
Using MSB2LSB bit order for your armv7l cpu.
Looks like you need SysV getty support.
Looks like /sbin/agetty is the program to exec for a data call.
WARNING, no vgetty program found to handle a voice call, using /bin/vgetty.
WARNING, no egetty program found, using /bin/egetty.
Looks like you use ascii-style UUCP lock files.
Looks like UUCP lock files go in /var/lock.
Looks like the gs imager package should be used.
Looks like /usr/bin/gs is the PostScript RIP to use.
Setting the Fontmap path to /usr/share/ghostscript/8.15/lib:/usr/share/ghostscript/8.15/ \
Resource:/usr/share/ghostscript/fonts:/usr/share/fonts/default/ghostscript:/usr/share/ \
fonts/default/Type1:/usr/share/fonts/default/TrueType:/usr/lib/DPS/outline/base:/usr/ \
openwin/lib/X11/fonts/Type1:/usr/openwin/lib/X11/fonts/TrueType
Looks like font metric information goes in /usr/share/ghostscript/8.15/lib:/usr/share/ \
ghostscript/8.15/Resource:/usr/share/ghostscript/fonts:/usr/share/fonts/default/ \
ghostscript:/usr/share/fonts/default/Type1:/usr/share/fonts/default/TrueType:/usr/lib/DPS \
/outline/base:/usr/openwin/lib/X11/fonts/Type1:/usr/openwin/lib/X11/fonts/TrueType.
Looks like manual pages go in /usr/local/man.
Looks like manual pages should be installed with bsd-source-cat.
Press Return to Continue

also <Enter> gedrückt

HylaFAX configuration parameters (part 1 of 2) are:

[ 1] Directory for applications:        /usr/local/bin
[ 2] Directory for lib data files:      /usr/local/lib/fax
[ 3] Directory for lib executables:     /usr/local/sbin
[ 4] Directory for system apps:         /usr/local/sbin
[ 5] Directory for manual pages:        /usr/local/man
[ 6] Directory for spooling:            /var/spool/hylafax
[ 7] Directory for uucp lock files:     /var/lock
[ 8] Uucp lock file scheme:             ascii
[ 9] PostScript imager package:         gs
[10] PostScript imager program:         /usr/bin/gs
[11] Manual page installation scheme:   bsd-source-cat
[12] Default page size:                 North American Letter
[13] Default vertical res (lpi):        98

Are these ok [yes]?

erst mal <Enter>, auch wenn z.B. die "default page size" nicht stimmte ...

HylaFAX configuration parameters (part 2 of 2) are:

[14] Location of getty program:         /sbin/agetty
[15] Location of voice getty program:   /bin/vgetty
[16] Location of sendmail program:      /usr/lib/sendmail
[17] Location of TIFF tools:            /usr/bin
[18] Location of SysV init scripts:     /etc/init.d
[19] Location of SysV start scripts:    ../rc2.d ../rc3.d ../rc4.d ../rc5.d
[20] Location of SysV stop scripts:     ../rc0.d ../rc1.d ../rc6.d
[21] Name of SysV start script:         S97hylafax
[22] Name of SysV stop script:          K05hylafax
[23] Init script starts faxq:           yes
[24] Init script starts hfaxd           yes
[25] Start paging protocol:             no

WARNING, /usr/lib/sendmail does not seem to be an executable program;
         you may need to correct this before starting up the fax server.
ls: cannot access /usr/lib/sendmail: No such file or directory

Are these ok [yes]?

Also wieder <Enter> ... "./configure" ist dann ohne weitere Fehler abgelaufen, so dass ich weiter machen konnte:


# make


was natürlich auf dem BBxM länger dauerte (insgesamt ca. 8 Minuten) als auf einem "Standard-PC".

Danach:


# make install


monierte eine fehlende "/etc/ld.so.conf", die notwendig sei um "hylafax" als root starten zu können. Da es unter Angstrom-Linux keinen "ldconfig-Mechanismus" gab, musste ich also sehen, ob es auch ohne läuft.

Hinweis: Der "ldconfig-Mechanismus" dient einigen Programmen (noch) dazu, die Suchpfade zu erweitern bzw. zu ergänzen, weil sich diese Programme in Verzeichnisse installieren, die nicht im regulären System-Suchpfad stehen.

Ergänzung / Korrektur: Da durch das fehlende "ldconfig" der auf dem Angstrom vorhandene Suchpfad nicht von "make install" ergänzt werden konnte, hatte ich dies in der Datei /etc/profile von Hand gemacht. Ich habe dort die Zeile

PATH="/usr/local/bin:/usr/bin:/bin"

geändert in bzw. erweitert

PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/lib/fax"

** Ende der Ergänzung / Korrektur **

Ein abschließendes


# make clean


um unnötige Dateien (des Kompilierungsvorgangs) zu entfernen. System neu gestartet ...

*****************************************

In minicom zunächst einmal die möglichen Funktionalitäten des USB-Modems abgefragt per:


at+fclass=?


Das Modem antwortete mit

at+fclass=?
0,1,1.0,8

OK

0 ist Daten, 1 und 1.0 ist Fax. Was 8 bedeutet, werde ich später mal nachschauen. Im Moment ist das nicht wichtig.

Als nächstes habe ich dann


# faxsetup


durchgeführt. Bis auf die Angabe der eigenen Fax-Nummer (meines Telefon-Nebenstellen-Anschlusses) und die Angabe des Modemanschlusses (ttyACM0 ohne "/dev/" davor!) habe ich dabei die default-Einstellungen übernommen (kann man später alles noch in den Hylafax-conf-Dateien umkonfigurieren).

Beim testweisen Versenden von Faxen kam es immer zu Fehlern.

Ausgabe von


# tail -f /var/log/debug


FaxQueuer[3182]: JOB 7: CONVERT DOCUMENT: exit status 0xfe00
FaxQueuer[3182]: JOB 7: SEND REJECT: Document is not valid TIFF (unspecified format error)
FaxQueuer[1433]: NOTIFY: bin/notify 'doneq/q7' 'rejected' ''

Ursache war, dass

1. die Konvertierungstools nicht gefunden wurden
2. kein /home/root/etc/setup.cache vorhanden war.

1. behob ich, indem ich


# ln -s /var/spool/hylafax/bin/ps2fax.gs /usr/bin/ps2fax
# ln -s /var/spool/hylafax/bin/tiff2fax.gs /usr/bin/tiff2fax


absetzte.

2. behob ich, indem ich


# mkdir /home/root/etc
# ln -s /var/spool/hylafax/etc/setup.cache /home/root/etc


eingab.

Doch es fehlte immer noch das Konvertierungstool "gs2fax".

Zunächst stellt ich fest, dass Hylafax auf das falsche Ghostscript-Verzeichnis konfiguriert war. In /var/spool/hylafax/etc/setup.cache stand die Zeile

GSRIP='/usr/bin/gs'

Die Ghostscript-Binaries lagen aber unter /usr/bin, also änderte ich diese Zeile auf

GSRIP='/usr/bin'

Neustart des Hylafax-Dienstes (oder Neustart des BBxM) ....

und es kam zumindest nicht mehr zu den o.a. Konvertierungsfehlern.


# sendfax -f "myname@mydomain.com" -d "Recipient@VORWAHLFAXNUMMER" /home/root/test.tiff


FaxQueuer[903]: SUBMIT JOB 11

Dafür wurde aber immer noch kein Fax gesendet. Also mal weiter schauen (es sieht so aus, als ob das Modem nicht angesprochen wird) ...

*****************************************


# faxstat


HylaFAX scheduler on BBxM.meinsein.de: Running

Hmmm, da fehlt was ...

In die Datei /etc/inittab die Zeile

m0:2345:respawn:/usr/sbin/faxgetty -D ttyACM0

eingetragen, System neu gestartet und wieder


# faxstat


HylaFAX scheduler on BBxM.meinsein.de: Running
Modem ttyACM0 (MyFaxNumber): Running and idle

Das sieht schon mal besser aus.


# ps ax | grep fax


  902 ?        Ss     0:00 /usr/local/sbin/faxq
  904 ?        Ss     0:00 /usr/local/sbin/hfaxd -i hylafax

Da fehlt auch was, nämlich der "faxgetty"

Ursache: Im Gegensatz zu den sonst im Internet befindlichen Anleitungen wird das Programm faxgetty nicht in "/usr/sbin", sondern in "/usr/local/sbin" installiert. Obige Zeile in "/etc/inittab" also ändern von:

m0:2345:respawn:/usr/sbin/faxgetty -D ttyACM0

nach:

m0:2345:respawn:/usr/local/sbin/faxgetty -D ttyACM0

und schon gibt ein


# ps ax | grep fax


folgendes aus:

  902 ?        Ss     0:00 /usr/local/sbin/faxq
  904 ?        Ss     0:00 /usr/local/sbin/hfaxd -i hylafax
  922 ?        Ss     0:00 /usr/local/sbin/faxgetty -D ttyACM0
  926 ?        Ss     0:00 /usr/local/sbin/faxgetty -D ttyACM0
  928 ?        Ss     0:00 /usr/local/sbin/faxgetty -D ttyACM0
  931 ?        Ss     0:00 /usr/local/sbin/faxgetty -D ttyACM0
  934 ?        Ss     0:00 /usr/local/sbin/faxgetty -D ttyACM0
  936 ?        Ss     0:00 /usr/local/sbin/faxgetty -D ttyACM0
  938 ?        Ss     0:00 /usr/local/sbin/faxgetty -D ttyACM0
  940 ?        Ss     0:00 /usr/local/sbin/faxgetty -D ttyACM0
  942 ?        Ss     0:00 /usr/local/sbin/faxgetty -D ttyACM0
  944 ?        Ss     0:00 /usr/local/sbin/faxgetty -D ttyACM0

Hmmmm..... , ziemlich viele faxgetty-Prozesse, aber mal schauen. Zumindest scheine ich mich dem Ziel zu nähern.

In "/var/log/debug" tauchten wiederholt folgende Meldungen auf:

FaxGetty[1186]: ANSWER: Can not lock modem device
FaxGetty[938]: MODEM CX93001-EIS_V0.2002-V92 56000/
.
.    (mehrmals)
.
FaxGetty[1206]: OPEN /dev/ttyACM0  HylaFAX (tm) Version 5.5.1
FaxGetty[1206]: /dev/ttyACM0: Can not lock device.
.
.    (auch mehrmals)
.
init: Id "m0" respawning too fast: disabled for 5 minutes

Ursache war die "-D"-Option in der Zeile

m0:2345:respawn:/usr/local/sbin/faxgetty -D ttyACM0


der Datei "/etc/inittab". Der faxgetty wurde dadurch anscheinend gleich mehrfach gestartet und hat sich selbst vom device ausgesperrt, denn ansonsten wird auch nur für mehrere Modems der faxgetty mehrfach gestartet (je Modem also ein faxgetty-Prozess).

Auch hier also ein Unterschied zu den gefundenen Dokus im Internet (ob das nur für / beim BBxM gilt? Keine Ahnung).

Da ich mit dem Senden von Faxen immer noch Probleme hatte, habe ich dann mal den Empfang getestet. Von einem externen Faxgerät habe ich ein Fax auf die Anschlussnummer meines Hausfaxes angestoßen. Die Meldungen von


# tail -f /var/log/debug


waren

FaxGetty[923]: ANSWER: FAX CONNECTION  DEVICE '/dev/ttyACM0'
FaxGetty[1169]: RECV FAX (000000001): from +49 1234 5678989, page 1 in \
                0:00:19, A4 x INF, 7.7 line/mm, 2-D MMR, 14400 bit/s
FaxGetty[923]: RECV FAX: bin/faxrcvd 'recvq/fax000000001.tif' 'ttyACM0' \
               '000000001' ''
FaxGetty[1170]: RECV FAX (000000001): recvq/fax000000001.tif from \
                +49 1234 5678989, subaddress , 1 pages in 0:00:23
FaxGetty[923]: MODEM CX93001-EIS_V0.2002-V92 56000/

Im Verzeichnis "/var/spool/hylafax/recvq" lag anschließend die Datei fax000000001.tif

Na also... erster Teilerfolg! ;)

************************************

Wegen der anhaltenden Probleme beim Umwandeln von JPG, Text und TIF in per HylaFax sendbare Formate, kam nun der Versuch, ghostscript in einer neueren Version (aktuell 9.04) als die vom Angstrom-Repository (8.15) zu installieren. Dies sollte alles auf dem BBxM durchgeführt werden.

Download, entpackt, ins src-Verzeichnis gewechselt und den Dreisatz gestartet ...


# ./configure


lief bzw. ließ sich ohne Warn-, Fehlermeldungen durchführen. Nun ein


# make


das wird jetzt bei dem SRC-Paket von > 20 MByte einige Zeit dauern ...

... und der freie Arbeitsspeicher verringerte sich zeitweise von 130 MB (ich habe aber noch gnome aktiv auf dem BBxM) auf unter 20 MB, aber es lief durch

Nach ca. 35 Minuten war auch dieser Job erledigt (ohne Fehler beendet) und ein abschließendes


# make install


verfrachtete die ganzen Dateien an ihre Bestimmungsorte im BBxM-Angstrom-System. Ob es jetzt ein Fehler war, das neue Ghostscript einfach über das andere (alte) zu installieren, insbesondere weil die Installationspfade wohl unterschiedlich sind, wird sich zeigen. Evtl. werde ich als nächstes HylaFAX nochmal übersetzen und dabei darauf achten, ob die neuen Installationspfade verwendet werden. Die alte Ghostscript-Version von Angstrom lässt sich nicht einfach deinstallieren, da sie nicht ein einzelnes Paket ist.

**********************************************

Ein der o.a. Ghostscript-Installation folgendes "./configure" von HylaFax verwies noch auf die von Angstrom installierte Ghostscript-Version 8.15. Zudem sind die ausführbaren Dateien und libs der Ghostscript-Version 9.04 in andere Verzeichnisse kopiert worden. Daher habe ich in der Datei "/var/spool/hylafax/etc/setup.cache" die Zeilen

FONTPATH='/usr/share/ghostscript/8.15/lib:/usr/share/ghostscript/8.15/Resource: \
/usr/share/ghostscript/fonts:/usr/share/fonts/default/ghostscript:/usr/share/fonts/ \
default/Type1:/usr/share/fonts/default/TrueType:/usr/lib/DPS/outline/base:/usr/ \
openwin/lib/X11/fonts/Type1:/usr/openwin/lib/X11/fonts/TrueType

und

GSRIP='/usr/bin/gs'

geändert in:

FONTPATH='/usr/local/share/ghostscript/9.04/lib:/usr/local/share/ghostscript/9.04/ \
          Resource:/usr/local/share/ghostscript/fonts:/usr/share/fonts/default/ \
          ghostscript:/usr/share/fonts/default/Type1:/usr/share/fonts/default/ \
          TrueType:/usr/lib/DPS/outline/base:/usr/openwin/lib/X11/fonts/Type1: \ 
          /usr/openwin/lib/X11/fonts/TrueType

sowie

GSRIP='/usr/local/bin/gs'

(Bitte beachten: In den o.a. "FONTPATH"-Zeilen habe ich mit "\" gekennzeichnete künstliche Umbrüche erzeugt, die der Lesbarkeit in diesem Beitrag / Darstellung dienen. Falls Sie diese Zeilen per Copy and Paste übernehmen wollen, müssen sie das "\"-Zeichen sowie die Leertasten davor und danach alle löschen.)

Zudem (evtl. unnötig) die folgenden Links (nochmal) gesetzt (vorhandene *Links* zuvor gelöscht):


# ln -s /var/spool/hylafax/bin/ps2fax /usr/bin/gs2fax
# ln -s /var/spool/hylafax/bin/pdf2fax.gs /usr/bin/pdf2fax
# ln -s /var/spool/hylafax/bin/ps2fax.gs /usr/bin/ps2fax


Danach das BBxM neu gestartet und ...

das Versenden von PS-Dateien (erzeugt über die Linux-Druckfunktion => in Datei, Format PS und nach /var/spool/hylafax/tmp/ kopiert) funktionierte nun:


sendfax /var/spool/hylafax/tmp/Dateiname.ps -d "Recipient@Fax-Nummer"


FaxQueuer[882]: SUBMIT JOB 6
FaxGetty[900]: LOCKWAIT
FaxSend[1858]: MODEM CX93001-EIS_V0.2002-V92 56000/
FaxSend[1858]: SEND FAX: JOB 6 DEST Fax-Nummer COMMID 000000008 DEVICE \
               '/dev/ttyACM0' FROM 'root ' USER root
FaxSend[1858]: SEND FAX: JOB 6 SENT in 0:00:13
FaxSend[1858]: SEND FAX: JOB 6 SENT in 0:00:17

Der Versand von *.tif-Dateien (vorher empfangene und nach /var/spool/hylafax/tmp/ kopierte Faxe) funktionierte auch:


# sendfax /var/spool/hylafax/tmp/fax.tiff -d "Recipient@Fax-Nummer"


Meldungen wie beim Versand von PS-Dateien. Und weiter ...

Aber ... reine Text-Dateien (vorher per "touch test.txt erzeugt und mit einem Editor meiner Wahl etwas Text eingegeben) produzierten immer noch Fehler:


# sendfax /var/spool/hylafax/tmp/test.txt -d "Recipient@Fax-Nummer"


/usr/local/sbin/textfmt: No font metric information found for "Courier-Bold".
Usage: /usr/local/sbin/textfmt [-1] [-2] [-B] [-c] [-D] [-f fontname] [-F fontdir(s)] \
       [-m N] [-o #] [-p #] [-r] [-U] [-Ml=#,r=#,t=#,b=#] [-V #] files... >out.ps
Default options: -f Courier -1 -p 11bp -o 0
Error converting data; command was "/usr/local/sbin/textfmt -B -f Courier-Bold  \
       -Ml=0.4in -p 11 -s default >'/tmp//sndfaxM3NeXP' <'/var/spool/hylafax/tmp/test.txt'"

In den ganzen Verzeichnissen, die in der Datei "/usr/local/lib/fax/hyla.conf" (Link nach /etc/hylafax/hyla.conf gesetzt) zu FONTMAP und FONTPATH existierten, gab es keinen Font namens "Courier-Bold". Nachdem ich beides (FONTMAP und FONTPATH) auf

FontMap:   /usr/local/share/ghostscript/9.04/lib:/usr/share/fonts/X11:/usr/share/fonts/truetype
FontPath:   /usr/local/share/ghostscript/9.04/lib:/usr/share/fonts/X11:/usr/share/fonts/truetype

gesetzt hatte, konnte ich mit der Ersetzung von


# /usr/local/sbin/textfmt -B -f Courier-Bold -Ml=0.4in -p 11 -s default \
>'/tmp//sndfaxM3NeXP' <'/var/spool/hylafax/tmp/test.txt'


durch (die u.a. Datei namens "DejaVuSans-Bold.ttf" existierte in einem der Verzeichnisse aus /usr/local/lib/fax/hyla.conf)


# /usr/local/sbin/textfmt -B -f DejaVuSans-Bold.ttf -Ml=0.4in -p 11 -s default \
>'/tmp//sndfax4iXTKX' <'/var/spool/hylafax/tmp/test.txt'


zumindest folgendes erreichen:

Font DejaVuSans-Bold.ttf: /usr/share/fonts/truetype/DejaVuSans-Bold.ttf: \
                          No glyph metric table located; using fixed widths.

Die Durchführung der Textformatierung wurde also (zwar mit Warnungen, aber immerhin) durchgeführt und die temporäre Datei "/tmp/sndfax4iXTKX" angelegt.

Frage: Wo steht dieser Konvertierungsbefehl mit dem "Courier-Bold"?

Kurze Einsicht in die Verzeichnis-Struktur von HylaFAX+ => In der Datei "/usr/local/lib/fax/typerules" ... dort stand die Doppelzeile

0       ascii           x               ps      %F/textfmt -B -f Courier-Bold\
                                                -Ml=0.4in -p 11 -s %s >%o <%i

drin. Das "Courier-Bold" durch "DejaVuSans-Bold.ttf" ersetzt, also in

0       ascii           x               ps      %F/textfmt -B -f DejaVuSans-Bold.ttf\
                                                -Ml=0.4in -p 11 -s %s >%o <%i

ändern und


# sendfax /var/spool/hylafax/tmp/test.txt -d "Recipient@Fax-Nummer"


Font DejaVuSans-Bold.ttf: /usr/share/fonts/truetype/DejaVuSans-Bold.ttf: \
                          No glyph metric table located; using fixed widths.
request id is 9 (group id 9) for host localhost (1 file)

und das Fax wurde versendet :)) ...

Auch auf der Fax-Empfängerseite war es korrekt lesbar => Fertig ;)

Nun geht es an die Fein-Konfiguration von HylaFAX+ ... aber das steht dann in einem weiteren Beitrag. Dieser hier ist doch schon sehr lang geworden.