Re: CDC ACM composite gadget serial not working between Linux and Windows?

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

 



On Wednesday 17 June 2009, Daniel Ng wrote:
> I've found this comment in f_acm.c, 2.6.27:
> 
>  * Note that even MS-Windows has some support for ACM.  However, that
>  * support is somewhat broken because when you use ACM in a composite
>  * device, having multiple interfaces confuses the poor OS.  It doesn't
>  * seem to understand CDC Union descriptors.  The new "association"
>  * descriptors (roughly equivalent to CDC Unions) may sometimes help.
> 
> Does this mean I will not be able to successfully connect a Linux box
> to a Windows PC via the Linux box's CDC ACM composite gadget serial
> driver?

Your terminology is confusing ... "composite gadget" is one name for
a framework layer, which most of the current interesting drivers use,
but it's not only used for what are called "composite devices".

So for example if you

	modprobe g_serial

you'll get something MS-Windows can cope with:  a single CDC-ACM link.
However:

	modprobe g_serial n_ports=2

gives something MS-Windows *can NOT* cope with:  two CDC-ACM links,
each fully conformant to the CDC ACM standard.  (Linux handles them just
fine, which should be no surprise.)  That is a kind of Composite Device.
(One that not all hardware can implement, FWIW.)

Plus Kconfig shows a "CDC Composite Device (Ethernet and ACM)" which
is something else.  It's also a Composite Device, one CDC-ACM link
and one CDC Ethernet link.  I suspect MS-Windows won't like that either.


> Also, there are direct references to the composite driver in f_acm.c,
> which tells me the following:
> 
> -In Linux (2.6.27), a CDC ACM gadget serial driver MUST be a composite
> driver as well.
> 
> Is this true? If so why is such tight coupling required?

See above.  You're mis-understanding.  It uses the composite framework,
which affects interop no more than a server's use of kmalloc() affects
whether IE6 can talk to it.

The comment in f_acm is mostly a heads-up that interop with MS-Windows
can get really messy, because their USB stack wasn't exactly structured
around the organizing principles in the USB spec.


--
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