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.

 

Update: Fedora: Probleme mit hwdata und Asus Mainboards

Wie bereits vor zwei Tagen mitgeteilt, gibt es bei Fedora ein Problem mit dem Paket hwdata. Darin sind die PCI Ids der Geräte und Hersteller enthalten. Die Quelle der Daten wird bei Github gepflegt und damit betrifft es nicht nur Fedora, sondern alle Distributionen, die Ihre Daten von dort beziehen.

Die Datei oui.txt (Organisational Unit Ids) verursacht dies, offensichtlich sind dort Kennungen falsch eingetragen  oder verloren gegangen, so das Wechselmedien nicht sauber erkannt werden.

Kuriose an der Sache: Der eingesteckte USB Stick war für Root gemountet und nicht für den angemeldeten User.

Wie eine falsche OUI das auslösen kann, wird derzeit geprüft. Ich meine, da liegt ein ziemlich dicker Bug kurz vor seiner Entdeckung.

Linux: auf SD-Karten installieren, gut oder schlecht?

Einem kleinen Experiment gleich, habe ich am Samstag Fedora Linux auf einem i3 Surface Tablet auf einer SD-Karte installiert, da der Besitzer seine WIN-Installation nicht direkt zerstören wollte. Das hat an sich auch geklappt. Leider gab es da ein „kleines“ Problem …

Linux auf SD-Karten und USB-Sticks

Bleiben wir erstmal beim Surface, das normalerweise eine SSD, einen USB-Slot und einen SD-Kartenslot aufweist. Die Installation von Linux auf die SSD ist natürlich die favorisierte Installationsmethode. Jetzt kann man Linux aber auch auf die SD-Karte oder einen USB-Stick installieren und wenn man es nur mal ausprobieren will, ist das ein legitimes Vorgehen. Grub hat das Dualboot auch im ersten Versuch sauber hinbekommen, klasse!

Nun hatte der Besitzer des besagten i3 Surface Pro eine Installation auf die SD-Karte gewünscht. Den Hinweis, daß es auf einer SD Karte natürlich nicht so schnell gehen würde, wie auf einer SSD, hat er akzeptiert. Das Gerät verließ unseren LPD Stand dann auch mit einem aktuellen Fedora 29, RPMFusions MPV, Thunderbird und anderen Apps, was man halt so braucht, mit der Auflage Zuhause dann mal ein Update laufen zu lassen, weil das SD-bedingt ewig dauern würde. Natürlich war es am Mittwoch dann nicht aktualisiert, also haben wir das nachgeholt. Das hätten wir besser nicht gemacht 🙁

Das Update war 1 GB groß und der Download der RPMs noch das kleinste Problem. Die Energieeinstellungen von Gnome waren leider so eingestellt, daß das Gerät irgendwann ausgeht. Da das i3 Surface von 2013 vom aktuellen Kernel voll unterstützt wird, hätte das eigentlich kein Problem sein sollen, zumal ja gerade eh ein Update per DNF läuft. Da würde man annehmen, daß das Abschalten des Bildschirms nicht zu Problemen führt, weil ein Updateinhibitor gesetzt wird. Führte es aber!

Es kam wies kommen mußte…

Die Hardware vom Surface wurde offensichtlich nach einer gefühlten Ewigkeit komplett abgeschaltet und als wir das Tablet wieder aktiviert haben, meldeten die RPMs nur noch IO Fehler. Die Root-Partition sprang wegen eines IO Fehler in den Read-Only-Modus und war auch nicht dazu zu bewegen, daß Read-Write wohl die bessere Wahl während eines Updates wäre. Meine Vermutung: Die Hardwareabschaltung hat den SD-Cardreader wohl überrumpelt und der hat den Schreibschutz von der SD-Karte fälschlich als aktiv gemeldet. Da eine Installation auf einem Read-Only Filesystem nicht funktionieren kann, stoppe DNF dann auch irgendwann… so 200 Fehlermeldungen später 🙁

Ich habe das System schon im Nirvana gesehen und beim nötigen Reboot die Augen zugekniffen 🙂 Es bootete doch tatsächlich noch, was bei Update 650 von 1563 nicht wirklich zu erwarten gewesen ist. Nach dem obligatorischen manuellen Filesystemcheck kam Gnome tatsächlich hoch. DNF ist schlau, aber nicht schlau genug. Natürlich war die RPM Datenbank defekt und mußte repariert werden. DNF aktualisierte dann im Rucksack die restlichen Pakete, als der Besitzer per Fahrrad gen Heimat fuhr. Natürlich hatten wir gelernt und den Akku aufgefüllt und die Energiesparoptionen so angepaßt, daß das hoffentlich nicht nochmal passiert.

Der ganze Update wäre in 5 Minuten durch gewesen, wenn Linux auf der SSD installiert gewesen wäre. Der Besitzer sollte dann Zuhause noch dnf reinstall „*“ ausführen, ob das geklappt hat, erfahren wir dann nächsten Mittwoch.

Sind USB-Stick und SD-Karten wirklich eine gute Idee für Linux?

Nach dieser Erfahrung muß ich sagen : Nein, sind sie nicht. Man kann sich nie sicher sein, ob die Hardware das Speichermedium nach einem Sleep/Hibernate wieder sauber anbietet und das „laufende“ System weiter funktioniert. Ein Strom-Aus für den USB-Port oder den SD-Kartenleser kann halt zu Fehlern führen wie man sieht. Im Gegensatz zum IDE/SATA Port des Mainboards sind USB und SD eben nur untergeordnete Peripherie-Geräte. Da wird von den Kernel- und Treiberentwicklern auch nicht soooooo viel Ambition reingeflossen sein, wie in die Hauptgerätetreiber SATA/IDE/SCSI. Wenn dann noch eine eher exotische Hardware wie ein Surface Pro angesprochen wird, kann es zu dem Fehler kommen.

Dazu kommt, daß die SD-Karte echt lahmarschig war. Für die 650 Updates vergingen locker 2 Stunden. Der USB Port wäre vermutlich schneller gewesen, weil der schafft auch 1 Gb/s aka 120 MB/s. Also, wenn Ihr das vorhaben solltet, und ich rate dringend ab, nehmt einen schnellen USB-3-Stick.

Zum Glück hängt der Besitzer nicht soooooo an Win10, nach einer kleinen Datensicherung und Umpartitionierung von Windows, werden wir wohl auch Linux noch auf die SSD quetschen können. Das wird an sich eine spannende Sache, weil… wie wird Win10 auf den Verlust einer geliebten Partition reagieren? Auch das erfahren wir nächste Woche 😉