Skip to content

Problem bei mastodon Installation auf Ubuntu Server 20.04LTS

Weil ich hach einigen Versuchen nur per Zufall darauf gekommen bin - den Hinweis auf dieses Problem hatte ich so noch nirgendwo gefunden:

Q: I encountered a compilation error while executing RAILS_ENV=production bundle exec rails assets:precompile, but no more information is given. How to fix it?

A: Usually it's because your server ran out of memory while compiling assets. Use a swapfile or increase the swap space to increase the memory capacity. Run RAILS_ENV=production bundle exec rake tmp:cache:clear to clear cache, then execute RAILS_ENV=production bundle exec rails assets:precompile to compile again. Make sure you clear the cache after a compilation error, or it will show “Everything's OK” but leave the assets unchanged.

Die Lösung bei unserer Installation bestand allerdings darin, eine nodejs Version 16.x zu verwenden.

Unifying-Receiver mit fwupd aktualisieren

Es liegt ja nicht unbedingt nahe, andauernd die Firmware beispielsweise des Unifying-Receivers usw. zu aktualisieren. Angesichts der Angriffsmöglichkeiten sollte mensch das aber auch als Linux User machen. Windows Programme sind dazu nichjt nötig, das geht in 3 Schritten einfacher mit fwupd. Eventuell sogar als cronjob, um zum Thema Faulheit zurückzukehren.

• Die aktuelle Liste der Firmware abrufen: sudo fwupdmgr get-updates

• Die Liste der angeschlossenen Geräte anzeigen: sudo fwupdmgr get-devices

• Firmware aktualisieren: sudo fwupdmgr update

Mini-HowTo: Green Cell® UPS USV mit Nagios überwachen

Der Status einer günstigen unterbrechungsfreien Stromversorgung (USV), in dem Fall eine (Green Cell® UPS USV Unterbrechungsfreie Stromversorgung 600VA (360W)) soll mittels Nagios abgefragt werden. Das UPS Modell ist mit dem Network UPS Tools (NUT) Treiber blazer_usb kompatibel. Die USV versorgt einen Clientrechner client.lan, Nagios ist auf einem Server server.lan installiert. Unter debian bzw. seinen Ablegern lässt sich die nötige Software auf dem Clientrechner wie gehabt installieren:
sudo apt install nut

Irgendwelche Abhängigkeiten sollten natürlich aufgelöst werden. Danach editieren wir die Datei /etc/nut/ups.conf und fügen am Ende folgende Definition für die GreenCell UPS ein:
[GreenCell]
        driver = "blazer_usb"
        port = "auto"
        desc = "GreenCell USV 600VA"
Die Datei /etc/nut/nut.conf editiert man dann entsprechend dem Verwendungszweck (Standalone/Netzserver/-client)
# Network UPS Tools: example nut.conf
#
##############################################################################
# General section
##############################################################################
# The MODE determines which part of the NUT is to be started, and which
# configuration files must be modified.
#
# This file try to standardize the various files being found in the field, like
# /etc/default/nut on Debian based systems, /etc/sysconfig/ups on RedHat based
# systems, ... Distribution's init script should source this file to see which
# component(s) has to be started.
#
# The values of MODE can be:
# - none: NUT is not configured, or use the Integrated Power Management, or use
#   some external system to startup NUT components. So nothing is to be started.
# - standalone: This mode address a local only configuration, with 1 UPS 
#   protecting the local system. This implies to start the 3 NUT layers (driver,
#   upsd and upsmon) and the matching configuration files. This mode can also
#   address UPS redundancy.
# - netserver: same as for the standalone configuration, but also need
#   some more network access controls (firewall, tcp-wrappers) and possibly a
#   specific LISTEN directive in upsd.conf.
#   Since this MODE is opened to the network, a special care should be applied
#   to security concerns.
# - netclient: this mode only requires upsmon.
#
# IMPORTANT NOTE:
#  This file is intended to be sourced by shell scripts.
#  You MUST NOT use spaces around the equal sign!

MODE=standalone

Auf dem Server wird Nagios am besten aus den Quellen installiert, viele Plugins und auch das Programmpaket selber liegt meistens in recht hm... veralteten Versionen vor. Ich verweise hier mal auf ein recht aktuelles HowTo. ^^

Sobald Nagios läuft, stricken wir uns einen Befehl zum Ansprechen der UPS zusammen und editieren dazu die Datei /usr/local/nagios/etc/objects/commands.cfg
# UPS Check
#
#
define command {

    command_name check_ups
    command_line    $USER1$/check_ups -H $HOSTADDRESS$ -u GreenCell
}

Wie man unschwer erkennen kann, bezieht sich der Befehl in der vorletzten Zeile auf das in der Datei /etc/nut/ups.conf definierte Gerät. Dieser Befehl kann nun in beliebigen Serverkonfigurationen, die Nagios überwacht, angewendet werden. Wir richten nun aber erst einmal die Nagios Konfiguration des Clients ein, der durch die USV versorgt wird und editieren dazu eine neue Datei, in dem Fall nennen wir sie einfach /usr/local/nagios/etc/servers/client.lan.cfg
(...)
define service {
use                     local-service
host_name               client.lan
service_description     GreenCell UPS
check_command           check_ups!-H client.lan -u GreenCell

Ab diesem Zeitpunkt sollte der Status der UPS abgefragt werden können. Welche Werte genau abgefragt werden können ist natürlich von der jeweiligen UPS abhängig und welche Werte von Belang sind. Wie bei den meisten anderen Nagios Plugins können auch bei check_ups die möglichen Parameter durch einen Aufruf auf den Kommandozeile abgefragt werden. Hier man ein wenig Copy & Paste:
nagiosuser@server.lan:/usr/local/nagios/libexec# ./check_ups -h
check_ups v2.3.3 (nagios-plugins 2.3.3)
Copyright (c) 2000 Tom Shields
Copyright (c) 2004 Alain Richard <alain.richard@equation.fr>
Copyright (c) 2004 Arnaud Quette <arnaud.quette@mgeups.com>
Copyright (c) 2000-2014 Nagios Plugin Development Team
    <devel@nagios-plugins.org>

This plugin tests the UPS service on the specified host. Network UPS Tools
from www.networkupstools.org must be running for this plugin to work.

Usage:
check_ups -H host -u ups [-p port] [-v variable] [-w warn_value] [-c crit_value] [-e] [-to to_sec] [-T]

Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
 --extra-opts=[section][@file]
    Read options from an ini file. See
    https://www.nagios-plugins.org/doc/extra-opts.html
    for usage and examples.
 -H, --hostname=ADDRESS
    Host name, IP Address, or unix socket (must be an absolute path)
 -p, --port=INTEGER
    Port number (default: 3493)
 -u, --ups=STRING
    Name of UPS
 -T, --temperature
    Output of temperatures in Celsius
 -e, --extended-units
    Allow nonstandard units in performance data (used for voltage and temperatures)
 -v, --variable=STRING
    Valid values for STRING are LINE, TEMP, BATTLEFT, BATTPCT or LOADPCT
 -w, --warning=DOUBLE
    Response time to result in warning status (seconds)
 -c, --critical=DOUBLE
    Response time to result in critical status (seconds)
 -t, --timeout=INTEGER:
    Seconds before connection times out (default: 10)
    Optional ":" can be a state integer (0,1,2,3) or a state STRING

This plugin attempts to determine the status of a UPS (Uninterruptible Power
Supply) on a local or remote host. If the UPS is online or calibrating, the
plugin will return an OK state. If the battery is on it will return a WARNING
state. If the UPS is off or has a low battery the plugin will return a CRITICAL
state.

Notes:
 You may also specify a variable to check (such as temperature, utility voltage,
 battery load, etc.) as well as warning and critical thresholds for the value
 of that variable.  If the remote host has multiple UPS that are being monitored
 you will have to use the --ups option to specify which UPS to check.

 This plugin requires that the UPSD daemon distributed with Russell Kroll's
 Network UPS Tools be installed on the remote host. If you do not have the
 package installed on your system, you can download it from
 http://www.networkupstools.org

Send email to help@nagios-plugins.org if you have questions regarding use
of this software. To submit patches or suggest improvements, send email to
devel@nagios-plugins.org

Eine am Server abgesetzte Anfrage ergibt in unserem Fall:
nagiosuser@server.lan:/usr/local/nagios/libexec# ./check_ups -H prusapi.lan -u GreenCell
UPS OK - Status=Online Utility=230,0V Batt=100,0% Load=4,0% |voltage=230,000000;;;0,000000 battery=100,000000%;;;0,000000;100,000000 load=4,000000%;;;0,000000;100,000000

Nagios verwertet diesen Schnipsel so:



Einige Links in diesem Beitrag sind Vorschläge / Einkaufsquellen und sog. Affiliatelinks. Wenn Du etwas über diesen Link kaufst, erhalten wir eine kleine Provision. Der Preis für Dich bleibt derselbe. Vielen Dank für Deine Unterstützung.

Some of the links are suggestions for parts to replicate the thing and affiliate. If you buy something, I get a small commission. The price you pay is the same. Thank you very much.

OnePlus Handy gebrickt? No Problem.

Screenshot: Msmdownloadtool
Vor einigen Wochen wurde endlich LineAgeOS 16 für das OnePlus 6T veröffentlicht. Die Installation hatte ich seither vor mir her geschoben, obwohl ich das Handy voriges Jahr bereits gerootet hatte: Eine Konvertierung der Benutzerdaten über Systemgrenzen hinweg ist trotz Tools wie Titanium Backup nach wie vor nicht ganz trivial. Aber machbar, dachte ich mir und bin dann zur Tat geschritten. Da der root Zugriff unter unter dem Hersteller Betriebssystem OxygenOS Dank TWRP und Magisk zwar einwandfrei funktionierte, jedoch nach jedem Upgrade wiederholt aktiviert werden musste, dachte ich mir, daß ich dann eigentlich gleich LineAgeOS installieren könnte. Also Backup anfertigen, ins Recovery booten und dann erst LineAgeOS, dann OpenGapps und Magisk installieren. Dabei ging irgendetwas schief - möglichweise war das TWRP von Bluespark nicht ganz unschuldig daran, soweit ich mich entsinne, hatte sich dieses nur in einen der beiden Slots installieren lassen. Jedenfalls scheiterte der Versuch, das offizielle TWRP zu installieren mit der Meldung:

FAILED (remote: Failed to load/authenticate boot image: Load Error)

Nicht nur das, fortan weigerte sich das Mistding hartnäckig, überhaupt in Fastboot oder ins Recovery zu booten geschweige denn, TWRP zu flashen oder via fastboot zu starten. Also keine Chance, das Handy irgendwie zum Laufen zu bewegen. Toll. Verzweiflung macht sich breit. Ein gescheitertes Update führte in der Vergangenheit schließlich oft genug dazu, das teure Telefon zu "bricken" d.h. es war nur noch als teurer Briefbeschwerer und dem sozialen Umfeld zur Mahnung zu gebrauchen. Ich gebe zu, sogar einmal kurz die Supportseite angeklickt zu haben, um das Teil ggf. zur Reparatur einzuschicken. Aber nur für ca. 5 Sekunden. ;-)

Mit den entsprechenden Suchbegriffen bin ich jedenfalls bei xda-developers fündig geworden, wo es für diverse Geräte Unbrick Tools gibt, so auch für das OnePlus 6T. Solange sich das Gerät noch einschalten lässt, ermöglicht dieses (Windows)-Programm eine Wiederbelebung des Zombies. (Angeblich läuft das Programm auch in einer virtuellen Windows Maschine oder unter WINE, das habe ich jedoch nicht probiert, da ich zufällig noch einen Windows Rechner herumstehen habe.)

Das MsmDownloadTool v4.0.59 ist gute 2 Gigabyte groß, denn es enthält OxygenOS v9.0.13. Nach dem Start präsentiert sich das Programm sehr aufgeräumt. Zuvor sollte allerdings das Handy via Datenkabel mit dem Rechner verbunden sein und in der Systemsteuerung solltem QUSB_BULK oder unter Ports > Qualcomm angezeigt werden, was für den OnePlus Chipsatz steht.

Nach dem Start und einigen nicht sonderlich transparenten Aktionen, während derer an einen Kaffee trinken gehen kann, wird das Handy auf den Auslieferungszustand unter OxygenOS v9.0.13 zurückgesetzt, d.h. alle Daten sind weg. Sofern man kein Backup gemacht. Ach ja, und dieses auf einen entsprechenden, externen Datenträger gespeichert hat. Nicht nur wegen der fehlenden transparenten Aktionen bei der Wiederherstellung würde ich auf jeden Fall als erstes entweder TWRP flashen, /Data und /System wipen und das Originalbetriebssystem von OnePlus oder gleich LineAgeOS installieren. Das geht dann "einfach".

Und der Blutdruck sinkt. ;-)

Raspberry PI mit SSD und S.M.A.R.T.

Für verschiedene Zwecke haben wir diverse Raspberry PIs im Einsatz. Zum Beispiel als 3D Druckserver mit OctoPrint. Normalerweise wird ein Raspberry mit microSDHC Speicherkarten betrieben. Diese kommen jedoch früher oder später meist an Grenzen, die einem nicht so in die Lebensplanung passen. Höchste Zeit also, auf eine SSD zu setzen, entweder gleich von Anfang an, oder eben wenn es klemmt:

Seit einiger Zeit kann der Raspberry ja auch direkt von der SSD booten, so daß die microSDHC Karten eigentlich nur dafür benötigt werden, das dafür notwendige Bit mittels program_usb_boot_mode=1 in der /boot/config.txt zu setzten.

Danach kann man gleich die z.B. durch etcher mit dem Betriebssystem der Wahl geflashten SSD anschließen und den Rechenzwerg starten. Oder man migriert sein existierendes System via dd von der microSDHC Karte auf die neue SSD. Ich habe beim ersten Versuch mit einer Kombination aus beidem gearbeitet, d.h. zuerst die SSD geflasht, dann die einzelnen dadurch entstandenen Partitionen mittels sudo dd if/dev/sdX of=/dev/sdX status=progress von der SDHC auf die SSD kopiert. Bei der Gelegenheit habe ich, um jeglichen Kalamitäten beim Bootvorgang aus dem Weg zu gehen, die /etc/fstab auf die Verwendung von UUIDs umgestellt, was nicht nur eine einfache Übung sondern wegen der Änderung der Laufwerksbezeichnungen durch den Austausch in jedem Fall notwendig ist.

Gute Erfahrungen habe ich mit den SSDs von SanDisk gemacht, die mit günstigen SATA2USB Adaptern an den Raspberry angeschlossen werden können. Sicherlich gibt es auch schnellere SSDs, das Geld ist jedoch angesichts diverser Beschränkungen des Raspberrys besser anderswo angelegt. Wichtig ist für mich hier vor allem, daß die Platte ohne aktiven USB Hub, d.h. nur mit der vom Raspberry zur Verfügung gestellten maximalen Spannung von 1,2A läuft.

Der SATA2USB Adapter meldet sich nach der Eingabe von sudo smartctl /dev/sdX mit der Id "Unknown USB bridge [0x152d:0x0578 (0x3202)]" und ist dementsprechend ein JMicron JMS567, der auf alle weiteren Aufrufe mittels sudo smartctl -a -d sat /dev/sdX korrekt angesprochen werden kann.

smartctl 6.6 2016-05-31 r4324 [armv7l-linux-4.19.60-v7+] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     SanDisk SSD PLUS 240GB
Serial Number:    19172C804389
LU WWN Device Id: 5 001b44 8b814e836
Firmware Version: UF5000RL
User Capacity:    240.065.183.744 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-2 T13/2015-D revision 3
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Mon Jul 29 11:26:28 2019 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART Status not supported: Incomplete response, ATA output registers missing
SMART overall-health self-assessment test result: PASSED
Warning: This result is based on an Attribute check.

General SMART Values:
Offline data collection status:  (0x00)    Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (  32)    The self-test routine was interrupted
                    by the host with a hard or soft reset.
Total time to complete Offline 
data collection:         (  120) seconds.
Offline data collection
capabilities:              (0x15) SMART execute Offline immediate.
                    No Auto Offline data collection support.
                    Abort Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    No Conveyance Self-test supported.
                    No Selective Self-test supported.
SMART capabilities:            (0x0003)    Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01)    Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:      (   2) minutes.
Extended self-test routine
recommended polling time:      (  42) minutes.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       47
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       52
165 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       107
166 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       2
167 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       0
168 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       4
169 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       296
170 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       0
171 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
172 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
173 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       2
174 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       47
184 End-to-End_Error        0x0032   100   100   ---    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   ---    Old_age   Always       -       0
194 Temperature_Celsius     0x0022   057   047   000    Old_age   Always       -       43 (Min/Max 18/47)
199 UDMA_CRC_Error_Count    0x0032   100   100   ---    Old_age   Always       -       0
230 Unknown_SSD_Attribute   0x0032   100   100   000    Old_age   Always       -       128851640350
232 Available_Reservd_Space 0x0033   100   100   005    Pre-fail  Always       -       100
233 Media_Wearout_Indicator 0x0032   100   100   ---    Old_age   Always       -       391
234 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       817
241 Total_LBAs_Written      0x0030   100   100   000    Old_age   Offline      -       383
242 Total_LBAs_Read         0x0030   100   100   000    Old_age   Offline      -       418
244 Unknown_Attribute       0x0032   000   100   ---    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

Selective Self-tests/Logging not supported
Auch wenn nicht alle S.M.A.R.T. Tests durchgeführt werden können, ist es doch möglich, die wichtigsten Test durchzuführen, die einem Auskunft über ein eventuell baldiges Ableben des Datenträgers geben können, hier mal ein 2 minütiger Kurztest mittels sudo smartctl -t short -d sat /dev/sdX nach 47 Stunden Laufzeit der Platte, den man sich mittels sudo smartctl -a -d sat /dev/sdX ansehen kann:
(...)
SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%        47         -

Selective Self-tests/Logging not supported
Weitere Tests werden dann entsprechend in der Ausgabe ergänzt, die aktuellen Ergebnisse stehen dann immer an erster Stelle der Ausgabe.

HINWEIS:
Alle gemachten Angaben sind ohne Gewähr auf Funktion und Richtigkeit. Für eventuell entstehende Schäden übernehmen wir keinerlei Haftung. Sämtliche Veränderungen geschehen auf Eure Verantwortung und Gefahr.

Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.: Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts.

Mikro-Howto: OctoPrint mit RaspberryPI und TouchUI über Elcrow 5" Display steuern

Dies ist nur ein Howto für mich selbst und wen es sonst noch interessiert. Die Anleitung funktioniert mit meinem System, bei anderen Menschen kann das wieder ganz anders sein. Daher: Nachmachen auf eigene Gefahr!

Ausgangslage: Ich möchte meinen 3D Drucker, den ich über den OctoPrint Server, der unter OctoPI auf einem Raspberry PI 3B+ läuft, und somit über jeden vom Server zugelassenen Rechner aus zu steuern ist, notfalls auch mal vor Ort in der Druckerei steuern können, ohne mir dort gleich einen Computer hinstellen zu müssen, der dann die meiste Zeit doch nur als Terminal vor sich hin verstaubt. Was liegt also näher, als die Himbeere mit einem halbwegs bedien- und erkennbaren berührungsempfindlichen Display auszustatten und damit die TouchUI zu bedienen?

Nach diversen Versuchen und Überlegungen bei der Suche nach einer angemessenen Unterbringung für den Rapsberry habe ich mich dann für Thing:2837163 entschieden, für das ein halbwegs finanzierbares Display über Alieexpress zu bekommen ist. Einige Wochen später klingelte denn auch der Bote aus dem fernen Osten und überreichte mir ein gut verpacktes Behältnis mit dem Display, welches bei genauerer Betrachtung einem Waveshare recht ähnlich sieht, jedoch - Chinas kapitalistischer Enklave Shenzen sei Dank - nur einen Teil dessen kostet, was für das nebenan gefertigte Waveshare fällig gewesen wäre und das bei Aliexpress auch deutlich günstiger als beim großen Fluß zu bekommen ist. Allerdings mit 3 Wochen Lieferzeit. Das Boardlayout ebenso wie der Chipsatz sieht dem hochpreisigerem Pendant jedenfalls zum Verwechseln ähnlich.

Was folgte, waren jedoch ein gutes Dutzend Versuche, das Display so zum Laufen zu bekommen, wie ich bzw. das von mir auserkorene Gehäuse das gerne hätte: Nämlich um 180° gedreht, damit der HDMI Connector in der dafür im Gehäusedesign eigens vorgesehenen Aussparung verschwinden kann. Die Anzeige des Displays ist dabei weniger das Problem, diese findet via HDMI statt, vielmehr ist ja Bildausgabe und Toucheingaben zweierlei. Das Display kann leicht um 180° gedreht werden, indem man sich per ssh auf dem Raspberry anmeldet:
ssh pi@octopi.lan

gefolgt von
sudo nano /boot/config.txt

und dann diesen Text am Ende um die Zeile
display_rotate=0

ergänzt. Klappt ganz gut, wenn man dann mit ctrl+x die so manipulierte Datei speichert und mit
sudo reboot -n

einen Neustart einleitet.

Treib(er)jagd
Die oben erwähnten erfolglosen Versuche, auf dem so gedrehten Display nun auch die Touch Eingabe einrichten zu können, hatten mich dann dazu veranlasst, doch mal nebenan, bei Waveshare zu schauen, wie das dort gelöst wurde. Denn die Elcrow KollegInnen wußten zwar von einer veralteten Treiber CD zu berichten und wie man das Display ihrer Ansicht nach zum Kooperieren bewegt, in der Praxis hatte dann trotzdem der Mauszeiger (heißt das auch so, wenn man den Finger dazu benutzt, um Eingaben zu tätigen??) das Gegenteil von den Bewegungen veranstaltet: Nach unten wischen - Zeiger wandert nach oben, nach Rechts wischen - Zeiger begibt sich schnurstracks nach links. Wenn das nur im richtigen Leben auch so wäre...

Wie auch immer: Bei Elcrow ist die Zeit offenbar vor dem Update des Eingabetreibers für den X-Server stehen geblieben, weshalb der entscheidende Hinweis auf die Verwendung des entsprechenden Treibers dort fehlt. Wenn wir schon mal auf der ssh Konsole sind, installieren wir diesen mit
sudo apt install xserver-xorg-input-evdev

Anschließend kopieren wir die Konfigurationsdatei dergestalt, daß sie eine höhere vorangestellte Zahl im Dateinamen hat wie die anderen im Zielverzeichnis. Dies, um zu verhindern, daß ein möglicher anderer Eingabetreiber die Bemühungen, das Touchdisplay einzurichten, verhindert:
sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf
sudo reboot

Neuausrichtung
Nun lässt sich auch die Feinabstimmung mittels Eingabekalibration vornehmen. Dazu installieren wir das entsprechende Tool, wir nehmen dabei das der aktuellen Raspbian Version, somit gibt das bei späteren Updates auch weniger Treiberfolklore...:
sudo dpkg -i -B xinput-calibrator

Wir starten jetzt das System dazu nochmals neu, damit die Kalibrierung gestützt auf diese Treiber stattfindet. Nach dem erfolgreichen Login gehen wir dazu in der grafischen Benutzeroberfläche mit der Maus / Touchpen / Zeige- oder sonst einem Finger auf die Himbeere oben links und rufen unter "Einstellungen" das Kalibriertool auf. Mit dem entsprechenden Zeigegerät tippen wir auf die darin gezeigten 4 Punkte und Kopieren den anschließend ausgegebenen Text in die Datei
/ect/X11/xorg.conf.d/99-calibration.conf

Bei mir steht folgendes darin (Die diversen Optionen für die Einträge gibt es z.B. hier zur Auswahl. Auch ein Hersteller von 5" Displays ;-):
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        Option  "Calibration"   "3905 208 3910 288"
        Option  "SwapAxes"      "0"
EndSection

Abspeichern wie gehabt, neu booten. Nun sollte das System zügig starten und auf Benutzereingaben entsprechend reagieren.

Das erfreut uns, weshalb wir derartig motiviert sogleich zur Installation der Touch Oberfläche von OctoPrint schreiten. Hier hat der User jdufresne1 alles wichtige in seinem Beitrag ausgeführt, weshalb ich nur noch kurz darauf eingehe. Wieder per ssh auf dem Druckserver einloggen. Dann mit:
sudo apt install chromium-browser -y

den Browser für die Touch Oberfläche installieren. In dessen Fenster läuft zukünftig dann alles rund um die Bedienung des Druckservers ab. Anschließend daran laden wir die Autostart Prozedur von TouchUI herunter und machen in einem Abwasch die lokale Installation auf dem Raspberry startklar:
git clone https://github.com/BillyBlaze/OctoPrint-TouchUI-autostart.git ~/TouchUI-autostart/

Noch kurz diverse Einstellungen und Hilfstools installieren:
sudo ~/TouchUI-autostart/helpers/install

Nach einem Neustart sollte nun die TouchUI Oberfläche den 5" Bildschirm des Raspberry verzieren. Wer möchte, kann den Raspberry auch so einrichten, daß er ohne Benutzername und Passwort durchstartet. Mehr dazu im Wiki von TouchUI.

Der Vorteil des eingangs erwähnten Gehäuses ist, daß es genügend Platz bietet, zum Beispiel für ein Stepdown Modul, um die Energieversorgung des Rechners zukünftig vom nicht ausgelasteten Netzteil des Druckers sicherzustellen sowie für einen entsprechenden Lüfter. Falls es doch mal heißer her geht.

Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.:Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts. Für die Inspirationen geht ein herzliches Dankeschön an die genannten Personen, insbesondere an die OctoPrint Community!

Keep on Coding Printing!

OnePlus 6T: Kaum da, schon gerootet ;-)

Zur Abwechslung mal wieder was über Telefone. Nach 4 Jahren mit dem OnePlus One, dem so allmählich die Puste ausging, war es mir mal nach Veränderung, so orderte ich mir eine neue Telefonzelle. Es musste mit 256 GB internem Speicher und 8 GB RAM natürlich gleich der dickste Bolzen sein. ;-) Da mich die Qualität des Gerätes und die Community in den letzten Jahren überzeugte - in unserem Haushalt werkelt ja auch noch ein OnePlus 3T - war eigentlich klar, daß ich markentreu bleibe. Das vor 5 Monaten erschienene 6er Modell hätte mich eigentlich schon gereizt, aber ich dachte mir, bau nochmal einen Austauschakku ein, vielleicht hält das Teil ja nochmal 4 Jahre durch. Naja, der Akku war bzw. ist ok, auch der Austausch war in 20 Minuten erledigt. Dennoch: Die heutige Software zieht schon etwas mehr Strom und letztlich reichte das nicht einmal mehr über den Tag.

Tests zum 6T gibt es genügend, für mich gab es keinen Grund mehr, zu Googles "Pixel" zurückzukehren, nachdem die Preispolitik der vergangenen Jahre konsequent fortgesetzt und dafür an der 1000€ Marke gekratzt wird. Ein Thema, bei dem Durchgeknallte, die mit einem iPhone "X" herumposen - wohl nur zu einem müde Lächeln können. Aber irgendwie bekommt Apple das mit den Mondpreisen schon zu spüren.

Wie auch immer, nachdem OnePlus sein 6T vor 14 Tagen vorgestellt hatte kam es am Dienstag zur Auslieferung, meines bekam ich dann gestern geliefert. Während ich einem Familienmitglied beim Umstieg von einem ebenfalls 4 Jahre alten iPhone auf ein 6T unterstützte, fand ich noch die Zeit, nach einer Lösung zum Rooten für das 6T, denn ich hätte ja doch ganz gerne meine diversen Apps 1:1 wieder auf dem neuen Handy. Mittels Titanium BackUp kein Problem, allerdings setzt das Root voraus. Kein Problem1:

blu_spark TWRP für das OnePlus 6T
dann noch

Magisk herunterladen


Bei uns an den Linux Rechner gehängt, nachdem ich das 6T eingeschaltet und einen "alles überspringen" Setup Lauf durchgeführt hatte, bin ich in die Einstellungen / Über das Telefon / 7 * auf "Build Number" tippen, um den Entwicklermodus freizuschalten, dann wieder in "Einstellungen / System / Entwickleroptionen" und dort "OEM Entsperrung", "USB-Debugging" und "USB-Debugging Authorisierungen aufheben" aktivieren und dem angeschlossenen Rechner Zugriffsrechte erteilen. (Am besten auch noch "erweiterter Neustart" aktivieren, aber das ist Komfortzone.)

Sodann als root berechtigter User das folgende in die Linux Kommandozeile 2 reinhacken:

fastboot oem unlock

Schwupps - so schnell ist das Handy platt. Genau: beim Entsperren des Bootloaders werden alle Daten gelöscht. Das macht nichts, da ich noch keine Daten darauf habe und deswegen ja auch im "alles überspringen" Setup Lauf unterwegs war ;-)

Nach dem Aufheben der OEM Sperre und der Freischaltung können nun TWRP, der blu_spark Kernel und Magisk installiert werden. Mit

fastboot boot twrp-3.2.3-x_blu_spark_v9.86_op6.img

wird das neue Recovery gebootet, anschließend erlaubt man Änderungen durch Wischen auf dem im unteren Bildschirrm angebotenen Schieberegler. Dann wird in dem nächsten Bildschirm unter "Advanced" der Menüpunkt"ADB Sideload" gewählt, "Wipe Dalvik Cache" und "Wipe Cache" gewählt und dann der ADB Zugriff durch Wischen am Schieberegler im unteren Bildschirmrand ermöglicht, der dann auf dem Computer per sideload aufs 6T gebügelt wird:

adb sideload twrp-3.2.3-xblusparkv9.86op6.zip

Dann kann z.B. mit dem blu_spark Kernel eine Alternative zum regulären Systemkern installiert werden:

adb sideload blusparkr56-oos-pieop6-6t9e9a352.zip

Als Abschluß gibt es dann noch die Installation von Magisk per sideload:

adb sideload Magisk-v17.3.zip

Dann lösche ich eigentlich immer den Cache und starte das Handy neu. Magisk lässt sich zukünftig dann direkt aus der App updaten.

Diese im Gegensatz zu früheren root / Flash Aktionen scheinbar etwas umständlichere Methode der Recovery Installation hängt mit den A/B Partitionen zusammen, die ursprünglich mit Googles Pixel 1 eingeführt und für mehr Sicherheit sorgen sollen. So existiert im Gegensatz zu früheren Versionen keine eigene Recovery Partition mehr, sondern das Recovery ist Bestandteil des Boot Images. Grob gesagt muss deshalb TWRP temporär gebootet werden, um erst mit einem weiteren Installationslauf in einem der Slots eingerichtet zu werden. Die beiden Slots sind in TWRP selbst auch anwählbar, zum Beispiel beim Backup. Auch beim Neustart aus dem Recovery lässt sich der gewünschte Slot wählen.

Die verwendete (inoffizielle) blue_spark TWRP 3.2.3-x Recovery Version v9.86 ist noch in einem recht frühen Entwicklungsstadium, das sollte man bedenken, ebenso wie die angepasste Magisk Version. Zum Beipiel läuft hier das Xposed Modul leider noch nicht, auch gibt es in Sachen LineAgeOS bis jetzt auch nur inoffizielle Versionen. Hier habe ich mich auch noch nicht dazu durchgerungen, auf den Zug aufzuspringen. Aber was nicht ist, kann ja noch werden. Momentan schaue ich mir noch sehr wohlwollend das installierte OxygenOS 9.05 an, das unmittelbar nach dem TWRP Flash zum Download bereit stand.

Die A/B Partitionen können wie alles andere in dem kurzen Beitrag hier dargestellte zu Problemen führen, bis dahin, das OnePlus 6T in einen 629€ teuren Briefbeschwerer zu "bricken". Von daher: Alles, was bei mir geklappt hat, kann woanders ins Auge gehen, daher: Nachahmung auf eigene Gefahr, informiert Euch zuvor über die möglichen Folgen, zum Beispiel auch über eventuellen Garantieverlust!

In dem Sinne freue ich mich über Hinweise, Vorschläge, Alternativen und Kritiken, gerne über die Kommentarfunktion!

1: Wem das zu stressig / langweilig / riskant / whatever ist, der kann natürlich auch per OnePlusSwitch bequem von einem alten Android Handy - und auch von iPhones - auf das neue umsteigen. Die App, die in Googles Play Store für Android und hier - leider außerhalb von dem Apple Dingens erhältlich und daher nicht ganz ungefährlich - zu installieren ist, erleichtert einem den Umzug doch sehr, indem ein Barcode auf dem alten durch das neue Handy abzufotografieren ist. Binnen kurzer Zeit landen dann alle Fotos und sonstigen Daten auf dem neuen Gerät.

2: Windows kann das natürlich auch. Möglicherweise gibt es dabei einiges zu beachten, daher verweise ich auf die DroidWiki Anleitung hier.

In diesem Beitrag sind einige Links auf Amazon und eBay gesetzt. Wenn Ihr über diese Links dort etwas bestellt, bekomme ich eine kleine Provision. Irgendwie muss die Kohle für das 629€ teure Teil ja wieder reinkommen. ;-) Für Euch bleibt der Preis derselbe wie bei einem Direktkauf.

Was mir heute wichtig erscheint #424

Misogynie: "Eine Stuttgarterin wird Monate nach der Trennung von ihrem Ex-Freund getötet: Das Gewaltverbrechen hat auch eine erschreckende gesellschaftliche Komponente." Gewalt gegen Frauen nimmt erschreckend zu

Aufgetaut: Der Permafrostboden in der nördlichen Arktis taut früher als erwartet auf. Egal, weit weg.

Minimalismus: Paula Irmschler nervt die Idee, wir alle könnten einfach mit viel weniger leben. Huge Assholes (nd)

Gesperrt: "Debian-Entwickler und Privacy-Aktivist Dmitry Bogatov soll zu Massenunruhen in Moskau aufgerufen haben. Gegen ihn wird wegen der Unterstützung von Terrorismus ermittelt. Das Debian-Projekt hat seine Maintainer-Schlüssel ungültig gemacht." heise.de

Todbringend: "Welchen zivilisatorischen Stand hat die Gattung Mensch erreicht, wenn in diesen Tagen rund um den Globus Hunderte Millionen Menschen hungern? Innerhalb von nur knapp drei Jahren hat sich die Anzahl der hungernden Menschen verdoppelt und dabei handelt es sich um Hunderte von Millionen an Tragödien mit Tränen, Trauer, Leid und ganz individuellem Siechtum bis zu einem einsamen, qualvollen Tod. Wir können versuchen uns rauszureden, indem wir auf Weltklima, lokales Wetter, die Frage der Verteilung von Weide- und Ackerland, auf Stammeskonflikte usw. als alleinige Ursachen verweisen. (...)" Kommentar von Uwe Ness. Siehe auch: "Unicef-Report. Alle fünf Sekunden stirbt ein Kind. Die Kindersterblichkeit hat 2017 einen neuen Tiefststand erreicht, trotzdem verloren weltweit mehr als sechs Millionen Kinder und Jugendliche ihr Leben. Die meisten Todesfälle wären vermeidbar." Spiegel, 18. September 2018.

Kreisch!: Seit 19 Jahren ist die Innenstadt von Concello de Pontevedra autofrei. Klappt gut, kein Lärm, keine Verkehrstoten, gefahrloses Flanieren und Luft zum Atmen.

Unerkannt: "(...) Derzeit wird in Deutschland heftig über die Fotos in den Ausweisen und Pässen der Bürger gestritten: 2017 wurde das Personalausweisgesetz geändert; es erlaubt nun nicht nur Strafverfolgern, sondern etwa auch Geheimdiensten und dem Zoll, direkt und automatisiert auf die in den Meldeämtern gespeicherten Bilder zuzugreifen - zum Entsetzen von Datenschützern und Bürgerrechtlern. (...)" In der Situation hat das PENG! Kollektiv einer künstlichen Person einen Reisepass besorgt. Problemlos.

Kontrollzwang: "Mit EUROSUR verfügt die EU-Kommission über ein mächtiges Grenzüberwachungssystem. Es führt Aufklärungsdaten von Flugzeugen, Drohnen und bald auch Fesselballons zusammen. Aufgrund der Bilder entscheidet ein Frontex-Referat dann über weitere Maßnahmen im „Grenzvorbereich“." Der europäische Grenzgeheimdienst, Beitrag von Matthias Monroy bei netzpolitik.org

Vorbildfunktion: "Andreas Magdanz kennt den Hambacher Forst wie kaum ein anderer. Der Professor für Fotografie hat seine Studierenden über viele Jahre hinweg dorthin geschickt, dabei hat er besonders die seit einigen Jahren im Wald lebenden Aktivisten schätzen gelernt. (...)" "Intellektuelle Elite, auf die man stolz sein kann" Andreas Magdanz im Gespräch mit Gabi Wuttke

Katastrophenalarm: "(...) Am 3. September hatten von einem „Tiger“-Hubschrauber der Bundeswehr abgefeuerte Raketen das Moor auf dem Waffentestgelände WTD 91 bei Meppen in Brand gesetzt. Das Feuer breitete sich in der Folge auf einer Fläche von bis zu zwölf Quadratkilometern aus, die Rauchwolke war zeitweise bis Bremen zu sehen, der Qualm noch in 200 Kilometer Entfernung zu riechen. Auch Satellitenaufnahmen aus dem All zeigen die Rauchfahne. (...)" Moorbrand im Emsland: Über 500.000 Tonnen Kohlendioxid

Mailserverumzug

Nach einigen Jahren stand ein Umzug des Mailservers an. Hier läuft das Gespann Postfix / Cyrus / Sieve / SpamAssassin / DCC / Phyzor / Razor sowie, der Vollständigkeit halber, der freie Virenscanner ClamAV, natürlich in der aufgebohrten Version, mit drastisch gesteigerter Erkennungsrate. Diese Kombination sorgt bei uns zusammen mit ein bisschen weiteren Kleinkram, den ich hier nicht erwähne, seit Jahren dafür, daß Probleme mit Mails oder Viren praktisch gar nicht bzw. im Fall von Spam nur sehr vereinzelt auftreten.

Die Einarbeitungskurve ist bei den genannten Servern natürlich nicht gerade flach, zahlt sich jedoch durch Stabilität und Zuverlässigkeit über Jahre aus. (So habe ich heute noch ein paar Mails, die ich, falls mein Blutdruck mal wieder im Keller ist, hervor krame, um mich mal wieder so richtig auzuregen ;-) )

Den mit Abstand größten Aufwand gibt es immer mit dem Cyrus IMAP Server, der sehr stabil läuft, aber auch sehr empfindlich und wenig aussagekräftig bei Fehlern reagiert. So ist zum Beispiel die richtige Einrichtung von Zertifikaten nicht immer ganz trivial. Deswegen getreu dem Motto: Never touch a running System nur Sicherheitsupdates und Parallelbetrieb bei notwendigen größeren Upgrades, um mögliche Ausfälle möglichst gering zu halten. Zwar gibt es immer auch aktuelle Backups, bei Konfigurationsänderungen wegen neuen Features hilft das wenig.

Nachdem also jetzt alles entsprechend zusammengebaut ist, kommt der Streßtest: Import sämtlicher Postfächer aus dem alten in den neuen IMAP Server, Dank der Kombination mit Sieve werden die Mails auch gleich in die entsprechenden automatisch angelegten Ordner einsortiert. Den Importvorgang erledigt imapsync, ein perl Script, das ich aus einer Handvoll Möglichkeiten herausgepickt hatte. Das Script fragt alle möglichen IMAP Postfächer, z.B. Google, GMX, bzw. die jeweils zugrunde liegenden Server wie Courier, Cyrus und wie sie alle heißen, ab und spricht direkt den gewünschten Zielserver an. Gestartet werden kann das Script auf irgendeinem Terminal.

Vor der Installation von imapsync müssen eine Reihe weiterer Bibliotheken und Perl Module installiert werden, zum Beispiel bei dem betreffenden Server, der mit Debian Jessie läuft:

sudo apt install \
libauthen-ntlm-perl \
libcgi-pm-perl \
libcrypt-openssl-rsa-perl \
libdata-uniqid-perl \
libfile-copy-recursive-perl \
libio-socket-inet6-perl \
libio-socket-ssl-perl \
libio-tee-perl \
libhtml-parser-perl \
libmail-imapclient-perl \
libparse-recdescent-perl \
libmodule-scandeps-perl \
libreadonly-perl \
libterm-readkey-perl \
libtest-mockobject-perl \
libtest-pod-perl \
libunicode-string-perl \
liburi-perl \
libwww-perl \
make \
cpanminus

Sobald cpanminus installiert ist, wirft man darüber weitere Module ins System, um die Voraussetzungen für das in Jessie nicht vorhandene Perl Modul Mail::IMAPClient zu installieren:

cpanm Sys::MemInfo

Danach dann:

sudo cpanm Mail::IMAPClient

Sodann kann man für die 2 Faktor Authentifizierung, die im übrigen sehr empfehlenswert ist, das XOAUTH2 Modul installieren:

sudo cpanm JSON::WebToken

Dann kann man endlich dazu übergehen, imapsync selber zu installieren, holen kann man das als normaler User, was natürlich generell empfehlenswert ist:

wget -N https://imapsync.lamiral.info/dist/imapsync

Man macht dann das Script lauffähig:

chmod +x imapsync

Probiert, ob alles geklappt hat:

./imapsync

Und installiert es schließlich an einem beliebigen Ort, hier bei mir immer im lokalen Scriptverzeichnis:

sudo cp imapsync /usr/local/bin/

Die eigentliche Benutzung des imapsync Scriptes ist in der Dokumentation ausführlich beschrieben. Ich setze hier nur eine einfache Variante ein, das Script kann von einem X-beliebigen USer verwendet werden:

/usr/bin/imapsync --host1 imap.gmail.com --user1 karl.napf@googlemail.com --passfile1 ~/secret1 --gmail1 \
--host2 imap.gmx.net --user2 karl.napf@gmx.net --passfile2 ~/secret2 --automap


Das bedeutet, von links nach rechts gelesen: imapsync holt bei Google mit der Userkennung karl.napf@googlemail.com und dem in der Datei ~/secret1 gespeicherten Passwort sowie für Google empfohlenen weiteren Einstellungen die Mails aus dem Postfach und schiebt sie in das GMX Postfach von karl.napf@gmx.net, mit dem in der Datei ~/secret2 gespeicherten Passwort. Der Parameter ermöglicht meiner Erfahrung nach recht zuverlässig das korrekte Mapping bzw. richtige Einsortieren der Mails in die einzelnen Postfächer, jedoch nur die Standards, also Posteingang / INBOX, Gesendet / SENT, Papierkorb / Trash etc.

Weitergehende Sortierung geht über entsprechende regex Filter, die mit imapsync verwendet werden könenn, die bei unserem Server jedoch nicht nötig waren, da die bereits durch jeden User benutzen sieve Filter entsprechend der jeweiligen Bedürfnisse einsortiert werden.

Und nun zum Wetter. Oder: Ein paar nützliche bash Scripts

Am gegenwärtigen Wetter kann man nichts ändern. Aber man kann sich darauf einstellen. Alexander Epstein hat auf github einige nützliche bash Scripte zusammengestellt, zum Beispiel eine anpassbare Wettervorhersage für die nächsten 3 Tage, einen Url Kürzer, einen Videoplayer, Währungsrechner für die Konsole usw. Nach dem Clonen des git Repositories lassen sich alle oder auch nur einzelne der Scripte installieren.

cronjob