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

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?

wuerde mich auch interessieren ob SMS Versand mal jemand getestet hat. Das folgende sieht ja schon mal nicht schlecht aus:
Code:
For sending outbound short messages, add the following extension into the default context: 
exten => 2000,1,Answer() 
exten => 2000,n,DatacardSendSMS(datacard0,${SmsNumber},${Text}) 
exten => 2000,n,Hangup()

siehe: http://sendinel.github.com/Sendinel/installationinstructions/0.1/index.html

aber wie steuere ich das von aussen an? Am liebsten waere mir sowas wie 'asterisk -rx XXX'

- sparkie
 
aber wie steuere ich das von aussen an? Am liebsten waere mir sowas wie 'asterisk -rx XXX'

muss man denn hier alles selber machen? :)

Ich habe es mal aus meiner Anlage raus ge'cut&pasted. Ist Bestandteil eines groesseren Setups und natuerlich nur ein Beispiel. Muss jeder fuer sich noch optimieren

File /var/lib/asterisk/agi-bin/sendsms.agi
Code:
#!/bin/sh

awk '
BEGIN {
    SMS_TXT = "/root/sms.txt"

    while (getline vars > 0) {
        if (match(vars, "^agi_extension: (.*)$", a)) break
    }
    getline txt < SMS_TXT; close(SMS_TXT)
    print("exec DatacardSendSMS datacard0," a[1] ",\"" txt "\"")
    fflush()
}
{
    if (match($0, "result=")) exit
}
'

File sendsms
Code:
#!/bin/sh

echo $2 > /root/sms.txt
asterisk -rx "console dial $1@sms"

File /etc/asterisk/extensions.conf
Code:
[...]
[sms]
exten => _X.,1,Answer
exten => _X.,n,AGI(sendsms.agi)
exten => _X.,n,Hangup

Aufrufbeispiel zum Versenden einer SMS:
Code:
sendsms 00491631234567 'HOWTO: Bezahlbarer GSM-Voip-Gateway auf Asterisk-Basis zum selber bauen.'

- sparkie
 
Zuletzt bearbeitet:
Rufnummer übermitteln?

Hallo Leute,

habe das Projekt hier nachgebaut und läuft auch alles prima! (War garnicht so schwer :) )

Eine Frage: bei abgehenden Verbindungen vom GSM Stick wird die Rufnummer nicht übertragen. Wo kann ich (wenn überhaupt) die Übertragung einschalten?

Ich würde mich wundern, wenn man das nicht hin- und herschalten kann (wahrscheinlich per AT Befehl?)

Aber ich find' nirgends die Information. Sicher weis einer von euch, wie's geht.

Code:
ID              Group  Connected State Voice SMS   RSSI  Mode  Submode Provider Name   Model      Firmware          IMEI              Number
datacard        1      Yes       Free  Yes   Yes   25    5     4       Vodafone.de     K3520      11.314.12.02.00   353284...0....0   0173xxxxxx6
Lieben Gruß
W.
 
danke dass du mich dran erinnerst. wollte ich noch posten.

Code:
asterisk -rx "datacard rfcomm datacard at+clir=2"
asterisk -rx "datacard rfcomm datacard AT+CCWA=0,0,1"

The first is for sending the own number while calling
The second is for setting "call waiting" off. Otherwise no calls will reach the asterisk server.
For TMD both needs to be set again because the default values seems to be different.

Das Problem in meiner Umgebung ist nur, dass der Stick diese Einstelllung immer weider verliert.
Habe das als Feature Requests Item #19 an Artem gemeldet dass das automatisch gesetzt wird
 
Hi waldoo,

vielen Dank! Klappt Bestens!
Das Problem in meiner Umgebung ist nur, dass der Stick diese Einstelllung immer weider verliert.
Wann geht bei Dir denn diese Einstellung verloren? Nach jeder Verbindung oder nach jedem Neu-Laden des chan_datacard.so? Oder immer mal wieder sporadisch?

Lieben Gruß
W.
 
Das konnte ich bei mir bis jetzt noch nicht so genau nachvollziehen.
Hoffe es läuft bei Dir besser :)
 
Eine Frage: bei abgehenden Verbindungen vom GSM Stick wird die Rufnummer nicht übertragen. Wo kann ich (wenn überhaupt) die Übertragung einschalten?

kann das sein, dass du noch eine (alte) SIM verwendest, die keine Rufnummernuebertragung per default aktiviert hat?

Ich habe noch eine uralte SIMYO SIM, die noch aus pre-UMTS Zeiten stammt, mit genau diesem Problem. Mir wurde mal mitgeteilt man koenne das nur durch entsprechendes Prefixing der Rufnummer (fallweise Uebertragung oder so) aendern.

Die aktuellen UMTS SIMs funktionieren einwandfrei.

- sparkie
 
Hi sparkie,

... nunja, Alter ist ja immer relativ zu sehen. Ich selbst bin sicher um viele Faktoren älter als die betreffende SIM :) :)

Scherz beiseite: Die SIM ist definitiv post-UMTS. Ich habe extra eine neue SIM erhalten, als ich von GPRS auf UMTS migriert habe.

However, das ist auch schon locker 4...5 Jahre her. Seitdem ist diese SIM in use.

Mit dem Tip von waldoo konnte ich jedoch das CLIR einschalten.

Was bedeutet
Prefixing der Rufnummer
in diesem Kontext genau? Ist das eine Einstellung am * oder eine provider-seitige Einstellung? Sorry - ich weis es nicht.

Lieben Gruß
W.
 
Was bedeutet in diesem Kontext genau? Ist das eine Einstellung am * oder eine provider-seitige Einstellung? Sorry - ich weis es nicht.

ich vermute das ist auch keine offizielle Ausdruckweise, die ich da benutze:)

ich meine wenn ich diese alte SIM z.B. in meinem Mobiltelefon betreibe kann ich die Rufnummernuebertragung nur durch Voranstellen von '*31#' erzwingen.

Per default uebertraegt diese SIM keine Rufnummer. Moeglicherweise macht obiges 'asterisk -rx' Kommando etwas aehnliches wie '*31#' ?

- sparkie

[edit]
so, habe noch geforscht:

Calling Line Identification Restriction +CLIR
Description:
This command controls the Calling Line Identification restriction supplementary service.
Values:
<n> Sets the line ID restriction for outgoing calls
0: Presentation indicator is used according to the subscription of the CLIR service
1: CLIR invocation
2: CLIR suppression

Command syntax: AT+CLIR=<n>

ist halt offenbar bei manchen Providern noetig, dass aktiv 'CLIR suppression' betrieben wird

laut:
http://forge.asterisk.org/gf/projec...er/?action=TrackerItemEdit&tracker_item_id=19

gehoert dieser Verein: "T-mobile germany" auch dazu

[/edit]
 
Zuletzt bearbeitet:
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,

so das hatte ich jetzt nach Wochen Dauerbetrieb auch erstmals. Das Modem disconnected sich ja ca. 1x in 6 STunden und wird anschliessend automatisch wieder neu initalisiert.

Soweit so gut. Das scheint normal zu sein?

Aber heute nacht war anschliessend /dev/ttyUSB2 nicht mehr da:
Code:
May 28 00:58:29 undara kernel: [461986.472117] usb 2-1: USB disconnect, address 27
May 28 00:58:29 undara kernel: [461986.478363] option: option_instat_callback: error -108
May 28 00:58:29 undara kernel: [461986.484249] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
May 28 00:58:29 undara kernel: [461986.489438] option 2-1:1.0: device disconnected
May 28 00:58:29 undara kernel: [461986.496868] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
May 28 00:58:29 undara kernel: [461986.503489] option 2-1:1.1: device disconnected
May 28 00:58:29 undara kernel: [461986.510823] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
May 28 00:58:29 undara kernel: [461986.517324] option 2-1:1.2: device disconnected
May 28 00:58:30 undara kernel: [461987.456074] usb 2-1: new full speed USB device using uhci_hcd and address 28
May 28 00:58:30 undara kernel: [461987.627377] usb 2-1: New USB device found, idVendor=12d1, idProduct=1003
May 28 00:58:30 undara kernel: [461987.632442] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=1
May 28 00:58:30 undara kernel: [461987.637613] usb 2-1: Product: HUAWEI Mobile
May 28 00:58:30 undara kernel: [461987.642679] usb 2-1: Manufacturer: ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
May 28 00:58:30 undara kernel: [461987.647641] usb 2-1: SerialNumber: ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
May 28 00:58:30 undara kernel: [461987.653102] usb 2-1: configuration #1 chosen from 1 choice
May 28 00:58:30 undara kernel: [461987.664894] option 2-1:1.0: GSM modem (1-port) converter detected
May 28 00:58:30 undara kernel: [461987.671988] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0
May 28 00:58:30 undara kernel: [461987.682969] option 2-1:1.1: GSM modem (1-port) converter detected
May 28 00:58:30 undara kernel: [461987.689129] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1

der Gutfall sieht hingegen so aus:

Code:
May 28 08:40:12 undara kernel: [489690.304113] usb 2-1: USB disconnect, address 28
May 28 08:40:12 undara kernel: [489690.310880] option: option_instat_callback: error -108
May 28 08:40:12 undara kernel: [489690.317069] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
May 28 08:40:12 undara kernel: [489690.323771] option 2-1:1.0: device disconnected
May 28 08:40:12 undara kernel: [489690.330381] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
May 28 08:40:12 undara kernel: [489690.337215] option 2-1:1.1: device disconnected
May 28 08:40:21 undara kernel: [489698.492060] usb 2-1: new full speed USB device using uhci_hcd and address 29
May 28 08:40:21 undara kernel: [489698.665108] usb 2-1: New USB device found, idVendor=12d1, idProduct=1001
May 28 08:40:21 undara kernel: [489698.670393] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=1
May 28 08:40:21 undara kernel: [489698.675906] usb 2-1: Product: HUAWEI Mobile
May 28 08:40:21 undara kernel: [489698.681141] usb 2-1: Manufacturer: ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
May 28 08:40:21 undara kernel: [489698.686530] usb 2-1: SerialNumber: ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
May 28 08:40:21 undara kernel: [489698.692115] usb 2-1: configuration #1 chosen from 1 choice
May 28 08:40:21 undara kernel: [489698.703574] option 2-1:1.0: GSM modem (1-port) converter detected
May 28 08:40:21 undara kernel: [489698.709983] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0
May 28 08:40:21 undara kernel: [489698.720535] option 2-1:1.1: GSM modem (1-port) converter detected
May 28 08:40:21 undara kernel: [489698.727641] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1
May 28 08:40:21 undara kernel: [489698.737471] option 2-1:1.2: GSM modem (1-port) converter detected
May 28 08:40:21 undara kernel: [489698.744351] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2

Vielleicht doch noch nen option-Treiberproblem? Kernel ist hier 2.6.30.

Stecke in den STick aus und wieder ein funktioniert alles wieder => also kein Rechner Reboot noetig.

- sparkie
 
Hi,

evtl. liegt's wirklich an der Kernel Version. Ich meine gelesen zu haben, dass mindestens 2.6.32 erforderlich ist.
Code:
uranus:~ # uname -a
Linux uranus 2.6.31.5-0.1-desktop #1 SMP PREEMPT 2009-10-26 15:49:03 +0100 i686 i686 i386 GNU/Linux
Ich nutze 2.6.31. Wollte auf .32 upgraden, aber der E169 läuft nun seit einer Woche ohne Probleme (nur nichts berufen!), so dass ich von einem upgrade bisher abgesehen habe.

Lieben Gruss
W.
 
Hi zusammen,

hatte mit meinem E1550 eine einseitige total schlechte Sprachqualität.
Nach langen hin und her bin ich dann mit meinem 64bit Debian vom Kernel 2.6.26-2-amd64 auf den 2.6.32-bpo.5-amd64 geganen und es geht nun.

Falls es jemand benötigt :)
Where to get Debian 5 with Kernel 2.6.34 built-in ?
 
Ja, das ist alles bekannt. Aber eins ist unklar: sind die zwei größten Bugs verschwunden?
Ein Bug war ja, dass sich der Stick ab und zu verabschiedet (Linux sieht ihn nicht) und dass man den Stick nur funktionsfähig kriegt durch reboot des gesamten Systems oder durch manuelles Abstecken und wieder Einstecken des Sticks.
Der andere Bug war, dass mitten im Gespräch plötzlich die Verbindung abbricht, aber Asterisk davon nichts mitbekommt (freeze).
 
Zuletzt bearbeitet:
Ein Bug war ja, dass sich der Stick ab und zu verabschiedet (Linux sieht ihn nicht) und dass man den Stick nur funktionsfährig kriegt durch reboot des gesamten Systems oder durch manuelles Abstecken und wieder Einstecken des Sticks.

dieses Problem gab es bei 24/7 Betrieb seit Mitte April bei mir genau ein mal.
Wuerde ich jetzt nicht als Hauptproblem sehen:)
Man kann es vermutlich rein softwareseitig umgehen (ohne Restart von asterisk und dergleichen) einfach mit
Code:
echo 4-2:1.0 > /sys/bus/usb/drivers/option/unbind
echo 4-2:1.1 > /sys/bus/usb/drivers/option/unbind
echo 4-2:1.2 > /sys/bus/usb/drivers/option/unbind

echo 4-2:1.0 > /sys/bus/usb/drivers/option/bind
echo 4-2:1.1 > /sys/bus/usb/drivers/option/bind
echo 4-2:1.2 > /sys/bus/usb/drivers/option/bind

die Parameter muessen natuerlich angepasst werden.

Der andere Bug war, dass mitten im Gespräch plötzlich die Verbindung abbricht, aber Asterisk davon nichts mitbekommt (freeze).

hatte ich noch gar nie gehabt.

- sparkie
 
Hallo @ all,

erstmal super Projekt und danke an alle die es soweit gebracht haben und es vorrantreiben.

Ich "klinke" mich hier mal ein (wenn es recht ist)

Habe selber zur Zeit ein Asterisk mit mit einem Portech MV-370 als gsm/sip gateway seit 2-3 jahren am laufen.
Funktionieren tut es. Aber irgendwie habe ich immer nach was anderem (Kosten/Leistung/Nutzen) gesucht.
Und da habe ich diesen Beitrag hier gefunden.

Sehr interessant...

Ich habe mir daraufhin gleich mal einen UMTS-USB Stick besorgt.
Von O2 (der auch der 5 Tage gratis Surfen) ist ein HUAWEI E1550
Den habe ich gestern bekommen. Dann habe ich mittels DC-Ulocker, den SIM-Lock entfernt und erst danach kann man auch die Voice Funktion freischalten, kostet 4¤ mit DC-Unlocker.
Danach habe ich noch ein AT Kommand (diesen DIAG=0, glaube ich wars) ausgeführt.
Dann habe ich auf meinem "Testboard", ist ein ALIX 2D13, leider funktioniert das openwrt image was PsychoMantis hier freundlicherweise zur Verfügung gestellt hat nicht, bekomme auf dem Serialport des ALIX nur "wilde Zeichen", gut habe mir ein neues openwrt backfire mit Asterisk 1.6 draufgespielt und die chan_datacard.so draufkopiert. Die modules.conf, extensions.conf sowie die sip.conf angepasst.
Ach ja und die openwrt Pakte USB* installiert und bei mir ganz ganz wichtig war kmod-usb-serial-option ohne die bekommt man die ttyUSB* devices nicht.

Ja und heute morgen war ich soweit erster testanruf.

Telefon klingelt auch, gehe ich ran höre ich nichts, es wird also kein "Sprachweg" geschaltet. An der Asterisk console finde ich jetzt auch nichts so auffälliges.

Console:
*CLI> -- Executing [s@datacard-incoming:1] Dial("Datacard/datacard0-3dda", "SIP/75,,O") in new stack
-- Setting operator services mode to 1.
== Using SIP RTP CoS mark 5
-- Called 75
-- SIP/75-00000001 is ringing
-- SIP/75-00000001 answered Datacard/datacard0-3dda
== Spawn extension (datacard-incoming, s, 1) exited non-zero on 'Datacard/datacard0-3dda'

Woran kann das liegen, das der Sprachweg nicht geschaltet wird?

Danke und

Gruß

Marc
 
Woran kann das liegen, das der Sprachweg nicht geschaltet wird?

hast du schon mal
Code:
datacard show devices
in die CLI eingegeben? Ist da Voice auch aktiviert?

Ich glaube der Support fuer E1550 ist erst seit kurzem vorhanden. Ich weiss nicht ob deine chan_datacard.so schon neu genug ist..

- sparkie
 
Hallo sparkie,

ah so ja habe ich noch garnicht dran gedacht das E1550 noch nicht so lange in chan_datacard supported wird.

Ich habe die chan_datacard aus Zeit und vorallem aus "bequemlichkeit" nicht selber kompelliert sondern aus diesem Beitrag hier "genommen"

http://www.voipfans.de/showpost.php?p=1521897&postcount=103
von chrizzz, danke an Ihn.

Welche Version das ist kann ich leider nicht sagen. Wird wohl aus Anfang/Mitte April 2010 sein, somit wohl schon etwas älter.

Puh, muss ich mich wohl doch nach langer langer Zeit ans kompellieren mach. Muss mal schauen ist ja auch für openwrt.

So habe gerade "Mobile Partner" für Voice "freigeschaltet" sprich die Plugins dafür aktiviert. Also Voice geht damit. Liegt somit nicht am Stick.

Danke und Gruß

Marc

Ach ja hier noch zur vervollständigung, erkennen tut er danach wohl alles.

datacard show devices
ID Group Connected State Voice SMS RSSI Mode Submode Provider Name Model Firmware IMEI Number
datacard0 1 Yes Free Yes Yes 11 5 4 o2 - de E1550 11.608.14.15.311 xxxxxxxxxxxxxxx Unknown


So habe mal geschaut in rev 84 ist wohl die Unterstützung für E1550 "rein gekommen" laut Readme.txt und das war vor 19 Tagen. Muss also was um den 17.6.2010 gewesen sein.

Ok, liegt wohl an einer "veralteten" chan_datacard.so.
 
Zuletzt bearbeitet:
Hallo mal wieder,

so habe gerade versucht die chan_datacard zu Kompilieren.
Habe das unter Ubuntu 10.05 (glaube ich wars gemacht in einer VM)

Habe nur die chan_datacard komp. nicht noch asterisk. Habe aber auch die sourcen auch von asterisk 1.6.2.6-1 "gezogen".

Habe erst in chan_datacard verzeichnis: ./configure und danach make ausgeführt.
Lief alles ohne Probleme (ich war happy das das so gut funktioniert) aber dann...

Ich kopiere die chan_datacard.so auf mein ALIX mit openwrt in das moduls verzeichnis.

Starte Asterisk und lade erstmal manuell das Modul und bekomme diese Fehlermeldung:

[Apr 1 01:50:44] WARNING[1057]: loader.c:399 load_dynamic_module: Module 'chan_datacard.so' did not register itself during load
[Apr 1 01:50:44] WARNING[1057]: loader.c:794 load_resource: Module 'chan_datacard.so' could not be loaded.
Unable to load module chan_datacard.so
Command 'module load chan_datacard.so' failed.

Habe mich dann auf die Suche gemacht, ihr habt wohl auch schon so einen Fehler gehabt wohl spez. mit openWrt evtl. hat jemand dazu auch schon eine Lösung???

Will jetzt mal unter ubuntu die chan_datacard probieren.

Gruß

Marc
 
Ich kopiere die chan_datacard.so auf mein ALIX mit openwrt in das moduls verzeichnis.

also mit openwrt kenne ich mich zwar nicht aus. Aber kann das ueberhaupt gehen? Es muesste ja auf dem Entwicklungssystem fuer openwrt genau die gleiche Asterisk Version verwendet worden sein, sonst stimmen u.U. Strukturen nicht mehr ueberein.

Ich wuerde vielleicht alles erst mal auf einer Maschine aus der Source kompilieren. So habe ich es bei mir auch gemacht. Dann passt wenigstens alles zusammen:)

- sparkie
 
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.