Pinephone: Autorotation – neuer Device Tree ändert Device ID

Liebe Linuxphones Fans,

im kürzlich erst erschienenen Artikel:

Pinephone: automatische Screenrotation einschalten

wird das Device 2 als der Beschleunigungssensor benutzt. Ein Update des Pinephone dtb ( Device Tree Binary ) in dem die verbauten Sensoren des Pinephones beschrieben sind, änderte letzte Woche durch ein Update die Device ID des Beschleunigungssensors.

Pinephone: Autorotation – neuer Device Tree ändert Device ID

ich Euch da mal eine kleine Autoerkennung gebaut:

#!/bin/bash

COUNT=$(ps auxf | grep -v grep| grep -c autorotate)

if [ $COUNT -gt 2 ]; then 
	killall -9 autorotate
	exit
fi

# Autodetection

DEVID="iio:device2"

DEVICES=$(ls /sys/bus/iio/devices/)
for dev in $DEVICES; do
	if [ -f /sys/bus/iio/devices/$dev/in_accel_x_raw ]; then
		DEVID="$dev"
	fi
done

OLD=""

while :
do
	X=$(cat /sys/bus/iio/devices/$DEVID/in_accel_x_raw)
	Y=$(cat /sys/bus/iio/devices/$DEVID/in_accel_y_raw)
	Z=$(cat /sys/bus/iio/devices/$DEVID/in_accel_z_raw)

	if [ $X -gt 15000 ] && [ "$OLD" != "N" ]; then
		# portray mode
		wlr-randr --output DSI-1 --transform normal
		OLD="N"
	fi
	if [ $Y -gt 15000 ] && [ "$OLD" != "90" ]; then
		#Landscape 90
		wlr-randr --output DSI-1 --transform 90
		OLD="90"
	fi
        if [ $Y -lt -15000 ] && [ "$OLD" != "270" ]; then
                #Landscape 270
		wlr-randr --output DSI-1 --transform 270
		$OLD="270"
        fi
	sleep 0.5
done

Damit geht es jetzt immer.

RCE Lücke in smartem Stromzähler

Das ein Gericht das BSI gerade daran gehindert hat, einfach die Anforderungen an die Zulassung von smarten Stromzählern zu senken, war eine mehr als positive Entscheidung. Wie sich zeigt ist die Sicherheit von smarten Stromzählern essentiell.

RCE Lücke in smartem Stromzähler

ThreadPost berichtet in einem Artikel vom 12.3. von einer ungepatchten Sicherheitslücke in einem „Schneider Electronic PowerLogic ION/PM Smart Meter“:

„Critical security vulnerabilities in Schneider Electric smart meters could allow an attacker a path to remote code execution (RCE), or to reboot the meter causing a denial-of-service (DoS) condition on the device.“

Dies Modell wird zwar nicht in Deutschland eingesetzt AFAIK, zeigt aber wie wichtig die Sicherheitsfrage bei diesen Geräten ist. Die fraglichen Geräte hängen wohl am Internet und sind so Angriffen ausgeliefert. Wieso man da bitte nicht mal eine Firewall vorsetzt, die Verbindungen nur vom zuständigen Datacenter zulässt, wird wohl niemand von der Firma beantworten wollen.

Dieses spezielle Smartmeter kann komplett übernommen werden, oder alternativ geDOSt werden, also an der Arbeit gehindert werden. Wenn ich so eine Lücke hätte, wüßte ich was das Smartmeter messen lassen würde: Das ich im Urlaub bin und nur der Kühlschrank läuft 😉  „Ist halt gehackt worden“, falls jemand die Frage stellt, wieso die Leitungen rot leuchten 😉

Das Schlimme an der Sache ist, daß solche Geräte mal wieder in Rechenzentren und Medizinischen Einrichtungen stehen. Damit sind diese Geräte, denen man den Hack nicht ansieht, dann Einfallstore für weitere Attacken. Wie man dem Bericht weiter entnehmen kann, ist wohl der ganze interne Softwarestapel schlampig zusammen gebaut worden:

“We found that the advance_buffer function always returns true, regardless of other inner functions failing and returning false. „

Das meint, daß egal ob eine Unterroutine die Rote Leuchte rausstellt und den Aufrufer darauf hinweist, daß es nicht geklappt hat, macht die aufrufende Routine einfach weiter. Das nennt man im Fachjargon „Fire & Forget Code“. Dieser geht immer davon aus, daß das was er tut funktioniert. Eine Fehlerbehandlung ist nicht vorgesehen. Und genau das fällt diesem Smartmeterhersteller jetzt auf die Füße. Aus Programmierersicht habe ich da jetzt kein Mitleid, weil das ist einfach nur schlampig zusammen gebastelt worden.

 

Pinephone: automatische Screenrotation einschalten

Liebe Linuxphone Fans,

einige Distributionen verteilen die Rohfassung von Phosh. Bei Fedora kann diese keine automatische Screenrotation.

Pinephone: automatische Screenrotation einschalten

Ich habe da mal kurz Abhilfe geschaffen. Ihr braucht zwei Files:

/usr/local/sbin/autorotate:

#!/bin/bash

COUNT=$(ps auxf | grep -v grep| grep -c autorotate)

if [ $COUNT -gt 2 ]; then 
	killall -9 autorotate
	exit
fi

OLD=""

while :
do
	X=$(cat /sys/bus/iio/devices/iio:device2/in_accel_x_raw)
	Y=$(cat /sys/bus/iio/devices/iio:device2/in_accel_y_raw)
	Z=$(cat /sys/bus/iio/devices/iio:device2/in_accel_z_raw)

	if [ $X -gt 15000 ] && [ "$OLD" != "N" ]; then
		# portray mode
		wlr-randr --output DSI-1 --transform normal
		OLD="N"
	fi
	if [ $Y -gt 15000 ] && [ "$OLD" != "90" ]; then
		#Landscape 90
		wlr-randr --output DSI-1 --transform 90
		OLD="90"
	fi
        if [ $Y -lt -15000 ] && [ "$OLD" != "270" ]; then
                #Landscape 270
		wlr-randr --output DSI-1 --transform 270
		$OLD="270"
        fi
	sleep 0.5
done

Dann ausführbar machen : chmod 755 /usr/local/sbin/autorotate

Nun noch ein Desktopfile angelegt : /usr/share/application/screenrotate.desktop

[Desktop Entry]
Name=Screenrotate
Exec=autorotate
Type=Application
StartupNotify=false
Icon=/home/pine/Bilder/screenrotate.png
Name[de_DE]=Bildschirmdrehen

und lesbar machen: chmod 644 /usr/share/application/screenrotate.desktop

Wer das jetzt im Autostart haben will, muß das Desktopfile noch nach ~/.config/autostart/ kopieren.

Ein Icon könnt Ihr Euch dann selbst als „/home/pine/Bilder/screenrotate.png“ ablegen. Selbstverständlich könnt Ihr auch ein andere Icon/Verzeichnis dafür benutzen, da seid Ihr völlig frei.

Das Script terminiert sich beim Aufruf selbst, wenn es schon gestartet wurde. So kann man es ein und ausschalten.Wer das für einen anderen Kernel/Distro als Fedora 5.11.2 benutzen möchte, müßte ggf. die Pfade für /sys/bus/ anpassen.