Вопрос или проблема
Я бы использовал USB веб-камеру с программным обеспечением Motion, установленным в Ubuntu на моем компьютере с Windows (WSL2). Но когда я запускаю Motion как сервис и проверяю в браузере по адресу [LOCALHOLST:порт 8080 или 8081], появляется интерфейс Motion, но моя веб-камера так и не была обнаружена. Всегда показывается серый экран для опции MyCam1, с надписью вверху слева “НЕВОЗМОЖНО ОТКРЫТЬ ВИДЕОУСТРОЙСТВО”.
Я пробовал множество различных конфигураций в файлах camera1-dist.conf и motion.conf, но, к сожалению, они все еще не работают.
Кто-нибудь мог бы подсказать мне, какие типы конфигураций и в каком файле я должен использовать, чтобы обнаружить USB веб-камеру с программным обеспечением Motion?
Заранее благодарю.
Привет, большое спасибо, ваши указания были очень полезны! Я следовал всем шагам и подключил веб-камеру к моей дистрибуции Ubuntu, и теперь команда Ubuntu ‘lsusb’ выдает следующий вывод:
root@LAPTOP-5OFK2AK7:/home/daniele# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 3443:950a SHENZHEN AONI ELECTRONIC CO.,LTD NexiGo N950P 4K Webcam
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
К сожалению, это все еще не работает.. Motion продолжает показывать серый экран и сообщение НЕВОЗМОЖНО ОТКРЫТЬ ВИДЕОУСТРОЙСТВО..
Теперь, я думаю, проблема в файле camera1-dist.conf. Я бы хотел установить веб-камеру на localhost:8080 (порт) или (8081), но я не понимаю, почему это все еще не работает, и что и где мне писать в этом файле camera1-dist.conf.
# Этот файл конфигурации был сгенерирован motion 4.2.2
###########################################################
# Настройки конфигурации, специфичные для камеры 1
############################################################
# Пользовательское имя для камеры.
camera_name MyCam1
# Числовой идентификатор для камеры.
camera_id 101
# Полный URL потока сетевой камеры.
netcam_url http://127.0.0.1:8080
# Ширина изображения в пикселях.
width 1280
# Высота изображения в пикселях.
height 720
# Текст для наложения в левый нижний угол изображений
text_left КАМЕРА 1
# Имя файла (без расширения) для видео, относительно целевой директории
movie_filename CAM01_%t-%v-%Y%m%d%H%M%S
Поскольку вы используете WSL2, хостовая ОС (т.е. Windows) в настоящее время управляет веб-камерой с помощью своих собственных драйверов.
Чтобы разрешить программе, работающей в экземпляре WSL2, получить доступ к USB-устройству, например, веб-камере, необходимо указать Windows передать управление этим USB-устройством в WSL2.
Источник: https://devblogs.microsoft.com/commandline/connecting-usb-devices-to-wsl/
Вам понадобится WSL2 с версией ядра Linux 5.10.60.1 или новее.
Также необходимо установить последнюю версию usbipd-win
в Windows. Вы можете найти её здесь.
Внутри WSL2 вам нужно будет установить инструменты пользовательского пространства USB/IP и базу данных идентификаторов оборудования USB. На Ubuntu 20.04 LTS это будет:
sudo apt install linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
Обратите внимание, что часть 5.4.0-77-generic
может варьироваться, если вы используете другую дистрибуцию или версию ядра.
Чтобы увидеть доступные USB-устройства и их идентификаторы шины, откройте командную строку от имени администратора и введите эту команду:
usbipd wsl list
Найдите идентификатор шины USB-устройства, которое вы хотите использовать в WSL2, и введите эту команду в командной строке администратора:
usbipd wsl attach --busid <bus ID>
Это, по-видимому, приведет к тому, что WSL запросит пароль для выполнения команды sudo
. После этого USB-устройство будет видно в выводе lsusb
в WSL2 и доступно приложениям WSL2 (и, следовательно, недоступно для нативных приложений Windows).
Когда вы закончите использовать устройство в WSL2, вы можете либо физически отключить его, либо вернуть в Windows, выполнив эту команду в командной строке администратора:
usbipd wsl detach --busid <bus ID>
.
Ответ или решение
Конечно, давайте разберем вашу проблему с подключением веб-камеры через Motion на Ubuntu в WSL2. При возникновении ошибки "UNABLE TO OPEN VIDEO DEVICE" процесс интеграции USB-устройства в WSL2 может требовать более детальной настройки. Рассмотрим шаги, которые помогут вам устранить эту ошибку.
Понимание Проблемы
Вашей главной задачей является обеспечение корректного подключения USB веб-камеры к Ubuntu, работающему на WSL2 в Windows. Проблема, как оказалось, связана с перенаправлением управления USB-устройством от Windows к вашей среде WSL2.
Рекомендуемые Шаги для Решения
-
Проверка Совместимости Версий:
- Убедитесь, что версия ядра Linux в WSL2 равна или выше 5.10.60.1. Это критически важно для поддержки USB-устройств.
- Установите актуальную версию
usbipd-win
на вашем главном устройстве с Windows. Вы можете скачать её на GitHub.
-
Настройка WSL2:
- В Ubuntu установите user-space инструменты для работы с USB/IP и базу данных идентификаторов USB-устройств:
sudo apt install linux-tools-5.4.0-77-generic hwdata sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
- Учитывайте, что версия
5.4.0-77-generic
может отличаться в зависимости от вашей версии дистрибутива.
- В Ubuntu установите user-space инструменты для работы с USB/IP и базу данных идентификаторов USB-устройств:
-
Подключение и Управление Устройствами:
- Откройте командную строку от имени администратора и выполните команду для просмотра доступных USB-устройств:
usbipd wsl list
- Найдите Bus ID вашего устройства и подключите его к WSL2:
usbipd wsl attach --busid <bus ID>
- После этого устройство должно появиться в списке командой
lsusb
в вашей Ubuntu.
- Откройте командную строку от имени администратора и выполните команду для просмотра доступных USB-устройств:
-
Проверка Конфигурации Motion:
- Удостоверьтесь, что файл
camera1-dist.conf
корректно настроен. - Проверьте, чтобы ваша конфигурация включала правильный URL или идентификатор потока камеры. Если подключение происходит локально, убедитесь, что URL содержит корректный адрес и порт вашей камеры.
- Удостоверьтесь, что файл
-
Диагностика и Отладка:
- Если после выполнения вышеуказанных шагов все еще наблюдаются проблемы, рассмотрите возможность использования других инструментов для отладки, например,
dmesg
для просмотра логов ошибок USB.
- Если после выполнения вышеуказанных шагов все еще наблюдаются проблемы, рассмотрите возможность использования других инструментов для отладки, например,
-
Передача Устройства Назад в Windows:
- После завершения работы в WSL2 вы можете вернуть устройство в управление Windows:
usbipd wsl detach --busid <bus ID>
- После завершения работы в WSL2 вы можете вернуть устройство в управление Windows:
Заключение
Следуя вышеизложенным рекомендациям, вы сможете устранить проблему с подключением веб-камеры в Motion на Ubuntu в WSL2. Если же вопрос остается нерешенным, возможно, потребуется более глубокая отладка или настройка, включая проверку драйверов и тестирование с другими USB-портами.
Эти шаги помогут вам обеспечить надежное и стабильное подключение устройства, тем самым решив текущую задачу.