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