Pinephone: Willkommen bei Element

Mal sehen wer von Euch in den letzten Wochen gut aufgepasst hat 🙂

Update: WĂ€hrend des Schreibens dieses Artikels gab es einen Durchbruch und Ihr seid mit dabei \o/

Pinephone: Willkommen bei Element

Element ist ein Matrix Client und fĂŒr alle die nicht wissen, was Matrix ist, es ist der Defacto Nachfolger von XMPP/Jabber, nur cooler 😉 Das Matrix Protokoll stellt dabei den Datentransport bereit, auf dessen RĂŒcken dann die einzelnen Inhalte transportiert werden. Der große Unterschied zu XMPP ist, die Endanwendungen kommunizieren mit dem jeweiligen „Homeserver(HS)“ ĂŒber eine REST API, womit man gleich Webanwendungen bauen kann, die mit dem Homeserver reden. Das wiederum erlaubt es uns, gleich auf die Webtechnologien zu wechseln, was dazu gefĂŒhrt hat, das Ende-zu-Ende-VerschlĂŒsselung ( E2EC ), Audio und Videochats fester Bestandteil des Element Matrix Clienten sind.

Da Matrix ein föderierter Dienst ist, kann man mit jedem Matrixuser auf dem Planeten, dessen Homeserver sich nicht absichtlich dagegen wehrt, chatten. Das muß man sich wie bei Email vorstellen, Millionen Mailserver, aber jeder kann mit jedem, meistens 😉 Das kann Jabber zwar auch, aber das Setup dafĂŒr ist deutlich anspruchsvoller. Einen Matrixhomeserver muß man lediglich starten 😉

Was auf dem Desktop einfach durch die Installation von Schildichat erreicht werden kann, ist auf dem Pinephone schon schwieriger, oder doch nicht?

Auf dem Pinephone gibt es mehrere „native“ Implementierungen des Matrixprotokolls: Fractal, NeoChat und Spectral und nur einige zu nennen.

Diesen Clienten ist gemein, daß Sie keinen E2EC, Audio- und Videochat Support haben. Schildichat gibt es fĂŒr AARCH64 nicht und Element selbst ist nur fĂŒr Android verfĂŒgbar. Das macht aber nichts, denn Element und Schildichat als App sind eigentlich nur Webanwendungen mit beigefĂŒgtem Browser.

Da wir schon einen oder mehrere Browser auf dem Pinephone haben, die alle fullfeatured sind.. nehmen wir doch die 😀

 

Der eigene Webclient

Wir brauchen dazu nur einen eigenen Webserver, der nicht mal der Homeserver sein muß, aber sein sollte, weil es die Sache einfacher macht 😉

Als erstes braucht Ihr dann die Webanwendung: https://github.com/vector-im/element-web

Die packt Ihr in einem Webserver-Documentroot Eurer Wahl aus:

web]# ls 
bundles          fonts       jitsi_external_api.min.js  mobile_guide      sw.js         version
config.json      i18n        jitsi.html                 olm.9ddeb6b.wasm  themes        welcome
contribute.json  img         manifest.json              olm_legacy.js     usercontent   welcome.html
decoder-ring     index.html  media                      static            vector-icons

Wenn Ihr das im gleichen VHOST wie den Homeserver betreiben wollt, mĂŒssen wir noch der Webserver im VHOST erklĂ€ren, daß er diese Anfragen nicht an Matrix senden soll. Ihr seht oben, das ich das in das Verzeichnis /web/ entpackt habe, daher braucht mein VHOST diese EintrĂ€ge:

AllowEncodedSlashes NoDecode
ProxyPreserveHost On
ProxyPass /web/.well-known !
ProxyPass /web/_matrix http://127.0.0.1:8008/_matrix nocanon
ProxyPassReverse /web/_matrix http://127.0.0.1:8008/_matrix
ProxyPass /web/_synapse/client http://127.0.0.1:8008/_synapse/client nocanon
ProxyPassReverse /web/_synapse/client http://127.0.0.1:8008/_synapse/client

Wenn Ihr das ins Documentroot der Webseite schreibt, dann muß der VHOST so einen Eintrag haben:

AllowEncodedSlashes NoDecode
ProxyPreserveHost On
ProxyPass /.well-known !
ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon
ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix
ProxyPass /_synapse/client http://127.0.0.1:8008/_synapse/client nocanon
ProxyPassReverse /_synapse/client http://127.0.0.1:8008/_synapse/client

Danach nicht vergessen, den Webserver zu reloaden.

Wie Ihr an den Proxy URLS seht, lĂ€uft auf der Matrixhomeserver auf dem gleichen Serversystem wie die Webseite. Hat man seinen Homeserver nicht auf seinem Webserver laufen, mĂŒssen die URLs entsprechend angepasst werden.

Jetzt kann man das schon aufrufen und benutzen und genau da setzen wir jetzt auf dem Pinephone an und schreiben ein Desktopfile, daß Firefox oder Chromium benutzt um den Webclienten anzusprechen.

[Desktop Entry]
Version=1.0
Name=Matrix Web
Comment=Direktlink
GenericName=Matrix Web
Exec=env LIBVA_DRIVER_NAME=v4l2_request LIBVA_V4L2_REQUEST_VIDEO_PATH=/dev/video0 LIBVA_V4L2_REQUEST_MEDIA_PATH=/dev/media0 MOZ_ENABLE_WAYLAND=1 firefox-wayland %U https://HOMESERVERNAME/web/
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/home/pine/Bilder/matrix-logo.png
Categories=Network;WebBrowser;
MimeType=text/html;
StartupWMClass=Chromium-browser
Keywords=web;browser;internet;
X-Desktop-File-Install-Version=0.26

Diese Datei schreiben wir direkt nach /usr/share/applications/matrix.desktop  und schon können wir loslegen. Der Firefox reagiert leider im Pinephone allergisch auf –headless, so daß man keine geschlossene Benutzer UI bekommt. BR ist raus.

Gleich nochmal mit Chromium

Deswegen habe ich das gleiche mit Chromium gemacht:

# cat Element.desktop
[Desktop Entry]
Version=1.0
Name=Element
Comment=Direktlink
GenericName=Element
Exec=env LIBVA_DRIVER_NAME=v4l2_request LIBVA_V4L2_REQUEST_VIDEO_PATH=/dev/video0 LIBVA_V4L2_REQUEST_MEDIA_PATH=/dev/media0 chromium-browser –app=https://HOMESERVER/web/
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/home/pine/Bilder/element.svg
Categories=Network;WebBrowser;
MimeType=text/html;
StartupWMClass=Chromium-browser
Keywords=web;browser;internet;
X-Desktop-File-Install-Version=0.26

Chromium macht dann genau, was man erwartet, leider stimmt da derzeit was mit dem DPI Scaling nicht, weswegen das erste Bild oben mit der Willkommensmeldung, auch zu grobpixelig aussieht. Die Erfahrung mit Firefox ist da leider besser, auch wenn es eine angeschlossene USB Tastatur brauchte um dem Browser einen Zoomfaktor von 133% zu entlocken, damit man die Buttons besser treffen und Texte besser lesen kann 😉

Hat man diese HĂŒrden umschifft, erwartet einen ein Matrix Client, der so ist, wie man das erwarten wĂŒrde.

BREAKING NEWS …. VIDEO CHAT WORKING

Bis vor einigen Tagen funktionierten die Kameras noch nicht, aber jetzt gehts! ES GEHT \o/

20210304_11h07m59s_grim.png Da ich gerade mit Audio am rumspielen war, dachte ich, könnte ja mal versuchen und es ging . Megis Kernel Patch 5.11.0-5 made it happen.

Der Videochat braucht 400% CPU Leistung, weil keine HW Beschleunigung im Spiel, aber da arbeiten RH und meine Wenigkeit gerade dran. Jetzt mit noch mehr PrioritÀt als vorher.

Die Jungs im int. Pinephone Channel sind gleich in Jubel ausgebrochen 🙂 Fedora scheint den World First geschafft zu haben, wenn das kein Grund zum Feiern ist \o/

Er nimmt zwar noch die falsche Kamera ( Backface ) aber das ist jetzt nicht weiter wild. Kriegt man in den Griff!

Wenn man nicht gerade im Videochat ist, braucht der auch wenig Strom 😉 Der startet so zwar etwas langsamer, als die nativen Clienten, aber dafĂŒr haben wir einen vollstĂ€ndigen Clienten. Ja! Ja! JA!

HintergrĂŒnde zu Matrix

Als Matrix 2019 endlich aus der Beta in eine Stabile Version wechselte, fand die französische Regierung das Projekt so toll, daß es alle Behörden den Landes auf Matrix umstellen wollte. Ein Riesenauftrag fĂŒr Stiftung hinter Matrix. Auch in Deutschland wurde dies positiv aufgenommen, so daß die Bundeswehr mit 10.000 ArbeitsplĂ€tzen und Bund, LĂ€nder und Gemeinden auch auf Matrix umstellen wollen.

Einen Schönen Artikel zu Matrix gibt es hier:

https://t3n.de/news/matrix-neuer-messenger-bundeswehr-behoerden-1282086/

Wer jetzt Lust auf Matrix bekommen hat, der kann sich bei matrix.org einen Account registrieren. Meine Kennung gebe ich dann hier auch bald bekannt, aber da hĂ€ngt noch etwas dran, das noch nicht reif fĂŒr die Welt ist 😉

Nachtrag:

So sah das auf der PC Seite aus. Super Farben fĂŒrn ein Pinephone 😉

 

4 thoughts on “Pinephone: Willkommen bei Element

  1. Hey, ich möchte jetzt nicht unbedingt nur meinen eigenen Client anwerben, aber vielleicht könntest du auch mal Nheko ausprobieren? Der letzte stable release funktioniert ziemlich schlecht auf dem PinePhone, aber wir verbessern uns (sehr) langsam und Nheko hat E2EE sowie video und voice call support. Ich hab bis jetzt noch nicht die Kamera erkannt bekommen (aber du erklÀrst ja teilweise, was die Probleme hier sind), aber sobald gstreamer die Kamera erkennt, sollte das eigentlich auch funktionieren. Nheko hat viele Probleme, warum der Client subideal auf dem Pinephone ist, aber hier ist ein Video von einem eingehenden Sprachanruf: https://fosstodon.org/@deepbluev7/105839965698434981 Das ist die aktuelle nightly version, die man von Github als Flatpak runterladen kann.

    Wollte bloß anmerken, dass das eine Option ist, die existiert, nachdem Nheko in der Liste der Clients oben fehlt, auch wenn Element auf dem PP natĂŒrlich megacool ist!

    • Das wĂŒrde ich liebend gern nativ lösen, aber :

      MĂ€r 06 17:13:05 fedorapine systemd-coredump[1591]: [🡕] Process 1567 (nheko) of user 1000 dumped core.

      Stack trace of thread 1567:
      #0 0x0000007f83218070 raise (libpthread.so.0 + 0x13070)
      #1 0x0000007f85d18740 n/a (linux-vdso.so.1 + 0x740)
      #2 0x0000007f85d18740 n/a (linux-vdso.so.1 + 0x740)
      #3 0x0000007f684ed000 create_wl_buffer (libEGL_mesa.so.0 + 0x25000)
      #4 0x0000000000001830 n/a (n/a + 0x0)

      nheko 0.8.1

      Name : nheko
      Version : 0.8.1
      Release : 2.fc34
      Architecture: aarch64
      Install Date: Sa 06 MĂ€r 2021 17:10:12 CET
      Signature : RSA/SHA256, Mi 10 Feb 2021 19:51:55 CET, Key ID db4639719867c58f

      Die flatpaks auf Github sind leider nur x86. Fractal hat eines fĂŒr aarm64 gebaut, das lĂ€uft, kann aber halt kein E2EC.

      Wenn Ihr da eine Version anbieten könntet, die libva-request nutzt fĂŒr die en- und decode Sachen vom Audio und Video, dann haue geht das sicher besser.

      env LIBVA_DRIVER_NAME=v4l2_request LIBVA_V4L2_REQUEST_VIDEO_PATH=/dev/video0 LIBVA_V4L2_REQUEST_MEDIA_PATH=/dev/media0 nheko

      hat da leider nichts geholfen, was bei MPV sehr gut lief. Ich vermute mal der client semmelt schon beim Versuch die GPU zum Apprendern zubenutzen ab.

      • Ich bin mir ziemlich sicher, dass https://matrix-static.neko.dev/room/!TshDrgpBNBDmfDeEGN:neko.dev/ sowie https://github.com/Nheko-Reborn/nheko/releases/tag/v0.8.1 flatpaks fĂŒr arm64 hat (die sind in unserem CI und ich lade sie von da zum testen runter. Die 0.8.1er crashed unter arm, wegen einem unaligned read, wenn ich mich recht erinnere, den wir kĂŒrzlich gefixt haben (zumindest lĂ€uft das bei mir jetzt seit 2 Tagen auf dem PP ohne crash, d.h. wenn ist der Systemspezifisch). Wir verwenden gstreamer fĂŒr en- und decode, das eigentlich libva verwenden können sollte, aber das mĂŒsste ich genauer debuggen. Eventuell bauen wir das nicht fĂŒr die Flatpaks. Aber um das genau zu diskutieren ist ein Blogkommentar eventuell nicht der richtige Ort. 😀

        • Deswegen hatte ich Dir eine Mail geschrieben 🙂

          Habs ausprobiert.. wieder bei EGL gescheitert. Das muß im Fedora Rawhide wohl erstmal gefixt werden.

          MĂ€r 06 23:12:42 fedorapine systemd-coredump[1647]: [🡕] Process 1596 (nheko) of user 1000 dumped core.

          Stack trace of thread 2:
          #0 0x0000007f8d3a4818 n/a (/usr/lib/aarch64-linux-gnu/libpthread-2.31.so + 0x13818)
          #1 0x0000007f8f9da740 n/a (ld-linux-aarch64.so.1 + 0x30740)
          #2 0x0000007f8f9da740 n/a (ld-linux-aarch64.so.1 + 0x30740)
          #3 0x0000007f7520abd0 n/a (/usr/lib/aarch64-linux-gnu/GL/default/lib/libEGL_mesa.so.0.0.0 + 0x23bd0)
          #4 0x0000007f7520abd0 n/a (/usr/lib/aarch64-linux-gnu/GL/default/lib/libEGL_mesa.so.0.0.0 + 0x23bd0)
          #5 0x0000007f7520b478 n/a (/usr/lib/aarch64-linux-gnu/GL/default/lib/libEGL_mesa.so.0.0.0 + 0x24478)
          #6 0x0000007f75201cd4 n/a (/usr/lib/aarch64-linux-gnu/GL/default/lib/libEGL_mesa.so.0.0.0 + 0x1acd4)
          #7 0x0000007f751f5b9c n/a (/usr/lib/aarch64-linux-gnu/GL/default/lib/libEGL_mesa.so.0.0.0 + 0xeb9c)
          #8 0x0000007f75240924 n/a (/usr/lib/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so + 0x9924)
          #9 0x0000007f8e39d4d4 n/a (/usr/lib/aarch64-linux-gnu/libQt5Gui.so.5.15.2 + 0x2ef4d4)
          #10 0x0000007f8e71348c n/a (/usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5.15.2 + 0x1a348c)
          #11 0x0000007f8e715418 n/a (/usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5.15.2 + 0x1a5418)
          #12 0x0000007f8e74eda8 n/a (/usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5.15.2 + 0x1deda8)
          #13 0x0000007f8e70975c n/a (/usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5.15.2 + 0x19975c)
          #14 0x0000007f8dc4fd6c n/a (/usr/lib/aarch64-linux-gnu/libQt5Core.so.5.15.2 + 0x212d6c)
          #15 0x0000007f8e1e37e8 n/a (/usr/lib/aarch64-linux-gnu/libQt5Gui.so.5.15.2 + 0x1357e8)
          #16 0x0000007f8e1cb354 n/a (/usr/lib/aarch64-linux-gnu/libQt5Gui.so.5.15.2 + 0x11d354)
          #17 0x0000007f8e1cb560 n/a (/usr/lib/aarch64-linux-gnu/libQt5Gui.so.5.15.2 + 0x11d560)
          #18 0x0000007f87e4f918 n/a (/usr/lib/aarch64-linux-gnu/libQt5WaylandClient.so.5.15.2 + 0x7f918)
          #19 0x0000007f8dc6c2c4 n/a (/usr/lib/aarch64-linux-gnu/libQt5Core.so.5.15.2 + 0x22f2c4)
          #20 0x0000007f8e70975c n/a (/usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5.15.2 + 0x19975c)
          #21 0x0000007f8dc4fd6c n/a (/usr/lib/aarch64-linux-gnu/libQt5Core.so.5.15.2 + 0x212d6c)
          #22 0x0000007f8dc5006c n/a (/usr/lib/aarch64-linux-gnu/libQt5Core.so.5.15.2 + 0x21306c)
          #23 0x0000007f8dc8c96c n/a (/usr/lib/aarch64-linux-gnu/libQt5Core.so.5.15.2 + 0x24f96c)
          #24 0x0000007f8d73d244 n/a (/usr/lib/aarch64-linux-gnu/libglib-2.0.so.0.6400.6 + 0x55244)
          #25 0x0000007f8d73d4cc n/a (/usr/lib/aarch64-linux-gnu/libglib-2.0.so.0.6400.6 + 0x554cc)
          #26 0x0000007f8d73d594 n/a (/usr/lib/aarch64-linux-gnu/libglib-2.0.so.0.6400.6 + 0x55594)
          #27 0x0000007f8dc8c4a4 n/a (/usr/lib/aarch64-linux-gnu/libQt5Core.so.5.15.2 + 0x24f4a4)
          #28 0x0000007f8dc4ca88 n/a (/usr/lib/aarch64-linux-gnu/libQt5Core.so.5.15.2 + 0x20fa88)
          #29 0x0000007f8dc51fe4 n/a (/usr/lib/aarch64-linux-gnu/libQt5Core.so.5.15.2 + 0x214fe4)
          #30 0x00000055936166e8 n/a (/app/bin/nheko + 0xc66e8)
          #31 0x0000007f8d23be18 n/a (/usr/lib/aarch64-linux-gnu/libc-2.31.so + 0x20e18)
          #32 0x0000005593618318 n/a (/app/bin/nheko + 0xc8318)
          MĂ€r 06 23:12:42 fedorapine systemd[1]: systemd-coredump@1-1646-0.service: Deactivated successfully.
          MĂ€r 06 23:12:42 fedorapine systemd[1]: systemd-coredump@1-1646-0.service: Consumed 4.017s CPU time.
          MĂ€r 06 23:12:43 fedorapine systemd[404]: app-flatpak-io.github.NhekoReborn.Nheko-1563.scope: Deactivated successfully.
          MĂ€r 06 23:12:43 fedorapine systemd[404]: app-flatpak-io.github.NhekoReborn.Nheko-1563.scope: Consumed 13.287s CPU time.

Comments are closed.