[HowTo] Bezahlbares GSM-VoIP-Gateway auf Asterisk-Basis zum selber bauen

chan_datacard für Dummies?

Hallo,
ich möchte auch gerne ein Huawei E169 zum Laufen bringen (später sogar zwei :) ). Die Diskussion ist spannend, aber gibt's da irgendwo dasselbe für Dummies?

Habe die Source für chan_datacard heruntergeladen. Installiert ist die Elastix-Distribution mit Asterisk 1.4 und CentOS.

  • Ich habe das so verstanden, dass ein chan_datacard.so entsteht und alles andere ungeändert bleibt. Richtig?
  • Wohin (in welches Directory) soll ich alles kopieren?
  • Wird der Asterisk auch neu compiliert? Will ich eigentlich nicht, weil dann sicher etwas anderes nicht mehr funktioniert.
  • Reicht der Aufruf von Makefile ?
  • Gibt's da keinen Konflikt mit einem anderen Make?
  • Wenn dann ein .so-File entsteht: welche Rechte, welchen Owner soll es haben?

Wahrscheinlich lauter einfache Fragen... Danke für eure Hilfe!
 
Habe die Source für chan_datacard heruntergeladen. Installiert ist die Elastix-Distribution mit Asterisk 1.4 und CentOS.

ich denke nicht, dass du mit * 1.4 hier weit kommen wirst. Ich verwende deswegen Debian testing (squeeze) mit * 1.6.2.2 .

Ich bin mir aber nicht sicher ob das ueberhaupt schon neu genug ist.

Waere halt praktisch, da fuer mich schon ein paar Patches in dahdi und Asterisk fuer HFC im NT Mode enthalten sind. Mal schauen.

Ansonsten bleibt immer noch: alles selbst zu patchen und zu bauen. Google helps.

- sparkie
 
Ja, genau, chan_datacard ist für Asterisk > 1.6.2.6 geeignet.

Ich habe übrigens (siehe ersten Post) ein Image gebaut, wo alles enthalten ist (also OpenWRT mit Asterisk 1.6.2.6 und chan_datacard Rev. 53). Wer also ein ALIX-Board (in dem eine CF-Karte mit mindestens 32MB Kapazität steckt) sein Eigen nennen kann, einfach draufflashen.
 
Erstmal Danke für dein image... Hatte ich zum testen mal installiert hab mir dann aber debian auf mein alix installiert. (Komme mit openwrt nicht zurecht)
Habe auch das Problem das der UMTS Stick alle drei Tage aussteigt und erst wieder nach einem Neustart verfügbar ist. Die Nummer klingelt beim Anruf dann auch aber am Asterisk selber kommt nichts an.


Welche USB "Verteiler" könnt ihr empfehlen?

Kann einer nochmal erklären wie das mit den cusd funktioniert? Ein datacard cusd congstar *100# gibt keine fehlermeldung aber auch keine Antwort.

Ich lasse mir die ankommenden SMS per mail schicken. Ab einer bestimmten länge (vermutlich die 160) bekomm ich nur noch wirre zeichen. Gibt es dazu eine Lösung
 
@Pycho

Funktioniert bei deinem OpenWRT-Image CURL in Asterisk? Also hast du eine func_curl in asterisk/modules und kannst es im Dialplan nutzen?

@Fredjam

Danke für deine Hilfe, jetzt klappt es. Der Fehler war, dass die udev-Rule erst beim erneuten reinstecken von dem Adapter angewendet wurde, nicht wie vermutet beim Neustart.
 
Natürlich, damit funktioniert schließlich die Zielnetzabfrage. Udev wird in meinem Image übrigens gleich beim booten mitgestartet.
Jetzt muss man nur noch cusd und sms in OpenWRT hinbekommen, dann steht es einem Debian-System im nichts mehr nach. Bisher habe ich es auch mit schufti´s Tipp nicht zum Laufen bekommen.

Ich habe eine Frage: Was bewirken in datacard.conf die Einstellungen rxgain und txgain genau?
Heißt z.B. rxgain=4, dass ankommndes Audio um 40 % gegenüber dem ursprünglichen verstärkt wird; rxgain=0, dass um 0% verstärkt wird, und rxgain=-2, dass um 20 % vermindert wird?
Was genau bewirken diese beiden Einstellungen und von wo bis wo kann man das einstellen (z.B. wird man ja wohl kaum txgain=300 einstellen können).
 
Zuletzt bearbeitet:
Bin mir nicht ganz sicher wo die Grenzen liegen, aber Vermutlich lässt Asterisk Werte von +-100 dB zu (nicht %). +10 dB wie in der Beispielkonfiguration vorgeschlagen, entsprechen demnach bereits der doppelten Lautstärke.
 
+/- 100db ? Da würden dir aber die Ohren abfallen ;) Ich würde eher sagen, dass sich der Wert auf die anliegende Antennenspannung bezieht!?
 
Das es sich hier um die Anpassung der Lautstärke handelt ist bekannt. Die Frage dreht sich eher darum, wo die Grenzen liegen. Ob diese Grenzen sinnvoll gewählt sind, sei einmal dahingestellt. Ich gehe davon aus, dass Asterisk die Variablen genauso wertet wie dies z.B. bei ZAP der Fall ist. Aus Zeitgründen kann ich das derzeit nicht selbst testen.
 
Was ich aus diesem Thread nicht lese:

Läuft das dann auch auf "normalen" Routern? Hat das schon mal jemand getestet?
 
Klar läuft es auch auf normalen Routern. Im ersten Post steht doch zum Beispiel, dass es auch auf einer 7270er FritzBox erfolgreich getestet wurde.

Ich meinte das mit rxgain und txgain eigentlich, ob nicht jemand in den Quellcode schauen könnte - dort müsste es ja stehen, wie weit man die Parameter einstellen darf.
Ich habe bereits selbst rein geschaut, aber nichts verstanden.
 
Zuletzt bearbeitet:
Also der Patch ist gut, aber es fehlt noch der ultimative "zwei-Gespräche-über-eine-SIM-Karte-führen-Patch".
Erklärung: Ich habe zwei UMTS-STicks mit je einer Vodafone-SIM-Karte (jeweils mit Flat ins Vodafone-Netz) im GSM-Gateway.
Ich nutze mein GSM-Gateway öfters um mich auf mein Vodafone-Handy kostenlos anrufen zu lassen (Stichwort: Asterisk + Callback) und um mich dann weiter verbinden zu lassen (Stichwort Asterisk + DISA) in dem ich einfach per DTMF die gewünschte Nummer dem Asterisk mitteile. Dieses Szenario ist nichts neues und viele dürften es kennen.
Und jetzt kommts: Will ich auf diese Weise mit einem Vodafone-Teilnehmer sprechen, könnte theoretisch Asterisk einfach eine Dreierkonferenz aufbauen, und das ganze Gespräch wäre mit nur einer SIM-Karte möglich.
Man müsste chan_datacard also noch beibrigen, was eine Dreierkonferenz ist.

Nachtrag: Wenn es jemanden interessiert, habe ich den Stromverbrauch meines Hubs samt den 4 UMTS-Sticks gemessen. Nur mit den Sticks, wenn gerade keiner darüber spricht, beträgt der Stromverbrauch ca. 260 mA. Wenn ein Stick benutzt wird, steigt die Anzeige auf 370 mA an. Wenn schließlich alle 4 benutzt werden, habe ich 0,7 A gemessen.
Es handelte sich bei meinem Messungen um diesen Hub. Ohne Sticks frisst er 80 mA. Hinzuzufügen wäre noch, dass bei schwachem Empfang der Strombedarf etwas höher liegen kann.
 
Zuletzt bearbeitet:
Nachtrag: Wenn es jemanden interessiert, habe ich den Stromverbrauch meines Hubs samt den 4 UMTS-Sticks gemessen. Nur mit den Sticks, wenn gerade keiner darüber spricht, beträgt der Stromverbrauch ca. 260 mA. Wenn ein Stick benutzt wird, steigt die Anzeige auf 370 mA an. Wenn schließlich alle 4 benutzt werden, habe ich 0,7 A gemessen.

Danke für deine Messungen. Sieht echt sparsam aus :).
Welchen USB Hub benutzt du denn?


EDIT:
SMS Empfang und Telefonieren klappt bei mir jetzt langsam. Ich würde gerne noch SMS verschicken. Habe mir nochmal die Beiträge durchgelesen, das SMS Thema wurde aber noch nicht fertig dikutiert :)
Hat das inzwischen jemand hinbekommen?
 
Zuletzt bearbeitet:
Ja, Recht hast du. Das SMS-Thema ist noch nicht fertig diskutiert worden. Ich würde ja gerne mitexperimentieren, aber irgendwie kriege ich die Sache mit den SMS unter OpenWRT nicht zum Laufen.

Ach übrigens, wer noch ein paar UMTS-Sticks braucht...ich habe hier im Flohmarkt ein paar gefunden.
 
Zuletzt bearbeitet:
aber irgendwie kriege ich die Sache mit den SMS unter OpenWRT nicht zum Laufen.

Empfangen muss mit deinem Image gehen. Ich lasse mir die SMS im moment per Email senden. Was auch klappt solange es eine SMS pro Nachricht ist.

Zum Versenden finde ich leider kein Anfang.
 
Könntest du deinen patch mal hier posten?

Hi,

ich hatte leider gar nicht mitbekommen, dass noch eine Antwort auf meinen Beitrag gekommen war. Ich war wohl zu sehr mit meinem eigentlichen Projekt, welches chan_datacard intensiv nutzt beschäftigt ;)

Zum Einbinden des Patches habe ich vom ursprünglichen Code geforkt.

Das Ganze liegt auf http://github.com/thomasklingbeil/chan_datacard/

Vielleicht hilft es ja jemandem.

Falls jemand Interesse an dem Projekt hat, welches alle Kommunikation über chan_datacard abwickelt: www.sendinel.org

Grüße
Thomas
 
Ich habe irgendwie ein Problem mit meinen udev-rules. Die Datei /etc/udev/rules.d/50-udev.rules sieht so aus:
Code:
SUBSYSTEMS=="usb", SYMLINK+="ttyUSB_%b", KERNEL=="ttyUSB[0-9*]", MODE="0666"
Aber irgendwie werden damit nur die ersten drei Sticks erkannt
Code:
root@OpenWrt:~# ls -la /dev/ttyU*
crw-rw-rw-  1 root  root  188,   0 May  5 16:06 /dev/ttyUSB0
crw-rw-rw-  1 root  root  188,   1 May  5 16:06 /dev/ttyUSB1
crw-rw-rw-  1 root  root  188,  10 May  5 16:06 /dev/ttyUSB10
crw-rw-rw-  1 root  root  188,  11 May  5 16:06 /dev/ttyUSB11
crw-rw-rw-  1 root  root  188,   2 May  5 16:08 /dev/ttyUSB2
crw-rw-rw-  1 root  root  188,   3 May  5 16:06 /dev/ttyUSB3
crw-rw-rw-  1 root  root  188,   4 May  5 16:06 /dev/ttyUSB4
crw-rw-rw-  1 root  root  188,   5 May  5 16:08 /dev/ttyUSB5
crw-rw-rw-  1 root  root  188,   6 May  5 16:06 /dev/ttyUSB6
crw-rw-rw-  1 root  root  188,   7 May  5 16:06 /dev/ttyUSB7
crw-rw-rw-  1 root  root  188,   8 May  5 16:08 /dev/ttyUSB8
crw-rw-rw-  1 root  root  188,   9 May  5 16:06 /dev/ttyUSB9
lrwxrwxrwx  1 root  root         7 May  5 16:06 /dev/ttyUSB_1-2.1:1.0 -> ttyUSB0
lrwxrwxrwx  1 root  root         7 May  5 16:06 /dev/ttyUSB_1-2.1:1.1 -> ttyUSB1
lrwxrwxrwx  1 root  root         7 May  5 16:06 /dev/ttyUSB_1-2.1:1.2 -> ttyUSB2
lrwxrwxrwx  1 root  root         7 May  5 16:06 /dev/ttyUSB_1-2.2:1.0 -> ttyUSB3
lrwxrwxrwx  1 root  root         7 May  5 16:06 /dev/ttyUSB_1-2.2:1.1 -> ttyUSB4
lrwxrwxrwx  1 root  root         7 May  5 16:06 /dev/ttyUSB_1-2.2:1.2 -> ttyUSB5
lrwxrwxrwx  1 root  root         7 May  5 16:06 /dev/ttyUSB_1-2.3:1.0 -> ttyUSB6
lrwxrwxrwx  1 root  root         7 May  5 16:06 /dev/ttyUSB_1-2.3:1.1 -> ttyUSB7
lrwxrwxrwx  1 root  root         7 May  5 16:06 /dev/ttyUSB_1-2.3:1.2 -> ttyUSB8
lrwxrwxrwx  1 root  root         7 May  5 16:06 /dev/ttyUSB_1-2.4:1.0 -> ttyUSB9
root@OpenWrt:~#

Bin jetzt auf das Problem gestoßen, weil ich nun mehr als drei UMTS-Sticks betreiben will.
Ich habe das auch so probiert, aber irgendwie verschwindet der Symlink für den vierten Stick nach einer Zeit.
 
Zuletzt bearbeitet:
ist ja auch klar da du ja nur die sticks von 0-9 zuläst ;) KERNEL=="ttyUSB[0-9*]",

mit denen geht es :)
Code:
echo 'SUBSYSTEMS=="usb", SYMLINK+="ttyUSB_%b", KERNEL=="ttyUSB*", MODE="0666", OWNER="asterisk",GROUP="uucp"' >> /etc/udev/rules.d/92-datacard.rules

@marley87

machst du bei dem projekt mit ?
"Falls jemand Interesse an dem Projekt hat, welches alle Kommunikation über chan_datacard abwickelt: www.sendinel.org"
und wenn ja
 
Zuletzt bearbeitet:
Ja, genau so wie du es sagst, habe ich die udev-rule eingestellt. Nach paar Tagen passiert aber so was wie heute:
Code:
OpenWrt*CLI> datacard show devices
ID              Group  Connected State Voice SMS   RSSI  Mode  Submode Provider Name   Model      Firmware          IMEI              Number
4               4      Yes       Free  Yes   Yes   27    5     4       o2 - de         K3520      11.314.21.31.00   3534360xxxxxxxx   Unknown
3               3      No        None  Yes   Yes   25    5     4       NONE            K3520      11.314.21.31.00   3534360xxxxxxxx   Unknown
2               1      Yes       Free  Yes   Yes   23    0     0       Vodafone.de     K3520      11.314.21.31.00   3534360xxxxxxxx   Unknown
1               1      Yes       SMS   Yes   Yes   24    0     0       Vodafone.de     K3520      11.314.21.31.00   3534360xxxxxxxx   Unknown
    -- Datacard 3 trying to connect on /dev/ttyUSB_1-2.3:1.2...
[May  9 21:01:55] WARNING[11021]: chan_datacard.c:1611 opentty: Unable to open '/dev/ttyUSB_1-2.3:1.2'
    -- Datacard 3 trying to connect on /dev/ttyUSB_1-2.3:1.2...
[May  9 21:02:04] WARNING[11021]: chan_datacard.c:1611 opentty: Unable to open '/dev/ttyUSB_1-2.3:1.2'
OpenWrt*CLI> exit
Executing last minute cleanups
root@OpenWrt:~# ls -la /dev/ttyU*
crw-rw-rw-  1 root   root   188,   0 May  9 16:13 /dev/ttyUSB0
crw-rw-rw-  1 root   root   188,   1 May  9 16:13 /dev/ttyUSB1
crw-rw-rw-  1 root   root   188,  10 May  9 21:21 /dev/ttyUSB10
crw-rw-rw-  1 root   root   188,  11 May  9 23:01 /dev/ttyUSB11
crw-rw-rw-  1 root   root   188,   2 May  9 16:13 /dev/ttyUSB2
crw-rw-rw-  1 root   root   188,   3 May  8 15:01 /dev/ttyUSB3
crw-rw-rw-  1 root   root   188,   4 May  9 22:33 /dev/ttyUSB4
crw-rw-rw-  1 root   root   188,   5 May  9 23:01 /dev/ttyUSB5
crw-rw-rw-  1 root   root   188,   6 May  9 09:53 /dev/ttyUSB6
crw-rw-rw-  1 root   root   188,   7 May  9 22:03 /dev/ttyUSB7
crw-rw-rw-  1 root   root   188,   8 May  9 23:01 /dev/ttyUSB8
crw-rw-rw-  1 root   root   188,   9 May  9 16:12 /dev/ttyUSB9
lrwxrwxrwx  1 root   root          7 May  9 09:53 /dev/ttyUSB_1-2.1:1.0 -> ttyUSB6
lrwxrwxrwx  1 root   root          7 May  9 09:53 /dev/ttyUSB_1-2.1:1.1 -> ttyUSB7
lrwxrwxrwx  1 root   root          7 May  9 09:53 /dev/ttyUSB_1-2.1:1.2 -> ttyUSB8
lrwxrwxrwx  1 root   root          7 May  8 15:01 /dev/ttyUSB_1-2.2:1.0 -> ttyUSB3
lrwxrwxrwx  1 root   root          7 May  8 15:01 /dev/ttyUSB_1-2.2:1.1 -> ttyUSB4
lrwxrwxrwx  1 root   root          7 May  8 15:01 /dev/ttyUSB_1-2.2:1.2 -> ttyUSB5
lrwxrwxrwx  1 root   root          7 May  9 16:13 /dev/ttyUSB_1-2.3:1.0 -> ttyUSB0
lrwxrwxrwx  1 root   root          7 May  9 16:13 /dev/ttyUSB_1-2.3:1.1 -> ttyUSB1
lrwxrwxrwx  1 root   root          7 May  9 16:12 /dev/ttyUSB_1-2.4:1.0 -> ttyUSB9
lrwxrwxrwx  1 root   root          8 May  9 16:12 /dev/ttyUSB_1-2.4:1.1 -> ttyUSB10
lrwxrwxrwx  1 root   root          8 May  9 16:12 /dev/ttyUSB_1-2.4:1.2 -> ttyUSB11
root@OpenWrt:~#

Wie man sieht, ist der symlink auf /dev/ttyUSB2 einfach nicht da. Und er kommt auch nicht, egal was ich mache. Ich habe probliert udevd zu killen, alle symlinks zu löschen und dann wieder udevd && udevtrigger auszuführen, aber dann sind nur genau diese symlinks wieder da und der auf /dev/ttyUSB2 fehlt weiterhin. Nach einem reboot ist dann aber alles wieder ok (für ein paar Tage).
Das scheint jetzt zwar ein udev-Problem zu sein und hat vermutlich nichts mit chan_datacard zu tun, aber es muss trotzdem irgendwie gelöst werden.
Nachtrag: Wie man sieht, fehlt der Link auf ttyUSB2, also war ich so schlau und habe ttyUSB2 direkt in datacard.conf eingetragen. Aber dennoch wird der UMTS-Stick nicht gefunden. ttyUSB2 ist zwar da, aber der Stick scheint irgendwie dann doch nicht da zu sein. Insofern funktioniert udev richtig: kein Stick - kein Symlink.
Nachtrag: Ich habe nun versucht mit "rmmod option && rmmod usbserial" (vorher asterisk beenden bzw. chan_datacard unloaden) die Module für die UMTS-Sticks zu entladen, dann /dev/ttyUSB* zu löschen und dann mit "insmod usbserial && insmod option" die Module wieder zu laden. Es tauchen die ganzen ttyUSBs wieder auf, bis auf den ttyUSB2. Nach einem reboot ist alles wieder in Ordnung.
 
Zuletzt bearbeitet:
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.