[Frage] SNOM D345 und G.711a - und ulaw

Philipp971

Neuer User
Mitglied seit
3 Sep 2019
Beiträge
79
Punkte für Reaktionen
1
Punkte
8
Hi zusammen!

Wir nutzen einige SNOM D345 und ich spiele zur Zeit für eine Verbesserung der Sprachqualität ein weneig an den Codecs herum.
Gängig ist ja, gerade wenn es von Voip zu ISDN-Leitungen geht, noch der G711-Codec. Interessanterweise unterstützt das D345 diesen aber nicht - was mich durchaus wundert.

Welchen Codec nehmt ihr? Welche Reihenfolge bevorzugt ihr in der Asterisk wenn es um die Codecs geht? Ich probiere mein Glück aktuell mit G722 und Alaw bei der Asterisk und den Softphones und bei den SNOMS habe ich in den Settings die Reihenfolge: g722,gsm,g726-32,g729,g723,pcmu,pcma,aal2-g726-32,telephone-event (diese waren in einer anderen Reihenfolge schon vorher eingetragen)

eingestellt.
Mit welcher Reihenfolge fahrt ihr am Besten? Was ist zu empfehlen? Nutzen die SNOMs wirklich kein G711-Codec?


Danke und Grüße
 
Moinsen


g722,gsm,g726-32,g729,g723,pcmu,pcma,aal2-g726-32,telephone-event
Snom: g722,pcma,pcmu,telephone-event
Asterisk: allow=!all,g722,alaw,ulaw
Code:
Global Signalling Settings:
---------------------------
  Codecs:                 (g722|alaw|ulaw)
([general]/[peer]/[user]/[friend])
Und mal...
...lesen, um zu verstehen, dass G.711 eine Zusammenfassung von aLAW/PCMA und uLAW/PCMU ist.

Die Asterisk Sprachprompts sind normalerweise GSM.
...die hören sich auch mit einer Transkodierung nach G.722 nicht besser an.
Besser sind, um auch die knackige G.722 Qualität zu haben, die Sprachprompts in PCM16 (Dateiendung: *.pcm) vorliegen zu haben.
Aus PCM16 lassen sich auch direkt G.722 wandeln, die bei entsprechenden G.722 Verbindungen nicht transkodiert werden.
Aus GSM können aber separate alaw/ulaw ohne Qualitätsverlust generiert* werden.

Übrigens
Auch bei Musiconhold kann eine Transkodierung vermieden werden, wenn die Dateien im passenden Codec vorliegen...
Code:
#l /usr/share/asterisk/moh/special/                                                                                                                     
insgesamt 10200
-rw-rw---- 1 asterisk asterisk 3467458 Feb 23  2017 gms.pcm
-rw-r--r-- 1 asterisk asterisk 1783689 Apr  2  2019 gorillaz.g722
-rw-rw---- 1 asterisk asterisk 3125980 Feb 23  2017 hal.pcm
-rw-rw---- 1 asterisk asterisk 2056612 Feb 23  2017 wtdb.pcm


* Beispiel mit dem Asteriskkonsolenbefehl "file convert"...
Code:
osmc*CLI> file convert /usr/share/asterisk/sounds/de/weckruf.pcm /usr/share/asterisk/sounds/de/weckruf.g722
Converted /usr/share/asterisk/sounds/de/weckruf.pcm to /usr/share/asterisk/sounds/de/weckruf.g722 in 38ms
osmc*CLI> file convert /usr/share/asterisk/sounds/de/weckruf.gsm /usr/share/asterisk/sounds/de/weckruf.alaw
Converted /usr/share/asterisk/sounds/de/weckruf.gsm to /usr/share/asterisk/sounds/de/weckruf.alaw in 35ms
osmc*CLI> file convert /usr/share/asterisk/sounds/de/weckruf.gsm /usr/share/asterisk/sounds/de/weckruf.ulaw
Converted /usr/share/asterisk/sounds/de/weckruf.gsm to /usr/share/asterisk/sounds/de/weckruf.ulaw in 28ms
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Philipp971
@KunterBunter - oh man - danke für die Info. Ich dachte pcma wäre ein vollkommen anderer Codec, ich habe diesen gar nicht erst im Netz gesucht ... :rolleyes:

@koyaani - danke für die ausführliche Antwort!

Asterisk: allow=!all,g722,alaw,ulaw
Verstehe - ich war der Annahme das die Codecs im Trunk bei PEER-Details im Tab Outgoing mit &, statt einem Komma getrennt werden.
Was beeinflusst das Ausrufezeichen hinter dem "all" eigentlich?

Das heißt diese Einstellungen hast du bei dir auch eingestellt, ja?
Dann probiere ich das bei uns entsprechend aus und schaue ob sich das bessert.

Noch eins: Im Trunk konfigurierte ich bisher noch das "disallow=all" und dann allow=XX,XX,XX - das "disallow" kann ich mir ja eigentlich sparen, korrekt?

Danke dir!
 
Letzter Satz: Korrekt ;)
Das Ausrufezeichen ( vor dem all ) ist eine sogenannte Negotation.
Enfach mal mit "nicht" übersetzt bedeutet das "allow=!all" dann...
Erlaube nicht Alles
...ausser denen, die nach dem Komma folgen.

Unterschiede zwischen [general] und [peer] [user] [friend]
Erstere aktivierte/deaktivierte Einstellungen gelten Global und können entsprechend im Peer überschrieben/angepasst werden.
Ist aber die [general] Einstellung ausreichend muss sie bei den Peer/User/Friend gar nicht angegeben werden.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Philipp971
Guten Morgen!
Alles klar - danke!

Du meinst die Einstellungen im Truk richtig? Bei PEER Details im Tab Outgoing und Incoming, richtig?
Ich nutze FreePBX, das macht es für mich einfacherer. Dann kann ich ja unter Outgoing und Incoming bei type= jeweils [general] eingeben, richtig?

sieht momentan so aus:
[Outgoing]
type=peer
qualify=no
port=5060
outboundproxy=XXX.XXX.XXX.XXX
insecure=invite,port
host=XXX.XXX.XXX.XXX
fromdomain=[email protected]
dtmfmode=auto
allow=!all,g722,alaw,ulaw


[Incoming]
type=user
context=from-trunk
allow=!all,g722,alaw,ulaw

Verstehe... meine Nebenstellen sind alle Standard als friend eingerichtet, das heißt die nehmen sich gar nicht die Codec-Reihenfolge rauswärts vom Trunk weil der auf peer steht?!
 
Dein Peer [Outgoing] macht normalerweise nur eine Richtung, er wird vornehmlich zum Rausrufen genutzt.
Ausnahme: Der/Die Hostname/IP des "register=" Eintrags stimmt mit diesen Peer überein.
Dann nimmt Asterisk diesen Weg...
Ein Anruf über ein "register=" findet Hostname/IP in >> [Outgoing] und nutzt dessen >> "context=" Angabe darin um seine "register=user:secret@registrar/Extension"
anzuspringen.
Hat der Peer keine "context=" Angabe, wird der "context=" aus [general] oder wenn da nicht vorhanden, der [default] Kontext versucht.

Friends/User
Friends könnten ja auch SIP-Video mit den Codec h264 machen, das muss ja nicht unbedingt auch unter [general] erlaubt sein.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Philipp971
Danke für die Info!
Was meinst du aber dennoch dazu im PEER unter Outgoing und Incoming das [general] zu nutzen statt type=peer und type=user.
Meine Extensions sind weder als peer noch als user erstellt, daher denke ich würde [general] passen(?).
 
Die "type=" Angabe muss schon sein.
Du nutzt die Codecs aus [general] wenn du die "allow=" Zeile in [Outgoing] und [Incoming] kommentierst ( ; am Zeilenanfang ), oder löschst.

Check deine Peer/User Konfiguration in der Asteriskkonsole...
sip show peer Outgoing
sip show user Incoming
Codec Anzeige bei bestehenden Verbindungen...
sip show channels
Was nutzt [general] ?
sip show settings
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Philipp971
Hallo,

Selbstverständlich, den type schreibe ich davor - ich hätte eben gesagt: type=general bei Outgoing und Incoming.
Sodass ich letztendlich insgesamt bei:

[Outgoing]
type=general
qualify=no
port=5060
outboundproxy=XXX.XXX.XXX.XXX
insecure=invite,port
host=XXX.XXX.XXX.XXX
fromdomain=[email protected]
dtmfmode=auto
directmedia=no
allow=!all,g722,alaw,ulaw

[Incoming]
type=general
context=from-trunk
allow=!all,g722,alaw,ulaw
 
Hallo!


Code:
sip show peer Outgoing
bringt mir kein Ergebnis (Peer Outgoing not found.)

Code:
sip show user Incoming
bringt mir kein Ergebnis (User Incoming not found.)

Code:
sip show settings
mir wird entsprechend alles mögliche aufgelistet, allerdings finde ich wenn ich nach "general" suche keine Treffer...

Guckstdu: http://das-asterisk-buch.de/1.6/peers-users-friends.html
type= kann nur einen der Drei als Wert haben.
Alles klar - JETZT habe ich es geschnallt. Also ist ja praktisch schon alles schick dass alle Nebenstellen auf 'friend' steht - somit sollte ich im Trunk unter "Outgoing" und "Incoming" bei type=auch friend stehen haben, da hierbei peer und user ja absolut keinen Sinn machen. Richtig soweit?
 
Da will ich mich nicht zu weit aus dem Fenster lehnen.
Ich mag persönlich type=peer für Gateways (Rausrufen) und type=friend für Endgeräte (Rein & Raus)
...letztendlich wird im Dialplan ( Context/Extension ) entschieden wie es weitergeht.
 
Dann... scheine ich das dennoch noch nicht ganz zu verstehen.
Denn: Als ich die Nebenstellen nach und nach erstellt habe, war als Standard immer "Friend" eingestellt.

Und ich dachte dass im Trunk dann unter Outgoing und Incoming entsprechend gesagt, wird für welchen Type diese Settings gelten (in meinem Fall ja für Friend, da alle Nebenstellen als Friend eben über diesen Trunk heraustelefonieren).

Wo würdest Du denn den type=peer angeben wenn es um Gateways geht, eben im Punkt Outgoing?! Und wo hast du bei dir dann den type=friend eingetragen? Natürlich macht type=friend für Endgeräte Sinn, ist ja klar.
Ich stehe gerade ein wenig auf dem Schlauch was die Eintragung von dem type in Outgoing und Incoming angeht.

Zum Verständnis: Ich möchte ja eigentlich nur dass sich die Anrufe bzw. Nebenstellen welche nach innen und außen telefonieren und über den Trunk gehen bzw. über den Trunk reingehend die entsprechenden Settings dort ziehen. Somit dachte ich eben bei Outgoing und Incoming an type=friend, weil die Nebenstellen als solche eingetragen sind. Wenn ich type=peer bei Outgoing und type=user bei Incoming lasse, macht das für mich gedanklich keinen Sinn weil doch die Nebenstellen gar als Friend angesprochen werden?

Gerade user bei Incoming ist doch in dem Szenario vollkommen sinnlos(?)
 
...letztendlich wird im Dialplan ( Context/Extension ) entschieden wie es weitergeht.
Für mich wird das alles gerade mehr und mehr und ich versuche die ganzen Zusammenhänge zu verstehen.

Letztendlich geht doch aber jeder Anruf über den Trunk und eben diesen damit festgelegten Parametern welche bei Outgoing und Incoming eingetragen sind.
Ich müsste einfach in Erfahrung bringen, welchen type ich bei Outgoing und Incoming für mich als "idealen Wert" eintragen sollte... Denn nach wie vor macht für mich peer und user keinen Sinn wenn alle Nebenstellen als Friend eingetragen sind. :(
 
Ja, darüber kann hervorzüglich diskutiert werden.

Friends sind Beides: Peer und User
Die tauchen deswegen sowohl bei...
sip show users
...als auch bei...
sip show peers
...auf.

Das Gateway, kann nur zum Rausrufen, als auch für eingehende Verbindung genutzt werden.
Aber es soll logischerweise nicht von einem anderen/weiteren SIP-Klienten als VoIP Account registrierbar ( User ) sein.
...und taucht eben bei type=peer nur bei...
sip show peers
...auf.

Aber, wenn ein Peer auf eine IP eines register= trifft, passt der Name [Outgoing] nicht mehr ;)
...bei mir nenn ich es beispielsweise: [fbfgateway0]
Mit einer expliziten Angabe eines: context=contextname
...damit ein eingehender Anruf ( über register= ) verklickert bekommt wo es langgehen soll.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Philipp971
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.