USB-Probleme in OS X 10.11

Seite 2: Ursachenforschung

Inhaltsverzeichnis

Auslöser der Probleme ist in den meisten Fällen der USB-Stack, also die Komponente des Betriebssystems, die sich um die Kommunikation mit der Peripherie kümmert. In den Release Notes zu OS X 10.11 erläutert Apple, man habe ihn in El Capitan „komplett neu designed“, um Stabilität und Performance gegenüber OS X 10.10 zu verbessern. Dennoch habe sich nicht viel geändert: Anwendungen, die IOUSBLib-APIs ­verwenden, sollten ebenso unverändert funktionieren wie Treiber, die von IOUSBDevice und IOUSBInterface Gebrauch machen.

Ganz so einfach ist die Sache aber nicht, denn manche Funktionen arbeiten anders als zuvor, haben neue Namen bekommen oder sind weniger tolerant, wenn es um Fehler oder Schludrigkeiten geht.

Trotz komplett neu geschriebenen USB-Stacks sollen laut Apple alle Geräte wie bisher funktionieren – eigentlich …

Das fängt schon bei einfachsten Faktoren wie der Kabelverbindung an: Ein Entwickler berichtete uns, dass El Capitan seiner Erfahrung nach viel empfindlicher auf minderwertige Kabel reagiere. Hochfrequente Einstrahlungen durch Laserdrucker, Trafos von Halogenlampen und Ähnlichem brächten OS X 10.11 ebenfalls leicht aus dem Tritt. So komme es zur unzuverlässigen Erkennung von Geräten.

Die hat noch einen weiteren Grund, denn Apple hat offenbar an der Benennung von USB-Services gedreht: Projekte, die bislang die API-Funktion IOServiceGetMatching­Services verwendet haben, um USB-Geräte vom Typ Communication Device Class (CDC) zu erkennen, erhalten in El Capitan unter Umständen eine leere Ergebnisliste zurück – IOServiceNameMatching(„AppleUSBCDC“) beschreibt keinen bekannten IO-Service mehr.

So hat etwa der Entwickler des EggBot, einer Art Arduino-betriebener Drucker, der sphärische Objekte bemalen kann – etwa Ostereier – , in seinem Code auf die Geräte-Erkennung via pyserial umgestellt, um dem Problem aus dem Weg zu gehen und weiterhin seriell kommunizieren zu können. Auch Node.js, eine serverseitige Plattform zum Betrieb von Netzwerkanwendungen, scheint betroffen gewesen zu sein.

Das mit El Capitan eingeführte Sicherheitsfeature „System Integrity Protection“, oft schlicht „rootless“ genannt, soll Schadsoftware (oder unbedachte User) davon abhalten, Systemdateien zu verändern. Zu diesem Zweck verhindert es Veränderungen an bestimmten Ordnern. In diese Verzeichnisse wollen offenbar manche Gerätetreiber schreiben – und werden von SIP daran gehindert. Mal bricht die Installation mit einer Fehlermeldung ab, mal läuft sie kommentarlos durch, doch am Ende funktioniert die Hardware nicht. Hier sind die Anbieter in der Pflicht, ihre Treiber so anzupassen, dass sie sich an Apples Vorgaben halten.