> after looking over the spec, i didn't see this question addressed. do you? > it's a byte, so in theory there could be 255 configurations.
Section 9.6 on device descriptors - this applies to every device, not just hubs. (Although the iMac keyboard does in fact contain a hub.) Yes of course there can be up to 255 configurations. In practice there won't, but the word "bug" in the error message hints that the programmer was aware that it was not particularly good practice to declare a fixed size array instead of looking at bNumConfigurations and allocating an array of the correct size. A large part of the reason the usb keyboard/mouse driver has generated so much embarrassment is that it's got too many fixed size arrays, which keep overflowing when a new raspberry pi user tries another complicated type of mouse or keyboard. A case could be made for just reading in one configuration descriptor and ignoring any others, since as far as I can see every plan 9 usb device driver selects config 0 without checking for other possibilities. But looking at this particular keyboard, I think the flurry of usb i/o errors suggests there's a more fundamental problem than descriptor parsing. That's why I asked whether you'd changed something in your usb kernel driver.