Запуск декількох веб-камер USB в Debian / Linux призводить до наступної помилки:
libv4l2: error turning on stream: No space left on device
VIDIOC_STREAMON: No space left on device
Те, що спочатку здавалося проблемою програмування в OpenCV, перетворилося на пошуки загадкової проблеми апаратного / програмного забезпечення після того, як були створені ті самі помилки за допомогою сиру та xawtv.
Мабуть, це викликано веб-камерами, які вимагають усієї доступної пропускної здатності на хост-контролері USB. Маючи це на увазі , я вирішив запустити Wireshark і capinfos , щоб побачити, як багато трафіку використовується одна камера.
4 megabits per second at 320x240
14 megabits per second at 640x480
32 megabits per second at 1280x720
Цікаво! Це може пояснити, чому працюють дві камери розміром 320x240, але будь-яка більш висока роздільна здатність виходить з ладу. Так, ніби мій USB-контролер працює тільки зі швидкістю USB 1, але lsusb показує обидва веб-камери, що належать до пристрою, який нібито підтримує 480 мегабіт в секунду.
Одне рішення запропонувало змусити веб-камери обчислювати їх пропускну здатність, а не вимагати їх максимуму, виконавши наступні команди:
sudo rmmod uvcvideo
sudo modprobe uvcvideo quirks=128
На жаль, це не мало значення, тому я вирішив спробувати інше рішення. Публікація в StackOverflow запропонувала сказати моїм веб- камерам використовувати нижчий FPS або стислий формат відео, наприклад MJPEG, але після запуску списку v4lctl не з’являється жодна з моїх веб-камер, що підтримують зміну свого режиму відео.
І ось там я застряг. Чому дві веб-камери, що працюють значно нижче максимальної швидкості USB 2, призвели до цієї помилки?
ps: Це не проблема дискового простору, df не відображає змін при запуску веб-камер.
pps: Якщо це має значення, ось вихід lsusb