[Problem] Wie komme ich an linphone-daemon?!

alve89

Neuer User
Mitglied seit
28 Dez 2021
Beiträge
15
Punkte für Reaktionen
1
Punkte
3
Guten Abend allerseits,

ich kann mir zwar nicht vorstellen, der Einzige mit diesem Anliegen zu sein, aber weder Google noch die Forensuche bringen mich wirklich weiter.

Mein Ziel: Ich möchte Linphone über die Command Line steuern, ich brauche nur die grundlegendsten Funktionen (Anruf annehmen, Anruf ablehnen, Anruf tätigen - alles nur lokal im eigenen Netz). Ich möchte damit aus dem lokalen Netz auf meine Video-Gegensprechanlage zugreifen. Geschehen soll das über meinen RPi 4. Der SIP-Server läuft auf der Klingelanlage (Dahua VTO2202F).

Nun habe ich Linphone installiert mit
Code:
sudo apt install linphone
. Das hat auch wunderbar funktioniert und ich kann über die GUI Linphone konfigurieren und die gewünschten Funktionen ausführen. Allerdings eben nur über die GUI.

Nun steht hier (https://www.linphone.org/technical-corner/linphone) geschrieben:

Console tools​

Linphone-daemon is a console-mode program based on Liblinphone that can register, send and receive calls by reading simple text commands from standard input or from a UNIX socket. In response to each command, linphone-daemon writes the execution status of the command to standard output (or a socket).
This tool can easily be used from a shell script to execute simple SIP scenarios by those who do not require the full capabilities of the Liblinphone SDK.

Linphone-daemon supersedes the former "linphonec" console tool, as it uses a more effective syntax for inputs and outputs.

Insbesondere der Absatz
This tool can easily be used from a shell script to execute simple SIP scenarios by those who do not require the full capabilities of the Liblinphone SDK.
ist für mich interessant. Die einzige "Anleitung" habe ich bisher jedoch nur hier gefunden: https://wiki.linphone.org/xwiki/wiki/public/view/Linphone/Linphone and Raspberry Pi/
Dort wird allerdings das gesamte Linphone-SDK installiert, was ja gemäß der obigen Beschreibung gar nicht nötig sein sollte.

Ich finde also partout nicht heraus, wie ich nun den Linphone-Daemon (ohne die Installation des SDK) starte und nutze... kann mir hier bitte jemand auf die Sprünge helfen?

Danke euch und Grüße!


PS: Das Make des SDK läuft zwar gerade, während ich das hier schreibe, aber ich wäre froh, wenn ich das gar nicht bräuchte - die Nutzung desselben wäre nämlich analog der Kanonen und der Spatzen...
 
Du kannst das Paket "linphone-nogtk" installieren
 
Zuletzt bearbeitet:
Moinsen


Wurde denn nicht versucht in der Konsole einmal linphonec einzutippern?

Konsolenimpression
Rich (BBCode):
linphonec> help
Commands are:
---------------------------
      help    Print commands help.
    answer    Answer a call
autoanswer    Show/set auto-answer mode
      call    Call a SIP uri or number
     calls    Show all the current calls with their id and status.
 call-logs    Calls history
    camera    Send camera output for current call.
      chat    Chat with a SIP uri
conference    Create and manage an audio conference.
  duration    Print duration in seconds of the last call.
  firewall    Set firewall policy
    friend    Manage friends
      ipv6    Use IPV6
      mute    Mute microphone and suspend voice transmission.
       nat    Set nat address
     pause    pause a call
      play    play a wav file
playbackga    Adjust playback gain.
     proxy    Manage proxies
    record    record to a wav file
    resume    resume a call
 soundcard    Manage soundcards
      stun    Set stun server address
 terminate    Terminate a call
  transfer    Transfer a call to a specified destination.
    unmute    Unmute microphone and resume voice transmission.
    webcam    Manage webcams
      quit    Exit linphonec
---------------------------
Type 'help <command>' for more details or
     'help advanced' to list additional commands.
call sip:[email protected]:5060
2022-02-07 10:40:51:798 ortp-error-LinphoneCore has video disabled for both capture and display, but video policy is to start the call with video. This is a possible mis-use of the API. In this case, video is disabled in default LinphoneCallParams
Establishing call id to sip:[email protected]:5060, assigned id 5
Contacting sip:[email protected]:5060
linphonec> Call 5 to sip:[email protected]:5060 in progress.
linphonec> Remote ringing.
linphonec> Remote ringing...
linphonec> Call 5 to sip:[email protected]:5060 ringing.
User is busy.

Und in Skripten oder mal flux mit rechten Zeigefingerchen linphonecsh...
Rich (BBCode):
€ linphonecsh init
€ linphonecsh generic "call sip:[email protected]:5060"
Establishing call id to sip:[email protected]:5060, assigned id 1
Call 1 to sip:[email protected]:5060 in progress.
€ linphonecsh generic "terminate"
Call 1 with sip:[email protected]:5060 ended (No error).
€ linphonecsh exit
 
Zuletzt bearbeitet:
Du kannst das Paket "linphone-nogtk" installieren
Danke für den Tipp. Habe ich gemacht und es funktioniert, allerdings nur teilweise.

SIP-Server auf VTO: 192.168.1.108
Mein Handy mit Softphone (zum Testen): [email protected]
Mein RPi mit Linphone: 192.168.1.28
Mein Linphone-SIP-Account: [email protected]

  • Anrufe tätigen
    • Ich kann sowohl mit
      Code:
      linphonec
      als auch mit
      Code:
      linphone-daemon
      (was ist hier überhaupt der Unterschied?) Anrufe an mein Handy tätigen mit
      Code:
      . Beim Aufruf wurde jeweils die Datei
      Code:
      ~/.linphonerc
      als Konfigurationsdatei mitgegeben.
    • Beide rufen allerdings mit der Adresse des RPi an ([email protected].28 anstatt [email protected].108) - warum denn das?!
  • Anrufe annehmen
    • Es werden bei beiden CLIs ausschließlich nur dann Anrufe angezeigt, wenn auch die GUI-App läuft. Ein "answer" innerhalb der beiden CLIs funktioniert also nur ebenfalls nur dann.
    • Mit
      Code:
      linphonecsh init -c ~/.linphonerc
      habe ich versucht einen Daemon im Hintergrund zu starten. Ein
      Code:
      linphonecsh generic "answer"
      funktioniert allerdings weder wenn die GUI-App läuft noch wenn diese gänzlich geschlossen ist:
      Code:
      [*]pi@raspberrypi-XX:~ $ linphonecsh generic "answer"
      There are no calls to answer.
Das heißt zusammengefasst: Die wichtigste Funktion - das Annehmen von Anrufen per Commandline - funktioniert nicht bzw. nur unter Einschränkungen.

Wurde denn nicht versucht in der Konsole einmal linphonec einzutippern?
Doch, klar, das hat mich ja zu der Frage geführt, wie ich da rankomme - das war nämlich nach
Code:
sudo apt install linphone
nicht möglich:
pi@raspberrypi-XX:~ $ linphonec


-bash: /usr/bin/linphonec: No such file or directory

Das hier ist übrigens der aus meiner Sicht wichtige Auszug aus
Code:
~/.linphonerc
(also ohne die Ports):
[net]
nat_policy_ref=IRGENDEIN_STRING
download_bw=0
upload_bw=0
mtu=1300

[nat_policy_0]
ref=IRGENDEIN_STRING

[sip]
root_ca=/usr/share/linphone/rootca.pem
verify_server_certs=1
verify_server_cn=1
#contact=sip:pi@unknown-host
contact=sip:[email protected]
media_encryption=none
guess_hostname=1
inc_timeout=30
in_call_timeout=0
delayed_timeout=4
register_only_when_network_is_up=1
register_only_when_upnp_is_ok=1

[app]
auto_download_incoming_files_max_size=-1
sender_name_hidden_in_forward_message=0

[misc]
uuid=IRGENDEINE:UUID
user_certificates_path=/home/pi/.linphone-usr-crt

[video]
capture=0
display=0
show_local=0
size=vga
 
Mit linphonecsh hab ich eine Registration direkt so gemacht...
Rich (BBCode):
€ linphonecsh init
€ linphonecsh register --host 192.168.188.1 --username koyaanisqatsi --password secret
€ linphonecsh status register
registered, identity=sip:[email protected] duration=3600
€ linphonecsh dial **799
Establishing call id to sip:**[email protected], assigned id 1
Call 1 to sip:**[email protected] in progress.
€ linphonecsh status hook
Call out, hook=**799 duration=23, muted=no rtp-xmit-muted=no
€ linphonecsh status hook
Call out, hook=**799 duration=69, muted=no rtp-xmit-muted=no
€ linphonecsh generic "terminate"
Call 1 with sip:**[email protected] ended (No error).
...mit Audio, aber leider nicht mit HD Codec (G.722)...
Bildschirmfoto vom 2022-02-07 11-43-23.png

Mal gucken, was linphone da anbietet im INVITE...
Rich (BBCode):
2022-02-07 11:34:58.795 - IN: my=192.168.188.1%13:5060 peer=192.168.188.100 port=5060 UDP, sipiface=none:
INVITE sip:**[email protected] 2.0
Via: SIP/2.0/UDP 192.168.188.100:5060;branch=z9hG4bK.UXSGziBxu;rport
From: <sip:[email protected]>;tag=xUw3bUoVS
To: <sip:**[email protected]>
Call-ID: 4zGlJDZsQS
CSeq: 21 INVITE
Contact: <sip:[email protected];transport=udp>;+sip.instance="<urn:uuid:<hash>>"
Authorization: Digest username="koyaanisqatsi", realm="fritz.box", nonce="<hash>", uri="sip:**[email protected]", response="<hash>"
Max-Forwards: 70
Supported: replaces
Supported: outbound
User-Agent: Linphonec/3.12.0 (belle-sip/1.6.3)
Allow: INVITE,  ACK,  CANCEL,  OPTIONS,  BYE,  REFER,  NOTIFY,  MESSAGE,  SUBSCRIBE,  INFO,  UPDATE
Content-Type: application/sdp
Content-Length:   508

v=0
o=koyaanisqatsi 3491 3284 IN IP4 192.168.188.100
s=Talk
c=IN IP4 192.168.188.100
t=0 0
a=rtcp-xr:rcvr-rtt=all:10000 stat-summary=loss,dup,jitt,TTL voip-metrics
m=audio 7078 RTP/AVP 96 97 98 0 8 101 99 100
a=rtpmap:96 opus/48000/2
a=fmtp:96 useinbandfec=1
a=rtpmap:97 speex/16000
a=fmtp:97 vbr=on
a=rtpmap:98 speex/8000
a=fmtp:98 vbr=on
a=rtpmap:101 telephone-event/48000
a=rtpmap:99 telephone-event/16000
a=rtpmap:100 telephone-event/8000
a=rtcp-fb:* trr-int 5000
a=rtcp-fb:* ccm tmmbr
Unnötige Codecs, zum Glück gibt es noch nen Rückfall auf G.711. :cool:
 
Zuletzt bearbeitet:
sudo apt install linphone
Auf welchen Debian-Derivat bzw. -Version bist Du genau?
Jenes Package installiert die GUI, also eigentlich das Package linphone-desktop, die aber erst seit Debian Bullseye (bzw. Ubuntu 21.04 LTS) wieder einigermaßen aktuell ist. Idealerweise nimmst Du das offizielle AppImage, aber darüber konnte ich eben auf die Schnelle die CLI nicht starten.
Wurde denn nicht versucht in der Konsole einmal linphonec einzutippern?
Seit liblinphone10 ist das nicht mehr im GUI-Package enthalten, sondern kommt nur noch über das bereits in Post#2 erwähnte CLI-Package. Also anders formuliert: alve89, sollte zur Sicherheit mal das Package linphone-nogtk installieren. Dann ist egal, welche Version er hat, er bekommt das Command-Line-Tool.
Beide rufen allerdings mit der Adresse des RPi an ([email protected].28 anstatt [email protected].108) - warum denn das?!
Das ist der Host-Part, also die IP-Adresse Deines Raspberry Pi. Das kannst Du über einen anderen Contact nicht umbiegen. Dein Account ist der User-Part, also 9902 bzw. 9910.
Es werden bei beiden CLIs ausschließlich nur dann Anrufe angezeigt, wenn auch die GUI-App läuft. Ein "answer" innerhalb der beiden CLIs funktioniert also nur ebenfalls nur dann.
Dafür würde ich an Deiner Stelle einen neuen Thread für aufmachen. Dann kannst Du über die Überschrift andere interessierte Leser (wieder) anlocken.
Ich möchte damit aus dem lokalen Netz auf meine Video-Gegensprechanlage zugreifen.
Was genau möchtest Du machen? Du hast keine App dauerhaft auf dem Handy laufen. Du sitzt an was für einem Gerät und möchtest mit der Tür sprechen?
 
Mit linphonecsh hab ich eine Registration direkt so gemacht...
Rich (BBCode):
€ linphonecsh init
€ linphonecsh register --host 192.168.188.1 --username koyaanisqatsi --password secret
Das scheint das Geheimnis gewesen zu sein - es funktioniert nun endlich auch mit der Rufannahme! Außerdem funktioniert damit auch die korrekte "Absenderkennung" ([email protected].108). Danke!

Der Rest deines Portes sagt mir leider rein gar nichts, das ist weit über meinem aktuellen Kenntnisstand... :p

Auf welchen Debian-Derivat bzw. -Version bist Du genau?
Mein RPi läuft mit Raspberry PI OS 11 (Bullseye), Debian Version 11.2.
Was genau möchtest Du machen? Du hast keine App dauerhaft auf dem Handy laufen. Du sitzt an was für einem Gerät und möchtest mit der Tür sprechen?
Am Ende (dem bin ich jetzt quasi ganz nahe gekommen) soll der RPi mit einem Display anzeigen, wer vor der Tür steht und man soll über SIP mit dem Besucher sprechen und ihm ggf. die Tür öffnen können. Video und Tür- sowie Klingelsteuerung werden mittels Home Assistant realisiert (das funktioniert auch schon), jetzt steht noch die Implementierung der Sprachverbindung in den Home Assistant aus.

Danke euch für eure schnelle und einfache Hilfe!
Dafür würde ich an Deiner Stelle einen neuen Thread für aufmachen. Dann kannst Du über die Überschrift andere interessierte Leser (wieder) anlocken.
Wenn das Projekt fertig ist, werde ich in den wichtigsten Foren (hier, Home Assistant, Raspberry Pi Forum) die einzelnen Schritte nochmal darstellen, da es schon einige Probleme gab. Der Hinweis ist aber berechtigt und gut![/code]
 
Der Rest deines Portes sagt mir leider rein gar nichts, das ist weit über meinem aktuellen Kenntnisstand...
Da hat mich nur interessiert welche Audio Codecs seitens Linphone(c) für die Aushandlung Selbiger angeboten werden.
 
Ergeben sich die Medien-Codec nicht durch diese Konfigurationsdatei? Ich meine, dass bei Linphone von Haus aus HD-Voice (G.722) abgeschaltet ist. Warum auch immer. Man muss es also extra einschalten bzw. konfigurieren.
 
Hab ich mal mit der Desktop Version gemacht, aber G.722 war bei mir eine echte Verschlechterung, trotz harman/kardon Hardware :)
Interessant wäre es aber für die Nutzung der Standardcodecs (G.711) ohne dass Opus oder Speex angeboten/priorisiert wird.
...was ich in der Desktop Version natürlich schon gemacht habe.

@sonyKatze - Kann es sein, dass User-Agent: Linphonec/3.12.0 (belle-sip/1.6.3) 100 und 101 im SDP verwechselt?
 
eine echte Verschlechterung
Merkwürdig. Zu den telephone-events kann ich nichts sagen. Das betrifft Dich ja nur im Fall von DTMF. Vielleicht greift sich Dein Anbieter die falsche Version raus? Ist wieder so eine riesige Baustelle: Muss man wirklich bei mehrere telephone-events anbieten? Normal muss man den zum Audio-Codec passenden dann wählen, also Opus-Codec dann 48.000, Speex bzw. G.722 dann 16.000 und der Rest normal 8.000.
 
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.