É possível consultar programaticamente o uso atual da largura de banda do controlador USB?

4

Estou usando três webcams Logitech C920 com mjpg-streamer . A configuração funciona muito bem, mas acabei de perceber que ela não é dimensionável. Comecei a encontrar problemas de largura de banda ao aumentar a taxa de quadros do meu favorito de 5 FPS para 10 FPS e superior (o que seria mais ou menos equivalente a adicionar outra webcam). Basicamente, eu não percebi o 480Mbit / s o limite teórico foi por controlador USB 2.0; Eu pensei que era por porta. Isso me fez pensar que a publicidade teórica USB 2.0 velocidades como 480Mbit / s é enganosa, mas considerando que eu não li as especificações USB eu vou resolver com o fato de que era puramente uma suposição ingênua da minha parte.

Eu sei que o quadro em que eu montei isso, o Intel DN2800MT , tem apenas um controlador USB 2.0:

gw1 ~ # lsusb -t | grep ehci
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/8p, 480M

Mas também sei que minhas webcams Logitech C920 suportam decodificação h264 acelerada por hardware:

gw1 ~ # v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
Index       : 0
Type        : Video Capture
Pixel Format: 'YUYV'
Name        : YUV 4:2:2 (YUYV)

Index       : 1
Type        : Video Capture
Pixel Format: 'H264' (compressed)
Name        : H.264

Index       : 2
Type        : Video Capture
Pixel Format: 'MJPG' (compressed)
Name        : MJPEG
Portanto, eu deveria ser capaz de criar uma solução alternando as webcams para o modo h264, pois acredito que usaria menos largura de banda (e, é claro, use um programa diferente para buscar as imagens, mas deixe isso para mim mais tarde. )

Dado tudo isso, existe alguma maneira de descobrir quanto da largura de banda total disponível de um controlador USB está sendo consumida atualmente? Isso simplesmente me ajudaria a colocar alguns números em minha experiência com essa configuração. Minha intuição é provavelmente, mas não é tão fácil assim. Se alguém puder lançar alguma luz sobre isso, eu adoraria saber.

    
por Milos Ivanovic 18.10.2013 / 16:35

1 resposta

0

Existe uma ferramenta 'pv' que você pode baixar se não tiver.

$ cat /dev/zero | pv > /media/your_usb/tmpfile

lhe dará a velocidade na qual o arquivo 'tmpfile' é escrito através do seu controlador usb.

$ cat /media/your_usb/tmpfile | pv > /dev/null

lhe dará a velocidade na qual o mesmo arquivo é lido.

    
por 01.05.2014 / 06:39