Debian / Linux'ta birden fazla USB web kamerasının çalıştırılması aşağıdaki hatayı verir:
libv4l2: error turning on stream: No space left on device
VIDIOC_STREAMON: No space left on device
Başlangıçta OpenCV'deki bir programlama sorunu gibi görünen şey, aynı hataları peyniri ve xawtv çalıştırarak ürettikten sonra gizemli bir donanım / yazılım sorunu arayışına dönüştü.
Görünüşe göre USB host kontrol cihazında mevcut olan tüm bant genişliğini isteyen web kameralarından kaynaklanıyor. Bunu göz önünde bulundurarak tek bir kameranın ne kadar bant genişliği kullandığını görmek için wireshark ve capinfos kullanmaya karar verdim .
4 megabits per second at 320x240
14 megabits per second at 640x480
32 megabits per second at 1280x720
İlginç! Bu, neden 320x240’daki iki kameranın çalıştığını ancak daha yüksek çözünürlüklerin başarısız olduğunu açıklayabilir. USB denetleyicim yalnızca USB 1 hızında çalışıyormuş gibi görünüyor, ancak lsusb , sözde saniyede 480 megabit destekleyen bir cihaza ait web kamerasını gösteriyor.
Web kameralarını, aşağıdaki komutları çalıştırarak maksimumlarını istemek yerine bant genişliği kullanımlarını hesaplamaya zorlamak için bir çözüm önerdi:
sudo rmmod uvcvideo
sudo modprobe uvcvideo quirks=128
Ne yazık ki bu fark yaratmadı, bu yüzden başka bir çözüm denemeye karar verdim. StackOverflow'ta yayınlanan bir yazı , web kameralarımın daha düşük bir FPS veya MJPEG gibi sıkıştırılmış video formatını kullanmalarını önerdi, ancak v4lctl listesini çalıştırdıktan sonra, web kameralarımdan hiçbiri video modlarını değiştirmeyi desteklemiyor gibi görünüyor.
Ve burada sıkışıp kaldım. Neden iki web kamerası maksimum USB 2 hızının çok altında çalışıyor? Bu hatayı üretti?
ps: Bu bir disk alanı sorunu değil, web kameraları başlatıldığında df hiçbir değişiklik göstermiyor.
pps: Bir fark yaratırsa , işte lsusb'un çıktısı