Capi-Over-TCP der Fritz!Box unter Linux nutzen

Kernel-Modul fbrcapi.ko

Mittlerweile gibt es ein Kernel-Modul, welches mit der Standard-CAPI aus den Distributionen läuft. Diese funktioniert mit den gängigen CAPI-Anwendungen ohne Diese neu zu übersetzen (z.B. Asterisk).

Die unten beschriebene Anleitung ist somit nicht mehr nötig und kann ggf. als Alternative verwendet werden.

Modifizierte Library libcapi20.so (obsolete)

Die Fritz!Box stellt eine Remote-CAPI Schnittstelle zur Verfügung, die bisher nur unter Windows angesprochen werden konnte (capi2032.dll). Ziel war es nun, eine ähnliche Library unter Linux zur Verfügung zu stellen, um diese Schnittstelle ebenfalls verwenden zu können.

Die Möglichkeiten sind dann ähnlich:

  • Faxe versenden und empfangen mithilfe eines Soft-DSP
  • Telefonieren mit Headset
  • Keine Modifikation an der Box nötig (außer Capi-Over-TCP anzuschalten: erst #96*2* danach #96*3*)

Unter Linux verwendet man normalerweise die libcapi20 aus dem isdn4linux Paket. Ich hatte diese ein wenig angepasst, damit man zusätzlich zur lokalen CAPI auch die Remote-CAPI der FB verwenden kann. Sollte keine lokale ISDN-Karte installiert sein, stehen nur die Controller der Remote-CAPI zur Verfügung.

Da beide Schnittstellen bedient werden können, gibt es folgendes zu beachten:

  • Man kann nur eine ApplID registrieren (pro Anwendung).
  • Das übergebene timeval-Struct bei CAPI20_WaitforMessage() wird nicht verwendet (immer 1msec)

Danach die Anwendungen mit -lcapi20 linken.

An der Stelle möchte ich mich herzlich bei allen bedanken, die daran mitgewirkt haben und noch mitwirken werden!

Mehr Informationen unter http://fbrcapi.v3v.de/libcapi20fb.html

Installation

Das modifizierte libcapi20 Paket downloaden und entpacken.

i386:

./configure
make
make install

win32:

Projektmappe unter Visual C++ 2005 öffnen und kompilieren. Das MS-SDK wird benötigt!

Die Library installiert sich nach /usr/lib. Alternativ kann man auch die vorkompilierten Binaries aus dem Paket verwenden. Die Header Dateien müssen dann manuell nach /usr/include kopiert werden.

Ein ls -la /usr/lib/libcapi20* auf der Konsole sollte dann ungefähr so aussehen:

# ls -la /usr/lib/libcapi20* 
-rw-r--r-- 1 root root 75578 Aug  2 17:34 /usr/lib/libcapi20.a
lrwxrwxrwx 1 root root    18 Aug  2 17:34 /usr/lib/libcapi20.so -> libcapi20.so.3.0.4
lrwxrwxrwx 1 root root    18 Aug  2 17:34 /usr/lib/libcapi20.so.3 -> libcapi20.so.3.0.4
-rwxr-xr-x 1 root root 39093 Aug  2 17:34 /usr/lib/libcapi20.so.3.0.4

Wichtig ist, dass die Softlinks auch korrekt auf libcapi20.so.3.0.4 zeigen.

Standardmäßig wird versucht, sich mit dem Host 'fritz.box' zu verbinden. IP-Adresse und Port lassen sich über Environment Variablen festlegen:

export FB_REMOTE_CAPI_IP=192.168.178.1
export FB_REMOTE_CAPI_PORT=5031

Weitere Einstellungen:

export FB_REMOTE_CAPI_DEBUG=X   (Debug-Ausgabe. 0=nichts, 3=alles)
export FB_REMOTE_CAPI_TCP=1     (Remote-CAPI an=1, aus=0)
export FB_REMOTE_CAPI_DEV=1     (Device-CAPI an=1, aus=0)

Mithilfe von capiinfo kann man nun prüfen, ob alles funktioniert. capiinfo befindet sich ebenfalls im libcapi20_fb Paket.

Troubleshooting

# ./capiinfo
Number of Controllers : 0
could not register - (0x1009)
  1. Ist der Capi-over-TCP auf der Fritz!Box eingeschaltet (an: #96*3*, aus: #96*2*)?
  2. Ist die IP-Adresse und der Port korrekt? Es wird standardmäßig versucht, sich mit fritz.box:5031 zu verbinden.
  3. Sind die Softlinks unter /usr/lib korrekt?
  4. ldd capiinfo eingeben und prüfen, ob libcapi20.so.3 auch auf /usr/lib/libcapi20.so.3 zeigt.

Faxen mit capifax

Für das Faxen unter Linux wird ein SoftDSP benötigt, da die CAPI der Fritz!Box kein T.30 Modem zur Verfügung stellt. Es sind daher folgende Libraries notwending:

capifax selbst besteht aus der Anwendung 'capifax' und der Library 'libcapifax.so'. Der Hilfe-Text zu capifax sieht folgendermaßen aus:

usage: capifax [OPTIONS]
OPTIONS:
 -send     [tiff_file] [controller] [msn] [target_no]
 -receive  [path] [controller] [msn]
 -rate     [2400|4800|9600|14400]
 -ident    "+00 00 0000000"
 -header   "My Name"
 -ecm      [on|off]
 -loglevel [0-3]

Faxe versenden (Ctrl. 1, externer ISDN):

capifax -send /home/maz/mytiff.tiff 1 12345 20354321

Faxe empfangen (Ctrl. 4, Analog):

capifax -receive /home/maz 4 12345

Telefonieren mit dtmfbox

Zum telefonieren kann man die dtmfbox verwenden. Die Soundeingabe/-ausgabe lässt sich über die Datei „dtmfbox.cfg“ einstellen. Diese ist vorkonfiguriert und benötigt normalerweise keine Änderung.

Beispiel:

./dtmfbox -daemon                   # dtmfbox als daemon starten   
./dtmfbox 0 -call 12345 33333333 1  # Anruf durchführen (MSN: 12345, Zielnummer: 33333333, Ctrl. 1). 0 ist die Soundkarte. 
./dtmfbox -stop daemon              # dtmfbox wieder beenden

Weitere Informationen zur dtmfbox findet sich im entsprechenden Thread.

Asterisk und chan_capi

Eine modifizierte chan_capi befindet sich ebenfalls im Forum. Damit sollte es möglich sein, den Asterisk mit der FB zu verbinden.

Wenn das Kernel-Modul fbrcapi genutzt wird, kann auf die modifizierte chan_capi verzichtet werden.

Quellen

 
gateways/avm/howtos/mods/remotecapi.txt · Zuletzt geändert: 2009/04/26 12:15 von bodega
 
Impressum
Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki