CAPI-Konzept von Linux?

telchef

Neuer User
Mitglied seit
17 Dez 2005
Beiträge
112
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen!

Sehe den Wald vor lauter Bäumen nicht mehr (und habe so viel vergessen), kann mir jemand kurz auf die Sprünge helfen (und kennt vielleicht einen Link zu einer guten Übersichtsseite)?

Wie ist eigentlich das CAPI-Konzept von Linux aufgebaut?



Bei Windows ist es ja quasi einfach:

CAPI-nutzende Applikation -> capi2032.dll (vom ISDN-HW-Hersteller) -> ISDN-HW-Treiber (vom ISDN-HW-Hersteller) -> ISDN-HW

(Wobei die ISDN-HW auch über's LAN angebunden sein kann [Remote CAPI].) (Einschränkung: Nur ein ISDN-HW-CAPI-Anbieter zur gleichen Zeit möglich.)

Hier kann man schnell und einfach durch Deinstallation von CAPI+Treiber die ISDN-HW austauschen. Die CAPI-nutzenden Applikationen merken das nahezu nicht.



Bei Linux scheinen viele Bestandteile dabei zu sein, ich sehe nur ein Durcheinander:

CAPI-nutzende Applikation (z.B. Asterisk) mit chan_capi (und ggf. spezieller libcapi20?)

capi (?) (wohl ein device, s.u.)
capifs -> capi
kernelcapi -> capi
kernelcapi -> fcpci (bei AVM FRITZ!Card), oder b1pci (bei AVM B1)
capiutil -> kernelkapi

Dann gibt's da noch ne "übliche" "libcapi20" (vermutlich ursprünglich von AVM eingebracht) zusammen mit "capiutils". Wo ist das einzuordnen?

Ist die "libcapi20.so" das, was unter Windows die "capi2032.dll" ist, also das einzuge, was CPAI-nutzende Applikationen ansprechen? Ist isdn4linux/mISDN "nur" der Treiberunterbau (den eben libcapi20 anspricht) für eine Reihe von ISDN-Karten? Woher kommt die "libcapi20.so", welche nimmt man am besten (chan_capi bringt ja auch eine mit, aber man sieht gar nicht, wo die landet - möglicherweise fest einkompiliert in's chan_capi-Modul?)?

Was ist /dev/capi und /dev/capi20?
Was ist das Modul "capifs"?



Diese Darstellungen zeigen schon einiges, bringen mich aber nicht richtig weiter:

Kernelmodule: isdn4Linux (veraltet) / mISDN (aktuell):
http://www.isdn4linux.de/faq/i4lfaq-1.html#ss1.1

mISDN:
http://www.misdn.org/index.php/About_mISDN

capi4linux:
http://www.avm.de/de/Service/Servic..._Praxis_und_Tipps/CAPI4Linux.php?portal=Linux



Die Frage, die mich drauf brachte, war eigentlich:

Wie tausche ich bei einem Linux-System die FRITZ!Card gegen eine Remote-Capi von Funkwerk (ftp://ftp.funkwerk-ec.com/bintec/libcapi/), um letztlich Asterisk mit chan_capi darüber zu nutzen?



Müßte ich, damit chan_capi die Funkwerk-"libcapi" benutzt, diese speziell als Shared Library kompilieren, und chan_capi dann extra anpassen/kompilieren, damit es eben diese libcapi von Funkwerk benutzt (könnte dann z.B. benannt werden als "libcapi2.so" [aus libcapi2.c])?


Danke, Harald
 
Die Struktur ist unter Linux eigentlich gleich, aber mit mehr Möglichkeiten. Von der Hardware aus gesehen wird mit dem Kernel-CAPI Treiber eigentlich nur die /dev/capi20 Schnittstelle zur Verfügung gestellt. Diese kann man auch direkt mit seiner Applikation benutzen, aber natürlich ist ein Library hier meist von Vorteil und eh die gängige Methode. Ausser diesem /dev/capi20 wird (sofern im Kernel aktiviert) noch capifs zur Verfügung gestellt, dies wird dann nach /dev/capi 'gemountet', ist als middleware-extension bekannt und benötigt man nur, wenn man pppd direkt auf capi machen will.

Die standard libcapi20 ist Bestandteil der isdn4k-utils und bei allen Distris eigentlich dabei. Die meisten CAPI-basierten Applikationen nutzen diese API auch.
Ich hatte vor einiger Zeit mal einen fork dieser libcapi20 gemacht und das remote-Capi eingebaut. Hier ist es dann möglich dass die CAPI Applikationen die CAPI-ISDN-Karte auf entfernten Rechnern über TCP-IP nutzen. Diese Version der libcapi20 ist wie die originale, nur mit erweiterten Features.
Und diese Version ist auch im chan_capi Paket mit drin und man kann entscheiden, ob diese mitgelieferte lib oder die vom System verwendet (beim Bauen) werden soll. Entscheidet man sich für die mitgelieferte (default) benötigt man keine installierte Version auf dem System und sie ist Bestandteil von chan_capi.so. Dies ist vor allem für kleine embedded Systeme interessant oder wenn man keine weiteren Abhängigkeiten haben will.
Wenn du eine libcapi auf deinem System, z.B. auch eine besondere vom Kartenhersteller verwenden willst, weil der nicht standard /dev/capi20 nutzt wie gerdes, dann musst du nur diese libcapi installieren (mit headers) und mit 'make USE_OWN_LIBCAPI=no' chan_capi bauen.

Ich hoffe das ist einigermassen verständlich.

Armin
 
Wie Du schon richtig schreibst, wird unter Windows die capi2032.dll vom ISDN-HW-Hersteller geliefert, mit der Folge, daß man nur eine gleichzeitig nutzen kann.

Unter Windows gibt es ein allgemeines CAPI-Modul im Kernel, bei dem sich verschiedene ISDN-HW-Treiber registrieren können, also fcpci oder b1pci oder andere, und zwar auch gleichzeitig. mISDN ist davon zunächst unabhängig, hat aber auch ein Modul, mit dem man mISDN-Hardware über CAPI ansprechen kann.

Der Zugriff auf die CAPI geht über /dev/capi20, AVM hat eine CAPI-Dokumentation, die auch die UNIX Schnittstelle beschreibt. Um das zu vereinfachen, gibt es die libcapi. Dann gibt es die schon erwähnte erweiterte libcapi, die zusätzlich Remote-Verbindungen unterstützt. Irgendwo hier im Forum wurde auch schon eine Kernel-Implementierung dieser Remote-CAPI vorgestellt. Das hat den Vorteil, daß diese genau so wie jede andere Hardware auch behandelt wird und man nicht in der libcapi dafür tricksen muß.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.