[gelöst] Asterisk 1.4.x / 1.6.x und chan_capi 1.1.4 mit Fritz!Box 7270

Tachy01

Neuer User
Mitglied seit
26 Dez 2009
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Nachdem ich heute den ganzen Tag verbracht hatte, um u.a. rauszufinden, dass es für die eingebaute Fritz!Box 7270 - CAPI over IP eine spezielle libcapi20 gibt, nachdem ich den ganzen alten Kram mit einem extra RCapi auf der Fritzbox probiert hatte (...es müssen neue HowTos her!...)

...funktioniert das mit der libcapi20_fb jetzt ganz gut.

Nur bleibe ich aber bei der chan_capi.so auf Asterisk-Seite stecken.

Asterisk ist auf einem extra Linux-Rechner installiert und soll per RCapi auf die Fritzbox zugreifen.

Auf der Fritzbox 7270 ist die rcapi aktiviert: #96*3*

Auf dem Linux-Rechner ist installiert:
- http://fbrcapi.v3v.de/dl/libcapi20_fb-0.7.tar.bz2
- ftp://ftp.melware.net/capi-utils/capiinfo-cm.tar.gz
- Asterisk 1.6.2
- ftp://ftp.chan-capi.org/chan-capi/chan_capi-1.1.4.tar.gz

Auf Remote-Seite gibt capiinfo alle gewünschten Controller aus. Also geht die Strecke bis dahin schonmal.

Asterisk 1.6.2 scheint aber Probleme mit der chan_capi.so zu haben:

Code:
[ Booting...]
[ Reading Master Configuration ]
[ Initializing Custom Configuration Options ]
[Dec 29 01:02:10] NOTICE[2779]: loader.c:978 load_modules: 1 modules will be loaded.
.[Dec 29 01:02:10] NOTICE[2779]: cdr.c:1462 do_reload: CDR simple logging enabled.
[Dec 29 01:02:10] NOTICE[2779]: loader.c:978 load_modules: 157 modules will be loaded.
.................[Dec 29 01:02:10] NOTICE[2779]: res_smdi.c:1278 load_module: No SMDI interfaces are available to listen on, not starting SMDI listener.
...[Dec 29 01:02:10] WARNING[2779]: res_musiconhold.c:961 moh_scan_files: Cannot open dir /var/lib/asterisk/moh or dir does not exist
[Dec 29 01:02:10] WARNING[2779]: res_musiconhold.c:1744 load_module: No music on hold classes configured, disabling music on hold.
.[Dec 29 01:02:10] WARNING[2779]: chan_capi.c:7812 cc_init_capi: CAPI not installed, chan_capi disabled!

die /etc/asterisk/modules.conf enthält die beiden Einträge zum Laden:

Code:
....
load => chan_capi.so

[global]
chan_capi.so=yes

Die capi.conf ist auch schon am Platz (/etc/asterisk/capi.conf).

Frage vorweg: Funktioniert die überhaupt mit der 1.6.2 oder soll ich die 1.6.1 verwenden? In den Changes stand noch nicht explizit, dass die 1.1.4 schon angepasst ist.

Kann ich also schon aufhören mit probieren und die 1.6.1 installieren?
 
Zuletzt bearbeitet:
und wenn du es so machst was gibt es dann für eine Ausgabe

[modules]
autoload=yes
;noload => chan_capi.so
[global]
chan_capi.so=yes
 
Nachtrag zu meinem ersten Post:

Meine Config hat übrigens zur Folge, dass "asterisk -c" nicht im Command-Mode bleibt, sondern nach der Fehlermeldung abbricht und in die Linux-Shell zurückkehrt.

@ichego

;noload => chan-capi.so

(auskommentiertes noload?) bewirkt die selbe Ausgabe, ebenfalls Abbruch nach Warning.

noload => chan-capi.so

"asterisk -c" startet die Asterisk dann normal, sie geht in den Command-Mode. Allerdings zeigt "module show" die chan_capi.so auch nicht an (klar, nicht geladen).
 
Ich habe nochmal eine neue virtuelle Maschine mit CentOS 5.4 aufgesetzt, diesmal mit Asterisk 1.4.28, selber Fehler.

Eins ist mir aber aufgefallen:

bevor ich die libcapi20_fb-0.7.tar.bz2 installieren konnte, musste ich die libcapi20-3.0.5-cm.tar.gz vorher installieren, um die Header zu bekommen.

Danach sahen die symbolischen Links in /usr/lib so aus:

Code:
-rw-r--r-- 1 root root 93184 29. Dez 13:32 libcapi20.a
-rw-r--r-- 1 root root 26028 29. Dez 13:18 libcapi20dyn.a
-rwxr-xr-x 1 root root   823 29. Dez 13:32 libcapi20.la
lrwxrwxrwx 1 root root    18 29. Dez 13:32 libcapi20.so -> libcapi20.so.0.0.7
lrwxrwxrwx 1 root root    18 29. Dez 13:32 libcapi20.so.0 -> libcapi20.so.0.0.7
-rwxr-xr-x 1 root root 75526 29. Dez 13:32 libcapi20.so.0.0.7
lrwxrwxrwx 1 root root    18 29. Dez 13:18 libcapi20.so.3 -> libcapi20.so.3.0.5
-rwxr-xr-x 1 root root 81404 29. Dez 13:18 libcapi20.so.3.0.5

Danach erst funktionierte das compilierte capiinfo, das gibt auch 0.7 aus, hat also die 0.7 gezogen:

Code:
....
CAPI Version: 2.0
Manufacturer Version: 0.00-07  (0.7)
...

Danach wurde die chan_capi.so compiliert. Ich nehme mal an, dass die auch die korrekte libcapi gezogen hat ?! Oder muss ich da noch was spezielles einstellen?

Asterisk selbst liefert aber nach wie vor den selben Fehler.
 
Nachtrag ;)

.... habe mal spasseshalber das Makefile der chan_capi - Sourcen abgeändert:

Code:
[....]
USE_OWN_LIBCAPI=no
[....]

Danach chan_capi.so neu installiert....

Code:
[....]
[Dec 29 14:00:59] ERROR[4016]: chan_capi.c:7966 cc_post_init_capi: Unable to listen on contr1 (error=0x100f)
[Dec 29 14:00:59] NOTICE[4016]: chan_capi.c:7977 cc_post_init_capi: Unused contr2
[Dec 29 14:00:59] NOTICE[4016]: chan_capi.c:7977 cc_post_init_capi: Unused contr3
[Dec 29 14:00:59] NOTICE[4016]: chan_capi.c:7977 cc_post_init_capi: Unused contr4
[Dec 29 14:00:59] NOTICE[4016]: chan_capi.c:7977 cc_post_init_capi: Unused contr5
..........................................[Dec 29 14:00:59] NOTICE[4021]: chan_capi.c:7047 capidev_loop: Started CAPI device thread for CAPI Appl-ID 7.
[....]

capiinfo geht aber.

Unable to listen on contr1..... welche libcapi20 zieht er sich da jetzt ?

capi info aus der CLI zeigt:

Code:
localhost*CLI> capi info
Common ISDN API Driver (1.1.4) www.chan-capi.org
Contr1: 2 B channels total, 2 B channels free.
Contr2: 2 B channels total, 2 B channels free. (unused)
Contr3: 2 B channels total, 2 B channels free. (unused)
Contr4: 1 B channels total, 1 B channels free. (unused)
Contr5: 5 B channels total, 5 B channels free. (unused)
localhost*CLI>
 
Zuletzt bearbeitet:
Örx....

zufällig entdeckt:

http://www.ip-phone-forum.de/showpost.php?p=1092996&postcount=48

Nur eine modifizierte chan_capi V1.1.1 läuft zusammen mit der Fritzbox.. ohje. So ein Chaos!

Code:
[Dec 31 15:27:47] NOTICE[18481]: chan_capi.c:6007 cc_post_init_capi: Unused contr2
[Dec 31 15:27:47] NOTICE[18481]: chan_capi.c:6007 cc_post_init_capi: Unused contr3
[Dec 31 15:27:47] NOTICE[18481]: chan_capi.c:6007 cc_post_init_capi: Unused contr4
[Dec 31 15:27:47] NOTICE[18481]: chan_capi.c:6007 cc_post_init_capi: Unused contr5
................[Dec 31 15:27:47] NOTICE[18489]: chan_capi.c:5089 capidev_loop: Started CAPI device thread.

"capi info" gibt aus:

Code:
Common ISDN API Driver (1.1.1) www.chan-capi.org
Contr1: 2 B channels total, 2 B channels free.
Contr2: 2 B channels total, 2 B channels free. (unused)
Contr3: 2 B channels total, 2 B channels free. (unused)
Contr4: 1 B channels total, 1 B channels free. (unused)
Contr5: 5 B channels total, 5 B channels free. (unused)

Kein Unterschied, das blickt ohne Anleitung kein Mensch!

Raustelefonieren mit ISDN geht jetzt, ich kämpfe mich durch die config-Files, um auch die ankommenden Rufe zu fangen.
 
Welche Version von chan_capi nutzt du denn nun? Eigentlich sollte chan_capi mit jeder libcapi laufen, egal welches Interface/Protokoll darunter liegt (dafür ist eine lib ja da).
Das aktuelle chan_capi Paket liefert auch eigenen libcapi (wie libcapi-cm) mit, damit man auch ohne separate libcapi das nutzen kann. Mit
USE_OWN_LIBCAPI=no
schaltet man das aus und es wird die vorhandene libcapi verwendet. Wenn eine Änderung in chan_capi für die libcapi_fb notwendig ist, dann denke ich eher an einen Fehler in der libcapi_fb.

Armin
 
Hallo Armin,

ja, das war ein übles Gebastel.... ;) Ich benutze jetzt folgende Konstellation:

Asterisk-Server (ARTIGO Pico-ITX, CentOS 5.4):
- Asterisk 1.4.28
- chan_capi-1.1.1_mod2
- libcapi20_fb-0.7

Fritzbox (FRITZ!Box Fon WLAN 7270 v3 - Firmware-Version 74.04.80 ):
- eingebaute AVM-RCapi der Fritzbox (Aktivierung durch #96*3* )


Der erste Versuch, damit Deine libcapi:

ftp://ftp.melware.net/capi-utils/libcapi20-3.0.5-cm.tar.gz

... laufen zu lassen, schlug fehl, ein darauf compiliertes capiinfo erkannte die normale AVM-RCapi nicht.

Deswegen habe ich über Deine installierte libcapi diese hier:

http://fbrcapi.v3v.de/dl/libcapi20_fb-0.7.tar.bz2

compiliert und drüber installiert (anders geht es ja nicht, weil diese _fb die Headerfiles Deiner libcapi braucht).

Danach habe ich dann die chan_capi 1.1.4 compiliert (USE_OWN_LIBCAPI=no), die wiederum nicht ging, weil Asterisk beim Hochfahren die Kanäle nicht richtig initialisieren konnte. Die chan_capi-1.1.1_mod2.tar.gz (USE_OWN_LIBCAPI=no) dagegen brachte das gewünschte Ergebnis, die Kanäle konnten angesprochen werden.

Habe ich da was übersehen? Welche Versionen sollte ich nochmal versuchen?

.... Kein Problem für mich, ich habe noch genug virtuelle Maschinen :)
 
Zuletzt bearbeitet:
Ich denke nicht, dass du was übersehen hast. Ich habe mir den Code von chan_capi-1.1.1_mod2.tar.gz mal angesehen. Danach sieht es so aus, dass hier im chan_capi code nur eine kleine Änderung gemacht wurde: Die FB capi over tcp hat wohl ein Problem mit mehrfach register/release, was bei direktem CAPI (und rcapi) normal ist. Deswegen diese Anpassung im chan_capi code. Zusätzlich ist hier aber auch der chan_capi eigene libcapi code ausgetauscht worden. Das heisst du müsstest chan_capi-1.1.1_mod2.tar.gz mit USE_OWN_LIBCAPI=yes ohne separate libcapi verwenden können.
Wenn du eine neuere chan_capi verwenden willst, dann sollte es mit deiner libcapi_fb und USE_OWN_LIBCAPI=no klappen, wenn du die kleine Änderung in chan_capi.c machst.

Armin
 
Alles klar, danke für Deine Hilfe, ich werde es mit einer aktuellen chan_capi 1.1.4 mit eigener Modifikation in der chan_capi.c versuchen und auf "meiner" capi_fb 0.7" aufsetzen.

Um mich nicht ganz dumm sterben zu lassen: Warum funktioniert die FB capi over tcp nur mit dieser speziellen capi20_fb 0.7 zusammen und nicht mit Deiner?

Was ist der Grund für die Modifikationen?
 
Um mich nicht ganz dumm sterben zu lassen: Warum funktioniert die FB capi over tcp nur mit dieser speziellen capi20_fb 0.7 zusammen und nicht mit Deiner?
Es ist einfach ein anderes Protokoll. In meiner libcapi wird für rcapi (capi over tcp) das Bintec Protokoll verwendet. Dies wurde zuerst im Programm "rcapid" verwendet, um einen Bintec-ISDN-Router für Windows-Bintec-Remote-CAPI zu emulieren. Mit meiner libcapi war dann nun auch die Client-Seite unter Linux möglich.
Die _fb Variante verwendet ein anderes Protokoll auf TCP. Warum und woher das kommt, kann ich nicht sagen.
Bei Fritzbox bin ich nicht ganz auf dem neusten Stand, aber ich hatte mal eine Fritzbox mit dem Freetz-Projekt versehen und da konnte ich dann das _fb remote capi abschalten und den rcapid verwenden.
Ich gehe also davon aus, dass die _fb Variante eine AVM Erfindung ist.

Armin
 
Zur Dokumentation für die Mitlesenden:

Ich habe mir das diff der 1.1.1 zur 1.1.1_mod2 mal angeschaut.

Es wurden in der chan_capi.c der 1.1.1_mod2 ab Zeile 3209 auskommentiert:

Code:
                /*
                rxavg = rxavg / j;
                for (j = 0; j < ECHO_EFFECTIVE_TX_COUNT; j++) {
                        txavg += i->txavg[j];
                }
                txavg = txavg / j;

                if ( (txavg / ECHO_TXRX_RATIO) > rxavg) {
                        if (capi_capability == AST_FORMAT_ULAW) {
                                memset(b3buf, 255, b3len);
                        } else {
                                memset(b3buf, 85, b3len);
                        }
                        cc_verbose(6, 1, VERBOSE_PREFIX_3 "%s: SUPPRESSING ECHO rx=%d, tx=%d\n",
                                        i->vname, rxavg, txavg);
                }
                */

....und ab Zeile 5820:

Code:
//      if (capi_ApplID_old != CAPI_APPLID_UNUSED) {
//              if (capi20_release(capi_ApplID_old) != 0)
//                      cc_log(LOG_WARNING,"Unable to unregister from CAPI!\n");
//      }


In der 1.1.4 waren das die Zeilen 4266 und 7785.


....angepasst, compiliert, läuft! Vielen Dank, Armin!


Meine abschliessend lauffähige Konfiguration (Stand 1.1.2010) sieht jetzt so aus:

Asterisk-Server (ARTIGO Pico-ITX, CentOS 5.4):
In dieser Reihenfolge installieren:
- libcapi20_fb-0.7 (Achtung, vorher libcapi20-3.0.5-cm installieren)
- Asterisk 1.4.28
- chan_capi-1.1.4 (modifizierte chan_capi.c, Anpassung siehe oben)

Fritzbox (FRITZ!Box Fon WLAN 7270 v3 - Firmware-Version 74.04.80 ):
- eingebaute AVM-RCapi der Fritzbox (Aktivierung durch #96*3* )

Kleiner Netzwerkplan:
netzwerkh.png
 
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.