Table of Contents

USB Buskoppler

Dies ist das zweite Video zu meiner Klipper CAN Reihe. In diesem Video erkläre ich euch wie USB Bus Koppler funktionieren und wie man sie einrichtet. Zudem wird erklärt, wie ihr neue Firmware kompilieren könnt und wie ihr beim U2C / UTOC Board die extra “USB”-Hardware verwenden könnt.

YouTube Video #49


Übersicht

Auswahl einer Liste mit verfügbaren USB Buskopplern

BTT U2C

U2C 1.x

U2C 2.x

UCAN

Makerbase UTC

Makerbase CANable-MKS

Mellow Fly UTOC


CAN Druckerboard

Auch normale Druckerboard oder Kopfboards können als USB Koppler verwendet werden. Wichtig ist dabei folgendes:

Ein EBB36 oder EBB42 kann also recht problemlos dafür verwendet werden, um einen USB Bus Koppler zu ersetzen - auch wenn dabei natürlich eine Menge Funktionen von dem Board ungenutzt bleiben.

Das ganze funktioniert deshalb, weil Klipper in dem Fall als USB to CAN bus bridge eingesetzt wird.

Linux Tools

Netzwerk einrichten

Damit der Adapter im Betriebsystem auch erkannt wird muss eine Netzwerk Interface Konfiguration (/etc/network/interfaces.d/can0) angelegt werden.

txqueuelen

“txqueuelen” ist eine Einstellung für die Übertragungswarteschlange (englisch: Transmission Queue Length) eines Netzwerkinterfaces in Linux-basierten Betriebssystemen.

Die txqueuelen-Einstellung bestimmt die maximale Anzahl von ausgehenden Netzwerkpaketen, die in der Warteschlange des Interfaces gespeichert werden können, bevor sie tatsächlich übertragen werden. Eine höhere txqueuelen-Einstellung kann die Leistung des Netzwerkinterfaces verbessern, indem sie die Übertragung von Paketen beschleunigt, insbesondere bei hoher Netzwerklast. Allerdings kann eine zu hohe txqueuelen-Einstellung auch zu einer höheren Latenzzeit und zu einem erhöhten Speicherbedarf führen. Die optimale Einstellung hängt von den spezifischen Anforderungen des Netzwerks und der Anwendung ab, die das Interface nutzt.

Die Angaben zu txqueuelen variieren von Anleitung zu Anleitung. Oft finden sich Werte im Bereich von 256-1024. Viel höher sollte man sicher auch nicht gehen.

Netzwerk Restart

Wenn der USB Stecker vom Buskoppler abgezogen wird, geht der CAN Bus sofort offline. Mittels ip a ist er dann auch nicht mehr sichtbar. Um nicht immer das ganze System neu zu starten kann nach dem erneuten Verbinden des Buskopplers folgender Befehl genutzt werden:
sudo systemctl restart networking.service

Firmware

Als Firmware für die USB Bus Koppler kann entweder candleLight oder Klipper (USB to CAN bus bridge) eingesetzt werden. Grundsätzlich würde ich eher auf die candleLight Version gehen. Denn die ist speziell für den Einsatz als USB Bus Koppler entwickelt worden. Zudem unterstützt sie (Stand Mai 2023) auch mehr Hardware als Klipper.

Ein weiterer Nachteil von Klipper sind nötige Firmware Updates. Es kommt von Zeit zu Zeit vor das ein Klipper Update relevant ist. Dann müsste auch der Buskoppler wieder mit einer Klipper Firmware upgedatet werden.

Ein Nachteil bei candleLight ist derzeit das es zwei Versionen gibt. Eine für den STM32F072 und eine für den STM32G0B1. Es gibt Bestrebungen diese beiden Versionen zusammenzuführen, aber wann das genau passiert bleibt abzuwarten. Also Obacht beim Firmware kompilieren und installieren!

Hinweis zu candleLight
Leider gibt es nicht wirklich viele brauchbare Informationen welche candleLight Firmware nun genau genutzt werden muss. Wenn man candleLight kompiliert (ohne extra Parameter) entstehen 8-10 verschiedene Firmware Versionen. In der Erklärung zum Firmware kompilieren zu STM32F072 und STM32G0B1 gibt es jeweils eine (wenn auch unvollständige) Liste welcher Typ genutzt werden sollte. Wenn man das selber rausfinden möchte hier ein paar Tips:

candelight (STM32F072)

candelight (STM32G0B1)

Klipper (STM32F072)

Klipper kann ebenfalls als Firmware für den Buskoppler verwendet werden. Hierbei kommt der USB/CAN Bridge Mode zum Einsatz, der in der Compile Konfiguration ausgewählt werden muss. Die folgende Anleitung zeigt exemplarisch wie das für das U2C V1.x funktioniert. Für andere Boards muss das CAN Interface ggf. angepasst werden! Hier sollte der Schaltplan zu Rate gezogen werden um die richtige Konfig zu ermitteln für die USB und CAN Pins!

Es wird hier auf den Einsatz von CanBoot verzichtet. Das macht die Installation nur unnötig komplex.

Klipper (STM32G0B1)

Hinweis
Klipper kann bei diesem Controller noch nicht als USB/CAN Bridge verwendet werden. Die Pins PB5/PB6 stehen in der Klipper make Konfiguration nicht zur Auswahl!
Es blebt also nur die candleLight Variante.
Ein Pull Request bei Klipper ist dafür in Vorbereitung. Die Funktion sollte also in den nächsten Wochen / Monaten zur Verfügung stehen.

Flashen

Zum Flashen wird der DFU Mode verwendet. Dafür gibt es auf allen Boards immer einen BT0 oder Boot0 Taster. Um das Board in den DFU mode zu bekommen geht man wie folgt vor:

Das Board kann dann geflasht werden mit der passenden Firmware.

candleLight
Hier findet man im Ordner ~/candleLight_fw/build die kompilierte Firmware. Je nach make Variante hat die Firmware Datei einem anderen Namen. Wurde die Firmware als Beispiel mit make budgetcan kompiliert, dann lautet der Dateiname der Firmware budgetcan_fw.bin. Der Befehl zum Flashen des Boards würde dann so aussehen:
dfu-util -R -a 0 -s 0x08000000:mass-erase:force -D ~/candleLight_fw/build/budgetcan_fw.bin

Klipper
Wurde Klipper als Firmware für den Buskoppler kompiliert lautet der Flash Befehl wie folgt:
dfu-util -R -a 0 -s 0x08000000:mass-erase:force -D ~/klipper/out/klipper.bin

Hersteller Firmware
Wurde eine Hersteller Firmware aus dem Internet geladen lautet der Flash Befehl wie folgt:
dfu-util -R -a 0 -s 0x08000000:mass-erase:force -D <DATEINAME>
<DATEINAME> muss dabei durch den Dateinamen der Firmware ersetzt werden.

U2C / UTOC extra Hardware

Diese Boards haben extra 2 USB-Ports mitten auf dem Board. Es sei an dieser Stelle darauf hingewiesen, dass das keine realen USB-Ports sind! Vielmehr dienen diese Ports nur dazu, Druckerboards ohne Transceiver zu verbinden. Beide Boards haben dafür 2 zusätzliche Transceiver aufgelötet. Wenn man nun ein Board wie das Spider oder das Octopus verwendet, können diese über ein USB-Kabel mit dem Buskoppler Board verbunden werden. Über das USB-Kabel werden dann die CAN_RX und CAN_TX Leitungen vom µController übertragen. USB wird hier also nur für die Leitungen zweckentfremdet. Die Druckerboards werden dann mit einer Klipper Firmware kompiliert, wo die CAN Leitungen die gleichen sind wie die USB Leitungen. Jetzt muss am Buskoppler ggf. noch der 120Ohm Widerstand gesetzt werden und vermutlich die VBUS Spannung (vorher am Druckerboard nachmessen, ob dort nichts anliegt !!).


Das U2C Board ist per USB mit dem Raspberry Pi verbunden (1). Über das andere USB-Kabel (2) werden nur die CAN Daten des µControllers übertragen.

Nachteile

Jumper

CAN_OUT

Die CAN_OUT “Ports” bieten die Möglichkeit, 2 CAN Geräte ohne Transceiver anschließen zu können. Dafür müssen aber 2 Voraussetzungen erfüllt sein:

  1. Die CAN Pins und USB Pins müssen übereinstimmen (Die CAN_RX und CAN_TX Daten werden dann über das USB-Kabel übertragen - aber nicht als USB Device !). Beispiel Spider Board:
  2. Die USB Pins müssen direkt mit der USB Buchse verbunden sein (µController → USB Buchse)