On Tue, 17 Nov 2009, Adrian Taylor wrote: > Hi, > > Nokia S60 phones expose two CDC ACM channels. The first is a modem and > is properly detected by the current cdc-acm driver. The second has a > protocol ID of 0xff ('vendor specific') and /dev/ttyACM* is NOT > currently created for it. > > This second channel is useful, since it's freely usable by third-party > S60 application developers. It's sometimes used for debuggers or, in our > case, remote control tools. At the S60 end, it just acts as a serial > port (as it does on Windows and MacOS X). We should expose it as > a /dev/ttyACM* device so that user-space tools can use it on Linux, too. > > I attach a simple patch which does just that. > > However! It's not that simple. > > The reason is that some Windows Mobile/Windows CE devices support a > remote ethernet protocol called RNDIS, which is build atop CDC ACM. This > sadly uses the same class, subclass and protocol IDs. > > So currently drivers/net/usb/rndis_host.c tries to register for exactly > the same devices. It eventually fails (when usbnet_generic_cdc_bind > determines that it's not a suitable ethernet interface after all). But, > if we create a serial port in cdc-acm, rndis_host doesn't even get a > chance to try. > > What's the best way to allow each driver to have a crack at this > particular interface? The best way is to have each driver probe the interface and check whether it is the right driver. If it isn't the probe should fail with -ENODEV; then the driver core will continue on to probe other drivers. Alan Stern -- 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