Tablet: Kernel 5.6.8+ behebt USB Problem

Wer ein Surface Tablet mit Linux hat, kennt das Problem seit Kernel 5.5.8: Das Typecover konnte man nicht abziehen, weil es nicht wieder erkannt wurde, wenn man es dransteckte.

Tablet: Kernel 5.6.8+ behebt USB Problem

Ein Kernelfix in 5.6.8+ behebt das TypeCoverproblem für Linux, wie ich heute mit 5.6.11 nachweisen konnte:

Damit dürften auch andere, verwandte USB Probleme, die u.a. im Bugtracker von Redhat aufgelaufen sind, endgültig behoben sein: https://bugzilla.redhat.com/show_bug.cgi?id=1813530

Da hatten sich sogar Leute von ArchLinux gemeldet, weil Google das so schnell im RedHat Bugtracker gefunden hatte 🙂

Wie wir diesem Kommentar entnehmen können, scheint „The Big Boss“ nicht ganz unbeteiligt gewesen zu sein:

If I assume that this issue has been appeared on 5.4.23 and fixed on 5.6.8, the candidate related commits are:

  • issue introduced by commit
    torvalds/linux@8099f58
    („USB: hub: Don’t record a connect-change event during reset-resume“)
  • and fixed by commit
    torvalds/linux@9f952e2
    („USB: hub: Fix handling of connect changes during sleep“)

Wenn ich den ersten Commit richtig interpretiere, hatte da wohl beim Abschalten jemand nicht geprüft, ob er wirklich im Sleep war. Wenn man dann natürlich Geräte abzieht und das ignoriert wird, muß man sich nicht wundern, wenn man die dann nicht mehr benutzen kann. Was ich mich aber wirklich frage ist, wieso der Fix soooooo lange gebraucht hat, bis es gefixt wurde. Das ist ja schliesslich nicht nur bei Exotenhardware wie Linux-Surface-Tablets aufgefallen.

Siehe auch: https://github.com/linux-surface/linux-surface/issues/119#issuecomment-628598029

 

Linuxtablet: NetFlix mit echten Tabletfeeling

Wer hat ein Android Tablet und nutzt da NetFlix oder irgend eine andere Video-App drauf? Vermutlich fast jeder, behaupte ich mal keck 🙂 Ok, was haben ein Linux Surface-Tablet und Android Tablet nicht gemeinsam?  😀

NetFlix mit echten Tabletfeeling

Ist ne blöde Frage, weil so fast alles. Worauf ich heute hinaus möchte ist, daß es keine native NetFlix-App gibt. Wie unterschiedet sich eine native NetFlix App zu, sagen wir mal, einem Browserfenster unter Linux in dem man ja auch NetFlix schauen kann? Nun, der Browser landet nicht sofort auf dem Startbildschirm von NetFlix. Es würde erstmal ein Fenster aufgehen, dann würde man sich einloggen und dann erst bei der Wiedergabe gäbe es vielleicht Fullscreen Video. Das unterscheidet sich von einem Android Tablet, weil da startet man NetFlix und ist „drin“.

So 100prozentig bekommen man das leider nicht hin, aber bis 99.9% würde schon gehen 🙂

Wir brauchen

Für dieses Beispiel brauchen wir einen gültigen NetFlixlogin, einen aktuellen FireFox, ein eigenes Desktopfile und ein eigenes Profil für Firefox mit dem wir spielen können 🙂 Am besten macht Ihr Euch jetzt mal eine Konsole auf ( gibt Leute die nennen das Terminal ):

Schritt 1 – Zugangsdaten besorgen

Wer seine Zugangsdaten nicht anderweitig gesichert hat(dringend empfohlen), der kann sich diese aus seinem aktuellen Firefox Profil kopieren:

Firefox starten -> Einstellungen Menü -> Sicherheit & Datenschutz -> Gespeicherte Zugangsdaten -> nach Netflix suchen.

Pro-Tip: KDE Connect ist das Tool, daß Euch diese Daten auf dem Desktopbrowser direkt auf Mobile Endgerät transportiert. Einfach auf dem Desktop „markieren & kopieren“ (CTRL-C) und auf dem verbundenen Mobilgerät „einfügen“. Fertig. So einfach ist Interkonnektivität und verschlüsselt wars auch 😉

Schritt 2 – ein neues Profil anlegen

Wir starten jetzt mal den Firefox mit der Option „-P“ aus der Konsole:

Wir sehen den Firefoxprofilemanager mit zwei Profilen, eines ist benannt: Netflix Mit „Create Profile“ legt Ihr das NetFlix Profil an. Vergesst aber nicht, daß Ihr den Haken bei „benutze ausgewähltes Profile beim Start“  weg zu machen, weil das nicht unser neues Defaultprofil werden soll, sondern ausschließlich für NetFlix da ist.

Schritt 3 – Firefox konfigurieren

Zunächst installiert in das Profil mal „NoScript“ rein und schaltet es auch ein. Dann ruft Ihr https://www.netflix.com  auf und aktiviert im Noscript alle nötigen Punkte für NetFlix. Das ist deswegen wichtig, weil der Firefox, solange Netflix offen ist, ggf. Webseitenöffnungen an sich zieht und dann würden die frei laufen, ohne das NoScript das verhindert. Nun installiert Ihr noch das „NetFlix 1080p“ Addon, damit Ihr unter Linux die HD Wiedergabe habt. Da wir nur Netflix brauchen, sind wir fast fertig.

Wichtig ist „mir“ noch, daß  in die „about:config“ geht, nach „Picture-“ sucht und die beiden „True“ Treffer vom Picture-in-Picture abschaltet. Das ist rein optional, aber sieht später besser aus im NetFlix Betrieb. Picture-in-Picture kurz PIP, ist dafür das, daß man ein Video aus der Webseite ausgliedert und es beim weiteren Studium der Webseite sehen kann. Dies kommt aber in unserem Benutzermodell schlicht nie vor, daher würde das kleine blaue Button einfach nur die Ästhetik stören 😉

Ich rate an dieser Stelle dazu, sich mal bei NetFlix einzuloggen und den DRM Support zu aktivieren. Falls was schief geht, hat man noch die Browser UI zur Hand mit der man alles ändern kann, was wir jetzt gleich ändern werden 🙂

Schritt 4 – Desktopfile anlegen

Kommen wir zum „interessanten“ Teil der Aktion, dem KISOK-Modus von Firefox. Der Kioskmodus ist genau dafür da, daß man einen PC irgendwo hinstellen kann und niemand kann an den PC ran, während der eine Webseite mit Infos anzeigt. Sehr praktisch, findet man z.B. immer in Computerläden als Suchmaschine für Produkte des Ladens.

Um den Modus zu aktivieren müssen wir Firefix mit der Option „–kiosk“ starten. Der Browser startet dann im FullScreenmodus ohne Adresszeile und Fensterrahmen. „F11“ funktioniert dann nicht, so daß man den Browser nicht in den Fenstermodus zwingen kann um Ihn zu umgehen. Das geht natürlich trotzdem, aber der Punkt interessiert heute nicht 🙂

Damit wir ein ICON zum Starten von NetFlix ( oder jedem anderen Dienst, den wir so nutzen wollen) bekommen, legen wir ein Desktopfile im Schreibtisch an:

Dateiname: ~/Schreibtisch/netflix.desktop

Da schreibt Ihr das hier rein:

[Desktop Entry]
Version=1.0
Name=NetFlix
GenericName=NetFlix
Comment=Browse the Web
Exec=firefox %u –new-instance –kiosk -P netflix https://netflix.com/browse
Icon=/home/marius/Bilder/netflix-logo.png
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true
Categories=Network;WebBrowser;
Keywords=web;browser;internet;
X-Desktop-File-Install-Version=0.23

Wer sich ein NetFlixLogo von der NetFlix Webseite abspeichert und nach ~/Bilder/ als „netflix-logo.png“ sichert, der hat mit den obigen Einstellungen gleich das berüchtigte N auf dem Desktop prangen. Normalerweise muß man jetzt das Icon anklicken und die Ausführung als Desktopfile erlauben. Bei Gnome heißt der Punkt „Allow Launch“. Einfach draufdrücken und beim nächsten Doppelklick startet NetFlix dann im Kioskmodus im NetFlix Profil.

Weil wir ein eigenes Profil dafür haben, können wir darin alle Cookies von Netflix gespeichert lassen und erleben das, was wir auf dem Android-Tablet auch hätten. Wir starten NetFlix im Fullscreen, loggen uns einmal ein und bleiben eingeloggt, selbst wenn Ihr das Gerät über Nacht abschaltet. Wenn das nicht zu 99.99% dem Android-Tablet Erlebnis von NetFlix entspricht, weiß ich auch nicht weiter 😀

Der einzige Schönheitsfehler ist die fehlende OFFLINE Runterladerei der Filme. Wenn Euer Surface aber genug Leistung hat, könnt Ihr jeden NetFlixfilm auch so abspeichern. Das ist viel praktischer, weil man es dann auch auf einem anderen Gerät sehen kann.

Wie kommt Ihr aus dem Kioskmodus wieder raus?

Wenn Ihr Gnome als Desktop habt, so wie ich Euch das seit März 2019 predige, dann ist der Ausgang nur einen Wisch, vom linken Rand nach Rechts, weg. Und deswegen ist Gnome, der Touchdesktop bislang 😀  Mit einer Tastatur ist das natürlich viel einfacher, weil man dann nur die „Super“ Taste drücken muß, manche nennen das noch die Windowstaste, und schon seid Ihr auf der Desktop-Aktivität. Ein druck auf ALT-TAB  würde das natürlich fast auch bewerkstelligen, aber der geht tatsächlich nur mit Tastatur.

Was Ihr von da aus macht, liegt an Euch. Anders als auf Android, wird die Wiedergabe bei NetFlix nicht aufhören, wenn Ihr in eine andere App wechselt, aber das nervt mich da eigentlich schon seit Anbeginn der Zeit, also nehmen wir das Vorteil einfach mal mit 😀

Falls bei Euch auch der Doppelklick aufs Desktopicon per Touch nicht will

macht folgendes: verschiebt als Root die netflix.desktop vom Schreibtisch nach /usr/share/applications/ . Da liegen alle Programmstarter. NetFlix taucht jetzt in der Anwendungsliste auf und kann so als Favorit ins Dock eingefügt werden. Die Gnomeerweiterung „Dash to Dock“ bringt das dann als intelligentes Dock auf dem Desktop. Wobei, ein linker-Rand-nach-Rechts-Wisch, tut das dann auch 🙂

 

Linux: Surface Tablets und Laptops mit eigenem Kernel-Repo

„Du saga mal, Du hascht doch des Suuhrfaze, gibtsch da scho wos njeues pführ?“ hallte es aus dem mitfünfziger Herrn am Tisch gegenüber. Freundlich, aber bestimmt, machte Ihm mein Sitznachbar darauf aufmerksam, daß er kurz hinter Kiel wäre und folglich kaum zu verstehen sei. Dies schien den Herrn genauso wenig zu stören, wie der Umstand, daß mein Sitznachbar eher andigital veranlagt ist und es sich bei dem Gerät vielmehr um eine kurz Präsentationsleihgabe meinerseits handelte.

Nachdem die beiden Fischköpfe ( wir… vermutlich ) kurz getuschelt hatten, übersetzte eine junge Dame (Bezeichnung Anna-Luisa o7) für uns (daher auch die grobe Entschlüsselung oben) und es entstand eine schöne , wenn auch sehr kurze, Unterhaltung zum Thema: Linux auf einem Surface Pro 4.

Surface Tablets und Laptops mit eigenem Kernel-Repo

„Ja, da gibts was njeues.. ehm.. neues“ und für Euch schalte ich das Gespräch mal auf Allwissenden Erzähler um, sonst darf ich mich in Bayern gar nimmer sehen lassen. Also, Ja Leute, es gibt eine nicht mehr ganz taufrische Entwicklung, die teils sehr erfreulich, weil unheimlich praktisch ist, andererseits leider nicht so ganz funktioniert. Letzterer Teil wird derzeit noch untersucht.

Seit einige Monaten gibt es im Github einen eigenen Prebuild-Kernel für Arch, Debian und Fedora. Den richtet Ihr Euch so für Fedora ein:

  1. Das Repo hinzufügen:

sudo dnf config-manager --add-repo=https://pkg.surfacelinux.com/fedora/linux-surface.repo

2. Den Kernel  installieren:

sudo dnf install kernel-surface surface-firmware surface-secureboot
sudo dnf install --allowerasing libwacom-surface

3. Letztere Anweisung ist eher optional, falls man mit Wacom Probleme hat., was auch die Stifteingabe betrifft.

Surface rebooten, den neuen Kernel auswählen und jetzt kommt es drauf an, ob Ihr ein SP4/SB1 habt oder ein anderes Surfacegerät Euer eigen nennt, denn bei mir (SP4) bootet der Kernel zwar sauber, aber IPTS ist nicht da, was man allerdings für Touchbedienung braucht.  So bin ich kaum einen Schritt weiter als mit dem Kernel von Fedora selbst. Ein Problem an dem derzeit gearbeitet wird.

Und da ist auch schon die Lösung … ( sowas von genial den Artikel schon Tage im Voraus zu schreiben 😀 ) … dem mangelnden Touchsupport kann man so begegnen:

[root@surface]# rmmod ipts
[root@surface]# insmod /lib/modules/5.5.8-1.surface.fc30.x86_64/kernel/drivers/input/touchscreen/ipts/ipts.ko.xz singletouch=y

Was man dann so verewigt:

echo „options ipts singletouch=y“ > /etc/modprobe.d/ipts.conf

Man muß aber wissen, das dann der Stiftsupport abgeschaltet ist. Außerdem ist im 5.5er Kernel die Multitouch-Support komischerweise abgeschaltet, wer das braucht, muß den LTS Kernel 4.19 installieren. Ob das bei einem aktuellen Fedora 30/31/32 eine gute Idee ist, mag ich nicht entscheiden wollen. Allerdings hatte der 5.3er noch Multitouch dabei. Da frage ich mich jetzt, wieso das abgeschaltet wurde.

Weniger Energieverbrauch .. vielleicht

Eine andere Sache, die noch untersucht werden muß, ist der anscheinend geringere Stromverbrauch des 5.5.8 Kernels auf dem Surface Pro 4. zunächst sah es eher nach einem Batteryauslesebug aus, weil das Gerät lange auf 100% blieb, aber mittlerweile könnnte auch ein leichter Einspareffekt vorhanden sein. Ich hab das SP4 noch nicht lange genug im Referenzkernel laufen lassen, um da einen Vergleich zu haben. Ich schau nachher mal.

Kameras gehen immer noch nicht

Tja, schlechte Nachrichten für die NSA, die Kameras der Surface Pro 4+ funktionieren immer noch nicht unter Linux, was an sich jetzt schade für reguläre Kameranutzer ist. Dafür soll das Wifi jetzt im 5G Betrieb stabiler sein, was ja auch nicht ganz unpraktisch ist.

Die Sache mit dem Secure Boot

Nachdem ersten Boot, kommt im Bootprozess eine mördermäßig wichtige Einblendung, die einem bei der Installation auch mitgeteilt wird, allerdings steht im Installationshinweis, daß man, WENN MAN danach gefragt wird, ein Password eingeben soll um den signierten Kernel, bzw. dessen Signatur, ins Bios zu bekommen um dann Secure Boot nutzen können. Tja, was soll ich sagen, die Abfrage kam so nicht, denn dazu muß man während ein Timer runterzählt auf eine Taste drücken, sonst wird man auch nicht nach dem Passwort gefragt 🙂

Da ich da noch unsignierte Kernels zum Testen liegen habe, kann ich SecureBoot eh nicht einschalten, insofern ist mir das auch egal 😉 Wenn der neue Kernel natürlich dauerhaft funktioniert, dann kann man das später immer noch mit Hilfe des mokutil erledigen.

Der TypeCover Bug

Zwar prellt das TypeCover nicht mehr, aber dafür funktioniert es auch nicht mehr, wenn man es abzieht und wieder dran steckt. Was ein Problem darstellt, da man das Surface Pro 4 neu booten muß.

Ihr seht, da werden noch einige Fixe nötig werden, bis das stabil läuft.

Kernel <= 5.5.9 mit USB Bug

Besonders für alle Fans von  Surface Pro Linux-Tablets habe ich eine schlechte Nachricht im Bezug auf den Kernel 5.5.8: einige USB Geräte werden nur beim Booten erkannt, später aber nicht mehr.

Kernel <= 5.5.9 mit USB Bug

Die Liste der betroffenen Geräte dürfte bislang eher übersichtlich sein, da z.B. meine USB Maus oder mein USB Gigabit LAN Adapter  von dem Problem nicht betroffen sind. Über die Ursache ist bislang auch noch nichts bekannt, was aber nicht verwundert, da wir das erst heute Vormittag verifiziert bekommen haben.

Was ist denn überhaupt los?

Wenn man das Gerät mit Kernel 5.5.x bootet, wird das Microsoft eigene TypeCover, das ist die Tastatur und das Mauspad, welches auch als Deckel dient, korrekt als USB Device erkannt und funktioniert entsprechend. Allerdings nur so lange, bis jemand das TypeCover abzieht und wieder dransteckt. Dann funktioniert es nicht mehr.  Dabei ist es egal aus welcher Quelle man den Kernel hat, ob er direkt von Fedora oder selbst gebaut ist.

Wie wirkt sich das aus?

Die Ursache dafür, daß das TypeCover nach dem Einstecken an das Gerät nicht mehr funktioniert ist, daß es überhaupt nie vom USB BUS abgemeldet wurde. Das manifestiert sich darin, daß man mit „lsusb“ das Gerät noch sieht, auch wenn es bereits am anderen Ende der Wohnung liegt. Folglich wir es beim Einstecken nicht initialisiert und kann so seinen Job nicht tun.

Gegenmaßnahmen

Wie schnell so einn Satz wie „Derzeit hilft nur ein Reboot.“ obsolete wird. Der Einsatz von Kernel 5.5.9-200 (Upstreambuild) oder 5.4.19 bzw. jedes anderen 5.4er Kernel ohne Sicherheitslücke löst das Problem auch, weil es da nicht auftritt. Somit wurde auch indirekt bestätigt, daß es nur am Kernelcode liegt und nicht an der Installation oder irgendwelchen UDEV Tricks, die sind bei allen Kernels gleich, weswegen man die aus der Gleichung streichen kann.

Der Nachteil beim 5.4.x Kernel ist allerdings, daß er zu viel Strom verbraucht. Es wurden im Leerlauf 12 W gemessen, wo mit einem für Surface gebaute Kernel nur ~5 W verbraucht werden. Das sich das echt fies auf die Laufzeit auswirkt, dürfte jedem klar sein.

Die derzeit im Test befindliche 5.5.9-100 von Fedora löst das Problem noch NICHT.

Update ( 11:55 Uhr )

Wie das so mit Eilmeldungen ist, der Patch in 5.5.9-2 ist nicht stabil. Ein einem Boot funktioniert USB wieder, im anderen nicht. Ich halte Euch auf dem Laufenden, wenn ich was neues erfahre.

 

Caribou durch Onboard ersetzen

Ihr erinnert Euch noch an mein Surface Tablet? Was mich bei Gnome schon seit Monaten nervt ist das OnScreenKeyboard von Gnome: Caribou.

Caribou nervt

Caribou kommt in vielen Situationen auf den Schirm, auch wenn das total unangebracht ist. Verschärfend schiebt es vorzugswiese das Terminal Fenster aus dem Sichtbereich nach oben, was an sich, eine gute Idee ist, wenn man a) beachtet wo da der Inhalt ist und b) es anschließend auch wieder korrekt in den Sichtbereich ziehen würde, wenn die Tastatur ausgeblendet wird. Beides bekommt Caribou praktisch nie sauber hin.

Dazu kommt ein Mangel an Funktionstasten, die man zwangsweise für das Editieren von Eingabefeldern braucht z.b. Cursorsteuertasten. Wer das nicht glaubt, kann ja mal selbst versuchen, eine Eingabezeile bei Firefox zu ändern, wenn da ein 3k+ Display dranhängt. Da ist dann leider nichts mit „genau mit dem Finger anklicken“ 😉

Außerdem ignoriert Caribou angesteckte Tastaturen, die an einem Surface als TypeCover bekannt sind. Dies Verhalten führt zu einem Nervfaktor jenseits von Gut und Böse.

Als Alternative OnBoard installieren.

OnBoard OnScreenKeyboard mit GEdit Texteditor

Die wesentlich bessere Alternative zu Caribou ist OnBoard, da diese Tastatur voll funktionsfähig ist. Sie erkennt Hardwaretastaturen, kann Steuertasten und andere Funktionstasten einblenden, bietet verschiedene Tastaturlayouts an und beugt sich in Größe und Position dem Willen des Benutzenden. Alles in Allem ist OnBoard die derzeit beste Wahl, wenn da nicht Caribou wäre…

Jetzt fragt Ihr Euch bestimmt, wie ich das meinen könnte. Naja, das ist ganz einfach. Auch wenn OnBoard aktiv ist, hält das Caribou nicht von seinen Mätzchen ab. Das geht sogar soweit, daß man zwei, sich überlagernde Tastaturen bekommt.

Jetzt kommt Ihr bestimmt mit: „Dann schalte die doch einfach im Barrierefreiheitsmenü aus.“. Glaubt Ihr echt das wäre simple? Das stört Caribou bzw. Gnome nicht im geringsten, ob da die Bildschirmtastatur erwünscht ist oder nicht. Sie kommt trotzdem.

Zum Glück gibt es da Abhilfe:

https://extensions.gnome.org/extension/992/onboard-integration/

Das Addon schaltet Caribou aus und ersetzt es mit OnBoard. Diese Tastatur muß natürlich vorher installiert worden sein: „sudo dnf -y install onboard“

OnBoard beschreibt sich selbst so:

„Onboard ist eine Bildschirmtastatur, die für alle nützlich ist, die keine Hardware-Tastatur verwenden können; z.B. TabletPC-Benutzer, mobilitätseingeschränkte Benutzer…

Sie wurde mit dem Gedanken der Einfachheit entworfen und kann ohne Konfiguration sofort verwendet werden, da sie das Tastaturlayout vom X-Server lesen kann.“

und da könnte was dran sein, weil sie tatsächlich ohne viel Aufwand läuft. Es ist allerdings sinnvoll, wenn man am Anfang noch die Sache mit der Hardwaretastatur klärt:

Man sieht das Einstellungsfenster von Onboard mit dem MS Typecover

Geräte, die als Eingabegerät zählen, aber nicht stören, kann man hier auf Ignorieren stellen.

Fest steht, daß OnBoard all die Funktionalität hat, die Caribou eigentlich haben sollte um als Vorzeigebildschirmtastatur gelten zu können. Das jüngst in Caribou hinzugekommene Smiley-Fenster reicht da leider nicht aus.

Eine Anwendung für OnBoard, die Caribou in absehbarer Zeit nicht erfüllen wird, hat ein Benutzer der Gnome-Erweiterung OnBoard-Integration so kommentiert:

„Works great for me on GNOME 3.32.1 on Ubuntu 19.04.
Very much appreciated as I’m able to use ctrl in touch-mode with my Lenovo X1 Yoga while using Krita without a keyboard – nice!“

Eins muß man allerdings als Nachteil hinnehmen: OnBoard funktioniert nicht für die Suche nach Programmen und Daten, wenn man die Super-(Windows)taste gedrückt hat. Da muß man (noch) zwangsweise Caribou für aktiviert haben 🙁