5

Я установил библиотеку 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"

4 ответа4

2

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

Более новые ядра 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 должен работать.

2

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

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

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

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

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

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

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

1

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

lsmod

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

then modprobe -r gspca_kinect

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .