Forum: PC Hard- und Software Asterisk & Anrufe über ITU-T V.253 kompatibles modem


von Daniel A. (daniel-a)


Lesenswert?

Hallo zusammen

Kennt sich hier jemand mit der Konfiguration von Asterisk aus?

Zunächst, ja, ich hab auch schon in einigen Onlineforenthreads gelesen, 
das Anrufe mit Asterisk über Faxmodem "nicht gehen", mir geht es darum 
das trotzdem zu tun.

Das Endziel ist Voip anrufe mit Asterisk über das Modem zu leiten und 
umgekehrt.

Ich hab mir dieses USB Modem besorgt: 
https://www.usr.com/products/56k-dialup-modem/usr5637/

Das manuell Anrufe initiieren und abnehmen mit AT befehlen geht hab ich 
schon verifiziert. Auch das das Audiodaten sendet & empfangen nach V.253 
funktioniert hab ich schon getestet, das geht, hab mir so schon mal 
einen Song auf das Handy gestreamt (Obwohl, es nutzt die laut V.253 
Herstellerspezifischen nummern für die Audioformate statt die nummern 
für die identischen Formate die im Standard schon da gewesen wären.)

Ideal wäre es, wenn Asterisk das selbst schon könnte, aber ich glaube 
das ist dort noch nicht implementiert.

Als alternative, ich kann ein altes Projekt von mir 
(https://github.com/Daniel-Abrecht/alsa_pcm_tty) (das ich ursprünglich 
für was anderes angefangen habe aber dann überflüssig wurde) leicht 
anpassen, damit ich das tty/modem als normales alsa Audiogerät verwenden 
kann. Asterisk hat ein modul für alsa. Damit bliebe dann nur noch die 
Konfiguration von Asterisks alsa Modul, und das initiieren und abnehmen 
der Anrufe.

Damit zum Hauptproblem, wie kann ich Asterisk so konfigurieren, dass es 
Anrufe bei einem Modem initiieren und abnehmen kann. Alternativ, wenn 
ich bei voip aufrufen ein Skript dafür aus Asterisk starten könnte und 
umgekehrt, bei modem anrufen mit einem Script Asterisk einen Anruf 
starten lassen könnte, würde das auch gehen.

An Asterisk Code selbst rumzuhäcken würde ich gerne vermeiden, 
eigentlich hätte ich für all das nämlich gar keine zeit.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Daniel A. schrieb:

> Kennt sich hier jemand mit der Konfiguration von Asterisk aus?

Habe seit ein paar Wochen nun ein Asterisk am Laufen und inzwischen auch 
schon einiges an Konfigurationsexperimenten gemacht.

Aktuell kämpfe ich darum, einen ankommenden Anruf auf mehrere lokale 
Teilnehmer parallel zu verteilen, von denen allerdings einzelne nicht 
immer registriert sind (Softphone auf Handy, nicht immer in Reichweite), 
andere wiederum mehrfach registriert sein können (sodass man 
PJSIP_DIAL_CONTACTS() benutzen muss).

Aber das ist 'ne andere Baustelle.

> Das Endziel ist Voip anrufe mit Asterisk über das Modem zu leiten und
> umgekehrt.

Mir ist die Funktion des Modems in deinem Setup nicht so ganz klar. 
Willst du lediglich auf der lokalen Maschine außer dem Asterisk auch 
noch Anrufe tätigen können? Wenn dem so ist, was spricht dagegen, 
einfach noch ein Softphone mit laufen zu lassen? Das tut doch exakt das, 
was du willst (zumindest habe ich dich so verstanden).

von DPA (Gast)


Lesenswert?

Jörg W. schrieb:
> Mir ist die Funktion des Modems in deinem Setup nicht so ganz klar.
> Willst du lediglich auf der lokalen Maschine außer dem Asterisk auch
> noch Anrufe tätigen können? Wenn dem so ist, was spricht dagegen,
> einfach noch ein Softphone mit laufen zu lassen? Das tut doch exakt das,
> was du willst (zumindest habe ich dich so verstanden).

Ich hab auf dem Dachboden ein Kabelmodem, einen Server und eine 
Telefonbasisstation stehen. Momentan ist an dem Kabelmodem der Server 
(für Internet, routing, firewall, mail, etc.) und die 
Telefonbasisstation angeschlossen. Statt oder ergänzend zum dem Telefon 
schliesse ich jetzt mein USB Modem ans Kabelmodem an. Ich will auf den 
anderen PCs im Netzwerk einen SIP Client Installieren, die sich mit 
Asterisk Verbinden. Wenn von aussen übers Festnetz ein Anruf kommt, den 
bei den SIP Clients am PC entgegennehmen können, und wenn ich beim SIP 
Client einen Anruf mache, soll das wieder übers Festnetz gehen. Wie ein 
normales Telefon eben. Asterisk soll also quasi als Bridge zwischen 
Festnetz <-> SIP Client fungieren.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

DPA schrieb:
> Asterisk soll also quasi als Bridge zwischen Festnetz <-> SIP Client
> fungieren.

OK, also das, was man sonst mit einer analogen Telefon-Steckkarte machen 
würde?

Dafür habe ich auch erstmal keine rechte Idee. Da die üblichen 
Fritzboxen analoge Telefone betreiben können, sollte dort eigentlich die 
nötige Hardware enthalten sein …

Da einen ja die Telcos mittlerweile mit native VoIP bedrängen, was 
spräche dagegen, das direkt zu benutzen statt des Umwegs über POTS?

von DPA (Gast)


Lesenswert?

Jörg W. schrieb:
> Dafür habe ich auch erstmal keine rechte Idee. Da die üblichen
> Fritzboxen analoge Telefone betreiben können, sollte dort eigentlich die
> nötige Hardware enthalten sein …

Das Modem, das ich momentan habe, kam von meinem ISP. Ich weis nicht, ob 
dieser andere Modems akzeptieren würde.

> Da einen ja die Telcos mittlerweile mit native VoIP bedrängen, was
> spräche dagegen, das direkt zu benutzen statt des Umwegs über POTS?

An dem Modem ist nun mal ein Telefonanschluss. Wie man darüber Anrufe 
tätigt ist mir klar, wie ich das VoIP von meinem Anbieter verwenden 
kann, hingegen nicht.
Angeblich verwendet mein ISP (QuickLine) VoiP 
(https://www.quickline.ch/telefonie/festnetz/analogabschaltung/), aber 
abgesehen von der Seite finde ich dazu nicht viel. Nirgens der geringste 
Hinweis, wie man einen eigenen SIP Client mit Quickline verwenden 
könnte. Wenn das irgendwie ginge, wär das natürlich ideal. Aber man 
braucht doch sicher Server und Zugangsdaten von Quickline, um das zu 
nutzen, aber die kann ich nirgends finden. Ich könnte versuchen, den 
QuickLine Support zu kontaktieren, aber das endet normalerweise nur 
damit, dass sie mir einen teuren business Vertrag andrehen wollen...

von DPA (Gast)


Lesenswert?

Edit: Ich habe gerade das ding hier gefunden: 
https://www.swyx.com/products/support/knowledge-base/article-details/swyxknowledge/kb5224.html

In der config datei dort steht: sip.public.qlbvoice.ch. Whois von 
qlbvoice.ch zeigt, dass die Domain quickline gehört. Wenn ich zuhause 
bin, probier ich mal ein paar Sachen aus, ob ich darüber irgendwie 
Anrufe tätigen kann. Falls das geht, kann ich mir ja vielleicht sogar 
die ganze USB-Modem Geschichte sparen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ah ja: "Aktuell können keine SIP-Zugangsdaten zur Verfügung gestellt 
werden. Für diese Funktionen benötigen Sie ein Quickline Business Phone 
Abo."

Cr*p.

Zwar wird SIP in aller Regel unverschlüsselt übertragen, die 
Authentisierung erfolgt aber dennoch üblicherweise mit einem 
Challenge/Response-Verfahren, sodass man die Zugangsdaten nicht 
ersniffen kann.

Blöd.

von DPA (Gast)


Lesenswert?

Ok, das war wohl nichts, zurück zum alten Plan... (Verfluchte QuickLine, 
bevor sie die Intergga infiltrierten und der Improware was Signal 
abschalteten war alles besser...)

Das gute daran ist aber, das ich jetzt keine löcher in meine 
NAT/Firewall bohren muss und mir die Probleme dafür erstmal erspart 
bleiben.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

DPA schrieb:
> Das gute daran ist aber, das ich jetzt keine löcher in meine
> NAT/Firewall bohren muss und mir die Probleme dafür erstmal erspart
> bleiben.

Viel "Loch" braucht man dafür allerdings auch nicht – die Verbindungen 
werden üblicherweise von Teilnehmer zur Zentrale aufgebaut. Das klappt 
in der Regel sogar dann, wenn es keine wirkliche Verbindung ist (SIP via 
UDP), sofern das NAT die Pakete der Zentrale lange genug als 
Antwortpakete ansieht auf die ausgehenden SIP-Pakete in Richtung 
Zentrale. Auf diese Weise kann die Zentrale dann problemlos einen 
ankommenden Anruf signalisieren, woraufhin es wiederum der Teilnehmer 
ist, der die RTP-Verbindung eröffnet.

Interessant klingt die Aufgabe, aber ich fürchte, viel Vorgefertigtes 
wirst du nicht finden. Die, die sonst POTS-Telefone an Asterisk 
anschließen, werden wohl in aller Regel fertige ab-Module benutzen, wie 
sie Digium & Co. anbieten.

von Gerd E. (robberknight)


Lesenswert?

Jörg W. schrieb:
> Die, die sonst POTS-Telefone an Asterisk
> anschließen, werden wohl in aller Regel fertige ab-Module benutzen, wie
> sie Digium & Co. anbieten.

Die andere gängige Alternative sind POTS-Steckkarten für den 
DAHDI-Treiber.
Z.B. sowas hier:
https://www.aliexpress.com/item/32816162884.html

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gerd E. schrieb:
> Die andere gängige Alternative sind POTS-Steckkarten für den
> DAHDI-Treiber.

Leider ist der Krams nicht ganz billig, nichtmal bei Ali.

von Gerd E. (robberknight)


Lesenswert?

Jörg W. schrieb:
> Leider ist der Krams nicht ganz billig, nichtmal bei Ali.

Soo teuer finde ich das jetzt eigentlich nicht.

Die Alternative für den TO dürfte sein, per JTAG die Config des 
Kabelrouters auszulesen. Wie gut das geht hängt natürlich von dem 
konkreten Modell und der Erfahrung des TO mit dieser Materie ab.

Bin ich froh daß in D der Routerzwang verboten wurde...

: Bearbeitet durch User
von EherNicht (Gast)


Lesenswert?

@Daniel A.
Ich hatte ähnliches vor musste das "Projekt" aber aus Zeitmangel 
einstellen.
Ich habe das hier verwendet:
https://github.com/proquar/asterisk-Softmodem
Ich bin aus dem ganzen allerdings nicht wirklich schlau geworden Bzw. 
hatte Probleme mit meinem Modem.

@alle
Für die Lantiq SLIC 1XX Chips welche zum Bsp in der Easybox-802, 803 und 
904xDSL sowie O2Box-6431 verbaut sind, gibt es opensource Treiber und 
ein Asterisk-Channel-Lantiq module.
Das ganze läuft bei mir ganz gut mit Openwrt und Asterisk.
Das Problem in dem Fall von @DPA ist das min. ein FXS und FXO port 
benötigt wird.
Eventuell käme da der Router Speedport W921v in Frage, problem hier es 
muss noch Entwiklungsarbeit betrieben werden und dann ist nicht ganz 
klar ob sich der FXO port unterstützen lässt.
Der Router war bereits in 15.05 enthalten wurde dann aber aus irgend 
einem Grund nicht weiter entwickelt.

Ich persöhnlich würde aber die Finger von irgendwelchen Asterisk 
spielereien an dem SIP-Account meines Providers lassen.
So eine Asterisk-Telefonanlage hat man auch mal schnell so 
missconfiguriert das Fremde über die Anlage telefonieren können, aus 
diesem Grund empfehle ich da sowieso mehrere prepaid SIP-Accounts bei 
anderen Anbietern.
Schliesslich soll man ja seinen Provider nicht dazu zwingen Geld zu 
verdienen.

von Reinhard S. (rezz)


Lesenswert?

EherNicht schrieb:
> @alle
> Für die Lantiq SLIC 1XX Chips welche zum Bsp in der Easybox-802, 803 und
> 904xDSL sowie O2Box-6431 verbaut sind, gibt es opensource Treiber und
> ein Asterisk-Channel-Lantiq module.
> Das ganze läuft bei mir ganz gut mit Openwrt und Asterisk.

Der TO hat ja aber ein "Kabelmodem" was für mich nach Koax klingt.

von EherNicht (Gast)


Lesenswert?

Der TO hat ein analoges 56k-Modem, wie er an das Internet anbunden ist 
weis man nicht.

@DPA hat ein Kabelmodem, (eher ein Router ?). Man kann man ein 
Telefonrouter auch als ATA einsetzen bzw. das was @DPA vorhat 
(Telefon-bridge) funktioniert nur eventuell mit zusätzlicher 
Entwicklungsarbeit mit Openwrt.

von Daniel A. (daniel-a)


Lesenswert?

DPA, daniel-a und der TO sind die selbe Person. Ich kann mich leider 
nicht von überall einloggen, ich weiss das Passwort nicht auswendig.

von EherNicht (Gast)


Lesenswert?

OK ich glaube ich habe dich Falsch verstanden du willst das analoge 
Modem als FXO nutzen:
Asterisk Server mit USB -> USB - analoges Modem - Tel -> FXS-port des 
Kabelmodems
richtig ?

Ich weis das es für einige UMTS-Sticks sowas gibt (solche mit AT 
commandos und Sprachunterstützung),
nennt sich asterisk-chan-dongle 
https://github.com/wdoekes/asterisk-chan-dongle.git
Zwar funktioniert das ganze nur mit einigen UMTS-Sticks da diese aber 
genauso AT Kommandos nutzen funktioniert dass ja vieleicht.

von DPA (Gast)


Lesenswert?

EherNicht schrieb:
> OK ich glaube ich habe dich Falsch verstanden du willst das analoge
> Modem als FXO nutzen:
> Asterisk Server mit USB -> USB - analoges Modem - Tel -> FXS-port des
> Kabelmodems
> richtig ?

Ja, genau.

EherNicht schrieb:
> Ich weis das es für einige UMTS-Sticks sowas gibt (solche mit AT
> commandos und Sprachunterstützung),
> nennt sich asterisk-chan-dongle
> https://github.com/wdoekes/asterisk-chan-dongle.git
> Zwar funktioniert das ganze nur mit einigen UMTS-Sticks da diese aber
> genauso AT Kommandos nutzen funktioniert dass ja vieleicht.

Das erwartet ein TTY für AT Befehle und ein TTY für raw sound. Ich hab 
nur 1 TTY für beides, bei dem ich mit AT+VTR auf audio umschalten kann, 
und mit '\x10\x03' wieder auf AT Befehle. Ich hab also 3 Dinge, die ich 
versuchen könnte:
 1) chan-dongle anpassen
 2) 2 PTS erstellen, eins für sound und eins für AT befehle, und das IO 
dann nach kleineren anpassungen in das echte tty weiterleiten 
(vermutlich nicht gut für latency)
 3) Audio von chan_dongle nach /dev/null leiten, und bei Anrufen 
zusätzlich mit chan_alsa ausgeben, vergleichbar wie in 2), aber mit 
meinem eigenen ioplug alsa plugin für audio statt einem pts.

Ich denke ich versuche erstmal option 3 & 2.

von Daniel A. (daniel-a)


Lesenswert?

Ok, Audio vom PC über asterisk zu Phone geht schonmal, umgekehrt noch 
nicht, und Asterisk den Anruf tätigen lassen auch noch nicht.

Ich hab jetzt mal etwas v253 Support zu meinem alsa_pcm_tty Projekt 
hinzugefügt, aber es ist ein ziemlicher Hack und architektonisch nicht 
ideal, eigentlich sollte ich das als line discipline im Linux Kernel 
implementieren.

Zum testen hab ich jetzt mal folgendes gemacht:

In modules.conf die Zeile "noload => chan_alsa.so" durch "load => 
chan_alsa.so" ersetzt.

In extensions.conf zum Testen:
1
[general]
2
static=yes
3
writeprotect=yes
4
5
[default]
6
7
[from-internal]
8
exten => 1001,1,NoOp()
9
      same => n,Answer()
10
      same => n,Dial(CONSOLE/ALSA)
11
      same => n,Hangup

alsa.conf
1
[general]
2
autoanswer=yes
3
context=local
4
extension=alsa
5
language=de
6
input_device=ttyACM0
7
output_device=ttyACM0
8
noaudiocapture=false

In /etc/asound.conf:
1
pcm.!default {
2
  type plug
3
  slave {
4
    pcm "ttyACM0"
5
  }
6
}
7
8
pcm.ttyACM0 {
9
  type "plug"
10
  slave.pcm "rate-ttyACM0"
11
  hint {
12
    description "The modem"
13
  }
14
}
15
16
pcm.rate-ttyACM0 {
17
  type rate
18
  slave {
19
    pcm "plug:tty-ttyACM0"
20
    rate 8000
21
  }
22
  converter "samplerate"
23
}
24
25
pcm.tty-ttyACM0 {
26
  type tty
27
  device "/dev/ttyACM0"
28
  mode v253
29
  baudrate 9600
30
  samplerate 8000
31
  format u8
32
}

Die libasound_module_pcm_tty.so aus meinem alsa_pcm_tty Projekt hab ich 
nach /usr/lib/x86_64-linux-gnu/alsa-lib/ Kopiert.

Und ein init script das den v253_splitter_daemon aus meinem alsa_pcm_tty 
Projekt started: (Das Programm erstellt ein pts Device mit dem selben 
Namen wie das echte tty und :AT angehängt, wen man darüber AT befehle 
absetzt, fügt es vor ATD noch ein AT+FCLASS=8 ein, stellt bei AT+VTR 
eingaben ab und signalisiert dem alsa plugin dass es jetzt die 
Musikdaten schreiben kann, und stellt bei ATH wieder zurück.)

/etc/init.d/v253-ttyACM0
1
#!/bin/sh
2
3
### BEGIN INIT INFO
4
# Provides:          v253-ttyACM0
5
# Required-Start:    $local_fs
6
# Required-Stop:     $local_fs
7
# Default-Start:     2 3 4 5
8
# Default-Stop:      0 1 6
9
# Short-Description: v253 modem tty splitter
10
# Description:       v253 modem tty splitter
11
### END INIT INFO
12
13
PATH="$PATH:/usr/local/bin"
14
15
case $1 in
16
  start|restart)
17
    kill $(cat /run/v253.pid 2>/dev/null) 2>/dev/null
18
    v253_splitter_daemon /dev/ttyACM0 'AT+VSM=128,8000,0,0' & PID=$!
19
    echo $PID >/run/v253.pid
20
    chown asterisk: /dev/ttyACM0 /dev/ttyACM0:AT
21
    sleep 0.1
22
  ;;
23
  stop) kill $(cat /run/v253.pid 2>/dev/null) 2>/dev/null ;;
24
  status)
25
    if kill -0 $(cat /run/v253.pid 2>/dev/null) 2>/dev/null
26
      then echo Running; exit 0
27
      else echo Not running; exit 1
28
    fi
29
  ;;
30
  *) exit 1 ;;
31
esac
32
33
exit 0

Und dann noch im init script von asterisk eine dependency hinzugefügt.

------------

Das ganze ist alles andere als andere als Ideal, aber es geht so 
halbwegs. chan_dongle hab ich noch nicht ausprobiert, das ist in meiner 
Distro nicht dabei. Ich leg das Projekt Erstmal beiseite, und schaue mir 
das eventuell später nochmal an.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.