26. August 2025 (letzte Aktualisierung am 27.8.25)
Kostenlose Telefonate in perfekter Klangqualität. Das gibt es. Opus ist der moderne Audio-Codec für VoIP, der sowohl Sprache als auch Musik in hoher Qualität über das Internet überträgt. Auf einem älteren Raspberry Pi 3 B mit Asterisk 16 unter einem veralteten Raspbian mag die Einrichtung kompliziert wirken, aber mit ein paar gezielten Schritten lässt sich Opus nachrüsten – und schon können Softphones wie Linphone HiFi-Audio genießen, während ältere Telefone weiterhin G.711 mit stark reduzierter Bandbreite verwenden. In diesem Artikel zeige ich, wie ich Opus auf meinem Raspberry Pi aktiviert und getestet habe. Schließlich funktionierten dann auch noch Videotelefonate über meinen kleinen Asterisk-Server auf dem Raspberry Pi.

Asterisk 16 bringt eine solide Grundlage für IP-Telefonie, doch auf älteren Raspberry-Pi-Systemen fehlen oft aktuelle Codec-Module. Besonders Opus, der flexible und qualitativ hochwertige Audio-Codec, ist auf Raspbian Buster nicht standardmäßig verfügbar. Mein Ziel war es, Opus auf einem Raspberry Pi 3 B zum Laufen zu bringen, ohne das gesamte System auf ein aktuelles Raspbian umzuziehen. Dabei wollte ich nicht nur Telefonate in hoher Qualität zwischen Softphones ermöglichen, sondern auch die Kompatibilität zu älteren Geräten wie der Fritz!Box erhalten. In diesem Artikel dokumentiere ich Schritt für Schritt, wie ich Opus nachinstalliert, die Module geprüft und die Konfiguration für optimale Audioqualität eingerichtet habe.
ChatGPT hat mir auf die Sprünge geholfen: https://chatgpt.com/share/68ad78d9-9164-8013-9f3b-1c1662f10b61
SIP, IAX2, Video- und Audio-Codecs. Alles halb so wild:
-
-
-
SIP ist ein Protokoll, das nur den Ablauf steuert: Anrufen, Klingeln, Annehmen, Auflegen, Besetzt.
-
Es sagt also wer mit wem spricht, aber nicht wie der Ton oder das Bild übertragen wird.
-
Für den eigentlichen Ton braucht man Audio-Codecs (z. B. G.711 = Telefonqualität, Opus = sehr flexibel und gute Qualität, G.729 = spart Bandbreite).
-
Für das Bild nimmt man Video-Codecs (z. B. H.264 = Standard, VP8/VP9 = oft im Web, AV1 = moderner aber rechenintensiver).
-
Beide Gesprächspartner müssen mindestens einen gemeinsamen Codec unterstützen, sonst klappt es nicht.
-
Die Daten (Ton und Bild) laufen meist über RTP, also ein separates Transportprotokoll.
-
IAX2 ist eine Alternative zu SIP, wird vor allem von Asterisk genutzt und läuft besser durch Firewalls, aber ist weniger verbreitet.
-
Es gibt auch noch andere Protokolle (z. B. H.323 oder WebRTC), die ähnliche Aufgaben haben.
-
Grob gesagt: SIP = Sprache des Telefonprotokolls, Codecs = Sprache der eigentlichen Medieninhalte.
-
Man kann also SIP mit verschiedenen Codecs kombinieren, solange beide Seiten dieselben verstehen.
-
-

Nachfolgend die Zusammenfassung, wie ich dann schließlich vorgegangen bin, da mein Raspbian-Betriebssystem auf meinem Raspberry Pi 3B veraltet ist und das Asterisk 16 ebenfalls:
Damit Opus in HiFi-Qualität läuft, habe ich folgendes in der codecs.inf von Asterisk eingetragen:
;============================ OPUS Section ============================ ; Optimiert für Linphone / HiFi / Fullband [opus] type=opus max_bandwidth=fullband ; volle Bandbreite für HiFi bitrate=64000 ; 64 kbps als Standard, VBR möglich cbr=no ; Variable Bitrate aktiv complexity=10 ; maximale Kodierkomplexität für beste Qualität fec=yes ; Forward Error Correction aktiv dtx=no ; Discontinuous Transmission deaktiviert (bessere Musikqualität) signal=auto ; automatisch zwischen Sprache/Musik wählen application=voip ; Standard für VoIP-Telefonie max_playback_rate=48000 ; 48 kHz, passt zu Linphone Fullband ;============================ OPTIONAL: Narrowband / low-bandwidth ============================ ; Für langsame Verbindungen oder Clients, die Fullband nicht unterstützen [opus-low] type=opus max_bandwidth=wide ; nur Wideband bitrate=32000 cbr=no complexity=8 fec=yes dtx=no signal=voice application=voip max_playback_rate=16000
In der sip.conf von Asterisk unter [general] bekommt opus die höchste Prioritet:
disallow=all allow=opus allow=g722 allow=alaw allow=ulaw allow=gsm allow=g729
Was fehlt, ist noch ein funktionsfähiges Opus auf meinem Asterisk:
raspberrypi*CLI> module show like codec_opus Module Description Use Count Status Support Level 0 modules loaded raspberrypi*CLI> module show like opus Module Description Use Count Status Support Level res_format_attr_opus.so Opus Format Attribute Module 1 Running core 1 modules loaded raspberrypi*CLI>
Du hast nur res_format_attr_opus.so geladen (das ist die „Meta-Info“ über Opus),
aber der eigentliche Codec (codec_opus.so) fehlt bei Dir. Deshalb kannst Du im Moment noch kein Opus aushandeln oder benutzen – Asterisk kennt die Parameter, hat aber keinen Encoder/Decoder.
Warum fehlt das? Bei Asterisk 16 auf Raspberry Pi ist es oft so, dass die Distribution (Debian/Raspbian-Pakete) aus Lizenz-/Build-Gründen Opus nicht kompiliert hat. Standardmäßig kommen nur die freien Codecs (alaw, ulaw, gsm, g722) mit.
Lösung: Du musst das Opus-Codec-Modul für Asterisk installieren. Unter Debian/Raspberry Pi OS (je nach Version) geht das z. B. so:
sudo apt update sudo apt install asterisk-opus
Danach prüfen, ob das Modul da ist:
ls /usr/lib/asterisk/modules/ | grep opus
Und das passierte dummerweise bei mir:
sudo apt install asterisk-opus Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt: libmicrodns0 python-colorzero rpi-eeprom-images Verwenden Sie »sudo apt autoremove«, um sie zu entfernen. Die folgenden zusätzlichen Pakete werden installiert: libopusfile0 Die folgenden NEUEN Pakete werden installiert: asterisk-opus libopusfile0 0 aktualisiert, 2 neu installiert, 0 zu entfernen und 330 nicht aktualisiert. Es müssen 47,8 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 146 kB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren? [J/n] J Fehl:1 http://ftp.acc.umu.se/mirror/raspbian/raspbian buster/main armhf libopusfile0 armhf 0.9+20170913-1 Verbindung fehlgeschlagen [IP: 194.71.11.165 80] Holen:2 http://ftp.acc.umu.se/mirror/raspbian/raspbian buster/main armhf asterisk-opus armhf 13.7+20171009-2 [14,3 kB] Es wurden 14,3 kB in 1 min 27 s geholt (164 B/s). E: Fehlschlag beim Holen von http://ftp.acc.umu.se/mirror/raspbian/raspbian/pool/main/o/opusfile/libopusfile0_0.9+20170913-1_armhf.deb Verbindung fehlgeschlagen [IP: 194.71.11.165 80] E: Einige Archive konnten nicht heruntergeladen werden; vielleicht »apt-get update« ausführen oder mit »--fix-missing« probieren? pi@raspberrypi:~ $
Alles klar – das Problem ist also nicht Asterisk selbst, sondern dass Dein Raspberry Pi aus den alten Buster-Repos zieht und die Pakete dort auf dem Mirror nicht mehr sauber verfügbar sind. Das heißt: asterisk-opus + Abhängigkeit libopusfile0 können nicht geladen werden → deshalb kriegst Du kein codec_opus.so.
Lösung:
sudo apt-get update --fix-missing sudo apt-get install asterisk-opus
Test:
pi@raspberrypi:~ $ ls /usr/lib/asterisk/modules/ | grep opus codec_opus_open_source.so format_ogg_opus_open_source.so res_format_attr_opus.so pi@raspberrypi:~ $ ls /usr/lib/asterisk/modules/ | grep opus codec_opus_open_source.so format_ogg_opus_open_source.so res_format_attr_opus.so pi@raspberrypi:~ $
Alles klar, das erklärt, warum Du kein codec_opus.so findest. Auf Deinem Raspberry Pi ist offenbar nicht der offizielle Digium/Schmooze‐Opus-Codec installiert, sondern die freie Open-Source-Implementierung.
Die Dateinamen verraten es:
codec_opus_open_source.so → das eigentliche Codec-Modul
format_ogg_opus_open_source.so → sorgt dafür, dass Asterisk auch OGG/Opus-Dateien abspielen/aufnehmen kann
res_format_attr_opus.so → stellt die Format-Attribute für Opus bereit (z. B. Bitrate, Bandbreite)
Für Dich heißt das: In der sip.conf oder pjsip.conf musst Du opus als Codec eintragen, nicht den Dateinamen. Asterisk lädt automatisch codec_opus_open_source.so, wenn Du allow=opus setzt.
Prüfen kannst Du das mit:
asterisk -rx "module show like opus" asterisk -rx "core show codecs" asterisk -rx "core show translation"
Normalerweise musst Du in der modules.conf gar nichts extra eintragen, wenn die Dateien schon unter /usr/lib/asterisk/modules/ liegen – Asterisk lädt die automatisch, sofern Du sie nicht explizit verbietest.
Damit alles Änderungen übernommen werden, reicht ein Neustart von Asterisk:
sudo systemctl restart asterisk
Prüfen, ob alle Opus-Module geladen sind:
raspberrypi*CLI> module show like opus Module Description Use Count Status Support Level codec_opus_open_source.so Opus Coder/Decoder 0 Running unknown format_ogg_opus_open_source.so OGG/Opus audio 0 Running core res_format_attr_opus.so Opus Format Attribute Module 1 Running core 3 modules loaded raspberrypi*CLI>
Wunderbar! Alles in Ordnung.
Welches Endgerät soll ich verwenden? Das Endgerät muss Opus in der entsprechend hohen Übertragungsbandbreite unterstützen. Die FritzBoxen, die ich kenne, unterstützen kein Opus. Das Softphone PhonerLite unterstützt nur ein Opus mit niedriger Bandbreite.
Also blieb für mich nur Linphone übrig. Ich verwende es als Android Softphone auf meinem Smartphone und auf Linux. Wichtig ist, dass Opus aktiviert ist.

Video-Telefonate mit Softphones von Linphone: Das geht. Im Beispiel habe in der sip.conf nur vp8 aktiviert.
[general] videosupport=yes disallow=all allow=opus allow=g722 allow=alaw allow=ulaw allow=gsm allow=g729 allow=vp8 ; allow=h264 ; allow=h261 ; allow=h263 ; allow=h263p
Dann müssen in den Softphones auch VP8 aktiviert sein. Wenn in einzelnen SIP-Accounts Codecs definiert sind, muss dort auch VP8 aktiviert sein. Das hatte ich vergessen und lange gesucht, obwohl ich hätte schneller darauf kommen müssen:
; Telefon 1034 auf meinem BlackView A80 Smartphone [1034] type=friend context=janson secret=xxxxxxxx host=dynamic username=1034 canreinvite=no keepalive=60 dtmfmode=rfc2833 callerid = "Volker" <1034> port=5064 disallow = all allow = opus allow = g722 allow = alaw allow = ulaw allow = vp8
Hier hatte ich nur „allow = vp8“ vergessen einzutragen und Videotelefonate funktionierten nicht. Einfacher Fehler. Lange Suche. Beginnende Demenz?



Die Linphone-Softphones gibt es für Android im Google Playstore und für Linux als AppImage unter https://download.linphone.org/releases/linux/app/. Dort habe ich die Linphone 5.3.0.AppImage heruntergeladen. Eine Installation ist nicht notwendig. Eine AppImage enthält alle notwendigen Quellen in einer einzigen Datei, die nur ausführbar gemacht werden muss. Linphone ist kostenlos und werbefrei. Aber die Bedienung ist eine harte Nuss.
Und so begann mein Linphone-Drama, das mit einem Happy End seinen Abschluss fand:
|
Video-Calls unter Linux: mein Weg durch das Chaos und wie du auf meinen Asterisk-Server kommst – 17. August 2025: Wer denkt, Video-Telefonie unter Linux sei ein Kinderspiel, liegt daneben. Zwischen instabilen Programmen, überforderten Notebooks und kryptischen Menüs habe ich so ziemlich alles ausprobiert, was der Markt hergibt. Am Ende stand ich kurz davor, die Webcam aus dem Fenster zu werfen – bis ich das Linphone-AppImage entdeckt habe. – weiter – |