Erstellt am 24.01.2021
Zunächst: Empfangsprobleme
Vor einer Weile habe ich mal wieder den Anbieter meines Handyvertrags geändert und durfte feststellen, dass der Empfang jetzt eher bescheiden ist. Das hat man wohl davon, wenn man von den großen Netzen auf die kleineren, aber dafür auch günstigeren wechselt. Handyempfang gibt es jetzt am Fenster aber leider nicht im Zimmer selbst. Daher kam die Idee auf, das Handy nur als Relay zu nutzen und das Telefonsignal per Bluetooth an mein Ohr zu bekommen.
Im einfachsten Fall clipst man sich dazu also einfach so ein Bluetoothdongle ans Ohr und kann, sogar handsfree, telefonieren. Nur wie schaut das mit Anrufe tätigen aus? Eher schlecht: Ich müsste zum Handy laufen, die Nummer eintippen (oder aus dem Telefonbuch suchen) und das Telefonat starten.
Da muss es doch auch ein Stück Software geben, wie im Auto, das einem das Wählen direkt am PC ermöglicht? Der Ton sollte dann am besten auch gleich am PC abgespielt werden.
Von Microsoft gibt es das seit Windows 10 in der Tat. Man installiert sich eine App auf dem Handy und ein bisschen Software auf dem PC, koppelt die beiden Geräte per Bluetooth und sollte in der Lage sein, Gespräche zu führen.
Zum Spaß hab ich das mal mit dem Windows 10 eines Bekannten ausprobiert, musste aber leider feststellen, dass der Ton auf der anderen Seite verzerrt angekommen ist. Ich weiß nicht, ob das am Mikrofon im Laptop lag oder mein Telefon da irgendwie gesponnen hat, da ich aber selbst eh keinen Windows PC mehr besitze fiel diese Option ohnehin aus. Auch finde ich die Kopplung mit der Microsoft-ID kontraproduktiv. Was müssen die denn Wissen welche Telefonate ich führe?
Es geht auch ohne MS-ID
Unter Linux stellte sich das Problem unerwarteterweise als fast schon problemlos heraus. Für die Tonausgabe muss die Pulseaudio Konfiguration ein klein wenig angepasst werden. Dann reicht es aus, das Handy und den Computer per Bluetooth zu koppeln. Ein zusätzlicher Dienst (ofono) stellt die Verbindung mit dem Modem des Handys her und erlaubt Nummern zu wählen, Tasten zu drücken und Gespräche anzunehmen und zu beenden.
- ofonogui zum Steuern des Handys
Wozu dann also dieser Artikel? Nun vielleicht interessiert es euch ja, welche Konfigurationsänderungen man durchführen muss. Auch musste ich feststellen, dass es kein GUI für ofono gibt. Alles was ich finden konnte, waren Python Codeschnipsel, die ofono direkt über DBus ansteuern. Also wurde fix mal wieder das gute alte Perl ausgegraben und eine Gtk3 Anwendung geschrieben die jetzt die Basisfunktionen eines Telefons implementiert:
- Anrufe tätigen
- Anrufe entgegen nehmen
- DTMF Tasten drücken (für diese Wählmenüs)
Alles was darüber hinaus geht (mehrere Anrufe entgegen nehmen und in Warteschleifen hängen usw.) ist hier bewusst außen vor gelassen. Wenn ihr das selbst noch implementiert habt, dann bitte immer her damit!
OfonoGUI Setup
Als erstes braucht ihr natürlich ein funktionierendes Bluetoothsetup. Das heißt auch einen Bluetoothdongle der das Hands-Free Profil unterstützt. Dann braucht ihr noch ein paar Softwarepakete:
bluez ofono ofono-tests
(wenn das ofono-test Paket nicht existiert, dann ladet auch die test-files direkt von der Quelle: ofono-1.31.tar.gz)
Die folgenden Perl Pakete werden ebenfalls benötigt:
Glib Gtk3 Number::Phone Net::DBus
Jetzt könnt ihr euch die /etc/pulse/default.pa vorknüpfen und mit einem Editor die folgende Zeile editieren:
load-module module-bluetooth-discover headset=ofono
Zum Echo-cancelling können auch noch folgende Zeilen in die Datei geschrieben werden, sofern sie noch nicht existieren:
.ifexists module-echo-cancel.so load-module module-echo-cancel aec_method=webrtc source_name=ec_out sink_name=ec_ref set-default-source ec_out set-default-sink ec_ref .endif
Jetzt einmal den Pulseaudioserver neustarten; das sollte sich über ein beherztes
pulseaudio -k
erledigen lassen.
Als nächstes solltet ihr sicherstellen, dass der ofono Dienst läuft:
sudo systemctl start ofono
Und zu guter letzt könnt ihr das Handy mit eurem Computer pairen:
bluetoothctl power on agent on default-agent scan on
Jetzt sollte euer Telefon sichtbar sein, sodass ihr die Bluetoothaddresse finden könnt. Wenn ihr sie habt, den scanner wieder ausschalten und die Verbindung aufbauen:
scan off pair XX:XX:XX:XX:XX:XX trust XX:XX:XX:XX:XX:XX connect XX:XX:XX:XX:XX:XX
Der übliche Pinaustausch sollte erscheinen, und schließlich das Telefon und der Rechner ein
Pairing successful ... trust succeeded ... Connection successful
anzeigen. Den ersten Test könnt ihr bereits jetzt schon machen. Je nachdem wo ihr eure ofono-test installiert habt, sollte jetzt ein list-modems euer Handy anzeigen.
Der letzte Schritt ist jetzt noch mein Perl-Programm herunter zu laden (https://github.com/thinksilicon/ofonogui) und ofonogui.pl auszuführen. Ihr solltet euch im gleichen Verzeichnis wie die Datei befinden, damit die übrigen Module gefunden werden können.
git clone https://github.com/thinksilicon/ofonogui.git cd ofonogui perl ofonogui.pl
Wenn der Ton noch am Handy abgespielt wird, dann stellt es dort einfach auf Bluetooth um und es sollte direkt am Computer ertönen.
Damit hoffe ich, dass dieses Tool hilfreich ist und ich freue mich, wie immer, über Verbesserungsvorschläge. Dieses Mal habe ich es auch auf Github gehostet, es sollte also einfach sein einen Pullrequest einzureichen.