VoIP mit der FritzBox hinter einem OpenWrt-Router

Ich benutze ein APU2-Board mit OpenWrt als Tor ins Internet. WLAN, Telefonie und DECT-Basisstation stellt dagegen eine dahinter platzierte FritzBox 4790 bereit. Dieser Aufbau macht, was er soll und ist sehr flexibel; besonders der Router hat noch ordentlich Leistungsreserven.
Irgendwann stellte sich allerdings heraus, dass eingehende Anrufe oft nicht ankamen, während ausgehende kein Problem darstellten.

Im Hinterkopf hatte ich bereits, dass die SIP-Verbindung ja von der FritzBox aus dem lokalen Netzwerk heraus über den Router ins Internet aufgebaut werden muss, damit der Telefonieanbieter „durchklingeln“ kann – die FritzBox hängt ja nicht mehr direkt erreichbar im Internet – und es folglich daran haken könnte, dass der OpenWrt-Router diese Verbindung beendet.

Eine kurze Internet-Recherche gab dem recht: Entweder muss der Timeout von UDP-Verbindungen im Router hochgesetzt werden oder die FritzBox muss regelmäßig Pakete senden, damit die Verbindung vom Router weiterhin als aktiv eingestuft wird. Ich habe mich für letzteres entschieden:

Diese Einstellungen sind etwas versteckt unter TelefonieEigene Rufnummern im Reiter Anschlusseinstellungen und dann ganz unten auf der Seite ein einem mit „Einstellungen ändern“ betitelten Ausklapp-Menü zu finden

Interessante Details zum Raspberry Pi 4

Wie bei meinem letzten Beitrag zu unterthematisierten Details des der neuen Version des Einplatinencomputers gehe ich hier wieder auf ein paar Dinge ein, die ich für interessant erachte, die aber nicht im Rampenlicht der Berichterstattung stehen…

  1. Die analoge Audioausgabe für die Klinkenbuchse wird weiterhin über PWM generiert (Quelle: Schaltplan des RPi 4). Wer bessere Audioqualität braucht, muss sich also weiterhin ein HAT anschaffen oder einen der nun zwei vorhandenen HDMI-Ausgänge benutzen.
  2. Der analoge Composite-Video-Ausgang an der Klinkenbuchse steht weiterhin zur Verfügung. Allerdings kann dieser nicht parallel zu den HDMI-Ausgängen benutzt werden (Quelle: Blogpost zum Release von Raspian Buster).
  3. Der Boot-Prozess wurde geändert. Statt der GPU, die erst im weiteren Verlauf des Boot-Prozesses die Kontrolle an die eigentlichen ARM-CPU-Kerne übergibt, sind jetzt die ARM-Kerne die eigentlichen Hauptprozessoren. Zudem existiert jetzt ein Flash-Speicher, der die Firmware für den Systemstart enthält.
  4. Damit einher geht auch, dass sowohl USB-Boot als auch Netzwerkboot anders funktionieren müssen (→ Die Firmware muss jetzt über PCIe mit dem USB-Controller und dem im SoC integrierten Gigabit-MAC „sprechen“), beides wird aber über Updates der Firmware nachgereicht.
  5. Der USB-C-Anschluss zur Stromversorgung ist gleichzeitig auch ein USB 2.0-Port. Dort liegt jetzt nämlich der USB-Port an, der ursprünglich der primäre und einzige USB-(OTG)-Port des SoC war.
  6. Probleme, die durch den Datenverkehr über den einzigen USB-Port des SoCs verursacht wurden, wie Audioaussetzer bei Netzwerktransfer über die am internen USB-Hub-hängenden Netzwerkkarte und gleichzeitiger Audioausgabe über eine am gleichen Hub hängende USB-Soundkarte, sind mit dem über PCIe angebundenen USB-Controller und der separat am SoC angebundenen Gigabit-Netzwerkkarte passé.
  7. Der Grafik-Stack beinhaltet weniger proprietären Code und setzt jetzt auf Mesa. Der Treiber dafür war schon länger in Arbeit und wurde auch in Zusammenhang mit einem möglichen RPi 4 gesehen.

Insgesamt stellt der RPi 4 eine gelungene Rundum-Überholung dar. Wo möglich und nötig, wahrt er die Kompatibilität zu den Vorgängern. Und beseitigt dabei die Probleme der Vorgänger, was Erweiterbarkeit der SoC-Architektur, mangelnde IO-Bandbreite und fehlenden Arbeitsspeicher angeht. Erweiterungen, HATs und Anleitungen funktionieren allerdings weiterhin. Und das zu weiterhin günstigen Preisen und anscheinend weiterhin gutem Software-Support.

Das als Gesamtpaket hat die Konkurrenz zwar immer angekündigt, aber nie wirklich geliefert.
Trotz aller Schelten, die die RPi-Macher bisher für ihre Entscheidungen („Veraltetes SoC einsetzen geht gar nicht!“, „Wo bleibt Gigabit-Ethernet?!“) kassiert hat, muss man anerkennen, dass sich manche Dinge eher inkrementell lösen lassen als wenn man sie von Anfang an „richtig“ zu machen versucht und dann letztlich doch an der Komplexität des Ganzen scheitert.

Ich benötige im Moment keinen weiteren RPi, auch keinen schnelleren, weil ich alle meine drei Pis (3B, 3B+ und 3A+) im Headless-Betrieb nutze und sie dafür vollkommen ausreichend sind. Aber sobald mal wieder genug Geld in der Bastelkasse sein dürfte, wird der Haben-Reflex sicherlich überhand nehmen…

TV-Adapter-Einstellungen in Tvheadend zurücksetzen

Ich benutze Tvheadend als TV-Streaming-Server und hatte letztens das Problem, dass ich die Adapter-Einstellungen nicht mehr ändern konnte, weil ich vorher ein bisschen damit herum gespielt hatte – einen der Tuner hatte ich als Master-Tuner eingetragen, weil ich lediglich ein einzelnes Koaxialkabel in Satblock-Verteilung, was die am meisten benutzte Topologie für die Verteilung Satelliten-TV ist, am Standort des Servers hatte. Das bedeutet, dass nur einer der drei Tuner den Frequenzbereich und die Polarisation bestimmen kann.

Nun habe ich drei Kabel dort liegen, womit alle drei Tuner separat angesteuert werden können. Theoretisch, denn trotz dreier Tuner schien Tvheadend nur einen Tuner zu nutzen.

Da mir das Einstellungsmenü seltsam leer erschien (der Punkt „Universal LNB only“ fehlte bei zwei von drei Tunern), wollte ich „einfach“ mal die Einstellungen löschen und alles komplett von vorne konfigurieren. Diese Option konnte ich allerdings nirgends finden. Auf den richtigen Weg brauchte mich dann ein Beitrag im Tvheadend-Forum: Man muss die entsprechende Konfigurationsdateien unter /home/hts/.hts/tvheadend/input/linuxdvb/adapters/ löschen:

  1. Tvheadend stoppen: service tvheadend stop
  2. (Sicherheitshalber) Backup erstellen: rsync -a /home/hts/.hts/ dot_hts_back
  3. (In meinem Fall) alle Adapter-Dateien (pro je verbundenem Tuner ist es immer eine Datei) löschen: rm /home/hts/.hts/tvheadend/input/linuxdvb/adapters/*
  4. Tvheadend wieder starten: service tvheadend start
  5. Adapter in Tvheadend wieder neu konfigurieren (da wollten wir ja hin :-)).

Die benutzte Tvheadend-Version ist übrigens 4.2.8-23.

Die guten Seiten der DSGVO

Die Datenschutzgrundverordnung DSGVO mag negative Effekte haben, Aufwand bereiten, bringt aber dennoch viel Positives – vor allem für die Nutzer – mit sich, was im Moment bedauerlicherweise eher in den Hintergrund tritt:

  • Vor Datenerfassung muss Einwilligung erfolgen
    → Vielleicht denken die Nutzer mal darüber nach, was sie da wem an Daten offen legen. Und die Anbieter scheuen vielleicht die mit der Speicherung von nicht zwingend notwendigen Daten verbundenen Aufklärungsaufwand und lassen die Speicherei gleich bleiben.
  • Löschung und / oder Exportieren von Personen-gebundenen Daten verpflichtend
  • Verbesserte Einheitlichkeit in Europa, digitale Differenzen innerhalb Europas werden abgebaut
    • Services aus der EU können problemloser benutzt werden
    • Datenschutzverletzungen aus anderen EU-Ländern können leichter belangt werden – Irland hatte beispielsweise bisher einen wesentlich laxeren Datenschutz als in Deutschland.
      Fraglich ist allerdings, wie die die EU-Datenschutzbehörden ausgestattet sind.
  • Datenschutzerklärungen müssen verständlicher sein, ggf. auch in Stufen:
    Icons als grobe Erläuterung, Zusammenfassung als nächste feinere und dann zuletzt die ausführliche Datenschutzerklärung
  • Das Kopplungsverbot

Es bleibt nur zu hoffen, dass die DSGVO den tatsächlich Datenschutz verbessert und nicht einfach nur zu längeren und noch unverständlicheren Datenschutzerklärungen führt. Bisher wurde ja eher auf der DSGVO herumgeschimpft.

Scribus 1.4.7 und 1.5.4 erschienen

Scribus LogoEnde April hat das Scribus-Projekt die Versionen 1.4.7 und 1.5.4 der freien Desktop-Publishing-Software veröffentlicht.

Die Version 1.4.7 aus dem stabilen Entwicklungszweig hat dabei nur Fehlerbehebungen (Bugfixes) erhalten und wird wohl die letzte Version dieses Zweiges darstellen, weil ab jetzt besonders auf das Erscheinen von 1.6.0 hingearbeitet wird.
Details zu den behobenen Fehlern finden sich in der Liste der Änderungen (Change Log) im Bugtracker des Scribus-Projekts.
Release-Notes von 1.4.7

Verbesserungen an den Funktionen erfolgen derweil im 1.5er Entwicklungs-Zweig, aus dem später die nächste stabile Versionsreihe 1.6.x hervorgehen wird.

In 1.5.4 wurde neben den üblichen Fehlerbehebungen die Farb-Präzision bei Füllfarben auf 64 Bit-Gleitkommazahlen erhöht. Außerdem kann Scribus nun mit Farb-Paletten nach dem ISO-Standard CxF3 umgehen, die das Speichern von Farben in verschiedenen Farbmodellen (CMYK, RGB, LAB) und Ausgabemethodenprofile (output intent) unterstützen und mit der Unterstützung für Spektral Farben eine höhere Farbpräzision erreichen. Laut den Entwicklern ist Scribus die erste DTP-Software, die diesen Standard unterstützt.
Des Weiteren beherrschen die Import-Filter für andere Dokument-Formate nun das LAB-Farbmodell, wo dies möglich ist. Experimentelle Import-Filter für das Vektorgrafik-Programm ZonerDraw (Versionen 4 und 5) und QuarkXPress-Dokumente der Versionen 3 bis 4, die auf das Document Liberation Project zurückgehen, wurden ergänzt.

Ansonsten wurde noch das Barcode-Plugin aktualisiert und kleinere Fehler in der PDF Bibliothek des Programms betreffend den Export von für den Druck bestimmten PDFs und PDF-Formularen behoben.

Die für mich interessanteste Neuerung sind allerdings die Verbesserungen am integrierten Scripter des Programms, mit dem über Python-Programme Dokumenten bearbeitet werden können:

  • Die Methode getAllObjects, die alle Rahmenobjekte auf der aktuellen Seite zurück liefert, akzeptiert nun optional das Schlüsselwort page als Parameter, mit dem die Objekte auf einer anderen Seite als der aktuellen ermittelt werden können.
  • PDF-Anmerkungen können nun mittels des Scripters gesetzt und bearbeitet werden, die dazu nötigen Methoden:
    setLinkAnnotation, setFileAnnotation, setURIAnnotation, setTextAnnotation, createPdfAnnotation, isAnnotated
  • Mit folgenden neuen Methoden können Linien-Stile erzeugt und benutzt werden:
    createCustomLineStyle, getCustomLineStyle, setCustomLineStyle
  • Es ist nun möglich, mittels setCharacterStyle Zeichenstile im Scripter auf eine Textauswahl anzuwenden.

Diese neuen Möglichkeiten des Scripters zusammen mit der Möglichkeit, Scribus 1.5.x von der Kommandozeile aus ein Python-Script als Parameter zu übergeben, sind eine gute Neuigkeit. Beispielsweise könnte man sich jetzt einen simplen Markdown-Importer basteln und dann Batch-Verarbeitung im Headless-Betrieb machen.
Im Deutsch-sprachigen Community-Wiki befinden sich Ansätze einer Dokumentation des Scripters.

Zuletzt sollte aber noch erwähnt werden, dass Dokumente, die mit einer 1.5er-Version (oder neuer) von Scribus geöffnet wurden, sich nicht mehr von 1.4.x öffnen lassen – Vor Experimenten mit der Entwicklungsversion sollte man sich folglich eine Kopie anlegen!
Release-Notes und Change-Log von 1.5.4


Eigentlich schade, dass sowohl Scribus 1.4.7 als auch Gimp 2.10 nicht so lange vor dem Release von Ubuntu 18.04 erschienen sind, dass sie in die Paketquellen hätten aufgenommen werden können…

Scribus 1.5.2 veröffentlicht

Gestern, am 17. Mai, hat das Scribus-Team mit Scribus 1.5.2 die dritte Version der Entwicklerreihe 1.5.2 veröffentlicht. Die Entwickler sind der Ansicht, dass 1.5.2 als stabil – jedoch nicht Feature-stabil – bezeichnet werden kann und ermuntern daher die Verwendung von 1.5.2, um mit dem Feedback der User eine extrem stabile 1.6.0 zu veröffentlichen.

Wichtigste Änderungen

Entwickler aus dem Oman haben eine neue Text Layout Engine beigesteuert, die ab dieser Version zum Einsatz kommt und beginnend ab 1.5.3 Unterstützung für Complex Text Layout bieten wird, also zur Darstellung von Arabisch, Hebräisch, Chinesisch und Hindi nötig ist. Außerdem verbesstert diese neue Engine die Unterstützung einiger mit 1.5.0 neu eingeführter Funktionen.

Außerdem wurde das Rendern der Dokumentvorschau auf Hi-DPI Bildschirmen verbessert. Des Weiteren wurde auch der Ressource Manager insofern verbessert, dass Farbprofile der Open Colour Systems Collection im LAB-Farbraum hinzugefügt wurden und der Ressource Manager nun Downloads von Scribus-Servern mittels SHA256-Checksummen prüft. Auch das automatische Speichern (Autosave) und die Dateiwiederherstellung wurde durch das Einfügen von mehr Konfigurationsmöglichkeiten unter Datei > Allgemeine Einstellungen > Dokument-Einstellungen > Reiter Speichern und Rückgängig machen stark verbessert.

Hinweise zur Benutzung

  • Die Online-Hilfe wurde noch nicht aktualisiert, dies ist erst für 1.6.0 geplant. Wenn mit 1.5.3 das Herunterladen des Online Manuals unterstützt wird, wird die Veröffentlichung des Manuals von der Veröffentlichung der Scribus-Versionen selbst entkoppelt.
  • Die in 1.5.0 neu eingeführten Funktionen wie Fußnoten, Tabellen und geordnete bzw. ungeordnete Listen sind zwar stabil, im Sinne von „nicht abstürzen“, aber nicht Feature-stabil, was bedeutet, dass sie manchmal nicht so wie erwartet funktionieren
  • Da in 1.5.3 weitere Änderungen am Text System vorgenommen werden, sollten Nutzer von 1.5.1 und 1.5.2 Backups ihrer Dokumente aufbewahren und die alten Versionen installiert lassen, wenn sie 1.5.3.svn und 1.5.3 testen möchten.
  • Das Dokumentformat der 1.5er-Reihe ist nicht kompatibel zu dem der 1.4er Reihe, 1.5er-Versionen können jedoch Dokumente der 1.4er-Reihe öffnen

Weitere Informationen zu Downloads und einer vollständigen Liste der Änderungen sowie Screenshots finden sich in den offiziellen Release-Notes im Scribus-Wiki.

Die Neuerungen von Ubuntu 16.04 „Xenial Xerus“

Am heutigen 21. April wurde mit Ubuntu 16.04 „Xenial Xerus“ (übersetzt „gastfreundliches Kap-Borstenhörnchen“) die sechste Long-Term-Support-Version (kurz LTS) von Ubuntu mit fünf Jahren Support für Grundsystem und den Desktop „Unity“ veröffentlich, wobei die Derivate kürzere Support-Zeiträume haben können. Die Neuerungen von Ubuntu 16.04 „Xenial Xerus“ weiterlesen

Fakten zum Raspberry Pi 3B und Zero

raspberry-pi-3b-draufsicht
Nein, ich gebe hier nicht zum x-ten Mal die Ankündigung der Raspberry Pi Foundation zur neuen Generation des Einplatinencomputers wieder ;-), sondern trage hier ein paar neue Funktionen und Fakten zusammen, die bisher nicht wirklich in den deutschsprachigen Medien thematisiert wurden.

Fakten zum Raspberry Pi 3B und Zero weiterlesen

WordPress: Kurzlink und Zeitpunkt der letzten Änderung ausgeben

Neben den „schönen“ URIs erlaubt WordPress auch weiterhin die Standard-URI im Format https://wordpressblog.example.org?p=123, was sich wunderbar nutzen lässt, um eine Kurz-URL zu dem jeweiligen Artikel, bzw. der jeweiligen Seite anzubieten, ohne dass man dafür einen externen Dienst benötigt:

Dazu benötigt ihr als erstes ein Plugin, dass PHP-Code ausführt, z.B. dieses hier. Als nächstes legt ihr ein Code-Snippet (je nach Code-Plugin kann es auch anders funktionieren) mit folgendem Inhalt an (eure Blog-URL eintragen!):

<?php
if(empty(wp_title('',0)))
{
$seite '';
}
else
{
$seite '?p='.get_the_ID();
}
echo 
'<p style="text-align:center;"><strong>Kurzlink zu diesem Artikel:</strong><br><em>https://blog.example.org',$seite,'</em><br><strong>Letzte Aktualisierung:</strong><br><em>',get_the_modified_date(),'</em></p>';
?>

Dann legt ihr ein Text-Widget mit dem Verweis [ php snippet=1 ] (die Leerzeichen müssen entfernt werden) auf das Snippet an und fertig ist die Info (ich lasse zusätzlich noch das Datum der letzten Änderung ausgeben):

kurzlink-und-letzte-seite

Noch ein paar Erläuterungen zum Code:
Die if-Bedingung ist nötig, weil sonst auf der Startseite (wp_title('',0) gibt nichts zurück) der Kurzlink zum neusten Artikel angegeben würde. Das Datum der letzten Änderung ist auf der Startseite zwar auch das des neusten Artikels, aber das ist mir auf der Startseite egal.

Man könnte auch das Snipptet unter jedem Beitrag einfügen.