[Gelöst] Asterisk 1.6 mit chan_capi startet nicht / bleibt hängen (Debian stable 64bit)

Sir_Twist

Neuer User
Mitglied seit
25 Aug 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich hatte bislang auf einem Debian stable (2.6.32-5-686) eine Asterisk mit chan_capi laufen, die das ISDN via Remote CAPI von einen Bintec-Router importiert hat.

Nach derNeuinstallation des Linux-Rechners auf neuer Hardware funktioniert die Verbindung zum Bintec-Router nicht mehr, asterisk hängt bei der Initialisierung. Ein Aufruf mit "asterisk -dvvvc" gibt als letzte Zeile aus:
Code:
  == Parsing '/etc/asterisk/capi.conf':   == Found

Wenn ich asterisk mit einem strace starte, erhalte ich folgende Ausgabe:
Code:
connect(32, {sa_family=AF_INET, sin_port=htons(2662), sin_addr=inet_addr("<ip des bintec-routers>")}, 16) = 0
write(32, "\0\27\0\0\0\0\362\377\0\0\0\0\0\0\0\10\2\0\7\0\240\0\2", 23) = 23
read(32,

Starte ich diesen strace auf dem alten 32bit-System, kommt:
Code:
connect(18, {sa_family=AF_INET, sin_port=htons(2662), sin_addr=inet_addr("<ip-adresse des bintec-routers>")}, 16) = 0
write(18, "\0\27\25\0\0\0\362\377\0\0\0\0\0\0\0\10\2\0\7\0\240\0\2", 23) = 23
read(18, "\0\f", 2)                     = 2
time(NULL)                              = 1362771749
read(18, "\n\0\0\0\363\377\0\0\0\0", 10) = 10
write(17, "\0\16\f\0\0\0\340\377\0\0\0\0\0\0", 14) = 14
.....

Es wird die chan-capi aus der Debian-Distribution verwendet:
Code:
-rw-r--r-- 1 root root 295856  7. Mai 2010  /usr/lib/asterisk/modules/chan_capi.so

Der Versuch, die aktuelle 1.1.6 zu übersetzen, endet mit den Fehlermeldungen, die ich in einem Nachbarthread gefunden habe.

Per Hand installiert habe ich die libcapi20-3.0.5-cm2, wie auch schon auf dem alten 32bit-Server. Das von Debian mitgelieferte capiinfo meldet nur
"could not register - Logical block size too small, must be at least 128 Bytes (0x1002)",
während das capiinfo-cm die Bintec inkl. aller Informationen findet und ausgibt.

Ich bin jetzt mit meinem Latein erstmal am Ende und würde mich freuen, wenn mir hier jemand weiterhelfen könnte. Wenn ich noch irgendwelche Informationen vergessen haben sollte, bitte nachfragen!
Vielen Dank schon mal im Voraus!

Grüße,
Michael
 
Zuletzt bearbeitet:
Hm, ich weiß nicht genau, warum, aber.... folgendes scheint zu helfen:
Ich habe die Sourcen von chan_capi_HEAD.tgz genommen und die Datei libcapi20/capi20.c geändert:
Code:
static void set_rcapicmd_header(unsigned char **p, int len, _cword cmd, _cdword ctrl)
{
	put_netword(p, len);
	put_word(p, len-2);  // <=== hier stand ein put_word(p, 0);
	put_word(p, 0);
	put_netword(p, cmd);
	put_word(p, 0);
	put_dword(p, ctrl);
}
Jetzt funktioniert es.
 
Kostenlos!

Statistik des Forums

Themen
248,878
Beiträge
2,303,766
Mitglieder
378,546
Neuestes Mitglied
Looki_Luzi