Date: Fri, 13 Sep 2002 14:25:05 +0100 From: Bruce M Simpson <bms@spc.org> To: hackers@freebsd.org Subject: VMware 3: usbdevfs support Message-ID: <20020913132505.GD28076@spc.org>
next in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Guys,
One of the 'neat features' of VMware 3.x is the ability to map unclaimed
USB devices into a virtual machine, and run the driver for the device
within the virtual machine.
In order to do this, VMware scans /proc/bus/usb under Linux. We don't have
this usbdevfs, so I've begun sketching some notes out about how we might
go about adding such support, which are in the attached NOTES file.
I would appreciate it very much if you could have a look over this and let
me know your thoughts/feedback.
Many thanks
BMS
(pissed off at yet another proprietary mp3 player with Windows drivers)
[-- Attachment #2 --]
fstab entry on Linux:
none /proc/bus/usb usbdevfs noauto 0 0
fstab entry on FreeBSD:
usbdevfs /compat/linux/proc/bus/usb usbdevfs noauto 0 0
XXX: needs a mountpoint 'bus' inside procfs!
Paths look like this under fsroot:-
/compat/linux/proc/bus/usb
|
|---/%03d (bus ID)
| |
| |- /%03d (device ID)
|
|---/devices
|
\---/drivers
This yields:-
typedef enum {
Proot /* filesystem root (root) */
Pdevices /* list of devices on all buses (regular file) */
Pdrivers /* list of loaded USB drivers (regular file) */
Pbus /* a directory containing all devices on a given bus */
Pdevice /* a USB device which is a child of Pbus */
} usbfstype;
Pdrivers should always contain: 'usbdevfs' and 'hub'
Under a bus node, 001 is almost always present as the root hub on the bus.
Lines in 'devices' file:
T beginning of a device entry (bus, level, prnt(?), port, count, dev, spd, mxch)
B bandwidth statistics/allocation
D device information, version, class
P product ID, vendor ID
S strings presented by the device (SerialNumber, Product et al)
C Configuration descriptor
I Interface descriptor
E Endpoint descriptor
opendir /
-> Enumerate available USB buses from within the kernel
opendir /%03d
-> Enumerate available devices on each bus
open /%03d/%03d
-> Map opens of Pdevice onto the appropriate ugen instance in
the kernel device tree.
-> Map ioctls in a similar manner.
-- what about claimed devices?
modprobe usbserial --> 'serial' visible in /dev/usb/drivers list.
modprobe usb-storage --> usb-storage in drivers
-- usbdevfs makes no distinction between them but will report
unclaimed devices as I: ... Driver=(none)
-- How to emulate; does VMware use this?
-- Hardcode to 'usbdevfs' and 'hub' for the time being.
-- Possibly also include 'claimed' as a shorthand to
indicate device is claimed by some BSD USB class driver.
-- Assumes VMware only looks for '(none)'.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020913132505.GD28076>
