On Tue, Feb 07, 2017 at 07:28:40PM +0100, John Skelton wrote: > > From: "Greg KH" <greg@xxxxxxxxx> > > On Tue, Feb 07, 2017 at 06:56:20PM +0100, John Skelton wrote: > > > > From: "Felipe Balbi" <felipe.balbi@xxxxxxxxxxxxxxx> > > > > > I'm particularly interested in drivers/usb/core/config.c > > > > > which appears to enforce the USB specification by refusing to allow a > > > > > low speed CDC ACM. (Comment "Some buggy low-speed devices ...", at > > > > > about line 300.) > > > > > > > > > > However, such devices exist and some are potentially quite useful (such > > > > > as Arduinos & digistump). Various people have posted about not being > > > > > able to use them with Linux and I think the above file is the reason > > > > > (another well known OS family allows them). > > > > > > > > Here's the comment: > > > > > > > > /* Some buggy low-speed devices have Bulk endpoints, which is > > > > * explicitly forbidden by the USB spec. In an attempt to make > > > > * them usable, we will try treating them as Interrupt endpoints. > > > > */ > > > > > > > > The code isn't forbidding CDC ACM low speed devices, it's forbidding > > > > Bulk endpoints on Low speed, which don't exist :-) Are you saying there > > > > are Bulk endpoints on low speed Arduinos? > > > > > > Yes - or I may have misunderstood the situation. > > > > > > It is code which is derived from V-USB > > > https://www.obdev.at/products/vusb/index.html > > > and is described at > > > http://www.recursion.jp/prose/avrcdc/cdc-232.html > > > > > > If it worked with Linux it would be a handy way to provide output (such as > > > debug data) from low-cost Arduinos and such like via USB. > > > > > > To be clear: I am not saying the Linux USB code is wrong. But it would > > > be good to have a way to have the above kind of code work, such that > > > screen / minicom etc can be used with it. > > > > > > > That page says that any kernel newer than 2.6.31 should work just fine, > > have you tried this out and had it fail? > > It does say that but it does not work. I get the dev_warn message that it > has changed the Bulk endpoint to Interrupt but that's it. What happens after that? Does the cdc-acm driver refuse to bind? Any other types of error/warning messages? Doing this type of thing really isn't a good idea for the obvious reason that hubs might just die a horrible death. Who knows what a USB 3 controller would do with a low speed device like this as well (hubs are crazy complex, and low speed makes them really sad.) You would be better off spending a few cents and getting a better USB device controller. It will save everyone here, and yourself, a lot of time and money... thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html