LINUX.ORG.RU

usb 2.0 камера ToupTek UCMOS 05100KPA + Debian - проблема с подключением

 anchor chips, , touptek


1

2

Камера: ToupTek UCMOS 05100KPA Описание на сайте производителя

Очень нужно подружить именно эту камеру с ноутом. В ноуте есть встроенная камера, с ней никаких проблем. С системой «на Вы и по имени-отчеству» - самостоятельно понять, кто на что ругается, чего не хватает и что делать я не в состоянии. Очень надеюсь на помощь сообщества.

$ uname -a
Linux username 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux

В /dev/ есть /dev/video0 - это встроенная камера ноута. Никаких других /dev/video* при подключении камеры не появляется.

# dmesg | tail
[ 8285.019735] usb 2-1: new high-speed USB device number 6 using xhci_hcd
[ 8285.660630] usb 2-1: New USB device found, idVendor=0547, idProduct=6510
[ 8285.660636] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8285.660640] usb 2-1: Product: USB2.0 Camera
[ 8285.660643] usb 2-1: Manufacturer: TT

Это все. Ничего похожего на «input as ... /dev/*» или хоть чего-то про драйверы, как это происходит для других устройств (.

# lsusb -v
...
Bus 002 Device 006: ID 0547:6510 Anchor Chips, Inc. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0547 Anchor Chips, Inc.
  idProduct          0x6510 
  bcdDevice            0.00
  iManufacturer           1 TT
  iProduct                2 USB2.0 Camera
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x86  EP 6 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)
...

Я совершенно не понимаю ни что с этим делать, ни куда дальше копать, ни почему оно не заводится.

На сайте производителя заявлена поддержка Linux и даже выложен некий архив с linux-версией ToupLite. Да, из-под Windows с тем же ToupLite эта камера работает. В Linux-версии проблемы с сохранением файлов (ради чего, собственно, и нужна, в первую очередь, эта программа).

В разделе загрузок ToupLite предлагается архив ToupTekToupLite.x64.tar.bz2 - в нем один-единственный sh неведомого содержания, который создает в /usr/local/ папку ToupLite:

$ ls -l /usr/local/ToupLite
drwxr-sr-x 2 root staff     4096 дек  5 14:40 i18n
-rwxr-xr-x 1 root staff 11722400 дек  5 14:40 libtoupcam.so
-rwxr-xr-x 1 root staff 11772616 дек  5 14:40 libtoupnam.so
-rwxr-xr-x 1 root staff 26748240 дек  5 14:40 touplite
-rw-r--r-- 1 root staff    12266 дек  5 14:40 touplite.png
-rwxr-xr-x 1 root staff      216 дек  5 14:40 uninstall.sh
Причем все это делает он (с точки зрения обычного не закаленного в боях пользователя) в режиме «я что-то сделал в твоей системе, а ты теперь попробуй угадать, что именно и где».

Запуск touplite от пользователя: открывается программа, в списке есть камера, идет изображение. После запуска в dmesg:

[  168.088272] xhci_hcd 0000:00:14.0: WARN Event TRB for slot 5 ep 4 with no TDs queued?
Делаем захват кадра, пытаемся сохранить:
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Три таких сообщения подряд в терминале вылетают при нажатии кнопки «Сохранить» с вызовом окна имени файла и места сохранения, четвертое - при нажатии уже в этом окне на кнопку «Save». Файл не сохраняется. В gui все абсолютно молча - никаких предупреждений, что что-то не так. Добавление пользователя в группу staff ничего не меняет. Смена владельца с root на current_user тоже ничего не меняет. Поддержка ToupTek посылает к администратору.

Рытье интернета выдало еще uvscada на github. В devices.txt есть эта камера. Но я не понимаю, что с этим нужно делать, кроме как скачать и распаковать (.



Последнее исправление: blondy (всего исправлений: 7)

Ответ на: комментарий от Stanson

Не работает, насколько я понял сама софтина, которая что-то там куда-то сохранять не может.

Она-то сохраняет, но... работает совсем не так, как ожидает пользователь (процитирую себя повторюсь)

1. Вызывать диалоги сохранения снимков (файлов) через хоткеи нельзя
категорически -- файлы не сохраняются, иногда "падает" программа.
2. Необходимо настроить "опции" сохранения в "Настройках".
3. Открываете "Живое видео", настраиваете параметры камеры...
4. Самое главное: снимки делаете клацая кнопку "Сохранить быстро"
5. "Редактировать" снимки возможно, открывая их кнопкой "Открыть".
6. Если применить какой-либо инструмент с панели к сохраненному снимку,
становится активной кнопка "Сохранить" -- через неё и надо сохранять.
7. Изменять имена файлов нужно вне программы -- сама она не переносит
такие вольности.
anymouze ★★
()
Ответ на: комментарий от anymouze

Открываете «Живое видео», настраиваете параметры камеры...

Если «живое видео» есть и параметры настраиваются без проблем - значит USB камера, низкоуровневый драйвер USB в ядре и эта вот libtoupcam.so отлично работают. А все вопросы надо задавать тем, кто саму софтину написал. Или пытаться как-то по-другому её запускать, может с другой локалью, может с другой версией Qt/GTK/на чём там она, а не до камеры, ядра и юзерспейсных драйверов докапываться.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от anymouze

Дефолтное правило udev, создаваемое инсталлятором, выглядит вот так. Туплайт камеру не видит, устройство не создаётся.

# Copy this file to /etc/udev/rules.d

# Once done, unplug and re-plug your device. This is all that is
# necessary to see the new permissions. Udev does not have to be restarted.

# If you think permissions of 0666 are too loose, then see:
# http://reactivated.net/writing_udev_rules.html for more information on finer
# grained permission setting.

SUBSYSTEM=="usb", ATTRS{idVendor}=="0547", MODE="0666"
Можно ли это как-то модифицировать, чтоб заставить систему схватывать этот самый libtoupcam.so и создавать устройство?

Heavens_A_Lie
()
Ответ на: комментарий от Stanson

Любое USB устройство - это просто одна или несколько трубок (endpoint'ов) для передачи данных. Если для девайса есть драйвер в ядре, то он эти трубки забирает себе, как-то там с ними что-то делает, а юзеру даёт какой-нибудь высокоуровневый /dev/videoX, например. Если драйвера нету - то эти трубки просто выставляются юзеру в виде файлов в /dev/bus/usb/... Любая софтина может взять и самостоятельно дуть в эти трубки. Или использовать библиотеку, для этого. Всё, что нужно сделать с udev - это прописать права на эти трубки чтобы они были доступны обычному юзеру.

Спасибо, очень наглядное объяснение. То есть, получается, драйвер (способ как дуть в трубки) заключён в самой этой софтине? Я полагал, что с помощью этой библиотеки можно подключить эту штуку как /dev/video1. Получается, это невозможно? Может ли по такой логике быть, что если поставить в вайн виндовую версию проги, она зацепит камеру?

Ну так она и работает. Не работает, насколько я понял сама софтина, которая что-то там куда-то сохранять не может.

В моём случае софтина не соединяется с камерой даже.

Heavens_A_Lie
()
Ответ на: комментарий от Stanson

да, камера работает (у ТС). Логика взаимодействия программы и пользователя «выходит за рамки обыденного» :). Да, потребовалось время, чтобы начать понимать эту нетривиальную связку «камера - программа».

А все вопросы надо задавать тем, кто саму софтину написал

ой, какое было жгучее желание «пообщаться» с теми «погромистами» :)

пытаться как-то по-другому её запускать, может с другой локалью, может с другой версией Qt

«оно» на Qt. запускалось через «встроенный» ярлык. я с другой локалью не запускал. у меня ошибок не наблюдалось о локали (или не помню?)

а начинали с «ядра/драйверов» так, как обычно устройства USB по этой модели работают. эта камера в схему не вписывалась. программа тоже не вписывалась в привычные «ожидания».

Если бы производитель снабжал документацией под linux, возможно и треда бы не было...

anymouze ★★
()
Ответ на: комментарий от Heavens_A_Lie

распишу подробно, чтобы не было «непоняток».

cd /etc/udev/rules.d/
cp 99-toupcam.rules 97-bestscope.rules
cp 99-toupcam.rules 98-es_experts.rules
Откройте файл 97-bestscope.rules редактором и замените «0547» на «5453». Сохраните файл. Откройте файл 98-es_experts.rules редактором и замените «0547» на «7777». Сохраните файл.

Подключите камеру. Запустите touplite. Возможно программа увидит камеру. Можно попробовать подключить и вторую камеру.

touplite Вы установили?

anymouze ★★
()
Ответ на: комментарий от Heavens_A_Lie

То есть, получается, драйвер (способ как дуть в трубки) заключён в самой этой софтине?

Да. Это для USB устройств на линуксе совершенно обычное явление. libusb для этого написана и много софта через неё напрямую общается с устройствами.

Я полагал, что с помощью этой библиотеки можно подключить эту штуку как /dev/video1. Получается, это невозможно?

В общем - да. Чтобы был /dev/video1 нужен ядерный драйвер.

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

Нет, не зацепит. Виндовые проги используют совсем другие механизмы для работы с USB напрямую, которые вайн не предоставляет. Да, есть вендовый софт, который использует libusb-win32 например, и его в общем-то можно заставить работать под wine (я написал для этого libusb-wine, например), но такой софт крайне редко встречается, и вряд-ли вендовая версия обсуждаемой софтины к нему относится.

В моём случае софтина не соединяется с камерой даже.

Значит, не имеет доступа к файлам в /dev/bus/usb/

Надо в rules для udev прописать что-то типа

SUBSYSTEM=="usb", ATTRS{idVendor}=="5453", ATTRS{idProduct}=="a804", MODE="0660", GROUP="users"

Где users - это группа к которой относится пользователь. 0660 - права доступа к файлам камеры 5453 - vendor ID камеры a804 - product ID камеры

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.