On Wed, 28 Jun 2023 13:32:12 +0200, Symbolic Debugger wrote: > > Thanks for the notes. I read the (USB) spec again page 27/28. (well multiple times) and as I understood 1 endpoint has 1 or more multiple Group Terminal Blocks for which GTB each has 1 to 16 groups (group = in/out or bi = similar to one or two midi cables/ports) per terminal block The spec I have is from May 5th, 2020. i wonder how the driver get the Function Block information function blocks are not mentioned in the USB spec. Is there a a newer USB spec? if yes, it may make no sense to develop a device now if the descriptors and USB functions calls changed. Page 28 still refers to MIDI -CI protocol negotiation which already has been removed. It's a bit confusing. Would have been better to first release the updated USB spec before releasing the updated MIDI specs. Basically a UMP EP can have up to 16 groups, and GTB indicates which groups out of those can be managed together. And for the old USB MIDI 2.0 spec, groups in multiple GTBs have to be unique; i.e. if GTB#1 contains the group#1, the group#1 can't be found in another GTBs. OTOH, the new UMP 1.1 spec allows the shared groups by multiple Function Blocks. For explicitly disallowing this new (rather confusing) behavior, "static block" flag was added in the FB info. When this bit is set, the FB is fixed and doesn't overlap, so that it's more or less compatible with GTB. Note that Function Block is a new thing that was defined in UMP 1.1 spec. Naturally it didn't exist in the old USB MIDI 2.0 spec of year 2020. But, the concept of Function Block (and implementation) is rather about UMP, and it's independent from the transport layer; that is, USB MIDI 2.0 spec still applies as is, and won't be updated soon, AFAIK. It's a matter of the driver which information is used as the primary source: FB or GTB. The device should provide both info, in somehow compatible ways. Takashi