Problem

Die Tams Zentrale lässt sich derzeit (Stand Apr.2012) weder mit der mitgelieferten Software noch mit den von Silicon-Labs bereitgestellten Treibern "right out of the box" am Mac an ihrer USB-Schnittstelle betreiben. Stellt man jedoch mithilfe eines USB-RS232 Wandlers (Kostenpunkt ca. 8 EUR) die Verbindung her, so funktioniert die Kommunikation aber einwandfrei. Ich hatte anfangs einen Wandler von Digitus benutzt. Dennoch wurmt es, wenn man diesen Umweg gehen muss, denn der externe Wandler macht nichts anderes, als der in der MC eingebaute Chip auch macht: Er emuliert eine RS232 Schnittstelle am USB-Port. Diese Problem wurde bislang in mehreren Foren diskutiert, aber noch keine befriedigende Lösung angeboten. Also machte ich mich selbst ans Werk.

Ursache

Der Grund, warum die Schnittstelle nicht funktioniert liegt darin, dass dem USB Chip von SiLabs eine Vendor- und Product-ID (PID, VID) zugeordnet sind, die im Treiber nicht definiert sind.

Lösung

Die Lösung besteht darin, die fehlende PID- und VID-Definition nachzuholen und dem Mac mitzuteilen:

Diese Definitionen gehören in der Info.Plist des Treibers. Dort werden wir also der Einfachheit halber eine Gerätedefinition kopieren und unseren Gegebenheiten anpassen, d.h. neue Namen vergeben und die PID und VID editieren.

Da man hierzu recht betriebssystemnah an den Kernelextensions herumfummelt, sind dort einige Sicherheitshürden zu umschiffen. Alles kann jedoch mit Bordmitteln erledigt werden. Noch einfacher geht es allerdings mit Kext helper b7, einem Programm, dass einem die mühsame Tipperei mit root-Rechten im Terminal abnimmt.

Dieses Vorgehen soll hier zunächst beschrieben werden:

  1. Die Originaltreiber für den MAC von der TAMS-CD installieren

  2. Neugierige überprüfen jetzt mal folgendes:

  3. Kext helper herunterladen und öffnen.
  4. Das erweiterte .kext-file herunterladen (Es ist als ZIP gepackt; daher bitte nach dem Herunterladen noch entpacken). Es enthält neben anderen unveränderten Dateien auch die modifizierte Info.plist.
  5. Die heruntergeladene .kext Datei per drag and drop auf Kext helper ziehen und ablegen
  6. In Kext helper das Admin-passwort eingeben. Wer sehen möchte, was nun genau passiert, der klickt die Checkbox advanced an.
  7. In Kext helper auf EASY INSTALL klicken
  8. Reboot des Systems

Was passiert dabei?

Eigentlich passiert nicht viel. Es wird lediglich in die Info.plist eine neue Device-Definition eingefügt, die den (beliebigen) Namen SiLabsUSBDriver for TAMS trägt und die zugehörigen PID (33087 entsp. 0x813f) und VID (4292 entspr. 0x10c4) beschreibt, wie im XML-code unten dargestellt. Zum Glück ist dies eine XML-Datei und daher halbwegs verständlich zu lesen. Da die Info.plist Bestandteil des .kext-Paketes ist, muss sie innerhalb des Paketes ausgetauscht werden. Dies darf jedoch nur derjenige, der dazu berechtigt ist. Das ist der Systemadministrator mit root-Rechten. Weiterhim muss die Datei von der Gruppe wheel lesbar sein. Man muss sich also etwas mit den Zugriffsrechten abmühen. Weiterhin muss nach der Änderung das System die modifizierten Dateien nochmal laden und dies nicht nur einmalig sondern danach auch bei jedem Systemstart. OS X erkennt anscheinend anhand der Zeitangaben, ob eine Datei erneuert wurde und daher nochmal zu laden ist. Daher müssen wir auch den timestamp entsprechend erneuern. Dies geschieht mittels touch-Kommando.

Wem das gerade beschriebene alles zuviel und oder zu aufwändig ist, der greift dann doch besser zu Kext helper und lässt genau diese Dinge automatisch erledigen.

 
<key>SiLabsUSBDriver for TAMS</key>
		<dict>
			<key>CFBundleIdentifier</key>
			<string>com.silabs.driver.SiLabsUSBDriver</string>
			<key>IOClass</key>
			<string>SiLabsUSBDriver</string>
			<key>IOKitDebug</key>
			<integer>0</integer>
			<key>IOMatchCategory</key>
			<string>SiLabsUSBSerial</string>
			<key>IOProviderClass</key>
			<string>IOUSBDevice</string>
			<key>IOResourceMatch</key>
			<string>IOKit</string>
			<key>IOUserClientClass</key>
			<string>SiLabsUSBUserClient</string>
			<key>USB Product Name</key>
			<string>TAMS Master Control</string>
			<key>bConfigurationValue</key>
			<integer>1</integer>
			<key>bInterfaceNumber</key>
			<integer>0</integer>
			<key>idProduct</key>
			<integer>33087</integer>
			<key>idVendor</key>
			<integer>4292</integer>
		</dict> 
 

Viel Erfolg beim Installieren und viel Spaß beim Betrieb der Tams MC am Mac via USB!

Martin Bultmann


Alle Angaben ohne Gewähr und unter Ausschluss jedlicher Haftung.




Impressum und Erklärung zum Datenschutz