Kategorie: Linux

Linux-Umstieg von Windows 7 (Das Desktop Wunder Teil 3)

( TL;DR; => Ubuntu MATE )

Als der Umstieg von Windows XP anstand, habe ich mich an dieser Stelle bereits mit ein paar grundsätzlichen Betrachtungen beschäftigt (siehe Das Desktop-Wunder… Teil1 mit Teil2).

Mittlerweile (2019/2020) steht für einige erneut so ein Umstieg – diesmal von Windows 7 – an und es hat sich doch so viel verändert, dass ich ein paar Dinge nachtragen möchte.

Bei der Desktopoberfläche haben sich ein paar Veränderungen ergeben, die nun meine Empfehlung in Richtung Ubuntu MATE verschieben.

Ein paar Systeme sind leider in ihrer heutigen Fassung ziemlich instabil bzw. gerade für Leute die zum ersten mal von Windows weg umsteigen möchten m.E. nur noch bedingt geeignet.

Als eine der wichtigsten Funktionen erscheint mir der korrekte Umgang mit Dateioperationen, also z.B. dem Kopieren oder Verschieben von Dateien. Für manche ist das sicher so grundlegend, dass sie gar nicht auf die Idee kämen, dass hier heutzutage noch Probleme auftauchen könnten. So ging es mir auch, bis mich in 18.04LTS Thunar (Xfce, Xubuntu) und PCManFM (LXDE, Ex-Lubuntu) und in 18.10 PCManFM-QT (LXQT, Lubuntu aktuell) mit diesem Problem vertraut machten. Das ganze scheint an Umstellungen von GTK2 zu GTK3 bzw. QT zu liegen, macht eine Empfehlung für mich nun aber auf jeden Fall unmöglich. Tests mit einem aktuellen KDE (Kubuntu) führten schon in den ersten Minuten bei einer kleinen Änderung an der Leiste zu Abstürzen, die auch nicht gerade Begeisterung auslösten. Und das „normale“ Ubuntu hat in den letzten Jahren so oft die Richtung bezüglich seiner Oberfläche geändert, dass von Stabilität auch nicht wirklich die Rede sein kann…
So blieb nach etlichen Versuchen plötzlich nur noch Ubuntu MATE übrig…

MATE hat sich u.a. durch die auf Ubuntu/Debian aufbauende Linux-Distribution MINT eine breite Nutzerbasis erschlossen und anscheinend bisher die knappen Ressourcen in die richtigen Prioritäten (wie Stabilität) gesteckt…

P.S. Noch eine kurze Anmerkung, warum nicht Linux MINT… Ich habe die Erfahrung gemacht, dass je mehr auf etwas anderes aufgebaut wird, desto mehr Abhängigkeiten / Fehlerquellen schleichen sich ein. Linux MINT baut auf Ubuntu auf, das bereits auf Debian aufbaut. Wie schon in den früheren Artikeln angemerkt, würde ich daher tatsächlich sogar direkt Debian bevorzugen, finde aber (noch) Ubuntu MATE für die mir bekannten Umsteiger den passenderen Kompromiss…

Wirklich Interessierte können sich m.E. eher mal Arch Linux anschauen… ;-)

AllIP (Sip/VoIP) Internet Radio und Wählscheibentelefon mit Impulswahl (Raspberry Pi, FritzBox, python, linphone, …)

The old Raspberry pi Rotorary Phone Player Picture

The old Raspberry pi Rotary Phone Player (RaRoPhoPl)
W 38/48 Fa. Siemens + Halske

Die Deutsche Telekom stellt immer mehr Anschlüsse auf AllIP um, während andere Anbieter schon länger nur über einen Router zu nutzen sind.
Was in den Medien untergeht und dabei oft nicht mitgeteilt wird ist, dass alte Telefone mit Wählscheibe an diesen Anschlüssen (bzw. Routern) oft nicht (mehr) funktionieren. Auch die „FritzBox“ von AVM ist zwar ein Meister als Telefonanlage mit verschiedenen Endgeräten und Internet-Telefonie, kann aber (offiziell) mit ihren aktuellen Modellen nichts mit Wählscheibentelefonen anfangen (trotzdem versuchen?). Eine Lösung wäre z.B. ein spezieller Wandler (IWF/MFV- Konverter) für ca. 50,- Euro oder der „Telekom TA 2 a/b“… Doch – in unserem Fall – ist das alte Telefon mit seiner Wählscheibe ein ideales Bastelprojekt auf Basis eines Raspberry Pi 2 das nicht nur wesentlich flexibler und vielseitiger verwendbar ist, sondern auch mit unzähligen zusätzlichen Funktionen ausgestattet werden kann.

Internet-Radio und SIP-VoIP-Telefon in einem alten Wählscheiben-Telefon

Bei dieser Gelegenheit nutzen wir gleich zwei Funktionen in einem Gerät:

  1. Als echtes SIP-VoIP-Telefon als Nebenstelle der Fritz!Box um u.a. Kurzwahlen und Billig-Vorwahlen nutzen zu können, aber auch einstellen zu können, bei welchen SIP-Anbietern das Wählscheibentelefon klingeln soll (z.B. um über iptel.org oder ekiga.net erreichbar zu sein).
  2. Wenn der Hörer aufgelegt ist: als einfaches Internet-Radio. So lässt sich direkt einer von neun (weltweiten) Sendern wählen. In unserem Fall z.B. BBC4 mit der „4“, ein indischer Sender mit der „5“ oder Ö3 mit der „3“. Die „0“ schaltet die Lautstärke zwischen zwei Stufen hin und her, bzw. fährt (nach dem 5ten mal) den Rasperry Pi geordnet runter. Also eine Art streaming-Weltempfänger für Webradio im nostalgischen Gewand. ;-)

Als Erweiterung ist bereits das „videophonieren“ bzw. eine Nutzung in Videokonferenzen angelegt, der Einsatz als Überwachungskamera/Alarmanlage getestet und eine Ansage der aktuellen Temperatur als einer der „Sender“ integriert. :-)

 

Grundlagen: Raspberry Pi 2 und andere Projekte

Anregungen und die für meine finale Lösung wichtigsten Tipps fand ich u.a. auf folgenden Seiten:

Rückblickend die passenden Hardware Anschaffungen:

  • Ein Wählscheibentelefon ;-) (Hier ein Wandtelefon W38/48 der Firma Siemens + Halske)
  • Raspberry Pi 2
  • passendes USB Netzgerät (stabilisiert und mind. 2 Ampere)
  • passende USB Soundkarte (hier: HEXIN Sound Audiocontroller)
  • passende Anschlusskabel für Mikrofon, externe Lautsprecher und Hörerlautsprecher
  • passende Steckkabel für die Steuerungspins und passende Quetschverbinder für die Kabel im Telefon
  • bzw. Lötkolben und Lötzinn ;-)
  • (Für Hardware Variante 2: 4x Widerstand 10KOhm)
  • … und (bei einem externen raspberry pi) evtl. längere abgeschirmte(!) Kabel wie z.B. zwei mal ein-adriges Kabel (einzeln abgeschirmt) für den Hörer und ein mindestens fünf-adriges für die Schalter + Ground

Alle Sicherheitserwägungen spielten erstmal keine Rolle, da es möglichst schnell gehen musste (Geburtstagsgeschenk), hinter einer Routerkaskade mit Firewalls sitzt und nun Schritt für Schritt angepasst werden kann. Jeder muss also wie immer selbst entscheiden wie viel Bequemlichkeit bzw. Sicherheit ihm wichtig ist und ob er das Risiko eingehen will. Ich selber klassifiziere das Projekt als unsicher! Wie immer: alles auf eigene Gefahr!

Auch alle weiteren Schritte / Hinweise sind nur für Leute, die Erfahrung haben und wissen was ihr Handeln für Konsequenzen haben kann…

 

Die Hardware: erhalten? stecken oder löten?

Da das Wählscheiben-Telefon an sich einwandfrei funktioniert, wollte ich es in seiner alten Technik erhalten und jederzeit rückbauen können. Zudem wollte ich ausprobieren ob ich das ganze auch als eine Art Mobiltelefon („Handy“) nutzen könnte (ja, auch hier waren erste Tests erfolgreich ;-) ). Ich habe so den Raspberry Pi zusätzlich in das Gehäuse gepackt. Grundsätzlich würde ich allerdings empfehlen ihn etwas luftiger und leichter erreichbar außerhalb des Gehäuses zu lagern und das Telefon über abgeschirmte Kabel eher als eine Art Fernsteuerung zu verwenden.

Ich habe mich grundsätzlich für Hardware-Variante 1 entschieden (siehe oben unter Fairytale Phone) und die Kabel entsprechend zusammengesteckt. Einzig den Erdungsknopf (unten rechts) wollte ich zusätzlich als Shutdown-button nutzen, was ich allerdings selbst bei Hardware-Variante 2 (mit Widerständen) wegen zu viel Störungen im Stromnetz und in der Luft (allein wenn sich der Kühlschrank einschaltet oder der Gasherd zündet) aufgeben musste. In der jetzigen Version kommt so bei der Betätigung des Knopfes nur ein kurzes Geräusch, es kann jedoch schnell wieder auf „system halt“ umgestellt werden (siehe Quellcode).

Inside picture of the old wall mounted rotary phone (W38/W48) with raspberry pi 2

Inside of the old wall mounted rotary phone (W38/W48)
Raspberry Pi 2

Auf Grund des engen Platzes musste ich die Mechanik der Wählscheibe schützen (hier mit Teilen einer alten CD) und sicherstellen, dass die SD-Karte beim schließen nicht abgebrochen wird. Auch mussten offene Kontakte isoliert werden, da diese evtl. zusammengedrückt oder sich zumindest zu nahe kommen oder anderweitig Kontakt herstellen könnten.

Zum Vergleich kann auch das nebenstehende Foto für eine große Version angeklickt werden.

Die im Raum verteilten externen Stereo-Lautsprecher sind über ein (Mini-)Stereoklinken-Kabel direkt an die USB-Soundkarte angeschlossen.

Auch das Mikrofon des Hörers steckt an der USB-Soundkarte. Dazu wurde die Abschirmung einer Stereoklinke an das Mikrofonkabel geführt, das außen an der Mikrofonkapsel anliegt und das innen an der Mikrofonkapsel anliegende Kabel an die beiden(!) Kontakte der Stereoklinke.

Der Lautsprecher des Hörers wurde auf gleiche Weise mit dem Audioausgang des Raspberrys verbunden.

Die Kabel der Wählscheibe („Nummernschalter“) hatten bei diesem Modell leider alle die gleiche Farbe. Zur besseren Orientierung habe ich sie mit farbigen Bändern entsprechend einem W48-Standtelefon gekennzeichnet.

Hier die ursprüngliche Belegung des Wandtelefons (W38/W48) und die daraus folgende Verkabelung:

Anschluss-Schema

Verkabelung

Oder als Schaltplan in der Hardware-Variante 2:

Wiring for RaRoPhoPl (GPI)

Wiring for RaRoPhoPl (GPI)

(Auch diese Bilder können vergrößert werden.)

Vor dem Einsetzen des Raspberry Pi habe ich offene Kontakte mit Isolierband abgeklebt und zusätzlich metallene Gegenstände mit Backpapier abgedeckt…

Die Status-LEDs wurden mit Glasfaserkabeln (aus einer Kindertaschenlampe) nach außen geführt, leider verdiente der „Sekundenkleber“ seinen Namen nicht – anhauchen half etwas…

Die original Klingeln sind (zur Zeit noch?) nicht in Betrieb (z.B. so? oder so?) – das Klingeln über die externen Lautsprecherboxen ist einfach zu bequem und praktisch…

 

Die Software: raspberry pi, python, linphone u.a.

An etlichen Stellen und bei etlichen Projekten wurde von linphone abgeraten und auch mich kostete die Umsetzung schließlich extrem viel Zeit (>80h) und Nerven. Ich wollte es allerdings gerne mit einem integrierten python-Programm versuchen und so kam linphone doch wieder ins Spiel. Weitere Schwierigkeiten entstanden nicht nur durch die Störungen im Stromnetz (oder wenn z.B. ein Feuerzeug in der Nähe zündet) sondern auch dadurch, dass sich störungsfrei nicht so viel in Funktionen auslagern lies, wie ich das gerne gehabt hätte. An etlichen Stellen musste ich so nicht nur Varianten einbauen um Hardwarefehler abzufangen, sondern auch Eigenheiten in der Nutzung von Raspberry-Pi-Python kompensieren. Der Versuch Python3 zu verwenden machte einiges noch komplizierter, so dass ich schließlich wieder bei Python2 landete und lieber teilweise auf „Spaghetti-Code“ umbaute…

Der Quellcode ist entsprechend unübersichtlich geworden und mit merkwürdigen Sonderaktion aus diversen Versuchen geziert. Zum Schluss lief aber alles weitgehend so wie es sollte und da blieb ich beim alten Grundsatz: never change a running system… ;-)

Hier die groben Schritte, für alle die bereits entsprechende Grundkenntnisse haben:

  1. Alles beginnt hier:
    https://www.raspberrypi.org/downloads/
  2. und mit der Installation:
    https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
  3. Unter Linux nun in einem Terminal-Fenster (Console) eingeben:
    ssh raspberrypi

    (Benutzername: pi, Passwort: raspberry)
    [Update: In neueren Version muss der ssh-Zugang erst aktiviert werden…]

  4. dort:
    sudo raspi-config

    (evtl. noch „sudo passwd“ u.a.)

    sudo apt-get update
    sudo apt-get upgrade
  5. sudo apt-get install mpg123
  6. sudo apt-get install python-alsaaudio
  7. sudo nano /etc/modprobe.d/alsa-base.conf

    dort auskommentieren:

    # options snd-usb-audio index=-2

    und einfügen:

    options snd-usb-audio index=0
  8. sudo reboot
  9. alsamixer

    Headphones auf 98, Microphone auf 6 setzen, anschließend:

    sudo alsactl store
  10. https://wiki.linphone.org/wiki/index.php/Raspberrypi:start
  11. Autologin: in /etc/inittab folgende Zeilen geändert:
    sudo nano /etc/inittab

    Auskommentieren:

    # 1:2345:respawn:/sbin/getty 38400 tty1

    und hinzufügen:

    1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1
  12. Dateien aus (dem hoffentlich eines Tages erscheinenden – siehe unten! ;-) ) rarophopl.zip an die passenden Stellen kopieren, evtl.
    mkdir music

    u.a.

  13. nano .bashrc

    (zum Schluss „/PFAD/rarophopl.py &“ und evtl. Startmusik eintragen)

    /usr/bin/mpg123 -q /home/pi/music/0start.mp3 &
    /home/pi/rarophopl.py &
  14. chmod +x rarophopl.py

Zusätzlich muss noch die Fritz!Box um die IP-Telefon-Nebenstelle erweitert werden und die dort angegebenen Zugangsdaten in rarophopl.py (ziemlich am Schluss) eingetragen werden. Dabei können im Quellcode auch gleich Logfiles uvm. geändert werden.

Grundlagen von rarophopl.py finden sich bei den Links oben, der erste Quellcode bzw. ein 2015er-RaRoPhoPl-Software-Paket steht in der Version für Raspian vom Juni 2015 hier zur Verfügung…

 

Status, Temperatur und weitere Informationen als Webseite anzeigen

Zum Abschluss wollte ich noch kontrollieren können, wie es mit der Temperatur in diesem fast vollständig geschlossenen (und ja sehr vollen) Gerät aussieht und habe einen kleinen webserver installiert und eine kleine webpage mit den wichtigsten Daten gestaltet:

  1. Lighttpd installieren und konfigurieren
  2. Die dem RaRoPhoPl-Software-Paket (s.o.) beiliegende html-Seite im www-Verzeichnis als index.php ins passende Verzeichnis kopieren…

(Hier sind wohl die größten Sicherheitsprobleme… ;-) )

 

War etwas nützliches dabei? Ich freue mich über Spenden… ;-)

 

P.S. Einen kleinen Sicherheitsgewinn bringt:

  • Das PI-Benutzerpasswort in ein sehr komplexes zu ändern,
  • das Telefon nur hinter der FritzBox / Firewall zu betreiben (keine Ports weiterleiten) und
  • das VoIP-Telefon nicht bei einem VoIP-Anbieter direkt anzumelden, sondern eben als Fritz!Box-Nebenstelle (was auch für die Kurzwahl-Nummern bzw. Nutzung des Telefonbuchs wirklich sehr praktisch ist). :-)

P.S.2: Früher hieß die Wähleinheit wohl „Nummernschalter“ und das dazugehörige Bedienteil „Fingerlochscheibe“… ;-)