Re: Exposing vendor-specific ACM channels to userspace as tty devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux