USB4BSD — «neuer» USB Treiber für FreeBSD

Wen USB gelegentlich unter FreeBSD in die Verzweiflung treibt, kann passieren, für den gibts USB4BSD. Dieser Treiber wurde 2004 geforkt und weiterentwickelt, arbeitet auch nicht unter GIANT Lock. Meine Razor Eraser Maus z.B. weigerte sich mit anderen USB-Geräten im Betrieb zu funktionieren, d.h. ein zugestecktes/abgezogenes USB Gerät sorgte für eine Kernel Panic etc. Gut bei anderen lief es einwandfrei, das Problem liegt da wohl in der Kombi Maus (mit Tastatur-Emu), Bios von Asus und dem Treiber. Jedenfalls klappts nach dem Einspielen dieses Treibers (ich nutze die SVN Version) einwandfrei. Nebenbei existiert dieser Treiber auch für NetBSD.

Als erstes sollte man subversion installieren, falls es noch nicht vorhanden ist, portinstall subversion


svn --username anonsvn --password anonsvn \
checkout svn://svn.turbocat.net/i4b

Damit wird der aktuelle Code heruntergeladen.


cd i4b/trunk/i4b/FreeBSD.usb
make S=../src package
make install

Damit wird in das Verzeichnis gewechselt und der FreeBSD Kernel-Code gepatcht. Übrigens ist es auch leicht wieder möglich den Code zu entfernen, ein make deinstall genügt. Bei jedem CVSupdate der Sourcen, wird der gepatchte USB-Teil natürlich überschrieben. CVSupdate und Kernelbau en detail, ist hier beschrieben.

Ist der Patch vollzogen, muß noch die Kernel-Config angepaßt werden, man fügt device usb hinzu (in /usr/src/sys/i386/conf) und kompiliert den Kernel.


cd /usr/src && make buildkernel installkernel KERNCONF=GENERIC

Wer einen Dualcore oder ein SMP System besitzt fügt hinter make noch ein –j3 hinzu und der Kernel wird in Windeseile kompiliert 😉

Die Angabe des Dateinamens bei KERNCONF= richtet sich nach der eigenen Wahl. Standard ist GENERIC, man sollte sich jedoch eine Kopie mit den eigenen Einstellungen anfertigen, z.B. cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/CUSTOM — editiert man CUSTOM, so muß dieses bei KERNCONF=CUSTOM stehen.

Ein beherztes reboot startet den Rechner neu und danach sollte alles klappen :)

Der Grund für Giant lock und die Beseitigung von diesem?

Nun Multiprozessorsysteme1 arbeiten mehrere Threads ab, da kann es passieren, bei entsprechender Software, das die Koordination fehlschlägt z.B. beim gleichzeitigen Zugriff auf Daten — ergo muß ein Mutex her. Um dem abzuhelfen existieren bis zur Beseitigung des Problems sogn. Giant Locks (aka Mutex), die natürlich nicht ideal sind, aber den sauberen Systemablauf gewährleisten. Prozesse die nebenher laufen, können also nicht gleichzeitig auf Daten zugreifen. Kurz, eine nicht erwünschte Behelfskrücke im System 😉

  1. Mehr zum FreeBSD SMPng hier []

, , ,

Eine Antwort zu “USB4BSD — «neuer» USB Treiber für FreeBSD”

  1. […] UNIX, Linux, BSD, Kultur, Technologie | 27. Oktober 2008 Vor bald zwei Jahren berichtete ich über das noch recht beschauliche Projekt USB4BSD. Dieses schickte sich an einige Hürden des FreeBSD-USB-Stacks gekonnt auszumerzen (u.a. MPSAFE). […]

RSS-Feed abonnieren