Der ultimative USB-Typ-C-Switch: Bi-direktional, computergesteuert und Open Source

Hier bei Codethink arbeiten wir seit über einem Jahrzehnt für zahlreiche Kunden an der Verbesserung ihrer Build-, Integrations- und Testpipelines.

Ein Teil dieser Arbeit ist die Automatisierung von Tests für komplexe eingebettete Systeme, wie z. B. Unterhaltungssysteme für Autos. Wir waren auf der Suche nach einem USB-Switcher, der das Einstecken und Entfernen von Mobiltelefonen und Speichergeräten für ein solches System simulieren konnte. Wir konnten auf dem Markt nichts finden, das erschwinglich genug war, um den Kauf von Hunderten davon für unsere Kunden zu empfehlen, also beschlossen wir, unseren eigenen zu bauen.

(Bildquelle: Codethink)

Worum handelt es sich?

Einfach ausgedrückt handelt es sich um ein Gerät, das programmgesteuert kabelgebundene Verbindungen zwischen USB-C-Geräten trennen, verbinden und umschalten kann. Der Switch ist so konzipiert, dass er über voll funktionsfähige USB-C-Anschlüsse verfügt. Das bedeutet, dass alle Funktionen und Möglichkeiten eines typischen Typ-C-Anschlusses vorhanden sind, wie Laden, High-Speed- und Super-Speed-Datenübertragung. Dank der bidirektionalen Fähigkeiten können die Benutzer wählen, welcher Anschluss mit dem Host verbunden werden soll, und der gegenüberliegende aktivierte Anschluss wird automatisch für die Verbindung mit einem Peripheriegerät konfiguriert. Dies gewährleistet Sicherheit und leichte Bedienbarkeit.

Wofür können Sie den Switch verwenden?

Dieser Switch ist eine Plug&Play-Lösung für jeden, der die folgenden Funktionen benötigt:

  1. Optimieren von Verbindungen zwischen mehreren Hosts und Peripheriegeräten.
  2. Automatisieren von Tests, für die verschiedene Peripheriegeräte benötigt werden, die nacheinander an einen Host angeschlossen werden. Man könnte Hubs mit dem Switch verwenden, um Verbindungen zwischen mehreren Peripheriegeräten und einem Host zu schalten.

(Bildquelle: Codethink)

Wie sieht es mit der Steuerung aus?

Schließen Sie den Switch einfach über ein USB-C-Kabel an Ihren Laptop an. Stellen Sie mit dem Tool Ihrer Wahl eine Verbindung zum seriellen CDC-Port des Switches her und senden Sie einen der Steuerbefehle an den seriellen Port, um die Schaltfunktion zu starten.

Wie viel von dem Projekt ist Open Source?

Die Hardware ist vollständig quelloffen und wurde mit KiCAD 6 entworfen.

Die derzeit verfügbare Firmware ist kostenlos, verwendet aber die Toolchain und Bibliotheken von ST, so dass wir sie (noch) nicht als freie Software bezeichnen können. Wir arbeiten aber daran, die Firmware auf libopencm3 zu portieren, was es uns ermöglichen wird, sie frei zu lizenzieren.

Zudem haben wir ein Gehäuse entworfen, das per 3D-Druck hergestellt werden kann, um den Switch sicher zu verwahren. Die STL-Dateien für das Gehäuse sind unter CC by SA 4 lizenziert.

(Bildquelle: Codethink)

Möchten Sie sich selbst ein paar Switches zulegen?

Wenden Sie sich an unser Vertriebsteam, um mehr darüber zu erfahren, wie wir von Codethink Ihnen helfen können, diesen Switch in Ihre Hardware- und Software-Testroutine zu integrieren.

Wenn Sie selbst einen bauen wollen, sind nur ein paar Klicks nötig. Befolgen Sie die nachstehenden einfachen Schritte:

  • Hardware:
    1. Klonen Sie das Hardware-Repositorium.
    2. Laden Sie die Gerber-, BOM- und Platzierungsdatei aus dem Produktionsordner auf die Website eines Platinenherstellers Ihrer Wahl hoch.
    3. Bestellen Sie so viele, wie Sie wollen!

Sobald Sie die Hardware für den USB-Switch haben, ist es an der Zeit, die Firmware zu flashen.

  • Firmware
    1. Erstellen Sie die Firmware auf Ihrem lokalen Rechner, indem Sie das Firmware-Repository klonen und die in der README-Datei beschriebenen Schritte zur Erstellung befolgen.
    2. Schließen Sie den Programmierer (ST-LINK) an den SWD-Port an und verwenden Sie den ST-CUBE Programmierer zum Flashen.

Die Dateien für das Gehäuse befinden sich im Hardware-Repositorium unter dem Ordner „case“. Sie können das Gehäuse mit den bereitgestellten STLs selber im 3D-Druck herstellen oder auch online bestellen!

Über den Autor

Codethink provides software engineering and consultancy services to Electronic Companies, Technology Providers, and Service Infrastructure Operators throughout Europe, Asia, and the USA, working across various industries and verticals. Focusing on system-level engineering, they develop and maintain system-level software infrastructure. Traditionally specializing in Linux, Embedded systems, and Open Source, they deliver on extremely difficult and technically complex projects and have expertise from critical embedded devices to cloud-scale infrastructure.

More posts by Codethink
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum