USB ist sicherlich der derzeit größte Schwachpunkt von FreeBSD. Seien es buchstäblich hunderte von Bugs, eine ganze Reihe von Problemen mit Hardware, Ärger bis hin zu Abstürzen und faktische Unnutzbarkeit von USB auf einigen Mainboards. Schon lange war der von Hans Peter Selasky geschriebene HPS-Stack, auch bekannt als USB2, ein Geheimtipp, der die Sache deutlich nutzbarer machte, wie von Windows oder Linux gewohnt. Schon vor einiger Zeit wurde spekuliert, dass dieser Stack nach jahrelangem Hin und Her nun vielleicht in FreeBSD eingehen könnte, da der Leidendruck einfach zu groß wird.
Nun ist es soweit, USB2 wird demnächst in -CURRENT einfließen. Er wird den alten Stack allerdings nicht ersetzen, stattdessen parallel zu diesem verfügbar sein. Erst mit FreeBSD 9.0 in einigen Jahren soll der alte Stack entfernt werden. Dies ist ein Kompromiss aus der jahrelangen Debatte, ob man ein halbwegs funktionierendes Subsystem wirklich durch ein ganz neues, mit weitgehend unbekannter Codebasis ersetzen soll.
Die Mail:
Eine kurze Zusammenfassung der Neuerungen:
Nun ist es soweit, USB2 wird demnächst in -CURRENT einfließen. Er wird den alten Stack allerdings nicht ersetzen, stattdessen parallel zu diesem verfügbar sein. Erst mit FreeBSD 9.0 in einigen Jahren soll der alte Stack entfernt werden. Dies ist ein Kompromiss aus der jahrelangen Debatte, ob man ein halbwegs funktionierendes Subsystem wirklich durch ein ganz neues, mit weitgehend unbekannter Codebasis ersetzen soll.
Die Mail:
Code:
Date: Tue, 19 Aug 2008 12:44:13 -0700
From: Alfred Perlstein <alfred@freebsd.org>
To: current@freebsd.org
Cc: usb@freebsd.org
Subject: HEADSUP new usb code coming in.
After a long period of review and testing I am on the verge of
committing Hans Peter's new usb stack to -current.
The patchset requires a SMALL _493_ line diff to the main code,
mostly bug fixes to arm. And then a large number of new files
for the usb system.
The new usb system will be committed as separate files with
the intention of folding them over the old files before the
9.0 release.
The diff to the main files is here:
http://mu.org/~bright/usb2/usb2_release_001.diff
The whole diff, including new files is here:
http://mu.org/~bright/usb2/usb4bsd.diff.gz
FAQ:
Q. Has this been reviewed?
A. Yes, pretty strongly by myself and we've consulted with
various others, Warner, Scott and Andrew for review/testing.
I wouldn't say that Warner or Scott have given full review
but just about all questions have been answered.
Q. Can we change the name from "usb2_" to my favorite name?
A. No. This is for a short period, stop being so annoying.
Q. What about the old usb code?
A. What about it? :D
Q. What about ttys?
A. I don't know, we'll address the mpsafe aspects of ttys shortly,
Hans is very responsive to SMP issues.
Q. Shouldn't you wait?
A. Wait for what? No.
Eine kurze Zusammenfassung der Neuerungen:
Code:
- Full support for Split transactions, which means you can use your full
speed USB audio on a high speed USB HUB.
- Full support for HS ISOC transactions, which makes writing drivers for
various HS webcams possible, for example
- Full support for USB on embedded platforms, mostly cache flushing and
buffer invalidating stuff.
- Safer parsing of USB descriptors.
- Autodetect of annoying USB install disks.
- Support for USB device side (and a handful of USB device side chips)
- Support for USB transfers like I/O vectors, means more throughput and less
interrupts.
- New UGEN backend and libusb library, finally solves the "driver unloading"
problem.
- A new USB API.
- Many USB drivers are now running Giant free.
- Linux USB kernel compat layer.
- ... see the FreeBSD quarterly status reports