«Не удалось запросить интерфейс на камере: -6» при попытке подключить USB-камеру (Kinect)

5601
rzetterberg

Я установил библиотеку freenect с openkinect.org . С этой библиотекой есть демонстрационное приложение, которое вы можете запустить из терминала, чтобы протестировать Kinect. Однако когда я запускаю эту команду, я получаю следующий вывод:

richard@behemoth:~$ sudo freenect-glview  Kinect camera test Number of devices found: 1 Could not claim interface on camera: -6 Could not open device 

Эта конкретная ошибка генерируется библиотекой libusb функцией libusb_claim_interface, а ошибка -6 соответствует LIBUSB_ERROR_BUSY. Поэтому я предполагаю, что это связано с монтированием usb, а не с freenectбиблиотекой или самим Kinect.

Итак, мой вопрос: как я могу узнать, какой ресурс использует этот интерфейс и как я могу освободить его, чтобы я мог получить к нему доступ?

Редактировать:

Что я пробовал до сих пор (просто чтобы быть уверенным):

  • Rebooted
  • Подключен, подключен
  • Пробовал разные usb порты
  • Перезапустил удев

Дополнительная информация, которая может быть полезна:

/ И т.д. / Fstab:

# /etc/fstab: static file system information. # # Use 'blkid -o value -s UUID' to print the universally unique identifier # for a device; this may be used with UUID= as a more robust way to name # devices that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda1 during installation UUID=1c73f217-ac8d-451b-8390-7a680628a856 / ext4 errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=bb49bd29-07ec-45a0-bbab-46fb8362b06b none swap sw 0 0 

sudo uname -r:

Linux behemoth 3.0.0-14-generic-pae # 23-Ubuntu SMP Пн 21 ноября 22:07:10 UTC 2011 i686 i686 i386 GNU / Linux

cat / etc / lsb-release

DISTRIB_ID=Ubuntu DISTRIB_RELEASE=11.10 DISTRIB_CODENAME=oneiric DISTRIB_DESCRIPTION="Ubuntu 11.10" 
5

4 ответа на вопрос

2
harrymc

У меня нет вашей среды, и я не могу протестировать, но этот отрывок из часто задаваемых вопросов по gphoto, похоже, говорит о том, что это может быть связано с разрешениями, а не с какой-то программой, монополизирующей интерфейс.

Следующая цитата содержит ссылку на главу « Настройка разрешений для портов USB», которую вы можете проверить.

Почему я получаю сообщение об ошибке «Не удалось получить доступ к USB-устройству»?

Вы должны убедиться, что такой модуль ядра не загружен, и что вы правильно настроили разрешения на вашем USB-устройстве, чтобы у вас был (без полномочий root) доступ на запись к устройству камеры. Как это настроить, описано в разделе 4.3 « Настройка разрешений для портов USB» .

Это также может произойти с камерами, которые работают как устройства хранения USB. Яркий пример - если у вас есть камера Olympus, которая автоматически распознается как Olympus C-2040Z. В этом случае вы можете попытаться, если вы запускаете Linux, удалить модуль ядра usb-storage и попытаться использовать с ним libgphoto2. Но, если вы не хотите управлять камерой (не все модели ее поддерживают), это не рекомендуемое решение. Продолжает использовать USB Mass Storage. Некоторые из этих Olympus поддерживают переключение в режим «Управление с ПК» для дистанционного управления с помощью внешней программы, например, использующей libgphoto2.

Спасибо! Я проверю это и вернусь к вам. Когда я делал свой начальный тест, я использовал пользователя root и не-root. Возможно, это сработает, если я правильно настрою права моего пользователя без полномочий root. rzetterberg 12 лет назад 0
2
Manwe

Очень похоже на то, что другой драйвер держит или использует ваше устройство. Бежать:

lsusb 

И попробуйте найти линию с кинетической

Bus 002 Device 004: ID 046d:0850 Logitech, Inc. QuickCam Web 

Скопируйте и вставьте строку после идентификатора (например, 046d: 0850) в Google и посмотрите, не встретились ли вы с соответствующим модулем ядра Linux.

Если вам повезет, добавьте его в черный список модулей. Создайте свой собственный файл для/etc/modprobe.d/blacklist-kinetic.conf

blacklist MODULENAME 

запустите depmod -a перезагрузку и попробуйте снова

Просто будьте осторожны, чтобы не занести в черный список любые модули, которые вам действительно нужны.

2
Shonn E

Это немного сбивало с толку, но я наконец понял это.

Более новые ядра Linux поставляются с драйвером для использования Kinect в качестве веб-камеры, и он, кажется, сначала захватывает камеру Kinect, что приводит к сообщению об ошибке при попытке запустить freenect-glview: «Не удалось запросить интерфейс на камере : -6 ".

Выполните lsmod и передайте это grep в строку gspca, чтобы вы могли видеть только списки gspca:

 lsmod | grep gspca gspca_kinect 12792 0 gspca_main 27610 1 gspca_kinect videodev 85626 1 gspca_main  modprobe -r gspca_kinect modprobe -r gspca_main 

Тогда freenect-glview должен работать.

1
George

В более новых ядрах Linux установлены драйверы ms gspca, и они не будут отключаться. Они только дают вам камеру RGB и ИК без глубины, так что убейте их!

lsmod 

Должен перечислить их всех. Найдите два модуля gspca. Kinect и главное, я считаю.

then modprobe -r gspca_kinect 

Затем убейте другого и снова попробуйте freenect-glview. Жизнь хороша!