Greg KH wrote: > try posting follow-up stuff on the linux-usb-devel mailing list, not the > -user list.
OK then: > On Wed, Dec 13, 2006 at 03:23:31PM +0000, Phil Endecott wrote: >> Dear USB Experts, >> >> I am trying to understand the relative merits of the various >> programming interfaces to the Linux USB system. As far as I can see, >> the current or planned options include: >> >> 1. The kernel device-driver interface (i.e. usb_register()). This >> looks like a fairly simple interface, documented in the kerneldocs >> (though something went wrong when I tried to make a PDF) and also at >> http://www.lrr.in.tum.de/Par/arch/usb/usbdoc/usbdoc.html, which seems >> accurate despite being seveal years old. Lots of example drivers to >> learn from in the kernel source. Seems unlikely to change much anytime >> soon. Being a kernel interface rather than a user-space interface has >> obvious advantages and disadvantages. The "future GPL only" issue will >> matter in some cases. > > What cases would it matter? Only the obvious case of someone writing a non-GPL driver. I mention this only for completeness. >> 2. The usbfs interface. Described in Documentation/usb/proc_usb.txt, >> referring to the lightly-commented header file for details of the >> ioctls. Can anyone point to any more docs or examples? > > The header file is the best example. It's not a very complex interface. Yes, I've been able to understand it OK so far. I take back my "lightly-commented" claim. >> 3. The "lots of ioctls" design of usbfs seems unpopular with some and >> searching the lists suggests that there may be other technical problems >> with the current design, hence a proposed future "usbfs2". This will >> be more like gadgetfs with one inode per endpoint. So is the current >> usbfs "not recommended for new designs"? Is waiting for usbfs2 >> suggested? Is there a useable usbfs2 patch available now? > > It's being slowly worked on. Right now it is a senior project for a > college student, so it might be a while before it shows up in the tree. > Or you are more than welcome to help out with the effort to get it > moving faster. > >> 3. There are numerous usb files in sysfs. Is there any documentation >> for any of this, apart from the generic notes in >> Documentation/kobject.txt and Documentation/filesystems/sysfs.txt? The >> USB FAQ explains the 1-1.3.1:1.0 style of pathnames, but I don't know >> what the files in the leaf directories do. Can I read and write them >> to communicate with the device? > > No. You can only read the different attributes of the device, and in > some cases, change some of the different configuation values of the > device. You don't have "raw" USB data access through sysfs. > >> 4. libusb. Documentation at http://libusb.sourceforge.net/doc. >> Apparently it is geared towards USB1.1. Doesn't support asynchronous >> IO. The current v0.1 API will "soon" be obsoleted by a new v1.0. LGPL >> license. > > It works just fine for 2.0 devices too. > If you have questions about this, please ask it on the libusb mailing > list. > >> Are there other options? >> >> I am currently more concerned about the medium/long term stability of >> the interface and the quality of documentation than the technical >> features. > > Why? Generally speaking, I don't enjoy coding to a badly-documented or frequently-changing interface. I would prefer to code to a stable well-documented interface, even if it were less featureful. (As long as all the essential functionality is present, of course.) > If you are interested in that, I would suggest the usbfs interface, it's > not going away any year soon. Good, I had come to the same conclusion. >> (Having said that, the lack of any asynchronous IO in libusb >> worries me and I don't think any of the user-space interfaces have a >> mechanism to get notifications of new devices like the kernel's "probe" >> callbacks; presumably I need to cooperate with udev to make this work.) > > Why, what exactly are you trying to do? Perhaps explaining what you are > trying to accomplish would help us out in suggesting what you should use I'm genuinely trying to understand what all the options are, and what their strengths and weaknesses are. I find it curious that I have seen relatively few user-space USB device drivers. The only ones that I've used myself are SANE and libftdi. Why is that? For example, I have recently been experimenting with USB/IP, and it's interesting that its "stub driver" end is done in the kernel rather than in a user driver. Why? Would you have done it that way? Regards, Phil. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel