Вопрос или проблема
Я пытаюсь использовать мой Canon 100D в качестве веб-камеры на Ubuntu 17.10.
Каждый раз, когда я пытаюсь запустить:
gphoto2 --capture-movie
Я получаю следующую ошибку:
Произошла ошибка в библиотеке ввода-вывода ('**Не удалось захватить USB-устройство**'):
Не удалось захватить интерфейс 0 (Устройство или ресурс заняты). Убедитесь, что никакая другая
программа (gvfs-gphoto2-volume-monitor) или модуль ядра (например, sdc2xx, stv680,
spca50x) не использует устройство, и у вас есть доступ на чтение/запись к устройству.
Камера обнаружена системой, и я могу передавать данные с нее.
Также lsusb
показывает это устройство:
Шина 001 Устройство 020: ID 04a9:3270 Canon, Inc.
Довольно подробное описание, но это так.
Как я могу решить эту проблему?
Выяснилось, что на самом деле в фоновом режиме был процесс gvfs-gphoto2-volume-monitor
.
Запустите ps aux | grep gphoto
, который может выдать что-то вроде:
peter 25802 2.1 0.1 302504 8736 ? Ssl 13:10 0:00 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
peter 25814 2.2 0.1 441508 11176 ? Sl 13:10 0:00 /usr/lib/gvfs/gvfsd-gphoto2 --spawner :1.3 /org/gtk/gvfs/exec_spaw/21
peter 25835 0.0 0.0 22676 1096 pts/0 S+ 13:10 0:00 grep --color=auto gphoto
Первая колонка – это PID (идентификатор процесса), убейте их:
kill -9 25802
kill -9 25814
Теперь gphoto2 может подключиться к камере.
Проще и быстрее, чем ответ PeterM:
-
Сначала найдите все процессы, связанные с gphoto2
pgrep -fla gphoto2 1236 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor 1345 /usr/lib/gvfs/gvfsd-gphoto2 --spawner :1.4 /org/gtk/gvfs/exec_spaw/1
-
если они те, что показаны выше, вы можете смело их завершить
pkill -f gphoto2
-
С радостью, делайте фотографии
gphoto2 --capture-image-and-download --filename pic0001.jpg
Если на вашей SD-карте установлен magic lantern, вам нужно удалить эту SD-карту, чтобы она работала.
Ответ или решение
Ошибки при работе с gphoto2 на Linux, особенно когда вы пытаетесь использовать камеру Canon 100D в качестве веб-камеры на Ubuntu 17.10, могут быть затруднительными. Одной из наиболее распространённых ошибок является сообщение: "Не удалось захватить USB-устройство: Не удалось захватить интерфейс 0 (Устройство или ресурс занят)". Это может быть вызвано тем, что уже существует процесс, использующий ваше устройство, или что доступ к устройству ограничен.
Причины ошибки
- Занятость устройства: Причиной ошибки чаще всего является работающий в фоновом режиме процесс, который уже использует камеру, например, gvfs-графические процессы.
- Проблемы с правами доступа: Возможно, у вас недостаточно прав для взаимодействия с устройством.
- Конфликт с модулями ядра: Определённые модули ядра могут блокировать доступ к устройству.
Способы решения проблемы
Шаг 1: Проверка запущенных процессов
Для начала проверьте все процессы, которые могут использовать gphoto2. Выполните следующую команду в терминале:
ps aux | grep gphoto
Или для более лёгкого поиска:
pgrep -fla gphoto2
Если вы увидите процессы, такие как:
/usr/lib/gvfs/gvfs-gphoto2-volume-monitor
/usr/lib/gvfs/gvfsd-gphoto2
Это значит, что эти процессы удерживают устройство и вызывают ошибку.
Шаг 2: Завершение работы процессов
Если вы обнаружили процессы, которые использует gphoto2, их можно безопасно завершить. Для этого:
- Используйте команду
kill
, указав PID (идентификатор процесса):
kill -9 <PID>
- Либо воспользуйтесь более простой командой
pkill
, чтобы завершить все связанные процессы сразу:
pkill -f gphoto2
Шаг 3: Проверка и запуск gphoto2
После завершения данных процессов попробуйте снова запустить вашу команду:
gphoto2 --capture-movie
Если вам нужно сделать фото и скачать его, выполните:
gphoto2 --capture-image-and-download --filename pic0001.jpg
Дополнительные рекомендации
- Если в вашей SD-карте установлена программа Magic Lantern, её нужно удалить, чтобы избежать конфликтов с gphoto2.
- Убедитесь, что у вас есть все необходимые разрешения на доступ к устройству. Если необходимо, добавьте вашу учетную запись в группы, обладающие соответствующими правами (например,
plugdev
).
Заключение
Следуя приведённым выше шагам, вы сможете устранить ошибку "Не удалось захватить USB-устройство" и обеспечить корректную работу вашего оборудования на Ubuntu 17.10. Убедитесь, что вы регулярно обновляете системные пакеты, чтобы избежать подобных проблем в будущем.