Isso pode levar um pouco de extrapolação, mas use o valor de "Velocidade" em system_profiler
Por exemplo, olhando para o receptor USB da Logitech (para o mouse e o 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
Observando o valor "Velocidade", ele diz que é um dispositivo USB 1.1. Fazendo a mesma pesquisa para o meu disco USB do Seagate FreeAgent Go, recebo o seguinte:
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)
Ele me diz que tem uma velocidade de 480 Mb / s, que é um dispositivo USB 2.0.
Você não precisa produzir todos esses dados extras, estou apenas usando-os para fins ilustrativos; em vez disso, você pode reduzi-los à linha que contém o valor da velocidade:
$ system_profiler SPUSBDataType | grep Seagate -A5 | grep Speed
Speed: Up to 480 Mb/sec
Para referência, as velocidades / especificações do USB são as seguintes:
USB 1.x - 12Mb / s
USB 2.0 - 480 Mb / s
USB 3.0 - 5Gb / s
USB 3.1 - 10Gb / s
lsusb
e sonhos de refazer-lo para MacOS :: github.com/gregkh/usbutils/blob/master/lsusb.c