Partnervermittlung: Custom-FTDI und Ubuntu tauschen Ringe!

Tobias Nebel Dieser Artikel wurde von geschrieben. Tobias Nebel hat sein Studium der Telekommunikationsinformatik an der Hochschule für Telekommunikation in Leipzig absolviert. Er arbeitet als Softwareentwickler bei der Firma ubigrate mit dem Schwerpunkt Geräteintegration.

Mit Java als plattformunabhängiger Sprache scheint ja schon alles in Hinblick auf Portierbarkeit von Anwendungen zwischen verschiedenen Betriebssystemen getan zu sein. Doch was ist, wenn mit der der entwickelten Applikation Peripherie angesprochen werden soll? Hier kann ganz schnell Schluss mit der Plattformunabhängigkeit sein. Als Beispiel aus unserer Entwicklungsabteilung seien hier USB-Geräte erwähnt. Doch bevor die Flinte übereifrig neben dem Bett im Kornfeld landet, lohnt sich doch ein genauerer Blick auf die verwendete Hardware und ihren Treiber: Oftmals stellen USB-Geräte nämlich “einfach nur” einen virtuellen seriellen Port zur Verfügung. In vielen dieser Fälle kommt dann ein FTDI-Chip zum Einsatz. Dieser Artikel zeigt, wie Geräte mit einem solchen Chip unter der Linux-Distribution ubuntu zum Funktionieren zu überzeugen sind.

Standardmäßig bringt ubuntu einen Treiber für FTDI als Kernelmodul mit (“ftdi_sio”). Dieses Modul verfügt über eine vordefinierte Liste von Geräten, für die automatisch eine enstprechende virtuelle serielle Schnittstellen eingerichtet wird. Ein Gerät wird in dieser Liste mittels einer Kominationen aus Vendor ID (VID) und Product ID (PID) identifiziert. Obwohl für die komplette Geräteklasse der gleiche Treiber verwendet werden kann, vertreiben viele Hersteller ihre Geräte mit einer eigenen Product ID (PID). Und genau hier können Probleme auftreten: Wenn ein FTDI-basiertes Gerät nicht in dieser Liste auftaucht, so wird auch kein virtueller Port eingerichtet.

Wie erkenne ich, ob mein Gerät den FTDI-Chip verwendet?
Das Kommando lsusb zeigt alle angeschlossenen USB-Geräte. Wenn ein FTDI-Gerät angeschlossen ist, dann sieht die Ausgabe in etwa so aus:

lsusb

Im Beispiel werden zwei Geräte mit FTDI-Chip (–> VID=0403) angezeigt. Davon wird das obere (PID=6001) automatisch installiert, das untere (PID=F60B) jedoch nicht, da dessen PID nicht bekannt ist.
Um ubuntu dazu zu bewegen, einen seriellen Port für das Gerät mit der PID F60B anzulegen ist lediglich das Laden des ftdi_sio Kernelmodules mit der Vendor- und Product-ID durch folgendem Befehl notwendig:

sudo modprobe ftdi_sio vendor=0x0403 product=0xf60b

Danach steht im Verzeichnis /dev sofort eine neue ttyUSBn-Schnittstelle (n als ganzzahlige Nummer) bereit, über die dann auf das Gerät zugegriffen werden kann. Gelegentlich macht das Paket brltty Probleme. Ist dies der Fall, so kann diese Paket mittels des Befehls

sudo apt-get uninstall brltty

entfernt werden.

Nach jedem Neustart des Systems “vergisst” ubuntu seine geladenen Module. Um das Laden des Kernel-Moduls zu automatisieren, reicht der folgende Eintrag in die Datei /etc/modules:

ftdi_sio vendor=0x0403 product=0xf60b

Post to Twitter

Schlagworte:

Hinterlasse einen Kommentar

Name:

eMail:

Website:

Kommentar:

 

google

google

asus