Esto puede requerir un poco de extrapolación, pero usa el valor de "Velocidad" en system_profiler
Por ejemplo, mirando el receptor USB Logitech (para mi mouse y el segundo teclado):
$ system_profiler SPUSBDataType | grep Logitech -A5
Vendor ID: 0x046d (Logitech Inc.)
Version: 12.01
Speed: Up to 12 Mb/sec
Manufacturer: Logitech
Location ID: 0x14200000 / 3
Current Available (mA): 1000
Current Required (mA): 98
Extra Operating Current (mA): 0
Mirando el valor de "Velocidad", me dice que es un dispositivo USB 1.1. Haciendo la misma búsqueda para mi disco USB Seagate FreeAgent Go, obtengo lo siguiente:
system_profiler SPUSBDataType | grep Seagate -A5
Vendor ID: 0x0bc2 (Seagate LLC)
Version: 1.48
Serial Number: 2GE7WLWG
Speed: Up to 480 Mb/sec
Manufacturer: Seagate
Location ID: 0x14320000 / 23
Current Available (mA): 1000
Current Required (mA): 100
Extra Operating Current (mA): 0
Capacity: 500.11 GB (500,107,861,504 bytes)
Me dice que tiene una velocidad de 480Mb / s, que es un dispositivo USB 2.0.
No tiene que generar todos esos datos adicionales, solo lo estoy usando para fines de ilustración, en su lugar, puede limitarlo a la línea que contiene el valor de velocidad:
$ system_profiler SPUSBDataType | grep Seagate -A5 | grep Speed
Speed: Up to 480 Mb/sec
Para referencia, Velocidades / especificaciones de USB son las siguientes:
USB 1.x - 12Mb/sec
USB 2.0 - 480Mb/sec
USB 3.0 - 5Gb/s
USB 3.1 - 10Gb/s