Du bist hier:Start»CyanogenMod»LineageOS»Galaxy Tab S2

LineageOS auf dem Tablet Samsung Galaxy Tab S2

03.10.2018

Tablet

Im Sommer wollte ich auf meinem Balkon fernsehen. Dafür brauchte ich ein Tablet mit einem großen OLED Bildschirm, LTE, WiFi, guter Hardware und offener Software. Nach einem Blick in die Geräteliste des offenen Betriebssystems LineageOS fiel meine Wahl auf das Tablet Samsung Galaxy Tab S2. Allerdings sollte die genaue Gerätebezeichnung beachtet werden. LineageOS gibt es offiziell nur für das T815 und nicht für die nachfolgende Hardwareversion T819. In diesem Beitrag beschreibe ich die Installation und Konfiguration von LineageOS aus Sicht eines Linuxnutzers. Das Einrichten des Tablets dauerte bei mir etwa ein Wochenende.

Hardware

Das Samsung Galaxy Tab S2 SM-T815 hat einen 9,7 Zoll großen und hellen OLED-Bildschirm, der auch bei Sonnenlicht noch erkennbar und lesbar ist. Für die Hardware-Version T819 gibt es von LineageOS leider kein offizielles Build. Deshalb kommt nur die Hardwareversion T815 in Frage. Die Unterschiede der Hardware zwischen T815 und T819 fallen außerdem kaum ins Gewicht. Beim T819 wurde der System-On-Chip von Exynos 5433 auf Snapdragon 652 gewechselt, der etwas leistungsfähiger ist - allerdings reicht die Leistung des T815 für Internet und Fernsehen vollkommen aus. Das Samsung Galaxy Tab S2 SM-T815 gab es 2018 für etwa 200 Euro gebraucht erhältlich. Bei Resellern kostete das Tablet etwa 250 Euro.

Recovery installieren

Der Codename bei LineageOS für das Galaxy Tab S2 T815 heißt gts210ltexx. Informationen zur Installation stehen unter https://wiki.lineageos.org/devices/gts210ltexx/install. Eventuell muss vor der Installation von LineageOS in den Einstellungen von Android noch das Installieren eines Custom ROM erlaubt werden. Dafür muss auf "Einstellungen" (Zahnrad-Symbol) getippt werden, dann auf "Über das Tablet" und 10 Mal auf "Build Nummer" tippen. Dadurch werden die "Entwickleroptionen" in den Einstellungen freigeschaltet. Unter "Entwickleroptionen" kann jetzt "OEM unlock" eingeschaltet werden. Sollte der Punkt "OEM unlock" nicht in den Entwickleroptionen vorhanden sein, dann existiert keine Sperre für ein Custom ROM und du kannst fortfahren. Der Ablauf der Installation ist wie bei CyanogenMod. Bevor LineageOS auf dem Tablet installiert werden kann, wird ein passendes Startprogramm namens "Recovery" benötigt. Zunächst muss das Galaxy Tab S2 durch langes Drücken von Home + Volume Down + Power in den Download-Modus gestartet werden. Anschließend wird mit der Taste "Volume Up" bestätigt, dass ein "Custom ROM" installiert werden soll. Die "Warnung" von Samsung kann getrost zu den Akten gelegt werden.

Download Mode

Download Mode mit "Warnung"

Wer den Downloadmode verlassen möchte, hält wieder die Tasten Home + Volume Down + Power für etwa 10 Sekunden gedrückt. Ansonsten kann jetzt ein Computer mit dem Laptop per Micro-USB-Kabel verbunden werden. Auf dem Computer muss das Programm Heimdall installiert werden. Mit Heimdall kann der Recovery Bootloader TWRP (Team Win Recovery Project) auf das Galaxy Tab S2 kopiert werden.

# download and compile heimdall source code
git clone https://gitlab.com/BenjaminDobell/Heimdall
mkdir -p Heimdall/build
cd Heimdall/build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

# download TWRP
wget --referer=https://dl.twrp.me/gts210ltexx/twrp-3.2.2-0-gts210ltexx.img https://dl.twrp.me/gts210ltexx/twrp-3.2.2-0-gts210ltexx.img

sha1sum twrp-3.2.2-0-gts210ltexx.img
0a1be42ebb22ee646dfc4b985a0a9196bb77a460

# install TWRP while the tablet is in download mode
bin/heimdall flash --RECOVERY twrp-3.2.2-0-gts210ltexx.img --no-reboot

Wenn alles funktioniert hat, dann sollte ein Download-Balken auf dem Tablet erscheinen und stehen bleiben. Zum Neustart musst du jetzt Home + Volume Down + Power für etwa 10 Sekunden gedrückt halten. Gleich im Anschluß kann jetzt mit Home + Volume Up + Power der Recovery-Modus gestartet werden. Es sollte das Menü von TWRP erscheinen. Sollte das Menü nicht erscheinen und Heimdall nicht funktioniert haben, wäre meine Empfehlung, das Programm Odin unter Windows zu benutzen. Außerdem werden noch die passenden USB-Treiber für Windows benötigt. In Odin muss TWRP als tar-Datei heruntergeladen und im Programm Odin in der Zeile "AP" (Application Processor) eingetragen werden.

LineageOS installieren

Die Installation des Recovery Bootloaders ist relativ kompliziert. Die Installation von LineageOS ist jetzt nicht mehr so schwierig. Zunächst musst du eine aktuelle Version von LineageOS für das Galaxy Tab S2 herunterladen von https://download.lineageos.org/gts210ltexx.

Die ZIP-Datei muss auf eine Micro-SD-Karte kopiert und in das Tablet gesteckt werden. Falls du den Recovery-Modus noch nicht gestartet hast, dann musst du im ausgeschalteten Zustand Home + Volume Up + Power gedrückt halten. Im Menü von TWRP musst du jetzt auf "Mount" beziehungsweise "Einhängen" tippen und die Micro SD-Karte auswählen. Nach der Zurück-Taste und "Installieren" auf "Speicher auswählen" tippen und "Micro SD-Karte" auswählen. Jetzt auf die ZIP-Datei "lineage-....zip" tippen und fertig.

Installation von LineageOS mit TWRP

Installation von LineageOS mit TWRP

Mehr Rechte bekommen

In der Version 14 von LineageOS wurden die Root-Rechte entfernt. Um wieder die volle Kontrolle über das Tablet zu bekommen, muss noch das Addon "su" installiert werden. SU steht für "substitute user" beziehungsweise "switch user". Ohne die Angabe eines Benutzers beim Kommando su wird zum Root-Benutzer gewechselt, wodurch volle Rechte und die volle Kontrolle über das Tablet ermöglicht werden. Den Download gibt es hier: https://download.lineageos.org/extras.

# download addon switch user to get root permissions
wget https://mirrorbits.lineageos.org/su/addonsu-14.1-arm-signed.zip

Die ZIP-Datei muss ebenfalls auf eine Micro-SD-Karte kopiert und in das Tablet gesteckt werden. Im Menü von TWRP kann die addonsu-Datei installiert werden.

Tablet verschlüsseln

Um später Probleme zu vermeiden, wenn das Tablet bereits mühevoll eingerichtet wurde, sollte das Tablet gleich am Anfang verschlüsselt werden. Das funktioniert in den Einstellungen unter "Sicherheit" - "Displaysperre" - Passwort einrichten und nach dem Einrichten eines Passworts "Sicherheit" - "Tablet verschlüsseln". Während der Verschlüsselung muss das Tablet über ein Netzteil am Stromnetz angeschlossen sein.

Verschlüsselung der Datenpartition in den Einstellungen von LineageOS

Verschlüsselung der Datenpartition in den Einstellungen von LineageOS

LineageOS einrichten

In den "Einstellungen" von LineageOS ganz unten muss zunächst auf den Punkt "Über das Tablet" getippt werden. Dort muss der Punkt "Build-Nummer" 10 mal getippt werden. Dadurch erscheint jetzt in den "Einstellungen" der Menü-Punkt "Entwickleroptionen" (Zurück-Taste). In den Entwickleroptionen wählst du unter "Root-Zugriff" "Apps und ADB" aus. "Android-Debugging" muss aktiviert werden. Jetzt kannst du mit einem Micro-USB-Kabel Tablet und Computer verbinden. ADB ist die Android Debug Bridge, die unter anderem zum Installieren von Apps vom Computer auf das Tablet benutzt werden kann. Bei der Verbindung sollte ein Fenster auf dem Tablet erscheinen, ob USB-Debugging zugelassen werden soll: "Von diesem Computer immer zulassen". Außerdem sollte in den Einstellungen - "Sicherheit" - "Installation von Apps aus unbekannten Quellen zulassen" aktiviert werden.

Entwickleroptionen in den Einstellungen von LineageOS

Entwickleroptionen in den Einstellungen von LineageOS

Grundlegende Apps

LineageOS 14.1 entspricht Android 7 (Codename Nougat). Bei dieser Version gibt es keine klassischen Startskripte mehr. Deshalb ist ein Hilfsprogramm für den automatischen Start nötig. Ich habe die kostenlose und offene App Init.d Light ausprobiert und sie hat ihren Zweck erfüllt. Für Fernsehen und Radio übers Internet wird der VLC Media Player für Android benötigt. Das funktioniert alles ohne den App-Store von Google. Die Apps (APK-Dateien) lassen sich direkt aus dem Internet herunterladen. ConnectBot ist ein Programm, das ein Terminal mit Kommandozeile und einen SSH-Client zur Verfügung stellt. Der Browser Firefox für Android mit dem Codenamen "Fennec" darf natürlich auch nicht fehlen. Fennec kann von der Website von F-Droid heruntergeladen werden. Normalerweise empfehle ich immer die aktuellste Software-Version herunterzuladen, da in der neuesten Version Softwarefehler korrigiert wurden. Bei neuen Versionen von Firefox ist es leider so, dass Mozilla auch gern mal inkompatibel zu vorhandenen Einstellungen ist und die Privatsphäre seiner NutzerInnen missachtet. Deshalb habe ich die Version 62.0.2 von Fennec auf meinem Server gespeichert und die dazu passenden Einstellungen mit Privatsphäre. Das Programm Busybox ermöglicht zusätzliche Kommandos oder Kommandos mit mehr Kommandozeilenparametern.

# download init.d light, VLC media player, ConnectBot, Firefox, Busybox
wget https://f-droid.org/repo/x1125io.initdlight_2.apk
wget https://get.videolan.org/vlc-android/3.0.13/VLC-Android-3.0.13-ARMv7.apk
wget https://f-droid.org/repo/org.connectbot_19200.apk
wget https://f-droid.org/repo/ru.meefik.busybox_38.apk
wget https://www.torsten-traenkner.de/cyanogenmod/lineageos/org.mozilla.fennec_fdroid_620200.apk

# install the android debug brige it not done yet
sudo apt-get install android-tools-adb

# install packages on the tablet
adb install x1125io.initdlight_2.apk
adb install VLC-Android-3.0.13-ARMv7.apk
adb install org.connectbot_19200.apk
adb install ru.meefik.busybox_38.apk
adb install org.mozilla.fennec_fdroid_620200.apk

Startskript

Nach der Installation der Apps muss die App "Init.d Light" gestartet und Root-Rechte für die App gewährt werden. Beim Start wird das Verzeichnis /data/user/0/x1125io.initdlight/files/ angelegt. In diesem Verzeichnis kann jetzt über die Android Debud Bridge die Datei userinit.sh angelegt werden, die bei jedem Start ausgeführt wird.

# log in on the tablet via Android Debug Bridge
adb shell

# become root
su

# start the bourne again shell
bash

# mount system directory writable
mount -o rw,remount /system

# copy bash to si (sh is replaced by si in the next step)
cp /system/xbin/bash /system/bin/si


# create the start file
cat > /data/user/0/x1125io.initdlight/files/userinit.sh <<EOF
# drop all output packets
iptables -I OUTPUT -j DROP
# allow internet access for root
iptables -I OUTPUT -m owner --uid-owner 0 -j ACCEPT
# allow internet access for VLC
iptables -I OUTPUT -m owner --uid-owner \$(stat -c%u /data/data/org.videolan.vlc/) -j ACCEPT
# allow internet access for Firefox Fennec
iptables -I OUTPUT -m owner --uid-owner \$(stat -c%u /data/data/org.mozilla.fennec_fdroid/) -j ACCEPT

# block DNS query for NTP server android.pool.ntp.org
iptables -I OUTPUT -p udp -m udp --dport 53 -m string --algo bm --from 40 --hex-string "|07|android|04|pool|03|ntp|03|org" -j DROP -m comment --comment 'Block android.pool.ntp.org'

# restart adb daemon with link to bash
stop adbd
mount -o rw,remount /
sed -i 's|/system/bin/sh|/system/bin/si|g' /sbin/adbd
# mount -o ro,remount /
start adbd
EOF

chmod 755 /data/user/0/x1125io.initdlight/files/userinit.sh

Zunächst blockt das Startskript mit der Firewall iptables alle ausgehenden Internetverbindungen und ermöglicht anschließend den Internetzugriff für die Apps Firefox Fennec und den VLC Media Player. Mit Port 53 und einem Hexstring blockiert iptables Anfragen für android.pool.ntp.org. Die Zahlen in dem Hexstring stehen für die Anzahl der folgenden Zeichen der URL. Dieses Längenfeld ist hexadezimal kodiert. Eine URL mit 17 Zeichen müsste also als |11| geschrieben werden.

Nach Hause telefonieren

Mit iptables blocke ich im Startskript nur eine URL. Die meisten Webseiten lassen sich über die Datei /system/etc/hosts in LineageOS blockieren. In dieser Datei stehen bei mir einige URLs, die verhindern, dass LineageOS, Google oder Firefox nach Hause telefonieren.

# log in on the tablet
adb shell

# mount /system directory writable if not done yet
mount -o rw,remount /system

# disable google, mozilla and lineageos calling home
cat > /system/etc/hosts <<EOF
127.0.0.1       connectivitycheck.gstatic.com gstatic.com www.gstatic.com www.google.com google.com gllto2.glpals.com d1iskralo6mo11.cloudfront.net
127.0.0.1       firefox.settings.services.mozilla.com fennec-catalog.cdn.mozilla.net download.lineageos.org tomato.lineageos.org
127.0.0.1       google-analytics.com www.google-analytics.com www-google-analytics.l.google.com
127.0.0.1       localhost
::1             ip6-localhost
EOF

Updater ausschalten

Wenn wir schon dabei sind LineageOS auszumisten, dann sollten gleich noch ein paar Apps vom automatischen Start entfernt werden. Den Updater von LineageOS schalte ich zur Sicherheit aus, damit mir keine Überraschungseier untergeschoben werden. Eventuelle Updates müssen dann natürlich manuell installiert werden.

# mount /system directory writable if not done yet
mount -o rw,remount /system

# disable LineageOS updater, email and weather
mv /system/priv-app/Updater/Updater.apk /data/media/0/
mv /system/app/Email/Email.apk /data/media/0/
mv /system/priv-app/WeatherManagerService/WeatherManagerService.apk /data/media/0/
mv /system/priv-app/WeatherProvider/WeatherProvider.apk /data/media/0/

Komfortable Konfiguration von Firefox

Um Firefox nicht jedes Mal umständlich neu zu konfigurieren, habe ich eine Konfiguration für die Version 62.0.2 von Fennec erstellt. Diese Konfiguration enthält Einstellungen für eine bessere Privatsphäre und Add-ons wie:

# download the settings
wget https://www.torsten-traenkner.de/cyanogenmod/lineageos/settings_firefox.tgz

# copy to the tablet
adb push settings_firefox.tgz /data/local/tmp/

# log in to the tablet
adb shell

# go to the settings directory
cd /data/data/org.mozilla.fennec_fdroid/

# extract the settings
busybox tar xzvf /data/local/tmp/settings_firefox.tgz

# get security context and user identifier of the existing directory
security_context=$(ls -lZ /data/data/org.mozilla.fennec_fdroid/ | grep " cache" | sed 's|.* \(u:obj[^ ]*\) .*|\1|g')
user_id=$(stat -c%u /data/data/org.mozilla.fennec_fdroid/)
echo "$security_context $user_id"

# change security context and owner of the settings
chcon -R ${security_context} /data/data/org.mozilla.fennec_fdroid/
chown -R $user_id:$user_id /data/data/org.mozilla.fennec_fdroid/

# remove the copied file
rm -f /data/local/tmp/settings_firefox.tgz

LineageOS 14 wird standardmäßig mit SELinux - also security enhanced Linux ausgeliefert. Ohne den oberen Befehl "chcon" (change security context) würde der Browser Fennec das Verzeichnis mit den Einstellungen von Firefox nicht sehen und abstürzen. Genauso wichtig ist der Befehl "chown". Jede App läuft unter einem bestimmten Benutzer, der auch nur in Verzeichnisse mit seinen Benutzer-IDs schreiben kann. In den Einstellungen habe ich Webfonts abgeschaltet. Leider benutzen einige Webseiten wie Xing oder Twitter Webfonts auch um Pfeile in die Navigation zu zeichnen. Ohne Webfonts würden hier nur Quadrate dargestellt werden. Wer die Webfonts wieder einschalten möchte kann das in Firefox unter about:config

gfx.downloadable_fonts.enabled  true

Kommandozeile

Für Freundinnen und Freunde der Kommandozeile empfiehlt sich zum Beispiel für ConnectBot eine vorgefertigte .bashrc Datei:

# download bashrc configuration
wget https://www.torsten-traenkner.de/cyanogenmod/lineageos/bashrc

# copy it to the tablet
adb push bashrc /data/media/0/.bashrc

weitere Einstellungen

Je nach persönlichen Vorlieben könnten jetzt noch weitere Einstellungen sinnvoll sein:

  • Sprachen & Eingaben - Bildschirmtastatur - Android-Tastatur - Einstellungen - "Bei Tastendruck vibrieren" - ausschalten
  • Sprachen & Eingaben - Bildschirmtastatur - Android-Tastatur - Einstellungen - "Ton bei Tastendruck" - ausschalten
  • Sprachen & Eingaben - Bildschirmtastatur - Android-Tastatur - Darstellung & Layouts - Design - Material Dark
  • Töne - Andere Töne - Töne bei Berührung - ausschalten
  • Töne - Andere Töne - Bei Berührung vibrieren - ausschalten
  • Datenschutz - LineageOS-Statistiken - Statistikaufzeichnung - ausschalten
  • Display - Ruhezustand - Nach 1 Minute ohne Aktivität
  • Suche (Lupe rechts oben) - "sperr" eingeben - "Ein/Aus sperrt Gerät" - ausschalten
  • Automatisch sperren - nach 30 Minuten
Einstellungen zum Sperren des Bildschirms über die Suche

Einstellungen zum Sperren des Bildschirms über die Suche

Fernsehen

Zum Fernsehen auf dem Tablet muss natürlich WLAN eingerichtet werden. Danach können die Links zu den Livestreams von ARD und ZDF im Verzeichnis "Movies" gespeichert werden.

Hinweis: Diese Links sind vom Oktober 2018. In Zukunft könnte es sein, dass sich die Links ändern und nicht mehr funktionieren.

# log in to the tablet
adb shell

# become root
su

# create directory for the TV streams
mkdir /data/media/0/Movies/streams
cd /data/media/0/Movies/streams

# download ZDF
wget https://zdf1314-lh.akamaihd.net/i/de14_v1@392878/master.m3u8 -O zdf.m3u8

# download ARD
wget https://daserstehdde-lh.akamaihd.net/i/daserstehd_de@629196/master.m3u8 -O daserste.m3u8

# in VLC you can use "Verzeichnisse" - "Movies" - "streams"

Dann den VLC Media Player starten und im Menüpunkt "Verzeichnisse" - "Movies" - "streams" daserste.m3u8 oder zdf.m3u8 auswählen.

Streams in VLC

Streams in VLC

zusätzliche Apps (optional)

Nur Firefox und VLC reichen als Apps nicht immer aus. Deshalb schreibe ich hier noch einige Empfehlungen für nützliche Open-Source Apps aus dem kostenlosen App-Store F-Droid.

Opensource Apps

Opensource Apps bei F-Droid

Für eine neue App, die auf das Internet zugreifen soll, muss nach meinem Konzept explizit eine Firewallregel zum Startskript hinzugefügt werden. Für OpenStreetMap sieht das zum Beispiel so aus:

# log in to the tablet
adb shell

# become root
su

echo >> /data/user/0/x1125io.initdlight/files/userinit.sh
echo "# allow internet access for OpenStreetMap" >> /data/user/0/x1125io.initdlight/files/userinit.sh
echo "iptables -I OUTPUT -m owner --uid-owner \$(stat -c%u /data/data/net.osmand.plus/) -j ACCEPT" >> /data/user/0/x1125io.initdlight/files/userinit.sh

Wichtig dabei ist das Konfigurationsverzeichnis - im Fall von OpenStreetMap wäre das "/data/data/net.osmand.plus/". Über die User-ID des Verzeichnisses läßt sich die Firewallregel erstellen. Etwas komfortabler funktionieren die Firewall-Einstellungen über die App AFWall+.

zusätzliche Verschlüsselung (optional)

Die zusätzliche Verschlüsselung mit cryptsetup funktioniert wie bei CyanogenMod. Der einzige Unterschied ist, dass nach dem Mounten des verschlüsselten Containers wegen security enhanced Linux (SELinux) der Befehl chcon (change security context) zum Ändern der Sicherheitseinstellungen ausgeführt werden muss. Ansonsten kann eine App das gemountete Verzeichnis nicht lesen. Die folgenden Kommandozeilen öffnen einen existierenden Container, der mit dieser Anleitung erstellt wurde.

# create loop back device for encrypted container
losetup /dev/block/loop0 /storage/1234-5678/container.txt

# open the container
cryptsetup luksOpen /dev/block/loop0 decrypted

# create a mount directory:
mkdir /data/media/0/mnt/

# mount the directory:
busybox mount /dev/mapper/decrypted /data/media/0/mnt/

# set security context for mounted directory
# so that it is readable by apps
chcon -v -R u:object_r:media_rw_data_file:s0 /data/media/0/mnt

auf dem Raspberry Pi einloggen (optional)

Gelegentlich möchte ich mich vom Tablet mit meinem Raspberry Pi verbinden. Damit das ohne Eingabe des Passworts funktioniert, müssen vorher die SSH Schlüssel ausgetauscht werden.

# generate ssh keys with RSA on the tablet without password
ssh-keygen -t rsa -f /data/.ssh/id_rsa -N ""

# append the public key of the tablet ...
cat /data/.ssh/id_rsa.pub

# to the authorized keys of the raspberry pi
vi /home/pi/.ssh/authorized_keys

# now you can log in to the raspberry pi
ssh -i /data/.ssh/id_rsa pi@hostname_of_pi

# create an alias to log in via command line
echo "alias pi='ssh -i /data/.ssh/id_rsa pi@hostname_of_pi'" >> /data/media/0/.bashrc

Dateisystem erkunden (optional)

Um das Dateisystem zu erkunden, empfiehlt es sich wie bei CyanogenMod Prüfsummen der Dateien zu speichern, um spätere Änderungen erkennen zu können.

# get directory of the external SD card
export EXTERNAL_CARD=$(echo /mnt/media_rw/[^Ue][^sx][^bt]*)
echo "$EXTERNAL_CARD"

# create a directory for the checksums
mkdir "$EXTERNAL_CARD"/filesystem

# now create the checksums
busybox find / -type f ! \( -path "/sys/*" -o -path "/proc/*" -o -path "/acct/*" -o -path "/storage/*" -o -path "/mnt/*" \) -exec sha1sum {} \; | sort -k 2 > "$EXTERNAL_CARD"/filesystem/$(date +"%F_%H-%M-%S")_checksum.txt

# compress the /data directory for later analysis
tar czvf "$EXTERNAL_CARD"/filesystem/$(date +"%F_%H-%M-%S")_data.tgz /data

Wozu der ganze Aufwand ?

Für das Installieren und Einrichten von LineageOS und der Apps habe ich etwa ein Wochenende benötigt. Neulinge in dem Bereich brauchen vielleicht 3 Wochenenden. Wozu der ganze Aufwand ? Für mich bedeutet LineageOS digitale Freiheit und Souveränität, Unabhängigkeit von Google, Microsoft oder Apple. Wieviel Aufwand dir die digitale Freiheit Wert ist, musst du selbst entscheiden.

Kommentar schreiben

Ihre Daten werden verschlüsselt übertragen. Der Kommentar wird gelesen und eventuell veröffentlicht.
Wenn der Inhalt des Kommentars oder Teile des Kommentars nicht veröffentlicht werden, dann werden die gespeicherten Daten nach maximal 4 Wochen gelöscht. Um zukünftigen Missbrauch der Kommentarfunktion zu verhindern, werden die zum Kommentar gehörenden IP Adressen maximal 4 Wochen gespeichert.