chan_lcr + Kernel 2.6.27-rc8 + Asterisk 1.6

RcRaCk2k

Mitglied
Mitglied seit
4 Aug 2005
Beiträge
238
Punkte für Reaktionen
1
Punkte
16
Leute Leute Leute,

das Leben macht echt keinen Spaß mehr *gg* Ich kompiliere und kompiliere, was das Zeug hält, hab jetzt schon 5 Tage hinter mir und werde noch verrückt.

Jetzt habe ich mISDN und mISDNuser endlich mit Socket-Unterstützung bezüglich der neuen API des mISDN-Drivers hinbekommen, jetzt streikt noch der chan_lcr um den mISDN in den Asterisk einzubinden.

Hat schon irgendjemand mISDN 1.2.0 + chan_lcr mit Asterisk 1.6 zum Laufen gebracht?

Ich verzweifle *gg* ... werde jetzt auf Asterisk 1.4 downgraden - das Leben ist hart und ungerecht :)

Grüße,
Michael.
 
Nun endlich... Asterisk 1.4.2 + chan_lcr + Linux Call Router + mISDN Core + Kernel 2.6.27-rc8 ist up and running.

Leider gegen meine Vorstellung, dass ich die Software mit Asterisk 1.6 zum Laufen bekomme.

Nunja, dann heißt es wohl, abwarten und Tee trinken, bis die Fehler gefixxed wurden.

Grüße,
Michael.
 
Hallo RcRaCk2k,

na Gratulation. Verrätst Du uns auch, was Du gemacht hast damit es nun funktioniert?

Viele Grüsse
Christian
 
Nunja, wie schon gesagt, durch das Downgrade von Asterisk 1.6 -> Asterisk 1.4.2.

Ansonsten einfach nach Anleitung auf http://www.misdn.org/index.php/MISDN_v2_Download befolgen. Dort wird der GIT-Checkout gemacht und der Socket-Branch gezogen.

ACHTUNG: Die Dokumentation verwendet den Befehl git-clone dieser hat sich bei der neueren GIT-Version jedoch geändert und heisst nun git clone - also ohne Bindestrich.

Danach geht es auf folgender Seite weiter:
http://www.misdn.org/index.php/MISDN_v2_Installation#Install_mISDN_from_snapshot

Wenn man das hat, muss noch LCR drauf:
http://www.linux-call-router.de/download/lcr-1.0/howto.html

Scheint ja ein ganz neues Thema zu sein mit der SOCKET-Unterstützung... Habe ich anscheinen zum falschen Zeitpunkt damit angefangen, einen frischen ASTERISK aufzusetzen.

Liebe Grüße,
Michael Rack.
 
Zuletzt bearbeitet:
@RcRaCk2k

hast du vergleiche zu vorherigen misdn installationen bezüglich echo und anderen wichtigen elementen wie stabilität?
wäre cool das zu erfahren.

Olli
 
Servus Olli,

ich hatte bisher Jahre lang den BRISTUFF im Einsatz. Auf einigen Kisten ist BRISTUFF immer noch im Einsatz (bisher über 3 Jahre) ohne ein Problem.

Zu mISDN bin ich vor 2 Jahren gewechselt, weil mir die gepatchte Version von Asterisk (BRISTUFF) aufgrund ethischer Entscheidungen nicht mehr zugesagt hatte. Bristuff hing hinter den Releases von Asterisk immer ziemlich hinterher, was das Testen neuer Versionen somit um einige Wochen, wenn nicht sogar Monate verschob.

Mit mISDN gab es eigentlich bisher noch nie Probleme, er war immer recht stabil und Echos hatte ich auch nie. Das Selbe galt aber auch für BRISTUFF.

mISDN ziehe ich desswegen vor, weil es sich per CHANNEL-DRIVER einbinden lässt und somit Asterisk fast immer in der neuesten Version eingesetzt werden kann.

Leider kann mISDN zum aktuellen Zeitpunkt per ChannelDriver nicht in Asterisk 1.6 eingebunden werden, da die MAKEFILE keine Anpassungen für Asterisk 1.6 beinhalten.

Ein weiterer von mir festgestellter Nachteil von mISDN ist, dass man immer eine leere exten rein setzen muss, damit man "Wählen bei abgehobenem Hörer" unterstützen kann, ansonsten fällt ASTERISK gleich in einen INVALID-EXTEN oder bekommt nur die ersten beiden Zahlen übermittelt. (Kennt jemand dafür eine saubere Lösung?)

Meine Lösung sieht zur Zeit so aus:
Code:
exten => ,1,WaitExten(1)

Liebe Grüße,
Michael.
 
@RcRaCk2k

hast du vergleiche zu vorherigen misdn installationen bezüglich echo und anderen wichtigen elementen wie stabilität?
wäre cool das zu erfahren.

Olli

Hi,

- Echo ist wie vorher - also deutlich (und für den Anrufer irritierend) zu hören
- Stabilität ist gering, LCR ist beta, bei mir stürzt es im Schnitt alle zwei Tage ab (2.6.27-RC8 mit * 1.4.21.2 und lcr 1.0 beta 1)
- beim (Ent-)Laden des lcr bekomme ich hin und wieder ein Segfault
- lcr kann kein sendtext - so mußte ich viele extensions umbauen, die den Anrufer per Text auf seinem Telefon darüber informierten, was der * gerade tut und über welchen Provider der Ruf rausgeht

Insgesamt ist das also eigentlich noch nichts für den Produktiveinsatz.
Und: Dadurch daß man nun den lcr noch "einschleifen" muß in die Kette ISDN - mISDN - LCR - Asterisk, holt man sich (man sieht's) eine weitere mögliche Fehlerquelle ins Haus.

Ich wünsche mir einen schlanken, einfachen mISDN-Channel wünschen, der direkt auf die (im jetzt freigegebenen) 2.6.27er Kernel enthaltenen (und damit problemlos zu kompilierenden) mISDN-Treiber aufsetzt - ohne dieses lcr-Gedöns dazwischen.


Grüße
Fux
 
- Stabilität ist gering, LCR ist beta, bei mir stürzt es im Schnitt alle zwei Tage ab (2.6.27-RC8 mit * 1.4.21.2 und lcr 1.0 beta 1)
Vielleicht liegt es auch an deiner Hardware / Software. Ich habe schon viele Linux Server aufgesetzt und bin immer wieder an einen Punkt gekommen, wo ich mich fragen musste, wer da eigentlich soviel Misst programmiert. Entweder waren arge Memory-Holes vorhanden oder es wurden auf Librarys zurückgegriffen, die schon alt bekannte Speicherprobleme hatten.

- beim (Ent-)Laden des lcr bekomme ich hin und wieder ein Segfault
Beim Entladen der Module (DSP) bekomme ich auch ein segfault. Aber solange das Modul verschwindet sehe ich kein Problem damit.

- lcr kann kein sendtext - so mußte ich viele extensions umbauen, die den Anrufer per Text auf seinem Telefon darüber informierten, was der * gerade tut und über welchen Provider der Ruf rausgeht
Da musst du etwas übersehen haben. Es gibt show application lcr_config im lcr_config die Möglichkeit SEND_TEXT zu betreiben, jedoch nur über diese Funktion, und nicht über die Funktion von ASTERISK.

Zitat: d - Send display text on called phone, text is the optarg.

Insgesamt ist das also eigentlich noch nichts für den Produktiveinsatz.
Da stimme ich dir zu. Deswegen wurde die Software ja auch noch nicht Released ;-)

Und: Dadurch daß man nun den lcr noch "einschleifen" muß in die Kette ISDN - mISDN - LCR - Asterisk, holt man sich (man sieht's) eine weitere mögliche Fehlerquelle ins Haus.
Da hast du Recht - jedoch finde ich solche Abstraktionen wie hier mit mISDN <> LCR nicht schlecht, denn du hast eine Schnittstelle (LCR) mit welcher man viele Programme verbinden kann. Zudem nimmt dir LCR einige Arbeit bereits schon vorher ab.

Ich nutze z.B. eine P2P Verbindung mit meinem Festnetz-Anbieter, weil ich auf "CLIP no screening" zurückgreiffe. Und ohne LCR würde dieses Feature garnicht funktionieren, da man unbedingt mit den Optionen screen_in und screen_out arbeiten muss, damit man dem Provider übermitteln kann, ob es sich um eine internationale, nationale oder um eine Endgeräte-Nummer handelt.

Ich wünsche mir einen schlanken, einfachen mISDN-Channel wünschen, der direkt auf die (im jetzt freigegebenen) 2.6.27er Kernel enthaltenen (und damit problemlos zu kompilierenden) mISDN-Treiber aufsetzt - ohne dieses lcr-Gedöns dazwischen.
Sicherlich sollte eine weitere Entwicklung in den CHAN_MISDN gesteckt werden, welche die Integration des Treibers direkt in den Asterisk bringt. Nur werden so zwei Zweige gebaut, welche beide den selben Nutzen haben.

Sicherlich werden sich Leute finden lassen, welche einen neuen CHAN_MISDN entwickeln werden - jedoch werden die Entwickler von mISDN sich diesem Thema nicht widmen.

Liebe Grüße,
Michael.
 
Ein weiterer von mir festgestellter Nachteil von mISDN ist, dass man immer eine leere exten rein setzen muss, damit man "Wählen bei abgehobenem Hörer" unterstützen kann, ansonsten fällt ASTERISK gleich in einen INVALID-EXTEN oder bekommt nur die ersten beiden Zahlen übermittelt. (Kennt jemand dafür eine saubere Lösung?)
Meine Lösung sieht zur Zeit so aus:
Code:
exten => ,1,WaitExten(1)

Ich habe damit auch zu kämpfen gehabt. Meine Lösung sieht so aus:

Code:
/etc/asterisk/misdn.conf
.
.
.
[intern]
ports=2
context=default
msns=*
[B][U]overlapdial=2[/U][/B]
.
.
.
 
chan_lcr

Hallo,
bei dem Befehl sudo ./configure --with-asterisk in LCR verzeichnis bekomme ich folgendes Problem:(
configure: error: in `/usr/src/lcr':
configure: error: --with-asterisk was given, but test for header-file asterisk/channel.h failed
See `config.log' for more details.

weißt vielleicht Jemand worum geht es?
 
Wahrscheinlich benutzt Du Asterisk-1.6

Das geigefügte Patch hilft beim Compilieren, leider ist der Asterisk danach nicht sonderlich stabil :-( . Einige weitere Headerdateien, z.B. frame.h haben sich beim Übergang von 1.4 -> 1.6 geändert.

diff --git a/bchannel.c b/bchannel.c
index c25d770..473de82 100644
--- a/bchannel.c
+++ b/bchannel.c
@@ -29,6 +29,11 @@
#define MISDN_OLD_AF_COMPATIBILITY 1
#include <compat_af_isdn.h>

+#define HAVE_ATTRIBUTE_always_inline 1
+#define HAVE_ARPA_INET_H 1
+#define HAVE_TIMERSUB 1
+
+#include <asterisk/compiler.h>
#include <asterisk/frame.h>


diff --git a/chan_lcr.c b/chan_lcr.c
index acc485d..53a7fb6 100644
--- a/chan_lcr.c
+++ b/chan_lcr.c
@@ -121,6 +121,12 @@ it is called from ast_channel process which has already locked ast_channel.

#include <semaphore.h>

+#define HAVE_ATTRIBUTE_always_inline 1
+#define HAVE_ARPA_INET_H 1
+#define HAVE_TIMERSUB 1
+
+#include <asterisk/compiler.h>
+#include <asterisk/buildopts.h>
#include <asterisk/module.h>
#include <asterisk/channel.h>
#include <asterisk/config.h>
diff --git a/configure.ac b/configure.ac
index ef76a4e..9012f57 100644
--- a/configure.ac
+++ b/configure.ac
@@ -59,11 +59,11 @@ AC_ARG_WITH([asterisk],
[with_asterisk="check"])

AS_IF([test "x$with_asterisk" != xno],
- [AC_CHECK_HEADERS([asterisk/channel.h],
+ [AC_CHECK_HEADERS([asterisk/compiler.h],
[with_asterisk="yes"],
[if test "x$with_asterisk" != xcheck ; then
AC_MSG_FAILURE(
- [--with-asterisk was given, but test for header-file asterisk/channel.h failed])
+ [--with-asterisk was given, but test for header-file asterisk/compiler.h failed])
fi
])
])
 
Lcr

Hallo,
danke für die Antwort:p
Ich habe Kein ISDN-Leitung (AMT) und ich benutze eine HFC Karte , dass es simuliert, damit durch Asterisk mit Twinkle zu ISDN-Telefon telefoniere.
Ich habe bei Start von LCR folgene Fehlermeldung:
pse@asterisk:~$ lcr fork

** LCR Version 1.3

pse@asterisk:~$
LCR: Starting daemon.
could not open /dev/mISDNtimer Permission denied
It seems that you don't use udev filesystem. You may use this workarround:

Do 'cat /proc/misc' and see the number in front of 'mISDNtimer'.
Do 'mknod /dev/mISDNtimer c 10 xx', where xx is the number you saw.
Note: This number changes if you load modules in different order, that use misc device.
ERROR open_layer3() failed for port 0
Warning: Not enough memory to lock paging, exitting...

und wenn ich statt XX , 60 eingebe:
pse@asterisk:~$ mknod /dev/mISDNtimer c 10 60

bekomme ich dann:
mknod: „/dev/mISDNtimer“: File exists

bei Befehl :
lcradmin state
kommt nur diese Meldung
Int (port 0: ) extension not loaded

ich habe in mISDNuser bei Installieren kein
libisdnnet.so gefunden, es sollte das NT-mode unterstützen.

Ich habe auch in Interface.conf folgendes:
[Int]
extension
msn 1234
portnum 0
nt
ptp
tones yes

trotzdem bekomme ich beim Aufheben das Telefon kein Tonsignal und der schirm zeigt: Installationsfehler.:(((

Übrigens, Ich habe auch cross over Ethernet Kabel benutzt.
wer weiß wo liegt das Problem?:blonk::blonk::heul:
 
lcr

hier ist im detail bei Auführen von
lcradmin state

Int (port 0: ) extension not loaded
────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
~
~
~
~
~
~
~
...
18.12.08 12:44:16.842 CH: PORT (open) port 0 mode network channels 2
18.12.08 12:44:16.842 --: LCR 1.3 started, waiting for calls...
18.12.08 12:44:19.709 CH: PH_DEACTIVATE INDICATION N<-U port 0
18.12.08 13:23:35.260 --: LCR terminated signal 15
18.12.08 13:23:35.260 CH: PORT (close) port 0
────────────────────────────────────────────────────────────────────────────────
 
und auch den misdn-socket-branch benutzt ???
bash-3.2# pwd
/usr/src/mISDN
bash-3.2# ./checkout-branch.sh socket
git checkout: branch socket already exists
bash-3.2#
 
Lcr

Hallo,
das it das Ergebnis :

pse@asterisk:~/Desktop$ ./checkout-branch.sh socket
./checkout-branch.sh: line 11: git-checkout: command not found
./checkout-branch.sh: line 12: git-config: command not found
./checkout-branch.sh: line 13: git-config: command not found
pse@asterisk:~/Desktop$

was soll ich jetzt tun?;)
 
Hallo,
das it das Ergebnis :

pse@asterisk:~/Desktop$ ./checkout-branch.sh socket
./checkout-branch.sh: line 11: git-checkout: command not found
./checkout-branch.sh: line 12: git-config: command not found
./checkout-branch.sh: line 13: git-config: command not found
pse@asterisk:~/Desktop$

was soll ich jetzt tun?;)

git installieren ...

-shady
 
Lcr

Hallo,
mein Kernel ist 2.6.27 generic und hat mISDN dabei.
trotzdem meinst du dass ich git zu installieren?
muss ich auch den Kernel 2.6.28-rc9 installieren?
 
LCR + Asterisk-1.6

Hallo,
mein Kernel ist 2.6.27 generic und hat mISDN dabei.
trotzdem meinst du dass ich git zu installieren?
muss ich auch den Kernel 2.6.28-rc9 installieren?

Du brauchst mISDNuser , wahrscheinlich hilft Dir auch diese Version
http://www.linux-call-router.de/download/lcr-1.3/
von Andreas Eversberg.

Also, der Weg kann wie folgt gehen:

alle (!) alten misdn-v1 Reste entfernen.
mISDN laut Anleitung http://www.misdn.org installieren.
mISDNuser laut Anleitung http://www.misdn.org installieren
asterisk-1.6 (z.B. vom svn installieren), oder die aktuelle 1.6er
svn checkout http://svn.digium.com/svn/asterisk/trunk asterisk

lcr (entweder per git oder http://www.linux-call-router.de/download/lcr-1.3/) auspacken.
patchen mit lcr.patch
(falls Du gegen den asterisk-1.6.0xxxx linken möchtest, bitte
den Abschnitt
.....
+ bchannel_transmit(call->bchannel, f->data.ptr, f->samples);
....
+ call->read_fr.data.ptr = call->read_buff;
....
wieder entfernen.
lcr compilieren
lcr configurieren (laut Anleitung ganz einfach :)
Asterisk starten
freuen :)

Weitere Probleme mit dem LCR:
ich benutze den LCR am s0-Bus gemeinsam mit anderen Teilnehmern (alte Basisstation). Falls von dieser Basisstation telefoniert wird, findet LCR keinen ausgehenden Channel :-(
und nie nie wieder :-(
 
das Patch:
diff --git a/bchannel.c b/bchannel.c
index c25d770..473de82 100644
--- a/bchannel.c
+++ b/bchannel.c
@@ -29,6 +29,11 @@
#define MISDN_OLD_AF_COMPATIBILITY 1
#include <compat_af_isdn.h>

+#define HAVE_ATTRIBUTE_always_inline 1
+#define HAVE_ARPA_INET_H 1
+#define HAVE_TIMERSUB 1
+
+#include <asterisk/compiler.h>
#include <asterisk/frame.h>


diff --git a/chan_lcr.c b/chan_lcr.c
index acc485d..5c0b213 100644
--- a/chan_lcr.c
+++ b/chan_lcr.c
@@ -121,6 +121,12 @@ it is called from ast_channel process which has already locked ast_channel.

#include <semaphore.h>

+#define HAVE_ATTRIBUTE_always_inline 1
+#define HAVE_ARPA_INET_H 1
+#define HAVE_TIMERSUB 1
+
+#include <asterisk/compiler.h>
+#include <asterisk/buildopts.h>
#include <asterisk/module.h>
#include <asterisk/channel.h>
#include <asterisk/config.h>
@@ -1989,7 +1995,7 @@ static int lcr_write(struct ast_channel *ast, struct ast_frame *f)
return -1;
}
if (call->bchannel && f->samples)
- bchannel_transmit(call->bchannel, f->data, f->samples);
+ bchannel_transmit(call->bchannel, f->data.ptr, f->samples);
ast_mutex_unlock(&chan_lock);
return 0;
}
@@ -2029,7 +2035,7 @@ static struct ast_frame *lcr_read(struct ast_channel *ast)
call->read_fr.datalen = len;
call->read_fr.samples = len;
call->read_fr.delivery = ast_tv(0,0);
- call->read_fr.data = call->read_buff;
+ call->read_fr.data.ptr = call->read_buff;
ast_mutex_unlock(&chan_lock);

return &call->read_fr;
@@ -2357,6 +2363,7 @@ enum ast_bridge_result lcr_bridge(struct ast_channel *ast1,
static struct ast_channel_tech lcr_tech = {
.type="LCR",
.description="Channel driver for connecting to Linux-Call-Router",
+ .capabilities = AST_FORMAT_ALAW ,
.requester=lcr_request,
.send_digit_begin=lcr_digit_begin,
.send_digit_end=lcr_digit_end,
diff --git a/configure.ac b/configure.ac
index ef76a4e..9012f57 100644
--- a/configure.ac
+++ b/configure.ac
@@ -59,11 +59,11 @@ AC_ARG_WITH([asterisk],
[with_asterisk="check"])

AS_IF([test "x$with_asterisk" != xno],
- [AC_CHECK_HEADERS([asterisk/channel.h],
+ [AC_CHECK_HEADERS([asterisk/compiler.h],
[with_asterisk="yes"],
[if test "x$with_asterisk" != xcheck ; then
AC_MSG_FAILURE(
- [--with-asterisk was given, but test for header-file asterisk/channel.h failed])
+ [--with-asterisk was given, but test for header-file asterisk/compiler.h failed])
fi
])
])
 
Hallo,
eine dumme Frage, reicht mir wenn ich nur das Ethernet kabel in die Mitte schneiden und Draht 3 3 mit 4 und 5 mit 6 verbinde und umgekehrt,ich meine was in Doku von http://www.linux-call-router.de/ als "The VERY SIMPLE way" geschrieben ist oder muss ich auch mit ohm-meter noch die schritte in "The COMFORTABLE way" machen um Stromvesorgung durch NTBA und Netzwerk terminatiion gewährleisten?:confused:
 
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.