On Linux, usbmon is the way to go. (wireshark notes)
It's even possible to use Linux's usbmon to sniff Windows devices, by running Windows under a QEMU VM inside Linux.