Skip to main content

KeePassXC-Features, die mehr Beachtung verdienen: Multiple URLs, Sharing, AutoOpen

(Anm. d. Autors: Dies ist die zweite Fassung, nachdem die erste im Cache des Browsers verloren ging. Es kann meiner Ungeduld angelastet werden, wenn der Text irgendwo inhaltliche Spr√ľnge macht. Sie waren in der ersten Fassung nicht vorhanden. ūüôā

Multiple URLs

Sowohl bei meinem ehemaligen wie auch meinem Aktuellen Arbeitgeber nutzen wir ja einen zentralen Verzeichnisdienst (LDAP dort, Active Directory hier), um Authentifizierung bei div. Diensten umzusetzen. Die laufen aber teilweise unter verschiedenen Subdomänen.

KeePassXC bietet aber nur ein Feld f√ľr eine URL, mit der die Browser-Erweiterung KeePassXC-Browser (Firefox-Erweiterung, Chrome-Erweiterung) einen Vergleich durchf√ľhren kann.

Ein ehemaliger Kollege</span></span> hat mir mal gezeigt, dass man dem URL-Feld ODER-Verkn√ľpfungen injizieren kann, aber das bricht die Funktionalit√§t des Doppelklicks auf den URL-Eintrag in der Listenansicht (√Ėffnen der hinterlegten URL).

Eine andere langj√§hrige Empfehlung war es, einfach einen "Klon" des Eintrags mit den Zugangsdaten zu machen, wo der Klon dann nur Verweise auf die urspr√ľnglichen Daten enth√§lt (die GUI bietet leider keine M√∂glichkeit, Verweise manuell anzulegen).

Jetzt habe ich aber herausgefunden, dass KeePassXC seit 2.5.0 (erschienen Oktober 2019, aktuell ist 2.5.3) die erweiterten Attributen von KeePass2Android f√ľr das Hinterlegen weiterer URLs unterst√ľtzt. Neben dem direkten Bearbeiten der erweiterten Attribute gibt es unter dem Tab "Browser-Integration" auch das Feld "zus√§tzliche URL's (sic!)", dessen Eintr√§ge dann auch als KP2A_URL(_#)-Attribute auftauchen.

Fehlt nur noch die GUI, um die Einträge aus KeePassXC heraus aufrufbar zu machen.

Sharing

W√§hrend meines Umzugs von 1Password ‚Äďwas mir bei Secuinfra nahegelegt wurde und dem ich einen Monat lang eine Chance gegeben habe, mich zu √ľberzeugen‚Äď zu KeePassXC habe ich mir meine Eintr√§ge schon ordentlich in Gruppen sortiert. Dabei fiel mir der Einstellungsreiter "KeeShare" auf, wo mir allerdings nur angezeigt wurde, dass KeeShare derzeit deaktiviert sei. Flugs mal gesucht, was es damit auf sich hat, und diese Dokumentation gefunden.

Die Anleitung finde ich jetzt nicht sonderlich gelungen. Aber sie ist ausreichend f√ľr erste Tests.

Prinzipiell erstelle ich mir f√ľr jede Installation, wo ich Export oder Sync nutzen will, einen Schl√ľssel, mit dem ich meine √Ąnderungen signieren kann. Wo ich Import oder Sync nutzen will, muss ich dem Schl√ľssel vertrauen.

Sync besteht de facto aus einem Export und einem Import.

Was gibt es zu beachten? Effektiv ist KeeShare nichts anderes als die Erstellung eines Auszugs des aktuellen Schl√ľsselrings in einem neuen</span></span> Schl√ľsselring. Das wird bei jeder Sicherung durchgef√ľhrt. Wer also die Option zur automatischen Sicherung aktiv hat, l√∂st nach jeder √Ąnderung einen Export aus. Ich verwende momentan nur die Sync-Option, kann also nicht sagen, wann der Import durchgef√ľhrt wird. Aber in anderen Kontexten erkennt KeePassXC sofort, wenn eine Datei ge√§ndert wurde, also gehe ich davon aus, dass der Sync- bzw. Import-Schl√ľsselring dauerhaft auf Ver√§nderungen √ľberwacht wird (kostet ja nichts).</div>

Das bedeutet aber eben, dass eine √Ąnderung in Verbindung mit Autosave eine Kaskade an √Ąnderungen ausl√∂sen kann. In meinem Fall wurde munter hin und her ge-sync-t. Ich gleiche nur eine Gruppe mit meinen pers√∂nlichen beruflichen Eintr√§gen mit meinem privaten Schl√ľsselring ab, so dass ich ggf. auch von anderen Rechnern auf meine Mails und Kalender zugreifen kann. Vorsicht ist geboten bei dem Feature, Eintr√§ge in andere Schl√ľsselringe zu verschieben. Ich habe durch schlechtes Timing des Syncs dabei meinen Eintrag f√ľr Office 365 verloren. Gl√ľcklicherweise hatte ich noch auf einem anderen Ger√§t die alte Version und konnte meine Daten retten.</div>

KeeShare nutzt f√ľr Import und Sync die Funktion zum Zusammenf√ľhren (Merge) (s.a. Men√ľ "Datenbanken" -&amp;gt; "Datenbanken zusammenf√ľhren"), ein ebenfalls sehr praktisches Feature. Letztlich ist KeeShare nur ein Automatismus f√ľr das Mergen: Eine Gruppe wird in einen Schl√ľsselring exportiert, diese wird am Ziel wieder importiert. Wie dieser Export-Schl√ľsselring seinen Weg ans Ziel findet, ist jeder und jedem selbst √ľberlassen. Ich verwende das momentan nur lokal, aber Teams k√∂nnten so einzelne Gruppen teilen und die Datei dann mittels Nextcloud, Syncthing oder Netzlaufwerk austauschen.</div>

AutoOpen

Beim Suchen nach der Doku zu KeeShare stie√ü ich auf die Sonderbehandlung des Ordners "AutoOpen". Eintr√§ge in AutoOpen werden beim Entsperren des Schl√ľsselrings automatisch ge√∂ffnet und entsperrt. Dazu muss der Pfad im URL-Feld, das Passwort im Passwort-Feld und ggf. die Schl√ľsseldatei im Benutzernamens-Feld stehen. Sehr praktisch f√ľr all die, die mit mehreren Schl√ľsselringen jonglieren m√ľssen.</div>

Das funktioniert so auch mit KeePass2Android.</div>

Die schöne neue Musikstreamingdienstwelt ist eine Playlisthölle

Als Amazon-Prime-Kunde habe ich ja Zugriff auf einen beschr√§nkten Musikkatalog via Amazon Music Prime. Die Android-App nervt aber bei jedem Start, ob ich nicht Amazon Music Unlimited f√ľr nur 4,99‚ā¨ pro Monat buchen m√∂chte. Vor drei Wochen oder so hat's mir dann gereicht: Die st√§ndige Aufforderung war mir dann doch zu viel und au√üerdem bot Amazon die ersten drei Monate kostenlos an. Und ich kann den Zugriff auf die gro√üe Musikbibliothek ja sicher auch f√ľrs Rollenspiel und so nutzen. Super!

Jetzt werde ich genervt mit einem Upgrade auf Amazon Music HD. F√ľr nur 5‚ā¨ mehr. Ich bin angepisst. Und ich werde dieses Mal ganz sicher nicht ‚Ķ zumindest hoffe ich das ūüėÄ.

Wie auch immer. Ich habe es oben angedeutet, ich will den Musikkatalog f√ľrs Rollenspiel nutzen. Und da ich eine Numenera-Runde plane, habe ich mal geschaut, was denn andere Spielrunden so an Musik nutzen. Ich habe zwar Vorstellungen, aber kann sie nicht in Worte fassen, weswegen ich gehofft habe, dass ich dann ein paar exemplarische Tracks abgreifen kann.

Nebenbei: Der Soundtrack zu Bastion ist großartig. Nicht meine Vorstellung von Numenera, aber großartig.

In einem Reddit-Thread teilen dann also auch viele Leute ihre Playlists. Leider, leider bei verschiedensten Anbietern. Will ich √ľberall ein Konto anlegen, einen Tarif buchen?

NEIN, nat√ľrlich nicht. Die Frage war rhetorisch!.

Aber die Playlists lassen sich doch bestimmt exportieren und importieren, oder?

Nun, ja und nein. Die erst später von mir aufgerufene Seite im Amazonforum besagt recht deutlich, dass Amazon diesen Featurewunsch bereits seit Jahren ignoriert.

Die Dienste selbst bieten zumindest größtenteils keine Option dazu an. Das hat aber ein paar Web- und Appentwickler</span></span> auf den Plan gerufen, da Abhilfe zu schaffen.

Der Playlist-Converter kann sich nur mit einer handvoll Dienste verbinden, und Amazon Music ist keiner davon. Zumindest steht Amazon Music auf der Roadmap. Bringt mich jetzt also auch nicht weiter.

Liste der unterst√ľtzten Dienste von Soundiiz

Liste der unterst√ľtzten Dienste von Soundiiz

Die Webapp Soundiiz bietet eine beeindruckende Liste an Diensten, mit denen sie sich verbinden kann ‚Äď zu Amazon Music ist jedoch nur ein Lesezugriff implementiert, Playlists k√∂nnen also nur gelesen, aber nicht erstellt werden.

Mooval wiederum unterst√ľtzt nur die drei Dienste Napster, Deezer und Spotify.

Im oben verlinkten Forumsbeitrag wurde auf Stamp verwiesen. Stamp scheint zu k√∂nnen, was ich brauche. Aber sie wollen 8,99‚ā¨ daf√ľr. Jetzt stehe ich also vor dem Problem, was mir meine eigene Arbeitszeit wert ist, und ob ich mir Stamp leisten m√∂chte. Immerhin gibt es eine Gratisversion, mit der ich anhand einer Playlist und 10 Titeln testen kann, ob sie was taugt.

Was aber macht den Unterschied zwischen den Diensten aus? Tja, öffentliche Schnittstellen. Die allermeisten Dienste bieten API-Zugriff auf ihre Dienste, und die Entwickler machen davon reichlich Gebrauch. Und Amazon? Nun … lest selbst.

F√ľr die meisten Menschen mag ein API-Zugriff auf den Dienst der Wahl uninteressant sein. API-Zugriff bedeutet aber, dass sich √ľberhaupt erst ein √Ėkosystem an interessanten Anwendungen (Apps) entwickeln kann. Wer mit den vom Dienstanbieter bereitgestellten M√∂glichkeiten zufrieden ist, braucht diesen Aspekt nicht bei seiner Auswahl ber√ľcksichtigen.</div>

Im Moment w√ľrde ich von Amazon Music Unlimited abraten, sofern ihr nicht bereits Prime-Kunde seid und ein bisschen aufs Geld achten m√ľsst. Vermutlich werde ich aus dem Grund meinen Unlimited-Tarif auch nach den drei Monaten wieder beenden.</div>

Erlösung und Algorithmen

Erl√∂sung. Lasst uns √ľber Erl√∂sung reden. Damit meine ich die spirituelle Erl√∂sung.

Kann es sein, dass des Menschen größte Erlösung ist, von der Verantwortung seines eigenen Treiben freigesprochen zu werden? Die Welt so erklärt werden kann, dass jeder und alle Gruppen, mit denen er sich identifiziert, frei von Schuld seien?

Aber ganz ohne Schuld geht es ja auch nicht, denn irgendwas Schlimmes passiert ja doch in der Welt, also braucht es Schuldige. Da man selber keine Verantwortung hat und demnach nicht Schuld sein kann ‚Äďoder ist man nicht schuld und hat demnach keine Verantwortung?‚Äď, muss es jemand anders sein.

Spannend finde ich, dass es nie ohne Absicht geht. Es passiert was Schlimmes? Jemand _wollte_, dass dieses Schlimme passiert! Das kann wohl als b√∂se bezeichnet werden, und die Person oder Gruppe als das B√∂se. Fr√ľher hielt noch der Teufel daf√ľr her, heute sind es Verschw√∂rer, die Geheimdienste, Juden (naja, das ist nicht neu), Rothschilds, Soros, das Kapital (alle drei als Stellvertreter f√ľr "die Juden") oder ‚Äďganz abgefahren‚Äď Aliens, Echsenmenschen, Hohlweltler.

Wie komme ich darauf? Deswegen.

YouTube announced they will stop recommending some conspiracy theories such as flat earth.

I worked on the AI that promoted them by the billions.

Here is why it’s a historic victory. Thread. 1/ https://t.co/wJ1jbUcvJE

‚ÄĒGuillaume Chaslot (@gchaslot) 9. Februar 2019

Guillaume Chaslot beschreibt darin, wie der Empfehlungsalgorithmus von YouTube schon nach kurzer Zeit Verschw√∂rungsphantasien befeuerte, weil einige wenige Intensivnutzer ihm beibrachten, dass dar√ľber die Aufmerksamkeitszeit maximimiert werden kann. Und diese Videos bieten genau das an, was diese Zielgruppe offensichtlich am meisten ersehnt: Erl√∂sung. Erl√∂sung von der Last, selber an ihrem Zustand, der ihnen so viel Zeit auf YouTube beschert, schuld zu sein. Es sind nat√ľrlich Ausl√§nder, Migranten und Fl√ľchtlinge, die ihm die Arbeit wegnehmen und seinem Staat Fantastilliarden an Geld kosten, die ansonsten ihm zust√ľnden. Es sind b√∂se √Ėlmultis (Rockefeller, bestimmt auch Juden) und Echsenmenschen, die die Vermarktung seines Perpetuum Mobiles behindern. Es sind die Verschw√∂rer der NWO und deren Geheimdienste, die Chemtrails verspr√ľhen und mittels HAARP jedwede selbstverst√§ndlich ihm innewohnende Brillianz und Grandesse unterdr√ľcken.

Nat√ľrlich kann es sein, dass er oder sie vollkommen unverschuldet in diese Lebenslage gerutscht ist. Den Unterschied macht aber aus, ob er oder sie sich als Kollateralschaden wirtschaftlicher Umst√§nde und Ungl√ľcke sieht oder als Opfer finsterer Machenschaften und Umtriebe.

Und YouTubes Empfehlungsalgorithmus bietet eben auch Erkl√§rungen, die klar benennbaren Personen oder Gruppen die Verantwortung daf√ľr zuschieben. Videos √ľber Wirtschaftstheorie und -politik sind eben keine Hingucker.

Dieser Tweet bringt es auf den Punkt:

Huh, we were worried we’d build a paperclip maximizer, but instead we built an engagement maximizer, and it might be just as bad.

‚ÄĒFilippo Valsorda (@FiloSottile) 10. Februar 2019

Falls jemanden die Anspielung nicht auffällt, sie stammt hierher: "Suppose we have an AI whose only goal is to make as many paper clips as possible. The AI will realize quickly that it would be much better if there were no humans because humans might decide to switch it off. Because if humans do so, there would be fewer paper clips. Also, human bodies contain a lot of atoms that could be made into paper clips. The future that the AI would be trying to gear towards would be one in which there were a lot of paper clips but no humans." ( Nick Bostrom, as quoted in "Artificial Intelligence May Doom The Human Race Within A Century, Oxford Professor Says")

Die gute Nachricht ist, dass Google wohl jetzt an der Stellschraube dreht, mit der best√§ndig neue S√ľchtige nach Erl√∂sung geschaffen wurden. Wir werden sehen, welche Auswirkungen das hat.

HeXXen 1733 ‚Äď erste Eindr√ľcke

Vor einer Woche kam HeXXen 1733 bei mir an. Ich gebe zu, es war ein Impulskauf ‚Äď sowohl die Aufmachung als auch das Thema sprachen mich an. Es geht um dunkle M√§chte, D√§monen, Teufel und den Kampf der Menschen dagegen in einer Epoche, die mich schon immer fasziniert hat, dem Barock, wenn auch in einer seit fast 100 Jahren abweichenden Zeitlinie. Voller Vorfreude fing ich mit der Lekt√ľre an.

The Good, …

Nat√ľrlich ist nichts perfekt, aber im Falle von HeXXen 1733 ist leider bis zur Publikation mehr als ein Missgeschick passiert. Fangen wir mal mit den positiven Aspekten an.

Das Buch ist von hervorragender Qualit√§t. Die 40‚ā¨ war es auf jeden Fall wert. Kunstledereinband mit Goldpr√§gung; hochwertiges Papier; gelungene Illustrationen, die die Epoche vielf√§ltiger darstellen als vergleichbare Popul√§rpublikationen, wenn auch sehr wei√üh√§utig, was aber sicher der Thematik geschuldet ist.

Die Regeln beinhalten sch√∂ne Ideen wie bis zu drei w√§hlbare Rollen und sp√§ter Professionen, die sich aus den gew√§hlten Rollen ergeben. Von den Rollen und der Profession h√§ngen wiederum die erlernbaren Kr√§fte ab. Au√üerdem ist HeXXen 1733 das bislang einzige mir bekannte Regelwerk, das die Art der Charakterkleidung regeltechnische Auswirkungen abseits eines R√ľstungswerts haben l√§sst.

… the Bad, …

Ausschnitt aus dem Regelwerk, worin die Anrede von Spielerinnen geklärt werden soll.

Die Lekt√ľre des Grundregelwerks habe ich mit Beitr√§gen bei Facebook begleitet. Es f√§llt mir schwer, heutzutage Texte, Bilder, Filme nicht aus feministischer Perspektive zu sehen, so dass mir gleich √ľbel aufstie√ü, dass der Autor sich zwar der Thematik bewusst zu sein schien, aber den Aufwand vermeiden wollte, der mit sprachlicher Selbstdisziplin einhergeht, um Spielerinnen auch wirklich w√∂rtlich zu erw√§hnen (Seite 9). In der Facebookdiskussion wurde das auch meiner Meinung nach gut auf den Punkt gebracht (sinngem√§√ü): Ein Text, der ohne so einen Hinweis auskommt, kann ich problemlos im generischen Maskulinum lesen, denn ich vermute Nachl√§ssigkeit und mangelndes Problembewusstsein. Ein Text mit so einem Hinweis zeugt zwar von Problembewusstsein, zeigt aber auch mangelndes Interesse an wirklicher Kenntnisnahme. Salopp gesagt: "Fuck off!"

Das war sicher nicht die beabsichtigte Wirkung.

Ausschnitt aus dem Regelwerk, worin alternative Bezeichnungen f√ľr Spieler, Charaktere und Spielleiter etabliert werden.

Die vermeintliche bessere Lesbarkeit wird dann ein paar Seiten gleich wieder mit F√ľ√üen getreten, indem extra in einem Textkasten Synonyme f√ľr Bezeichnungen eingef√ľhrt werden. Im n√§chsten Abschnitt gehe ich noch intensiver auf den didaktischen Aufbau des Regelwerks ein, aber hier m√∂chte ich vorgreifen: Wir befinden uns mit dem Ausschnitt auf Seite 21, wir haben also schon einige KiByte an Text konsumiert, in denen beide Begriffe immer wieder auftauchen, ohne zu erkl√§ren, warum mal der eine, mal der andere Begriff genutzt wird. Als Leser hatte ich also erstmal Fragezeichen √ľber dem Kopf, ob es einen Grund f√ľr die unterschiedlichen Bezeichnungen gibt (Spoiler: Nein, gibt es nicht), und musste die ganze Zeit im Hinterkopf behalten, ob die Unterscheidung noch relevant wird.

In Hinblick auf den Anspruch, bessere Lesbarkeit anzustreben, empfinde ich das als schlampig. Immerhin lie√üe sich das leicht in einer zuk√ľnftigen Auflage korrigieren, indem jedes Vorkommen von entweder "Spielleiter" oder "HeXXenmeister" erstmal durch das jeweils andere ersetzt wird. Eine inklusivere Sprache d√ľrfte ein deutlich gr√∂√üeres Unterfangen sein.

Wirklich schade ist es deswegen, weil die Darstellungen von Held*innen recht ausgewogen ist. Hier werden Frauen auch mal bewaffnet und abseits der dauernden Klischeerollen dargestellt. Gro√ües Lob an die Illustrator*innen. Auch inhaltlich betont der Autor immer wieder, dass es in der Welt von HeXXen 1733 selbstverst√§ndlich sei, dass auch Frauen alle Rollen √ľbernehmen k√∂nnten, die M√§nner offenst√ľnden ‚Äď vielleicht mit Ausnahme des Papstes und der Kardin√§le, aber die katholische Kirche als Bollwerk patriarchaler Strukturen im Spiel empfinde ich dann nicht als so dramatisch. Inquisitorinnen hingegen sind problemlos m√∂glich.

Neben diesen Kritikpunkten fallen die gelegentlichen Satz- und Druckfehler nicht sonderlich ins Gewicht.

… and the Ugly.

Didaktisch empfinde ich das Regelwerk als Katastrophe. Es ist nicht immer ersichtlich, ob die Beschreibungen von Moden, Waffen und Bräuchen sich auf realweltliche Begebenheiten beziehen, die im Spiel Widerhall finden, oder ob die Beschreibungen allein spielweltliche Zustände wiedergeben. Deutlich schlimmer wiegt jedoch, dass das Regelwerk als "einfach" beworben wird (Seite 8).

Vermutlich ist es gar nicht un√ľblich, dass die Charaktererschaffung von der Regelwerksmechanik getrennt behandelt wird. Hier folgen auf 74 Seiten Regeln dann 77 Seiten zur Charaktererschaffung und Wertesteigerung. In den Regeln erfahre ich erstmal nichts dar√ľber, in welchen Gr√∂√üen sich √ľberhaupt die Werte f√ľr einen typischen SC so tummeln oder mit wie vielen W√ľrfeln Proben bestritten werden. Ja, dort steht was von Attribut + Fertigkeitswert, aber in Hinblick auf die Frage nach der Gr√∂√üenordnung sagt mir so eine Angabe erstmal gar nichts. F√ľr mathematisch weniger bewanderte Menschen mag das einerlei sein ‚Äď mir ist das wichtig. Die Antwort darauf finde ich halt erst so 100 Seiten sp√§ter.

W√§hrend ich den vorigen Absatz geschrieben habe, schlug ich eine zuf√§llige Seite auf (Seite 42, entscheidet selbst, wie zuf√§llig das war) und fand dort die Antwort auf die Frage, die mich √ľber dutzende Seiten Kr√§ftebeschreibungen (119-149 und 160-176) plagte: Wo finde ich die Erkl√§rung daf√ľr, was bei den Kr√§ften immer in Klammern hinter der Bezeichnung angegeben wird (Beispiel: "√úberlegene Fechtkunst (allgemeine J√§gerkraft / Bande / Gestik")? Am Anfang des Abschnitts √ľber Kr√§fte fand ich dazu nichts, nicht mal einen Hinweis darauf, dass ich die Regeln dazu auf Seite 42 f√§nde. Und das l√§sst sich gut verallgemeinern: Es gibt wenige, ganz wenige Querverweise zu den relevanten Stellen. Zu viele Querverweise schaden der Lesbarkeit, schon klar, zu wenige jedoch machen das Verst√§ndnis jedoch unn√∂tig schwer.

Unn√∂tig kompliziert ist auch die Notation von Proben: "Att + Fw (Fertigkeit)" (Attribut + Fertigkeitswert (Fertigkeit)). Ich sehe keinen Vorteil gegen√ľber der Notation "Att + Fertigkeit". Die ersten paar Male hat es meinen Lesefluss grob gest√∂rt, sp√§ter empfand ich es nur noch als √Ąrgernis. Was auch immer f√ľr die gew√§hlte Notation sprechen mag, konsequenterweise h√§tte es dann "Aw (Attribut) + Fw (Fertigkeit)" hei√üen sollen. Eine Doppelnennung "Spielerinnen und Spieler" h√§tte der Lesbarkeit jedenfalls sicher nicht mehr geschadet.

Dann fuchst es mich, dass es zwischen Lebenspunkten und Schaden noch so Halblebenspunkte und Halbschaden gibt, und das jeweils in mehreren Geschmacksrichtungen. Es gibt auf der Bonusseite "Coups", die k√∂rperliche Tricks erm√∂glichen, "Ideen" f√ľr geistige Dinge, "Segnungen" f√ľr W√ľrfeldinge und heilige Tricks, "Aktionspunkte" f√ľr Handlungen im Kampf (R√ľstungswert lie√üe sich auch noch nennen, aber der ist nur das Komplement der Aktionspunkte zur 6). Zus√§tzlich gibt es noch "Puffer-Lebenspunkte", tempor√§re Lebenspunkte, die nach Ende eines Konflikts zur√ľckgesetzt werden.

Auf der Malusseite gibt es "L√§hmungsstufen", die die Aktionspunkte verringern, es gibt "innere Schadensstufen" und "√§u√üere Schadensstufen", √ľber die getrennt Buch gef√ľhrt werden muss, aber letztlich die gleichen Auswirkungen haben und trotzdem unterschiedlich behandelt werden m√ľssen, und "Malusstufen", die sich allgemein als Malus auf Proben auswirken. Als Gegenwert zu "Segnungen", die nur einen tempor√§ren Wert darstellen, gibt es "Verderbnis", die effektiv das Maximum an "Segnungen" begrenzt.

All das wechselwirkt mit einem Sammelsurium an Kr√§ften, von denen manche nur bei bestimmten W√ľrfelergebnissen genutzt werden k√∂nnen, andere sind in 10 Stufen ausbaubar und andere sind fast schon langweilig durch Ausgabe von "Coups", "Ideen" oder "Segnungen" anzuwenden, und Kleidungssets. Ja, Kleidungssets! Da scheiden sich bestimmt die Geister, ich find die Idee jedoch sehr erfrischend. Warum sollten auch nur alchimistische Tr√§nke irgendwelche tollen Boni bringen, warum nicht auch Kleidung? Leider wirkt das nur sehr halbherzig umgesetzt und durch die Brille des 20./21. Jahrhunderts beschrieben. Sollte das Regelwerk irgendwann mal √ľberarbeitet werden ‚Äď an der Stelle k√∂nnten die Macher*innen mehr draus machen. Jedenfalls hatte ich nach dem ersten Lesen und anf√§nglichem Verstehen dieser Wechselwirkungen nicht das Gef√ľhl, dar√ľber jemals einen √úberblick behalten zu k√∂nnen. Und st√§ndig im Regelwerk nachzuschlagen, scheint mir den Spielfluss doch zu stark zu beeintr√§chtigen. Als Spieler*in mag das nicht so dramatisch sein, hat man doch selbst immer nur einen kleinen Ausschnitt aller Kr√§fte im Kopf zu haben.

Die im Regelwerk skizzierte Handhabung von NSC finde ich mit am abschreckendsten, was ich je gesehen habe. Es gibt zwar, √§hnlich wie bei 7te See, eine Unterscheidung zwischen relevanten und weniger relevanten NSC, wobei letztere durch allein zwei Werte abgebildet werden, aber die relevanten NSC erfahren fast die komplette Regel-Aufmerksamkeit, die auch SC erfahren. Es wird an einzelnen Punkten (stark) vereinfacht, aber der Bau interessanter NSC wirkt eher wie Arbeit denn Spa√ü. Auch kann ich mir schwer vorstellen, einen NSC improvisiert aufzustellen. Nat√ľrlich kann ich als Spielleiter tun und lassen, was ich will, aber die Vorstellung der Macher*innen finde ich, wie geschrieben, abschreckend.

250 Seiten umfasst das Regelwerk, davon sind ungef√§hr 25 Seiten 10 sogenannten Archetypen vorbehalten, sofort spielbaren Charakteren auf Stufe 1. Regul√§re Charakterb√∂gen sind zweiseitig, also w√ľrde ich erwarten, dass ich dort auch 10 Charakterb√∂gen finde. Stattdessen finde ich dort 10 Abschnitte f√ľr die Werte, die alle jeweils ungef√§hr ein Viertel einer Seite einnehmen. Der Rest sind Illustrationen, Charakterhintergr√ľnde und Prosa zu den Charakteren. Ohne Zweifel stimmungsvoll, aber ich kann mich nicht erinnern, dass Hintergr√ľnde und Prosa in der Charaktererschaffung Erw√§hnung fand √ľber einen kurzen Zweizeiler hinweg. Mit diesen Archetypen wird ein nicht ansatzweise im Regelwerk erw√§hnter Anspruch an Charaktere und ihre Erschaffung gesetzt. Kann ich ignorieren, finde ich nur furchtbar ungeschickt. Wenn der Hintergrund irgendwie wichtig sein soll, dann geh√∂rt er meiner Meinung nach deutlich in den Prozess der Erschaffung eingebunden, was ich aber kaum im skizzierten Prozess erkennen kann.

Auch nicht lustig fand ich den mehrfach im Regelwerk auftauchenden Hinweis auf sp√§tere Publikationen zur Vervollst√§ndigung des Regelwerks, z.B. behandelt das Grundregelwerk nur die Charakterstufen 1 bis 12, es soll aber noch deutlich dar√ľber hinaus gehen (20? 25?).

Das Beste habe ich mir aber f√ľr den Schluss aufgehoben: Die W√ľrfel.

Ausschnitt aus dem Regelwerk, Tabelle der W√ľrfelfl√§chen der verwendeten W√ľrfel

HeXXen 1733 verwendet sechsseitige W√ľrfel (W6), aber mit eigener Beschriftung. Kenne ich ja schon von Fate mit den dort verwendeten Fudge-W√ľrfeln. Aber hier wurde nicht nur ein eigenes Konzept erstellt, sondern es wurden gleich mehrere eigene Beschriftungen der W√ľrfelfl√§chen vorgenommen. Der sogenannte HeXXenw√ľrfel (1:2:3) hat drei leere Fl√§chen, die Misserfolge darstellen, zwei Fl√§chen mit Kr√§henk√∂pfen f√ľr Erfolge und einen Stern f√ľr Esprit (f√ľr Espritkr√§fte oder als halber Erfolg). NSC nutzen keine Espritkr√§fte, deswegen hat der HeXXenw√ľrfel f√ľr SL (3:3) drei Fl√§chen f√ľr Erfolge. Janusw√ľrfel (3:3) haben drei leere und drei beschriftete Fl√§chen und werden in H√∂he errechneter Boni oder Mali mitgew√ľrfelt. Je nach Vorzeichen gelten sie dann als zus√§tzliche Erfolge oder werden von den Erfolgen abgezogen. Segnungsw√ľrfel haben wiederum eine eigene Einteilung, 1:1:2:2. Das gilt nat√ľrlich auch f√ľr Blutw√ľrfel, bei denen kommt hinzu, dass ich nur vermuten kann, dass die Wertigkeit der Fl√§chen 0, 1, 1, 2, 2 und 3 ist - im Regelwerk wird nichts dazu geschrieben, au√üer dass die Anzahl der Blutstropfen der Wertigkeit entspricht, die ich nicht mit Sicherheit auf den Bildern erkennen kann. Und dann gibt es den Elixierw√ľrfel mit der Aufteilung 2:1:1:1:1 ‚Äď effektiv ist die 6 eines normalen W6 durch eine 1 ersetzt.

Bei Proben wird wie angedeutet mit einer Anzahl an HeXXenw√ľrfeln gew√ľrfelt, die sich aus Attribut und Fertigkeit ergibt. Bei der Lekt√ľre hat es eine Weile gedauert, bis ich herausfand, wie viele W√ľrfel das also sein werden. Spoiler: Es sind bis zu 10 W√ľrfel. Attribute und Fertigkeiten spielen sich im Bereich bis 5 ab, was der Charakterbogen dank eines Freifeldes an der Stelle nicht wirklich nahelegt. H√§tte ja auch wie bei DSA im Bereich bis 20 sein k√∂nnen.

So ein P√§ckchen *HeXXenw√ľrfel* mit 10 *HeXXenw√ľrfeln*, 5 *Janusw√ľrfeln* und je 1 *Blut-, Segnungs- und Elixierw√ľrfel* geht momentan f√ľr 20‚ā¨ √ľber die virtuelle Ladentheke, denn im Einzelhandel werde ich die wohl kaum finden. Wir alle kennen das sicherlich, dass Spieler*innen in Sachen W√ľrfel mitunter sehr eigen sein k√∂nnen und niemanden anderen damit w√ľrfeln lassen. Wollte ich also eine 4k√∂pfige Spielrunde vollst√§ndig ausstatten, w√§ren das 80‚ā¨. Ich kann nur vermuten, dass die HeXXenw√ľrfel f√ľr die SL in der SL-Box "Werkzeuge des Meisters" (50‚ā¨) enthalten sind.

Eine Substitution durch regul√§re W6 wird zwar durch die Tabelle nahegelegt, ich kann mir aber nicht vorstellen, dass damit eine schnelle Auswertung der W√ľrfelergebnisse m√∂glich ist. Ich gehe davon aus, dass w√§hrend der Spieltestphase die Spielrunde mit normalen W6 gespielt hat. Im Zuge dessen werden sie wohl erkannt haben, dass angepasste W6 nicht nur besser aussehen (den Punkt gestehe ich gerne ein), sondern auch die W√ľrfelauswertung beschleunigt. Da es an vielen Punkten im Regelwerk hei√üt "w√ľrfele [Janusw√ľrfel, Segnungsw√ľrfel, Blutw√ľrfel, Elixierw√ľrfel] mit" kann auch nicht einfach die W√ľrfelzahl erh√∂ht werden, sondern sie m√ľssen ja optisch unterscheidbar bleiben.

Schluss

Wie die Macher*innen das Regelwerk "einfach" nennen können, ohne in schallendes Gelächter auszubrechen, kann ich nicht verstehen.

Ich finde es wirklich schade, dass HeXXen 1733 und ich nicht miteinander warm werden k√∂nnen. Die ohne Frage vorhandenen sehr guten Ideen (Kr√§fte in Abh√§ngigkeit gew√§hlter Rollen und Profession, regeltechnisch relevante Kleidung) und die Spielwelt k√∂nnen leider nicht √ľber die vorhandenen Kritikpunkte hinwegt√§uschen.

Bei den Teilzeithelden gibt es eine Rezension von Michael Fuchs, die einige meiner Kritikpunkte ebenfalls erwähnt, in Sachen "einfache Regeln" aber zu einem gänzlich anderen Schluss kommt. Hey, DSA 1 hat einfache Regeln, HeXXen 1733 nicht.

Mediatheken, MediathekView und ein paar Skripte

Ich finde die Mediatheken der √ĖR ja total toll. Aber f√ľr einen Heimmediaserver brauchen die Dateien doch noch ein bisschen Nacharbeit.

Die meisten Videos, die mir MediathekView herunterl√§dt, liegen im MP4-Container vor. Manchmal macht es mir auch eine Matroska-Datei daraus, so wie ich das will. Von denen scheinen aber manche wiederum nicht als solche erkannt zu werden ‚Äď manche sind tats√§chlich nur MP4-Container mit .mkv-Erweiterung, andere werden nur als application/octet-stream erkannt. So richtig rund l√§uft der Download da nicht.

Also bastele ich mir ein paar Skripte, die die MKV-Nachbearbeitung √ľbernehmen. Das erste Skript sorgt erstmal daf√ľr, dass alle Dateien die richtige Dateiendung haben. Manche Videodateien liegen n√§mlich g√§nzlich ohne vor, z.B. "Yakari 15. Wo ist dieser verdammte Teamgeist?". Erschwerend kommt hinzu, dass da schon ein Punkt im Dateinamen ist. So ein Skript muss unbeaufsichtigt arbeiten k√∂nnen, also m√ľssen solche Sonderf√§lle ber√ľcksichtigt werden k√∂nnen.

Wie schon angedeutet: Wenn ich also eine Matroska-Datei habe und dort auch eine drin ist, kann es immer noch sein, dass sie nicht von allen Programmen als solche erkannt wird. Widerwillige Dateien werden also von einem Format ins selbe "konvertiert". Mit dem richtigen Werkzeug wird auch eine spezifikationsgetreue Datei daraus. Nat√ľrlich √ľberschreibt man nicht die Originaldatei, sondern schreibt eine tempor√§re Datei. Diese wird nach Abschluss an die urspr√ľngliche Stelle kopiert. Doof, wenn da was schief l√§uft, dann passiert das nicht. Auch nicht das abschlie√üende L√∂schen der tempor√§ren Datei. Daf√ľr aber das L√∂schen des Originals, weil man vergessen hat zu pr√ľfen, ob die vorigen Schritte erfolgreich verlaufen sind.

Dann stellt man fest, dass manche Dateien unvollst√§ndig sind und bei der Konvertierung einen Fehler werfen. Genug, dass das Dateisystem f√ľr tempor√§re Dateien volll√§uft. (Die Verluste hielten sich in Grenzen, zumeist nur Bob-Ross-Videos).

Das n√§chste Skript √ľberpr√ľft dann Videodateien darauf, ob es sich um keine Matroska-Datei handelt. Ist das der Fall: Konvertierung ohne Transkodierung ‚Äď es werden einfach nur die Spuren in einen neuen Container gepackt. Zumeist hei√üt das, MP4-Videos umzucontainern. Auch hier kann obiger Fehler auftreten. Verluste: keine, nur ein wenig Selbstachtung.

Jetzt bietet Arte aber oft auch französische Produktionen an, die ich gerne mit beiden Audiospuren vorliegen hätte. Ohne Handarbeit geht es da nicht wirklich, aber es beschränkt sich darauf, dass ich die Dateien halt "Film (french).mkv" und "Film (deutsch).mkv) nenne. Das dritte Skript erkennt dann die Sprachangabe und bestimmt alle Videodateien gleichen Schemas, aber mit anderen Sprachangaben. Dort extrahiert es die Tonspuren und multiplext sie in eine neue Datei.

Es ist mir √ľbrigens total unverst√§ndlich, warum nicht die M√∂glichkeit mehrerer Tonspuren in einer Datei genutzt wird. Nicht nur bei franz√∂sischen Produktionen auf Arte, sondern auch bei englischen oder amerikanischen auf allen √ĖR-Sendern. Ich nutze ja meinen TV-Anschluss schon geraume Zeit nicht mehr, kann mich aber erinnern, dass sogar im analogen Fernsehen gelegentlich Mehrkanalton ausgestrahlt wurde.

Das vierte Skript greift sich zuguterletzt die gelegentlich bereitgestellten Untertiteldateien und multilplext sie als Untertitelspur in die Videodatei. Auch hier: Warum wird das nicht gleich so gemacht? Antwort: Weil das Containerformat MP4 ‚Äďnicht zu verwechseln mit dem Codec MP4; der Container ist ein abgespeckter Quicktime-Container‚Äď keine gottverdammten Untertitel zu unterst√ľtzen scheint. Ernsthaft. Ich habe mich jetzt nicht sonderlich bem√ľht, aber ich bin damit gescheitert, dort Untertitel hinein zu mulltiplexen. Es scheint nicht zu gehen. Matroska bietet das problemlos an.

MKV ist MP4 in so vielerlei Hinsicht √ľberlegen, da fragt sich der gequ√§lte Leser: Warum wird denn das nicht benutzt? Antwort: Es wird nicht das Beste genutzt, sondern das, was den eigenen wirtschaftspolitischen Interessen am ehesten entspricht. Matroska stammt grob gesagt aus der Filesharer-Community, um die Beschr√§nkungen der kommerziellen Formate aufzuheben. MP4 ist ein Produkt des MPEG-Konsortiums, wo auch Apple drinsitzt, die nat√ľrlich ihr Quicktime-Format propagiert haben. Au√üerdem hat das Konsortium kein Interesse daran, die Bed√ľrfnisse von Powerusern zu befriedigen, sondern die ihrer Mitglieder und Kunden und der kommerziellen Videoproduzenten.

Bis hierhin sind die Werkzeuge bash, mediainfo, mkvtoolnix und file. Als K√ľr und letzten Schritt strebe ich noch an, die resultierende Videodatei mit filebot gleich gem√§√ü Online-Datenbanken wie TheMovieDB oder TheTVDB so zu benennen, dass Plex (ein Heimmediaserver) sie sofort akzeptiert.

Wenn das passiert ist, und ich mir also das Programm der √ĖR selbst zusammengestellt habe, dann werde auch ich von merkw√ľrdigen Lobby-Verb√§nden unter TV-Piraterie gef√ľhrt.

DECT im neuen Eigenheim

Es ist schlicht nicht möglich mit den Gigasets durch die Zwischendecke zu funken. Ich stand heute direkt unter der Basis im Obergeschoss und konnte nicht telefonieren.

Was sind jetzt die Optionen?

Ich kann eine zweite Basis im EG anst√∂pseln und dort die gleichen SIP-Accounts konfigurieren. Nachteil: Damit geht kein Handover, wenn man w√§hrend eines Telefonats das Stockwerk wechselt. Gesch√§tzte Kosten: ca. 100‚ā¨.

Ich kann auf WLAN-SIP-Telefone setzen. Erfordert einen kompletten Hardwareaustausch und wird beim Handover von Accesspoint zu Accesspoint auch die Verbindung verlieren. Immerhin w√ľrde das eine komplette Infrastruktur √ľberfl√ľssig machen. Gesch√§tzte Kosten: 100‚ā¨ bis 150‚ā¨ pro Mobilteil. Eigentlich kann ich auch alte Smartphones daf√ľr nehmen, aber der Komfort ist da mit dem Anstecken zum Aufladen doch eher mau.

Ich kann mich mal mit dem Theme "DECT-Mehrzellsysteme" auseinandersetzen. So tadellos Gigasets Pro 720 DM im B√ľro funktioniert ‚Äď Kosten von 400‚ā¨ pro Basisstation (zwei St√ľck ben√∂tigt) und f√ľr den DECT-Master (wird leider ben√∂tigt) sind indiskutabel. Das w√§ren also 1200‚ā¨ f√ľr die Grundausstattung.

Man sollte doch meinen, dass bei modernen H√§usern das Problem h√§ufiger auftritt und eine, sagen wir mal Prosumer-L√∂sung auf dem Markt ist, die zwei oder drei Basisstationen erlaubt. Pustekuchen! Es geht immer gleich in die Vollen. F√ľr Privatverbraucher werden sogenannte DECT-Repeater angeboten, die ein DECT-Signal aufgreifen und weiterreichen. Blo√ü kommt nichts durch den Beton, was weitergereicht werden kann.

Das g√ľnstigste Multizellensystem, was ich finden konnte, ist das RTX8660, was ohne eine DECT-Zentrale auskommt. Auch da muss ich mit Kosten von 360‚ā¨ f√ľr zwei Stationen zusammen rechnen. Und dann verlieren wir den Komfort, mit den Gigaset-Telefonen in einem abgestimmten System unterwegs zu sein. Wobei es ja Hoffnung gibt, dass die Gigasets untereinander wunderbar klarkommen und sie keine Gigaset-Basis daf√ľr ben√∂tigen. Ansonsten m√ľssten halt noch RTX-Mobilteile her ‚Ķ die kosten sicher auch 100‚ā¨ pro St√ľck.

LineageOS auf Oneplus One (bacon) installieren

Urlaub. Mistwetter. Da könnte man ja mal das Oneplus One (OPO) mit LineageOS bespielen, oder?

Was gibt es zu ber√ľcksichtigen?

seufz

H√ľrden

Signal. Die Schl√ľssel von Signal lassen sich leider nicht retten, da ich das OPO nicht gerootet hatte. Jeder App-Entwickler kann in der Manifest-Datei seiner App angeben, ob sie auf "adb backup" reagieren soll oder nicht. Und OpenWhispersystems hat sich dagegen entschieden aus Sicherheitsgr√ľnden (die ich komplett nachvollziehen kann, mir aber so ein wenig die Motivation nehmen).

Google Authenticator. Ich habe sechs Dienste in den Authenticator eingebunden. Was f√ľr Signal gilt, gilt auch hier: kein Backup m√∂glich. Immerhin kann ich die Verkn√ľpfung tempor√§r auf ein anderes Ger√§t schieben, um das sp√§ter wieder zur√ľck auf das OPO zu schieben. Nicht, dass ich falsch verstanden werde: Es gibt keine Automatik. Das muss bei jedem Dienst so gemacht werden, als w√ľrde ich die Zweifaktorauthentifizierung neu einrichten.

Syncthing. Auch hier liegen die kryptographischen Schl√ľssel au√üerhalb meines Zugriffs. Hier muss ich im Anschluss all meinen Ger√§ten die neue Installation wieder bekanntmachen.

Vorbereitung

Laden wir erstmal die passenden Pakete herunter:

Netterweise stellen die Leute von LineageOS auch eine leichtverst√§ndliche Anleitung zu Verf√ľgung.

Hintergrund

An der Stelle kann ich mal kurz erl√§utern, warum ich das √ľberhaupt auf mich nehme. Seit September 2016 hat das OPO keine Updates mehr bekommen. Das war auch ungef√§hr der Zeitpunkt, als Cyanogen Inc. beschlossen hat, den Betrieb und die Weiterentwicklung ihres Cyanogen OS einzustellen. Schon vorher fiel Cyanogen Inc. durch fragw√ľrdige Gesch√§ftsentscheidungen auf:

  • Exklusive, wenn auch zeitlich befristete Vertriebsrechte f√ľr einen indischen Smartphone-Hersteller f√ľr Cyanogen OS in Indien, was Oneplus als early supporter ver√§rgerte.

  • Einf√ľhrung von Microsoft-Apps in das System-Image von Cyanogen OS.

  • Entwicklung von "MOD ready", einer Infrastruktur im OS, um Bestandteile durch Komponenten anderer Anbieter austauschen zu k√∂nnen

Das alles hinterlie√ü einen schalen Nachgeschmack zu einem Produkt, das zu gro√üen Teilen auf dem Engagement der Community beruht, die sich um Emanzipation ihrer Nutzer*innen bem√ľht. Der Name Cyanogen jedenfalls erschien der Community derart besch√§digt, dass sie das Community-Projekt CyanogenMod zu LineageOS umbenannten. Cyanogen Inc. ist jedenfalls nicht mehr, und damit sind auch eventuelle Updates eher fragw√ľrdig, zumal Oneplus sicher mehr Interesse daran hat, ihr hervorragendes Oneplus 5 (und bald 5T) zu verkaufen.

An der Stelle wäre es interessant mal zu recherchieren, wie Wileyfox mit dem Cyanogen-Debakel umgegangen ist. Kolleg*innen haben mir berichtet, dass die Swifts (1. Generation) noch Updates auf Android 7.0 oder 7.1 bekommen hätten, die aber sicher nicht von Cyanogen Inc. stammen konnten. Aber auch auf den Swifts hat sich LineageOS 14.1 als bessere Wahl herausgestellt.

Zwei meiner Motivationen sind aber KRACK, ein Angriff auf die WiFi-Verschl√ľsselung WPA2, f√ľr die LineageOS seit Mitte Oktober wohl Patches eingespielt hat, und BlueBorne, ein Angriff auf Bluetooth, der entfernte Code-Ausf√ľhrung allein √ľber aktiviertes und sogar ungepaartes Bluetooth erm√∂glicht, was bei LineageOS seit Anfang Oktober gepatcht ist. Ist ersteres vielleicht nur eine theoretische Bedrohung, ist zweiteres komplett fahrl√§ssig zu ignorieren.

Weiterhin gibt es ein paar √Ąrgernisse, die ich hoffe behoben zu sehen:

  • Das OPO versucht st√§ndig Kontakt zum sog. Cyanogen-Konto aufzunehmen, dessen Server aber l√§ngst abgeschaltet ist. Selbst mit deaktiviertem "Sicherheit-&amp;gt;Ger√§teadministrator" von Cyanogen belastet das den Akku.

  • Wenn der Massenspeicher des OPO voll l√§uft, so ab 80 bis 90 Prozent Belegung, scheitern nicht nur Bluetooth-Verbindungen h√§ufiger mal, das Ger√§t vergisst auch Paarungen.

  • Bluetooth selber frisst im Leerlauf enorm viel Akkukapazit√§t. Der Unterschied √ľber Nacht ist ungef√§hr 100 ‚Üí 85 Prozent zu 100 ‚Üí 45 Prozent. Ich kann mich ehrlich gesagt nicht daran erinnern, dass das anfangs auch so war. Ich vermute ja, das letzte Cyanogen-OS-Update hat diesen Regress mitgebracht.

  • Das Mikrofon wird offensichtlich stummgeschaltet, wenn ich beim Telefonieren auf freisprechen schalte. Das war anfangs ganz sicher nicht der Fall.

Durchf√ľhrung

Heute geht es hier um LineageOS auf dem OPO, weswegen ich den Umzug der Authenticator-ZFA auf das andere Gerät nicht beschreibe.

Zwingend notwendig ist die Android Debug Bridge (adb). Unter Linux ist sie einfach √ľber das Paketmanagement zu installieren, unter Windows ‚Ķ nun, Windows-Nutzer*innen m√ľssen sich was suchen.

Am OPO wird dann Android-Debugging in den Entwickleroptionen aktiviert. Dazu m√ľssen diese erstmal freigeschaltet werden: In den Einstellungen wird heruntergescrollt bis "√úber das Telefon". Dort wird 7√ó auf die Buildnumber getippt. Im Anschluss k√∂nnen die "Entwickleroptionen" oberhalb von "√úber das Telefon" gefunden werden. Ein bis zwei Bildschirme heruntergescrollt ist "Android-Debugging aktivieren" zu finden.

An der Stelle ließe sich dann das Telefon ans USB-Kabel und dieses an den Computer anschließen. Mein Arch Linux hat hier aber die Kooperation verweigert, indem es das Telefon nicht mehr finden wollte, nachdem USB-Debugging aktiviert wurde. Dementsprechend konnte ich nicht

adb reboot bootloader

ausf√ľhren. In den Entwickleroptionen konnte ich aber ein etwas besser ausgestattetes Neustart-Men√ľ aktivieren, was mir das direkte Booten in den Bootloader Fastboot erlaubt.

Sobald auf dem Display des OPO "fastboot" erscheint, kann es √ľber den Befehl "fastboot" angesprochen werden. Bei Linux ist das meines Wissens Teil des adb-Pakets, bei Windows ‚Ķ siehe oben. Mit

fastboot devices

lässt sich anzeigen, ob das Gerät zu finden ist. Ist dem so, lässt sich das OPO mit folgendem Befehl entsperren, falls es noch nicht entsperrt ist:

fastboot unlock oem

Das Ger√§t wird gel√∂scht (auf Werkseinstellungen zur√ľckgesetzt)! Im Anschluss startet es neu. Android-Debugging ist leider wieder deaktiviert worden, deswegen erneut aktivieren und wieder in den Fastboot-Bootloader booten. Jetzt l√§sst sich das oben heruntergeladene TWRP vor√ľbergehend installieren:

fastboot flash recovery twrp-x.x.x-x-bacon.img

Die Versionsnummer ist entsprechend anzupassen. "Vor√ľbergehend" deswegen, weil ich Warnungen gelesen habe, dass ein dann startendes Cyanogen OS das TWRP-Recovery einfach wieder l√∂scht und durch das originale ersetzt. Sollte aus Versehen das OPO also nicht ins Recovery, sondern ins Android gebootet werden, muss diese Prozedur ggf. wiederholt werden. Ist TWRP geschrieben worden, kommt der Teil, der etwas Fingerfertigkeit erfordert: Das OPO muss ausgeschaltet werden. Bei mir half es nicht, lange auf den Power-Button zu dr√ľcken ‚Äď ich musste mit [Power]+[Vol-Down] hart ausschalten. Netterweise ist das gleich die Tastenkombination, mit der auch ins Recovery gebootet werden kann, was dann jetzt ansteht.

TWRP erlaubt es, die benötigten Daten per adb oder per Dateimanager auf das OPO zu kopieren. Da eh schon das Terminal offen ist, heißt es

adb push lineage-14.1-20171023-nightly-bacon-signed.zip /sdcard

LineageOS darf die Google-Apps nicht beinhalten. Deswegen m√ľssen diese f√ľr die Verwendung des Play Store gesondert heruntergeladen werden, z.B. von OpengGApps.org. Das OPO braucht Pakete f√ľr die ARM-Plattform, LineageOS 14.1 entspricht Android 7.1. Mit ein bisschen Herumprobieren fand ich heraus, dass das gr√∂√üte installierbare Paket die Mini-Version ist (hier direkt verlinkt). Dieses wird dann auch auf das OPO kopiert:

adb push opengapps-arm-7.1-mini.zip /sdcard

Werden optional root-Rechte gew√ľnscht, ist noch das LineageOS-SU-Addon von https://download.lineageos.org/extras zu beschaffen: ebenfalls ARM, ebenfalls f√ľr 14.1. Auch dieses dann r√ľberkopieren:

adb push addonsu-14.1-arm-signed.zip /sdcard

Damit w√§re alles beisammen. Am OPO dann in TWRP "Wipe" ausw√§hlen, "Advanced Wipe" und dort dann System, Data und Cache ausw√§hlen. Das L√∂schen best√§tigen, kurz warten und zur√ľck ins Hauptmen√ľ. Jetzt k√∂nnen die ZIP-Dateien installiert werden mit "Install". Dort k√∂nnen die eben kopierten Dateien dann nacheinander ausgew√§hlt werden, und zum Schluss wird die Installation dann best√§tigt. Weil es nichts kostet, habe ich das Angebot, Dalvik Cache und Data zu wipen angenommen, ebenso die Installation der TWRP-Android-App (die eigentlich nur ein Platzhalter f√ľr die richtige App ist). Jetzt kann neugestartet werden. Das erste Mal Android 7.1. zu booten, kann ein wenig l√§nger dauern.

Anmerkung: Mein adb-Problem in Arch Linux habe ich nicht behoben bekommen. Netterweise stellte mir Katja kurzzeitig ihren Ubuntu-Laptop zur Verf√ľgung, wo das Kopieren per adb problemlos verlief. Trotzdem hat mich das wahnsinnig gemacht, da ich in dmesg mitansehen konnte, wie das OPO am USB im Halbsekundentakt die USB-Verbindung verlor und wiederherstellte. Wenn ich ehrgeizig bin, recherchiere ich da mal eine L√∂sung.

Nach dem Bootvorgang bot mir LineageOS die Wiederherstellung aus verschiedenen Quellen an, unter anderem √ľber mein Google-Konto. Dort konnte ich dann mein A0001 ausw√§hlen. √Ąrgerlicherweise wurde mir keine Option zur Auswahl des WLAN gegeben, bevor ich mit der Ersteinrichtung durch war. Immerhin stellte das Ger√§t nicht alles wieder her, bevor ich durch war. Sobald ich auf dem Startbildschirm war, aktivierte ich das WLAN und war beruhigt, nicht mein Datenvolumen aufzubrauchen. Immerhin fing es an, mehr als 150 Apps herunterzuladen.

Fazit

Abgesehen von meinen adb-Schwierigkeiten war der Vorgang eigentlich recht problemlos. √Ąrgerlich ist nat√ľrlich, dass einige Apps unwiderruflich ihre Einstellungen verlieren (Signal, Syncthing, Authenticator, WhatsApp (naja, WhatsApp ist mir egal)). Das OPO bootet Android N klaglos und verrichtet seinen Dienst. Bacon, so der Codename des OPO, ist ein offiziell unterst√ľtztes Ger√§t von LineageOS. Ich erwarte nicht mehr Probleme von LineageOS als vom vorher installierten Cyanogen OS, eher weniger, wegen gereifterer Software und engagierter Community. Ich bin sicher, es wird seine eigenen Macken mitbringen. Mal schauen. So weit bin ich bislang ganz angetan.

Raspberry Pi als Netzwerk- und Bluetooth-Audiogerät (Teil 1)

If you are interested in an english version of this post just ask in the comments. Almost all of the instructions I used for this blog post were in english anyway so there might not be that much use for an english version.


Seit zwei Jahren spiele ich mit dem Gedanken, einen Raspberry Pi als Netzwerk- und Bluetooth-Audioger√§t zu konfigurieren, um die alte Mini-Kompaktstereoanlage von Technics im Wohnzimmer mal ins aktuelle Jahrzehnt zu holen. Zu diesem Zweck habe ich mir damals einen Raspberry Pi 2 B und ein Hifiberry DAC+-Board inkl. passendem Geh√§use besorgt. Der Spa√ü hat zusammen 70 bis 80 ‚ā¨ gekostet ‚Äď je nach Anbieter kann der eine oder andere Euro gespart werden.

Heute w√ľrde ich f√ľr meinen Anwendungsfall sicher nicht zum 2 B greifen, sondern eher zum Zero W, der Bluetooth und WiFi bereits eingebaut hat. F√ľr 30 ‚ā¨ gibt es ein Starterset mit vorbest√ľckter GPIO-Stiftleiste und Netzteil sowie Adaptern. Der passende Hifiberry DAC+ Zero kostet auch nur 15 ‚ā¨. Mit 45 ‚ā¨ plus den Kosten f√ľr ein passendes Geh√§use liegen die Kosten doch deutlich niedriger.

Meinen 2 B habe ich mit einem USB-Wifi-Adapter und einem Bluetooth-Adapter aus Restbest√§nden erg√§nzt. Daf√ľr m√ľssten auch noch so 10 ‚ā¨ eingeplant werden, m√ľssten die gekauft werden. Eine passende Micro-SD-Karte ist auch f√ľr ein paar Euro zu haben. Ich habe eine mit 2 GB Kapazit√§t genommen, die ich noch da hatte. Vermutlich noch aus einem meiner fr√ľhen Nokia-Smartphones.

Warum nicht den Audioausgang des Pi benutzen? Der verbaute DAC des Pi ist von so grausamer Qualität, dass so manches Telefon der Deutschen Post im Vergleich als Hifigerät gelten kann.

Warum √ľberhaupt ein Hifiberry? Sicher w√§re auch eine USB-Soundkarte gegangen. Sieht halt nur nicht schick aus. Schon der Wifi-Adapter ist eher h√§sslich.

Anforderungen 2015

Mein Audioger√§t soll folgende Anforderungern erf√ľllen:

  • Pulseaudio im Netzwerk bereitstellen

  • Bluetoothaudio entgegennehmen und ausgeben

  • Audio per DLNA abspielen

  • sich als Element einer Multiroom-L√∂sung auf Pulseaudio-Basis verhalten

Erster Versuch

Zu meinem Ungl√ľck musste ich 2015 feststellen, dass Raspbian ‚Äďdie offizielle Distribution von der Raspberry Pi Foundation basierend auf Debian‚Äď leider ein 4-GB-Medium erfordert. Ich versuchte mein Gl√ľck also erstmal mit Arch Linux ARM. Neben der Tatsache, dass es auf ein Datentr√§ger deutlich kleiner als 4 GB passt, fand ich die Installation auch viel angenehmer, da ich dabei das Gef√ľhl von mehr Kontrolle hatte. F√ľr Anf√§nger ist das aber sicherlich nichts, auch wenn die Anleitung wenig Raum f√ľr Fragen l√§sst. Ein Showstopper mag sein, dass die Anleitung voraussetzt, dass ein laufendes Linux-System benutzt wird.

Bevor das hier jetzt ausufert: Aus dem Audioausgang kam nur furchtbare Statik. Nix zu machen. Nada.

Gl√ľcklicherweise stie√ü ich w√§hrend meiner Websuche auf Minibian. In der Hoffnung, dass ich mir nach der Installation selektiv die Pakete nachinstallieren kann, die ich f√ľr mein Projekt brauche, habe ich es damit probiert. Minibian produzierte kein Rauschen ‚Äď die Hardware schien also nicht kaputt zu sein. Beruhigend.

Tats√§chlich klappte es au√üergew√∂hnlich einfach, Pulseaudio so zu konfigurieren, dass es Audio aus dem Netzwerk entgegennimmt ‚Äď genau, was ich mir heutzutage von modernen Systemen erhoffe. Bluetooth wollte aber partout nicht funktionieren. Nach tagelanger Recherche schob ich die Schuld einfach darauf, dass Minibian sich doch irgendwie susbtantiell von einem regul√§ren Raspbian unterscheidet.

Aus Gr√ľnden, die mir nicht mehr einfallen wollen, kam mein Vorhaben erstmal zum Erliegen. 2016 schob sich dann ein Retropie-Vorhaben dazwischen (funktioniert auch wunderbar). Und vor zwei Wochen wollte ich dann mal wieder loslegen.

Nächster Versuch

Zwei Jahre sp√§ter kann ich ja mal wieder Arch Linux ARM ausprobieren, dachte ich mir. Was auch immer damals schiefgegangen war ‚Äď vielleicht wurde es ja ausgeb√ľgelt.

Installation Hifiberry

Hifiberry stellt eine allgemeine Installationsanleitung zur Verf√ľgung, die auch f√ľr Arch Linux ARM gilt. Meine /boot/config.txt sieht danach folgenderma√üen aus:

# See /boot/overlays/README for all available options

gpu_mem=64
initramfs initramfs-linux.img followkernel

dtoverlay=hifiberry-dacplus

Je nach Modell des Hifiberry muss nat√ľrlich ein anderes Overlay eingef√ľgt werden. Das reicht dann auch bereits schon aus, um dem Hifiberry nach einem Neustart T√∂ne zu entlocken.

Konfiguration Pulseaudio

Als erstes m√ľssen ein paar Pakete installiert werden:

[root@alarmpi ~]# pacman -S pulseaudio pulseaudio-zeroconf pulseaudio-bluetooth

Das Zeroconf-Paket dient dazu, damit Pulseaudio per Avahi im Netzwerk seine Dienste anbieten, das Bluetooth-Paket sorgt daf√ľr, dass Pulseaudio den Audioeingang per Bluetooth via BlueZ erstellen kann.

Entgegen aller Ratschläge im Web wird Pulseaudio als Systemdienst betrieben. Üblicherweise wird der Pulseaudio-Dämon als Benutzer-Dämon betrieben, aber der Audio-Pi soll ja ohne Benutzer-Anmeldung ganz stupide Audio entgegennehmen und auf dem Audioausgang des Hifiberry ausgeben. Auf einem regulären Desktop oder Laptop sollte das tatsächlich nicht so gemacht werden.

Damit Pulseaudio als Systemdienst starten kann, braucht systemd eine Datei namens bspw. /etc/systemd/system/pulseaudio.service:

[Unit]
Description=PulseAudio system server

[Service]
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --log-target=journal
#ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading --log-target=journal
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

Solange die Konfiguration nicht finalisiert ist, bleibt --disallow-module-loading auskommentiert. Wenn Pulseaudio als Systemdienst betrieben wird, braucht es einen Nutzer namens pulse und zwei Gruppen, pulse und pulse-access:

[root@alarmpi ~]# groupadd --system pulse
[root@alarmpi ~]# groupadd --system pulse-access
[root@alarmpi ~]# useradd --system -g pulse -G audio -d /var/run/pulse -m pulse
[root@alarmpi ~]# usermod -G pulse-access root
[root@alarmpi ~]# usermod -G pulse-access alarm

Ich habe keine Ahnung, ob die beiden letzten Befehle wirklich notwendig sind, schaden tun sie aber auch erstmal nicht. Als nächstes wird verhindert, dass Pulseaudio bei Anmeldung eines Nutzers normal startet:

[root@alarmpi ~]# echo "default-server = /var/run/pulse/native" >> /etc/pulse/client.conf
[root@alarmpi ~]# echo "autospawn = no" >> /etc/pulse/client.conf

Der Dienst kann jetzt enabled und gestartet werden:

[root@alarmpi ~]# systemctl daemon-reload
[root@alarmpi ~]# systemctl enable pulseaudio.service
[root@alarmpi ~]# systemctl start pulseaudio.service

Bevor alles funktioniert, wird Pulseaudio sicher noch ein paar Mal neu gestartet. F√ľr die Konfiguration von Pulseaudio werden die Dateien system.pa und daemon.conf in /etc/pulse benutzt.

/etc/pulse/system.pa:

#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

# This startup script is used only if PulseAudio is started in system
# mode.

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect tsched=0
.else
### Use the static hardware detection module (for systems that lack udev/hal support)
load-module module-detect
.endif

### Load several protocols
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix

### Automatically restore the volume of streams and devices
load-module module-stream-restore
load-module module-device-restore

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle

### Enable positioned event sounds
load-module module-position-event-sounds

### Customizations
#load-module module-native-protocol-unix auth-anonymous=1
load-module module-zeroconf-publish
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24 auth-anonymous=1

set-default-sink 0
#set-card-profile 0 stereo-fallback

### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
load-module module-bluetooth-policy
.endif

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif

/etc/pulse/daemon.conf:

# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
## more information. Default values are commented out.  Use either ; or # for
## commenting.

; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; enable-memfd = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
; cpu-limit = no

; high-priority = yes
; nice-level = -11

; realtime-scheduling = yes
; realtime-priority = 5

; exit-idle-time = 20
; scache-idle-time = 20

; dl-search-path = (depends on architecture)

; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa

; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0

; resample-method = speex-float-1
resample-method = trivial
; avoid-resampling = false
; enable-remixing = yes
; remixing-use-all-sink-channels = yes
; enable-lfe-remixing = no
; lfe-crossover-freq = 0

flat-volumes = no
; flat-volumes = yes

; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000

; default-sample-format = s16le
; default-sample-rate = 44100
; alternate-sample-rate = 48000
; default-sample-channels = 2
; default-channel-map = front-left,front-right

; default-fragments = 4
; default-fragment-size-msec = 25

; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0<

Nach einem Neustart von Pulseaudio

[root@alarmpi ~]# systemctl restart pulseaudio.service

finden andere Pulseaudio-D√§monen im Netz dann auch schon den Pi. Vielleicht m√ľssen noch entsprechende Zeroconf-Pulseaudio-Pakete auf den jeweiligen Rechnern installiert werden, sollte der Pi nicht in der Liste der Audioausgabeger√§te auftauchen.

Audio-Pi als Ausgabegerät in den Pulseaudioeinstellungen. Ich habe keine Ahnung, warum er zwei Mal auftaucht

Audio-Pi als Ausgabegerät in den Pulseaudioeinstellungen. Ich habe keine Ahnung, warum er zwei Mal auftaucht

Konfiguration Bluetooth

Bluetooth unter Linux kann einen in den Wahnsinn treiben. Als Lekt√ľre dazu empfehle ich Bluez must be one of the best kept secrets in Linux und Bluez ‚Äď greatest Linux mystery. Ohne ordentliche Dokumentation sehe ich leider auch kaum eine M√∂glichkeit, die letzten Bluetooth-Baustellen zu beseitigen.

Nat√ľrlich werden erstmal ein paar Pakete ben√∂tigt:

[root@alarmpi ~]# pacman -S bluez bluez-utils

Dann wird die /etc/bluetooth/main.conf bearbeitet:

[General]

# Default adapter name
# Defaults to 'BlueZ X.YZ'
Name = wohn

# Default device class. Only the major and minor device class bits are
# considered. Defaults to '0x000000'.
#Class = 0x000100
Class = 0x200420

# How long to stay in discoverable mode before going back to non-discoverable
# The value is in seconds. Default is 180, i.e. 3 minutes.
# 0 = disable timer, i.e. stay discoverable forever
DiscoverableTimeout = 0

# How long to stay in pairable mode before going back to non-discoverable
# The value is in seconds. Default is 0.
# 0 = disable timer, i.e. stay pairable forever
PairableTimeout = 0

# Automatic connection for bonded devices driven by platform/user events.
# If a platform plugin uses this mechanism, automatic connections will be
# enabled during the interval defined below. Initially, this feature
# intends to be used to establish connections to ATT channels. Default is 60.
#AutoConnectTimeout = 60

# Use vendor id source (assigner), vendor, product and version information for
# DID profile support. The values are separated by ":" and assigner, VID, PID
# and version.
# Possible vendor id source values: bluetooth, usb (defaults to usb)
#DeviceID = bluetooth:1234:5678:abcd

# Do reverse service discovery for previously unknown devices that connect to
# us. This option is really only needed for qualification since the BITE tester
# doesn't like us doing reverse SDP for some test cases (though there could in
# theory be other useful purposes for this too). Defaults to 'true'.
#ReverseServiceDiscovery = true

# Enable name resolving after inquiry. Set it to 'false' if you don't need
# remote devices name and want shorter discovery cycle. Defaults to 'true'.
#NameResolving = true

# Enable runtime persistency of debug link keys. Default is false which
# makes debug link keys valid only for the duration of the connection
# that they were created for.
#DebugKeys = false

# Restricts all controllers to the specified transport. Default value
# is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW).
# Possible values: "dual", "bredr", "le"
#ControllerMode = dual

# Enables Multi Profile Specification support. This allows to specify if
# system supports only Multiple Profiles Single Device (MPSD) configuration
# or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple
# Devices (MPMD) configurations.
# Possible values: "off", "single", "multiple"
#MultiProfile = off

# Permanently enables the Fast Connectable setting for adapters that
# support it. When enabled other devices can connect faster to us,
# however the tradeoff is increased power consumptions. This feature
# will fully work only on kernel version 4.1 and newer. Defaults to
# 'false'.
#FastConnectable = false

# Default privacy setting.
# Enables use of private address.
# Possible values: "off", "device", "network"
# "network" option not supported currently
# Defaults to "off"
# Privacy = off

Enable=Source,Sink,Media,Socket

[GATT]
# GATT attribute cache.
# Possible values:
# always: Always cache attributes even for devices not paired, this is
# recommended as it is best for interoperability, with more consistent
# reconnection times and enables proper tracking of notifications for all
# devices.
# yes: Only cache attributes of paired devices.
# no: Never cache attributes
# Default: always
#Cache = always

[Policy]
#
# The ReconnectUUIDs defines the set of remote services that should try
# to be reconnected to in case of a link loss (link supervision
# timeout). The policy plugin should contain a sane set of values by
# default, but this list can be overridden here. By setting the list to
# empty the reconnection feature gets disabled.
#ReconnectUUIDs=00001112-0000-1000-8000-00805f9b34fb,0000111f-0000-1000-8000-00805f9b34fb,0000110a-0000-1000-8000-00805f9b34fb

# ReconnectAttempts define the number of attempts to reconnect after a link
# lost. Setting the value to 0 disables reconnecting feature.
#ReconnectAttempts=7

# ReconnectIntervals define the set of intervals in seconds to use in between
# attempts.
# If the number of attempts defined in ReconnectAttempts is bigger than the
# set of intervals the last interval is repeated until the last attempt.
#ReconnectIntervals=1,2,4,8,16,32,64

# AutoEnable defines option to enable all controllers when they are found.
# This includes adapters present on start as well as adapters that are plugged
# in later on. Defaults to 'false'.
AutoEnable=true

Die wichtigen Dinge passieren in "Enable=" und ich habe keine Ahnung, warum "Source, Sink, Media" nicht ausgereicht hat. "Name=" ist frei w√§hlbar ‚Äď ich w√ľrde auf Sonderzeichen verzichten. "Class=0x200420" sagt an, dass der Bluetooth-Adapter sich als Car Audio System ausgeben soll (Quelle). Vermutlich gehen auch andere ‚Äď hilfreich dabei d√ľrfte der Bluetooth Class of Device (CoD) Generator sein. Auf der linken Seite einfach Audio oben und Audio unten ausw√§hlen, dann erscheint rechts eine Liste m√∂glicher Minor Device Classes. Ich habe es erst mit 0x200428 probiert, aber ohne Erfolg, was aber wohl eher an den fehlenden DBus-Konfigurationen lag.

Konfiguration DBus

Unter Linux kommunizieren Prozesse untereinander auf verschiedenen Wegen, und DBus ist einer davon. Das ganze Setup erfordert, dass verschiedene Dienste unter verschiedenen Benutzerkonten miteinander sprechen d√ľrfen.

/etc/dbus-1/system.d/pulseaudio.conf:

<?xml version="1.0"?> <!--*-nxml-*-->
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
    <policy group="pulse">
        <allow own="org.pulseaudio.Server"/>
    </policy>

    <policy context="default">
        <allow send_destination="org.pulseaudio.Server"/>
        <allow receive_sender="org.pulseaudio.Server"/>
    </policy>
</busconfig>

/etc/dbus-1/system.d/pulseaudio-bluetooth.conf:

<busconfig>
  <policy user="pulse">
    <allow send_destination="org.bluez"/>
  </policy>
</busconfig>

/etc/dbus-1/system.d/bluetooth.conf:

<!-- This configuration file specifies the required security policies
     for Bluetooth core daemon to work. -->

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <!-- ../system.conf have denied everything, so we just punch some holes -->

  <policy user="root">
    <allow own="org.bluez"/>
    <allow send_destination="org.bluez"/>
    <allow send_interface="org.bluez.Agent1"/>
    <allow send_interface="org.bluez.MediaEndpoint1"/>
    <allow send_interface="org.bluez.MediaPlayer1"/>
    <allow send_interface="org.bluez.ThermometerWatcher1"/>
    <allow send_interface="org.bluez.AlertAgent1"/>
    <allow send_interface="org.bluez.Profile1"/>
    <allow send_interface="org.bluez.HeartRateWatcher1"/>
    <allow send_interface="org.bluez.CyclingSpeedWatcher1"/>
    <allow send_interface="org.bluez.GattCharacteristic1"/>
    <allow send_interface="org.bluez.GattDescriptor1"/>
    <allow send_interface="org.freedesktop.DBus.ObjectManager"/>
    <allow send_interface="org.freedesktop.DBus.Properties"/>
    <allow send_destination="org.bluez.Manager"/>
    <allow receive_sender="org.bluez.Manager"/>
    <allow send_destination="org.bluez.Adapter"/>
    <allow receive_sender="org.bluez.Adapter"/>
    <allow send_destination="org.bluez.Device"/>
    <allow receive_sender="org.bluez.Device"/>
    <allow send_destination="org.bluez.Service"/>
    <allow receive_sender="org.bluez.Service"/>
    <allow send_destination="org.bluez.Database"/>
    <allow receive_sender="org.bluez.Database"/>
    <allow send_destination="org.bluez.Security"/>
    <allow receive_sender="org.bluez.Security"/>
  </policy>

  <policy at_console="true">
    <allow send_destination="org.bluez"/>
  </policy>

  <!-- allow users of lp group (printing subsystem) to
       communicate with bluetoothd -->
  <policy group="lp">
    <allow send_destination="org.bluez"/>
  </policy>

  <policy context="default">
    <deny send_destination="org.bluez"/>
  </policy>

</busconfig>

Das ist aus verschiedenen Quellen zusammengetragen. Falls jemand versteht, was die einzelnen Zeilen tun: Ich freue mich √ľber Kommentare. Ich vermute, die Zeilen mit Bluetooth-Druckern sind √ľberfl√ľssig, aber es funktioniert so erstmal. In der verwendeten Anleitung fand ich den Hinweis, dass

[root@alarmpi ~]# systemctl restart dbus &amp;&amp; systemctl restart polkit &amp;&amp; systemctl restart systemd-logind

bereits reichen sollte, ein Neustart aber die sichere Variante sei. Wie jetzt √ľber Bluetooth Audio empfangen kann, erkl√§re ich im Abschnitt "Baustellen".

Baustellen

Bluetooth-Kopplung

Der Audio-Pi sollte jetzt unter dem gew√§hlten Namen, bei mir "wohn", per Bluetooth gefunden werden k√∂nnen. Mein Android-Tablet konnte jedenfalls erfolgreich ein Pairing durchf√ľhren. Aber: Eine Verbindung ist damit noch nicht m√∂glich. Ich muss bislang auf der Kommandozeile bluetoothctl aufrufen und in der interaktiven Shell dann explizit trust <device bt mac> eingeben. Erst danach verbindet sich mein Tablet mit dem Pi und kann dar√ľber dann auch Audio ausgeben. Angeblich solle dieser Schritt ausbleiben k√∂nnen, wenn eine PIN gesetzt w√ľrde. Ich habe aber nicht herausfinden k√∂nnen, wie ich meinen Pi mit einer PIN sichere. Ich w√ľrde ja so eine Alibi-PIN wie 0000 oder 1234 setzen ‚Äď auch das f√§nde ich dann noch hinreichend komfortabel. Idealerweise m√∂chte ich aber komplett auf eine PIN verzichten ‚Äď einfach paaren, verbinden, Audio abspielen. Aber die Dokumentation zu BlueZ ist verbesserungsw√ľrdig. Stark verbesserungsw√ľrdig.

DLNA

DLNA habe ich hier noch nicht konfiguriert. Ich hatte bei meiner 2015er-Recherche aber schon ein paar verst√§ndliche Anleitungen gefunden ‚Äď es sollte also gehen. Wenn ich dann noch zus√§tzlich Video √ľber den HDMI-Anschluss ausgeben k√∂nnte, w√§re das ein netter Zuspieler f√ľr Fernseher.

MPD

Das ist neu in der Liste meiner Anforderungen. Bei meiner aktuellen Recherche stie√ü ich vermehrt auf Audioausgabe via MPD. Beim kurzen √úberfliegen der Anleitungen sah das nicht so schwer aus. MPD-Clients gibt es auch f√ľr Smartphones, und was meine Auswahl an Software vergr√∂√üert, mit der ich Audio wiedergeben kann, ist mir immer willkommen. Ich finde ja, Bluetooth-Audio ist f√ľr Zwecke der Audio-Wiedergabe im Netz eher eine Kr√ľcke, wenn nichts anderes vorhanden ist, und nicht meine Wahl-L√∂sung.

Multiroom-Audiowiedergabe

Wenn ich bedenke, dass das mein urspr√ľngliches Anliegen war, dann habe ich bislang aber m√§chtig versagt. Mit Pulseaudio ist das aber wohl sehr einfach umzusetzen. Mir mangelt es im Moment nat√ľrlich ganz klar an weiteren entsprechende Audio-Pis, aber ich werde einfach demn√§chst mal meiner eigenen Pi-Zero-Kaufempfehlung folgen und mir noch zwei weitere Audio-Pis basteln. So finde ich auch den Hifiberry Amp+ sehr spannend, da ich dar√ľber recht einfach einen regul√§ren Lautsprecher netzwerkf√§hig bekommen k√∂nnte. Zu schade, dass es gerade den nicht im Zero-Format gibt, aber die zus√§tzlichen Verst√§rkerbausteine d√ľrften einfach zu viel sein daf√ľr, von den Anschl√ľssen ganz zu schweigen.

WLAN-Einbindung

Momentan macht der Audio-Pi nur LAN, obwohl der Wifi-Stick dranh√§ngt. Ich muss also noch die WLAN-Konfiguration machen. Toll w√§re nat√ľrlich, w√ľrde er ein eigenes Netz aufspannen, wenn kein bekanntes in der N√§he ist, um dann per Webinterface sein WLAN konfigurieren zu lassen.


Sobald ich Inhalt f√ľr Teil 2 habe, werde ich den hier auch verlinken. Im Moment reicht mir das von der L√§nge her. Wenn ich mir meinen zweiten Audio-Pi bastele, werde ich der Anleitung hier folgen und schauen, ob ich grobe Fehler gemacht habe, die ich dann nat√ľrlich korrigieren werde.

If you are interested in an english version of this post just ask in the comments.

Erster Blogeintrag

Lange, lange habe ich √ľberlegt, dass ich doch mal bloggen sollte.

Als ich Anno 2003 oder so erstmalig von Blogs hörte, habe ich mich gefragt, was denn bitteschön so toll daran sein soll, jeden erdenklichen Erguss ins WWW zu stellen und was daran besser sein soll als eine normale, handgepflegte Homepage.

Aber man wird ja auch älter und weiser (sage ich mir jedenfalls), und so hat sich auch meine Position zu Blogs im Laufe der Jahre gewandelt. Sicher auch deshalb, weil ich viele positive Beispiele neben den ganzen Blogleichen und Selbstbeweihräucherungsblogs finden konnte. Ganz besonders aber dank Facebook.

Facebook?

Ja, Facebook. Irgendwann fiel mir auf, dass ich meine Beitr√§ge dazu nutzte ‚Äď zu bloggen.

Nicht alle, keineswegs, sondern halt nur ein kleiner Teil. Ich werde sicher nicht zu denen geh√∂ren, die einen vollen Blogeintrag pro Tag ver√∂ffentlichen werden. Aber alle paar Wochen √ľberkommt mich dann doch irgendein Gedanke, der eine kurze Schreibwut in mir ausl√∂st und einen mehr oder minder interessanten Text hervorbringt. Oftmals fand ich das dann im nachhinein schade, dass der Beitrag bei Facebook untergeht und dass er in einem Blog besser aufgehoben w√§re.

Und da ist es! Unser Blog. Zumindest der erste Versuch.

Ich bin immer noch ein Fan handgepflegter Homepages. Aber ich sehe auch ein, dass Handpflegen echt aufwendig ist, CMS muss also sein. Und dar√ľberhinaus sind viele Beitr√§ge nur im zeitlichen Kontext sinnvoll einzuordnen; kaum eine*r will heutzutage noch ein Tutorial zur Einrichtung einer Grafikkarte von 2001 lesen wollen. Nat√ľrlich k√∂nnte ich solche Beitr√§ge h√§ndisch j√§ten, aber ich kann sie auch einfach online und in der Versenkung des Archivs verschwinden lassen. Ein Blog hindert mich ja nicht daran, es als Homepage zu betreiben ‚Äď viele andere machen es ja auch so.

Und so st√ľrze ich uns als Familie also ins Abenteuer Blogbetrieb ūüėÄ.