Renesas USB 3.0 Controllers vs. Linux

USB 3.0 extension cards based on Renesas uPD720202 chipset appear to be somewhat problematic when Linux is used as operating system. This may also apply to other Renesas USB chipsets as well. This post is about the difficulties I experienced when trying to use such an extension card with Linux, and a tool to upload required firmware to the chipset.

Preface

The uPD720202 chipset requires additional firmware to operate. It must be either uploaded by the driver during initialization, or can be stored on an external EEPROM. Its open to the vendor to choose one of these options. For the first case, there exists a patch for the Linux kernel driver for this chipset to support uploading the firmware image at boot time. But apparently, this patch never made it into the kernel and I have not found the firmware image in the linux-firmware repository. Apparently, at least some of the cards equipped with an EEPROM do initially not function properly with Linux, and maybe even with Windows. They are either shipped with no firmware at all, or at least with outdated firmware.

Long story short: My card simply did nothing but pause the boot process for about 30 seconds until the driver gave up, complaining about being unable to setup the card and quitting with exit code -110:

Feb 5 19:43:18 atom kernel: [ 33.285715] xhci_hcd 0000:02:00.0: can’t setup: -110
Feb 5 19:43:18 atom kernel: [ 33.285944] xhci_hcd 0000:02:00.0: USB bus 6 deregistered
Feb 5 19:43:18 atom kernel: [ 33.286142] xhci_hcd 0000:02:00.0: init 0000:02:00.0 fail, -110
Feb 5 19:43:18 atom kernel: [ 33.286199] xhci_hcd: probe of 0000:02:00.0 failed with error -110

Dead ends …

So the question is: With which kind of extension card am I dealing with? The datasheet of the uPD720202 chipset provides information about some useful registers. The „External ROM Access Control and Status Register“ suggests that my card is equipped with EEPROM, since the „External ROM Exists“ bit is set (in fact, it is the only bit set after boot):

root@atom:~# setpci -s 02:00.0 f6.w
8000

So my first take was to update the firmware of the chipset. Sadly, I was unable to find any working tool which would enable me to upload the firmware into the EEPROM for Linux, even though the process itself is documented quite well in the datasheet of the chipset. In the end, I grabbed an old harddisk and installed Windows on it to be able to install the firmware which was kindly shipped with the driver disk. Pretty much hassle to be able to use a extension card … but at least, it works now? Well, not exactly. The card stops to work with Linux after the power supply is removed. Either the Windows driver does some magic to initalize the card, or the card is not really equipped with an EEPROM and needs to get a firmware upload at boot time?

… and working solutions quirks

The firmware upload functionality works independently from the firmware EEPROM, according to the chipset datasheet. More interestingly, uploaded firmware takes precedence over the firmware stored in the EEPROM. What if this could be done with Linux, too? During my research, I already stumbled upon a blog post discussing the possibility to interface with the chipset using „setpci“. Furthermore, some source code posted in the comments section claimed to implement the EEPROM read and write procedures outlined in the datasheet. This code, whose unknown author I would like to thank a lot, turned out to be a good starting point. I did some major refactoring, cleanup and bugfixing and implemented the firmware upload functionality according to the datasheet. And this did the trick! After uploading and re-initializing the driver, the card became fully functional.

upd72020x-load

The tool for uploading the firmware is called upd72020x-load and available from a GitHub repository. Refer to the README.md file for usage information. For my purposes, I also added the script check-and-init which scans for all uninitialized uPD720202 devices and tries to upload the firmware to them. I integrated the script into the boot process so I do not have to think about uploading the firmware at all. The firmware itself is not included, but it is easily possible to extract the firmware image from the updater for Windows.

upd72020x-load works for me, however: Use it at your own risk!

Closing Remarks

My card is equipped with the uPD720202 chipset. There exists a different version of this chipset, called uPD720201, which differs only in the number of USB ports provided. Especially, the procedures required to upload the firmware or to read and write the EEPROM are identical. However, i did not test upd72020x-flash with any of those extension cards. In any case, please report any bugs you might encounter.

Lebenszeichen

Einige Zeit ist seit dem letzten Beitrag vergangen. Die Neuerungen von darktable 2.4.x blieben ebenso unkommentiert wie Tatsache, dass inzwischen darktable 2.6.0 veröffentlicht wurde. Und auch diverse andere Themen über die ich hätte schreiben können oder wollen, haben es nicht weit über das Stadium einer Notiz hinaus geschafft.

Zukünftig will ich vermehrt veröffentlichen, vor allem Bilder die in der Vergangenheit ebenfalls auf der Strecke geblieben sind. Die Kategorie ist etwas optimistisch „Picture of the Day“ getauft, täglich wird es sicher keine neuen Bilder geben. Aber vielleicht stellt sich eine gewisse Kontinuität ein?

Das erste Bild der Reihe wird später sicher Teil einer eigenen Galerie zu meiner Schottland-Reise 2018 sein. Aber bis dahin:

Neues von darktable: Version 2.2.5

An dieser Stelle möchte ich kurz auf das ganz frisch auf GitHub veröffentlichte darktable 2.2.5 hinweisen, nachdem ich die Version 2.2.4 bereits übergangen habe. Beide Veröffentlichungen beheben einige (kleinere) Fehler, erweitern oder verbessern die Kameraunterstützung im speziellen und einige andere Funktionen im Allgemeinen. Die offizielle Ankündigung sollte in nächster Zeit auch auf der offiziellen Website von darktable erfolgen.

Und noch ein kleiner Blick in die Zukunft: Es wird schon eine Weile darüber diskutiert, Mitte des Jahres die nächste größere Version, das wäre dann darktable 2.4.0, zu veröffentlichen. Mehr dazu folgt dann hoffentlich zeitnah an dieser Stelle …

darktable-Nachtrag: Version 2.2.3

Die kürzlich veröffentlichte darktable-Version 2.2.2 hat einen Fehler mit sich gebracht, welcher zu Abstürzen führte. Die zügig herausgegebene Version 2.2.3 behebt dieses Problem zusammen mit zwei weiteren.

Wie bei darktable üblich folgt die offizielle Ankündigung erst einige Tage nach der Fertigstellung einer Version, um die Verfügbarkeit von aktuellen Binärpaketen für die unterstützten Linux-Distributionen zu gewährleisten.

Neues von darktable: Version 2.2.2

Wie zu vielen Themen habe ich auch zu darktable habe ich schon längere Zeit nichts mehr geschrieben. Inzwischen ist die Ende 2015 erschienene Version 2.0, die neben diversen technischen Änderungen „unter der Haube“ unter anderem eine Druckfunktion, neue und verbesserte Bildbearbeitungsmöglichkeiten und eine Unterstützung für neue Kameramodelle mit sich brachte.

Ende 2016 folgte dann darktable 2.2.0. Zu den wesentlichen Neuerungen zählte eine automatische Perspektivkorrektur, das „Verflüssigen“-Werkzeug, eine verbesserte Funktion zur Wiederherstellung ausgebrannter Spitzlichter und CLUT-Unterstützung zur Manipulation der Farbwiedergabe (etwa zur Film-Emulation).

Jetzt steht Version 2.2.2 vor der Tür, die einige Fehler behebt und eine grundlegende Unterstützung für weitere Kameras mit sich bringt.

An dieser Stelle möchte ich noch auf ein neues Projekt hinweisen: Es wird zur Zeit versucht, ein Archiv mit RAW-Dateien möglichst vieler Kameramodelle aufzubauen. Die Entwickler von darktable bitten hierbei um Hilfe. Ein solcher Bestand hilft dem darktable-Team und der ganzen Open-Source-Gemeinschaft bessere Software zu entwickeln. Mit rawsamples.ch gab es bereits zuvor eine ähnliche Sammlung, beachtliche Teile dieser gingen aber nach einem Angriff auf die zugrundeliegende Datenbank verloren.

So wird das nichts …

Morgens auf dem Weg zur Arbeit. Ein Podcast begleitet mich, das Smartphone halte ich in der Hand. Meine Laune ist gut, das Wetter auch. Die Sonne scheint. In einer Grünanlage spricht mich ein grauhaariges Mütterchen an und hält mir Flyer mit Überschriften wie „Verlust“, „Trauer“ und „Schmerz“ entgegen. Sorry liebe Zeugen, aber so wird das nichts. Auch wenn eure Flyer QR-Codes haben …

Zwei Minuten für die Netzneutralität

Für Eilige: Wie offen und frei das Internet in Europa in Zukunft sein wird, entscheidet sich bald. Unter SaveTheInternet.eu kann man sich in wenigen Minuten bei der EU-Regulierungsbehörde für ein freies Internet aussprechen. Die Zeit drängt, die Frist endet am 18.07.!

Die Netzneutralität, also die Gleichbehandlung aller Pakete im Internet unabhängig von Inhalt, Absender oder Empfänger, ist ein hohes Gut. Sie ist eine wichtige Grundlage für das Internet wie wir es heute kennen: Offen für jeden, kleine und große, private, gemeinnützige oder kommerzielle Angebote. Für neue Dienste, neue Ideen ist die Einstiegsschwelle sehr niedrig: Eine Verbindung ins Netz, ein Anbieter, genügt.

Eine Abweichung vom Prinzip der Netzneutralität eröffnet den großen Netzbetreibern neue Vermarktungsmöglichkeiten. Audio- oder Videostreams ruckeln beim Kunden? Kein Problem, gegen Aufpreis wird gerne eine bevorzugte Behandlung geboten. Letztendlich handelt es sich hierbei um bezahlte „Überholspuren“, die primär deshalb erforderlich sind, weil die Netzinfrastruktur nicht ausreichend ausgebaut wird. Die Betreiber würden also den selbst verursachten Engpass monetarisieren, was sicherlich keinen Anreiz für einen schnellen Netzausbau darstellt. Und monetarisiert wird, indem Diensteanbieter, und letztendlich damit auch die Kunden, doppelt bezahlen: Zum einen für den Anschluss ins Internet mit der theoretischen Möglichkeit einen Dienst zu nutzen, und zum anderen die „virtuelle Maut“ für an der Durchleitung der Daten beteiligte Netzbetreiber.

Eine EU-Verordnung mit dem Ziel die Netzneutralität festzuschreiben wurde 2015 beschlossen. Massive Lobbyarbeit der Netzbetreiber verwässerte diese Verordnung an verschiedenen Stellen deutlich. Die europäische Telekom-Regulierungsbehörde BEREC hat nun die Aufgabe, unscharfe Begrifflichkeiten und schwammige Formulierungen in klare Leitlinien umzusetzen. Im Rahmen einer Konsultation besteht noch bis zum 18.07. die Möglichkeit, auf diesen Prozess einzuwirken und eine starke Netzneutralität in Europa zu fordern. Mit SaveTheInternet.eu ist das mit wenigen Klicks getan, die zwei Minuten sollte ein offenes Internet jedem wert sein! Weiterführende Informationen zu diesem Thema gibt es bei netzpolitik.org!

nonrandom noise im Uberspace

Nach einer zugegebenermaßen etwas längeren Sendepause geht es an dieser Stelle endlich wieder weiter. Das eine oder andere Thema steht auf meiner ToDo-Liste und findet hoffentlich in den nächsten Wochen seinen Weg ins Blog. Dieses ist, hoffentlich zum letzten Mal, umgezogen und gastiert jetzt unter einer eigenen Domain bei Uberspace.

Für Uberspace möchte ich an dieser Stelle kurz die Werbetrommel rühren, denn der Hoster vertritt nicht nur eine sehr sympathische Philosophie sondern glänzt auch durch einen sehr guten proaktiven Support in Form eines umfangreichen Wikis. Uberspace bietet etwas das ich als Shared-Hosting mit Extras bezeichnen würde. SSH-Zugriff auf die Server ist selbstverständlich, ferner sind diverse Compiler vorhanden – Eigene Software jenseits von PHP und MySQL zu installieren und einzusetzen ist ausdrücklich im Konzept vorgesehen. Viele Aufgaben wie das Freischalten von Ports, das Einrichten von SSL-Zertifikaten oder kleinere Konfigurationsänderungen am Webserver können durch Skripte selbst durchgeführt werden, bei anderen Problemchen verspricht der Support schnell und unkompliziert zu helfen.

Kurz: Uberspace ist ein unkonventioneller Webhoster, der nicht versucht seine Kunden durch künstliche Restriktionen zum Kauf dicker Hosting-Pakete zu bewegen.

darktable 1.6.9 ist verfügbar und Version 2.0 naht

Mit Version 1.6.9 wurde diese Woche der wahrscheinlich letzte Ableger des stabilen darktable-Entwicklungszweiges 1.6.x freigegeben. Wenn alles nach Plan läuft, sollen mit darktable 2.0 gegen Jahresende größere Veränderungen Einzug halten. Die jetzt veröffentlichte Version behebt vor allem kleinere Probleme und verbessert die Unterstützung für einige Kameramodelle.

Sofern nicht anders angegeben, stehen die Inhalte dieses Blogs unter der Lizenz
Creative Commons BY-NC-ND 3.0 Deutschland
Creative Commons Lizenzvertrag