Beim Anschluss von Instrumenten über USB unter Linux Betriebssystem wird /dev/ttyACM0 erstellt. Auf den meisten Linux Distributionen beginnt der ModemManager Dienst, diese Schnittstelle zu verwenden, weil er glaubt, dass ein Modem angeschlossen ist und wir nicht mit einem Gerät kommunizieren können.

Es gibt 2 Lösungen für ein Problem:

  1. Deaktivieren Sie den Dienst ModemManager
  2. Verhindern, dass der ModemManager ein bestimmtes USB Gerät verwendet

Deaktivieren Sie den Dienst ModemManager

Versuchen Sie es in der Kommandozeile:

sudo systemctl status ModemManager.service

Wenn es zurückkommt, dass es läuft, müssen Sie es anhalten und deaktivieren.

sudo systemctl stop ModemManager.service

sudo systemctl disable ModemManager.service

Prüfen Sie jetzt, ob sie wirklich deaktiviert ist

sudo systemctl status ModemManager.service

Danach können Sie über /dev/ttyACM0 wie mit jeder anderen seriellen Schnittstelle unter Linux kommunizieren
CODE


Verhindern, dass der ModemManager ein bestimmtes USB Gerät verwendet

Es ist möglich, den ModemManager auf bestimmten Geräten über udev zu deaktivieren. Sie müssen eine neue udev Regel schreiben, um einige Geräte zu überspringen.

Zuerst müssen Sie Ihre usb Vendor ID und Produkt ID aus der Ausgabe von lsusb erhalten:

$ lsusb
Bus 001 Device 003: ID 05ac:8511 Apple, Inc. 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 032: ID 0ca6:a050 Castles Technology Co., Ltd 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
VendorID:ProduktID Kombination steht vor dem Namen des von Menschen lesbaren Geräts oben.

Wenn Ihre VendorID 0c06 und ProductId a050 ist, können Sie die folgenden Regeln in eine neue udev Regeldatei wie /etc/udev/rules.d/99-ttyacms.rules schreiben:

ATTRS{idVendor}=="0ca6" ATTRS{idProduct}=="a050", ENV{ID_MM_DEVICE_IGNORE}="1"
Die magische Aufgabe besteht hier darin, den Umgebungswert ID_MM_DEVICE_IGNORE zu setzen, um den ModemManager zu informieren, das Gerät zu überspringen.

Nachdem Sie neue udev Regeln geschrieben haben, müssen Sie Ihre udev Regeln erneut laden:

$ sudo udevadm control --reload-rules
CODE