Das nackte Pinephone aufmotzen

Habt Ich Euch schon in Eurer Handy eingearbeitet? Vermutlich nicht, aber das macht gar nichts. Heute krempeln wir es um. Vieles wird dann einfach funktionieren.

Das nackte Pinephone aufmotzen

Euch wird aufgefallen sein, daß das Handy nicht mehr als 87% lädt. Ja.. das war auch für mich ein kleiner Schock. Aber da geht ums die Batterygesundheit. Allerdings fehlt halt im realen Leben auch 10% der Akkuladung, also unternehmen wir etwas dagegen:

Wir schreiben ein kurzes Bashscript „/usr/local/sbin/maxbattery.sh“ mit folgendem Inhalt:

# cat /usr/local/sbin/maxbattery.sh
#!/bin/bash

echo 4350000 > /sys/class/power_supply/axp20x-battery/voltage_max_design

Damit das auch immer beim Systemstart ausgeführt wird, schreiben wir einen systemd.service „/usr/lib/systemd/system/maxbattery.service“ mit dem Inhalt:

[Unit]
Description=max batterystartupscript
Documentation=no docs available
After=syslog.target
Wants=

[Service]
Type=simple
EnvironmentFile=
ExecStart=/usr/local/sbin/maxbattery.sh
KillMode=process
Restart=on-failure
RestartSec=60s

[Install]
WantedBy=multi-user.target

noch starten und einschalten:

$ systemctl enable maxbattery
$ systemctl start maxbattery

damit lädt der Akku jetzt direkt auf 99% hoch.

Das Updatechaos vermeiden

Im letzten Artikel hatte ich ja schon angesprochen, daß „einfach alles updaten“ wegen dem Alpha-Repo Rawhide, eine schlechte Idee sein kann. Werdet auf dem Handy mal root, dann beheben wir das vorläufig ( sudo su + Benutzerpasswort ). Ändert die Datei „/etc/dnf/dnf.conf“ wie folgt: Stand 5.12.2020

[main]
keepcache=True
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=False
skip_if_unavailable=True
exclude=mesa* bind* gnome-shell* mutter*

Jetzt könnt Ihr loslegen und erst einmal als root „dnf update -y“ machen. Geht einen Kaffee trinken, oder holt was vom Imbiss, das zieht sich aus zwei Gründen: die SD Karte ist zwar per se schnell, aber nicht in einem Pinephone, und es ist einiges am MB aus der Repodatenbank zu ziehen, bevor das überhaupt losgeht. Ist aber bei Manjaro ähnlich langsam.

Neue Repos einbinden

Als root müssen wir jetzt von Hand rpmfusion hinzufügen:

dnf install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-rawhide.noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-rawhide.noarch.rpm

Normalerweise würde man das per Browser aufrufen und dann mit Gnome-Software installieren, aber da Gnome-Software nicht funktioniert bzw. nicht drauf ist, geht es nur so. Ist aber auch schneller, in sofern, kein Nachteil 😉

Endlich neue Programme einspielen

Ist das alles drauf, können wir die coolen Programme nachziehen:

dnf install -y callaudiod-master-1 f33-backgrounds-gnome desktop-backgrounds-gnome gnome-icon-theme shotwell gnome-phone-manager-telepathy hydrapaper powertop gnome-terminal gnome-tweaks glibclangpack-de gnome-system-monitor nautilus-extensions nautilus lollypop lame qmmp-plugin-pack qmmp libvdpau libva mpv pavucontrol pulseaudio-module-gsettings paprefs pasystraygnome-screenshot gedit megapixels openssl gnome-menus gnome-maps gnome-shell-extension-apps-menu gnome-calculator gnome-weather geary bzip2 tar wireless-tools gnome-powermanager sshfs pulseaudio-qt mint-x-icons mint-y-icons openh264 mozilla-openh264 light-locker wget unzip zip pulseaudio-utils chromium gnome-disk-utility

Das installiert eine Menge an anderen Paketen mit, aber am Ende werdet Ihr es nicht bereuhen. Optional, falls Ihr das benutzen möchtet:

onboard  bessere tastatur als Caribou die interne Gnome-Keyboardapp
gajim    kann theoretisch Audio/Video mit Jabber
gnome-shell-extension-windowoverlay-icons
gnome-shell-extension-refresh-wifi
gnome-shell-extension-netspeed
gnome-shell-extension-disconnect-wifi
gnome-shell-extension-desktop-icons
gnome-shell-extension-dash-to-dock
gnome-shell-extension-openweather
gnome-shell-extension-user-theme
gnome-extensions-app
gnome-shell-extension-common
chrome-gnome-shell

gnome-software  Das ist der Softwarecenter mit Gui. Mittlerweile funktioniert es halbwegs.

Um Gnome-Erweiterungen über die Webseite zu installieren, braucht man das unzip Paket aus den nicht optionalen Paketen oben. Vieles Sinnvolle ist im Paket enthalten. MPV z.b. kann die MaliGPU benutzen und damit ruckfrei, oder was man so nennen kann, Filme wiedergeben. Hier ein paar Impressionen:

Megapixels hat noch kleinere Probleme. z.b zieht es extrem viel CPU Leistung ( 2x 100% ) Das Programm, das die Bilder auf den Screen malt hat ist inperformant^10.

MPV im Einsatz

Nautilus Videos

Nautilus Musik mit QMMP

Statt QMMP würde sich Lollipop anbieten, deswegen ist es auch in der Programmliste, aber in der RawHide Version möchte es noch nicht ganz so, wie es soll.

Firefox bei der Arbeit 🙂 Videokonferenz geht, aber mit Chromium, so leid mir das tut, geht es viel besser! Chromium hat allerdings andere Macken 😀

Stand Tag 3

Ihr habt ein Handy, das nicht telefonieren kann, deswegen blieb Manjaro drauf 😉 Fedora ist zwar das bessere Gesamtpaket, wieso sieht man ja oben, aber der Calld ist leider „defekt“. Der kann zwar anrufen, aber die Verbindung zum Pulseaudio-Server findet nicht statt. Das ist allerdings nur ein Problem von Tagen, da der Upstreampatch schon bereit liegt.

Im nächsten Artikel peppen wir die Gnome-Shell auf, fixen Fehler in den Extensions, deren Entwickler gepennt haben.

Gnome-Extensions für das Pinephone

Vorheriger Artikel der Serie:

Fedora erobert das Pinephone

 

Remmina: Live Video und Ton

Kleines Update zum RDP-Clienten Remmina.

Remmina: Live Video und Ton

Ohne groß etwas zu tun, kann Remmina seid einiger Zeit etwas mehr als xFreeRDP, nämlich Ton von einem Windowssystem abspielen. Es fiel mir beim Login eher nebenbei auf, daß der Windowsloginton kam, was sonst nicht passierte. Also habe ich da mal nachgeforscht und Youtube gestartet 🙂

Das Ergebnis kann sich sehen lassen, nicht nur, daß das Video ordentlich rüberkam, auch der Ton war syncron.

Tests mit XRDP als Server haben da leider ergeben, daß das nicht zwangsläufig so sein muß. Der kann das auch mit den richtigen PulseAudioLibs, aber gut funktioniert es nicht. Deswegen war ich auch so überrascht, daß es mit dem Windows RDP so gut lief.

Ihr könnt es ja selbst mal ausprobieren, da auf Seiten von Remmina nichts weiter eingestellt werden muß.

Linux – Schneller Videos schrumpfen

Wer wie ich Videos von Spielen captured und dadurch viel Rohmaterial in großen Bitraten liegen hat, braucht die Hilfe seiner Grafikkarte um dieses Rohmaterial möglichst schnell in handhabbare Größen umzuwandeln.

Moderne Video Hardware nutzen

Das Ausgangsmaterial ist mit 5 Mb/s erstellt worden, was den Kodiervorgang beim Bildschirmcapturen beschleunigt, zum Ansehen reichen aber 2 Mb/s VBR locker aus. Früher habe ich zum Recodieren meinen Achtkerner benutzt, was schon einmal 70% der Realzeit eines Videos benötigt hat.

Heute macht das die Nvidia Grafikkarte für mich und das mit meistens 10x Geschwindigkeit meines Achtkerners 🙂

Auslastung einer Nvidia GTX1050

Wie man auf dem Bild schön sehen kann, wird die Video Engine voll ausgenutzt. Das spiegelt sich dann in so einer FFMpegausgabe wieder:

Eine Ausgabe in der Bashshell von ffmpeg beim Nutzen von Nvidia GPUs

Faktor 18 – 23 wurden im Schnitt gesichtet, kommt halt auch drauf an, ob man Schwarzbilder oder Aktion kodiert. Wie ich schon bei meinem OpenShot Artikel geschrieben habe, hängt das Endergebnis auch stark von der Resthardware des PCs ab.

FFMpeg sorgt für den Hardwaresupport

Der Befehl „ffmpeg -hwaccels“ gibt einem die für FFMpeg verfügbaren HW-Encoder aus:

$ ffmpeg -hwaccels
ffmpeg version 4.1.4 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9 (GCC)

Hardware acceleration methods:
vdpau
cuda
vaapi
qsv
drm
opencl
qsv
cuvid

Auf Nvidia-Grafikkarten sieht der Befehl zum Kodieren dann so als Script aus:

#!/bin/bash

NAME=$(basename „$1“ .mp4)

ffmpeg -hwaccel cuvid -threads 8 -c:v h264_cuvid -i „$1“ -map 0:1 -map 0:0 -c:v:0 h264_nvenc -b:v:0 2000k -c:a:0 copy -f mp4 „/home/<username>/$NAME.mp4“

Damit wird eine VBR Rate von 2.000 Kb/s, der h264_cuvid Decoder für h264 Videos und der h264_nvenc Encoder für des Reencoden genutzt. Es beschleunigt den Vorgang nämlich sehr, wenn die Grafikkarte auch Dekodiert. Die Option „-hwaccel“ gibt den zu nutzenden Treiber an.

Anmerkung: Obiges Script kann nur einen Video- und einen Audiostream verarbeiten, Dual-Ton Tracks muß man selbst einbauen.

Verscripten geht immer…

Das Script nimmt als Argument ein mp4 Video, extrahiert den Dateinamen und erzeugt das Ausgabevideo im Homeverzeichnis ( passenden Benutzernamen einsetzen ). Ein „chmod 700 script“ gepaart mit einem „mv script ~/.local/bin/“ macht das ganze dann in der eigenen Shell leicht ausführbar.

Auch für nicht Nvidia-Grafikkarten gibt es verschiedene Codecs, die die Sache beschleunigen, wie man in obiger FFMpeg Ausgabe sehen kann. Allerdings sind Nvidia-Grafikkarten die schnellsten im Test vom Linux-Magazin gewesen, aus dem ich mir meinen optimierten Befehl hergeleitet habe.Das könnte sich bei der derzeitigen Dominanz von AMD natürlich bereits geändert haben.

Infos: https://www.linux-magazin.de/ausgaben/2017/11/ffmpeg-mit-gpus/

FFMPEG – Desktopsessions direkt encoden

Jeder Gamer kennt das Problem, man möchte seine Gamesession aufzeichnen und später bei Youtube hochladen. Unter Windows gibt es einige gute Tools das zu tun, z.b. Fraps. Unter Fedora Linux ist das noch einfacher, da im GNOME bereits der Desktop-Recorder integriert ist, sollte man jedenfalls meinen.

Wenn es funktionieren würde, gäbe diesen Beitrag wohl nicht, also was brauchen wir tatsächlich alles :

1. Pulse Audio
2. FFMpeg

Pulse Audio ist bereits drauf, sonst könnte man nichts hören, wichtig wäre aber für Pulse noch das Tool „pactl“ aus dem „pulseaudio-utils“ RPM . Damit ermittelt man zunächst mal den sogenannten Sink auf dem alles zusammen gemischt wird:

# pactl list sinks
Sink #0
    State: RUNNING
    Name: alsa_output.pci-0000_00_14.2.analog-stereo
    Description: Internes Audio Analog Stereo
    Driver: module-alsa-card.c
    Sample Specification: s16le 2ch 48000Hz
    Channel Map: front-left,front-right
    Owner Module: 8
    Mute: no
    Volume: front-left: 95197 / 145% / 9,73 dB,   front-right: 95197 / 145% / 9,73 dB
            balance 0,00
    Base Volume: 65536 / 100% / 0,00 dB
    Monitor Source: alsa_output.pci-0000_00_14.2.analog-stereo.monitor
    Latency: 25933 usec, configured 26000 usec
    Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
    Properties:
        alsa.resolution_bits = „16“
        device.api = „alsa“
        device.class = „sound“
        alsa.class = „generic“
        alsa.subclass = „generic-mix“
        alsa.name = „ALC887-VD Analog“
        alsa.id = „ALC887-VD Analog“
        alsa.subdevice = „0“
        alsa.subdevice_name = „subdevice #0“
        alsa.device = „0“
        alsa.card = „0“
        alsa.card_name = „HDA ATI SB“
        alsa.long_card_name = „HDA ATI SB at 0xfe300000 irq 16“
        alsa.driver_name = „snd_hda_intel“
        device.bus_path = „pci-0000:00:14.2“
        sysfs.path = „/devices/pci0000:00/0000:00:14.2/sound/card0“
        device.bus = „pci“
        device.vendor.id = „1002“
        device.vendor.name = „Advanced Micro Devices, Inc. [AMD/ATI]“
        device.product.id = „4383“
        device.product.name = „SBx00 Azalia (Intel HDA)“
        device.form_factor = „internal“
        device.string = „front:0“
        device.buffering.buffer_size = „352768“
        device.buffering.fragment_size = „176384“
        device.access_mode = „mmap+timer“
        device.profile.name = „analog-stereo“
        device.profile.description = „Analog Stereo“
        device.description = „Internes Audio Analog Stereo“
        alsa.mixer_name = „Realtek ALC887-VD“
        alsa.components = „HDA:10ec0887,10438444,00100302“
        module-udev-detect.discovered = „1“
        device.icon_name = „audio-card-pci“
    Profile:
        analog-output-lineout: Line Out (priority: 9900, available)
        analog-output-headphones: Analoge Kopfhörer (priority: 9000, not available)
    Aktive Profile: analog-output-lineout
    Formats:
        pcm

Das Rote ist nicht der benutzbare Name, immer die Monitor Quelle nehmen. Das geben wir direkt im FFMpeg Befehl als Audioquellenangabe an:

# ffmpeg -f x11grab -s 1440×900 -i :0.0 -r 25 -f pulse -i alsa_output.pci-0000_00_14.2.analog-stereo.monitor -c:v libx264 -preset slow -pix_fmt yuv420p -s 1440×900 -strict experimental -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -f avi testvideo.avi

Diese Bashzeile müssen Sie nur entsprechend an Ihre Bildschirmauflösung anpassen und natürlich Ihr passendes Sink ermitteln. Der Rest ist an sich klar :

– X11grab: aktiviert den Screengrabber
– Audioinput von Pulse Audio
– h264 Codec fürs Video
– das Preset Slow sorgt für gute Qualität
– AAC mit 128kbit für den Audiocodec
– und Stereosoundkanäle
und am Ende noch der Dateinamen und das Dateiformat. Das war es schon und im Gegensatz zum GNOME-Screenrecorder kommt dabei auch was brauchbares aus. Das Ergebnis kann sofort im GNOME-Mplayer angesehen werden.

Hier ein paar Tips:

Die zweite Angabe von „-s 1440×900“ ist die Zielgröße fürs Video. Weicht diese vom ersten Wert ab, wird automatisch passend skaliert.

FFMpeg nimmt im Beispiel oben bei einer Mehrmonitorlösung den linken Monitor.

In einem früheren Beitrag habe ich bereits auf die Möglichkeiten des Autocroping von FFMpeg hingewiesen. Wenn man also von einem zweiten Monitor capturen möchte, muß man die Gesamtgröße des Bildschirms angeben und nicht nur die vom linken Monitor. Dann benutzt man den Cropfilter und schneidet den linken Monitor einfach weg.

In einem anderen Beitrag wurde gezeigt, wie man sich mit xwininfo anzeigen lassen kann, wie die Maße des Bildschirms sind.

FFMpeg kann gleichzeitig zwei oder mehr Audioquellen in den Film mit einbinden. Damit kann man sich z.b. auch eine Audiokommentarspur ins Video einfügen, wenn man das Micro mitschneidet. Meistens ist die PC-Hardware aber so lausig, daß man den Ton noch mal nachbearbeiten muß und vor allem soll das Video ja am Ende vermutlich noch geschnitten werden. Sinnvoll wäre es daher, den Ton mit Audacity aufzunehmen und dann gleich das Rauschen zu entfernen. Ansonsten muß man den Ton erst aus dem Video abspalten und dann am Ende das Video sowieso neu mischen, was beim Schneiden ohnehin passiert. Das besondere an FFMpeg ist nun, daß es die beiden Tonspuren auch gleich live zu einer Tonspur zusammen mischen kann. Wenn dann aber Geräusche oder Musik im Video vorkommen, wird das mit den Scheiden dann nichts mehr. Überlegen Sie also vorher was Sie wollen.