16 июля 2009 г.

Подключение веб-камеры в Ubuntu linux.

Подключение веб-камеры в Ubuntu linux.

Мой друг детсва сейчас живет в Литве и он увлек меня общением с вебкамерой и микрофоном, а то ему писать лень... :-) Правда при этом затянул меня в skype, но это не беда, ведь плавно перейдем на gtalk\empathy или ekiga.

Хоть многие и заявляют, что множество вебкамер прекрасно работают на линуксе, но сами же производители камер ни за что не напишут на коробке будет ли работать их камера в linux, хотя уже в последствии проб и ошибок нашел маркированные для "яблочных Маков", но об этом позже...

Но вот как попасть в яблочко я не знал, потому полез во всемирную паутину собирать разные советы и информацию. Хотел даже взять для теста камеру, у кого-нибудь, но встроенные в ноутбуки не заберешь домой ;-) Главное, что я извлек из этой кучи информации, это то, что web-камеры, работающие в Linux, делятся на 2 группы: во-первых, камеры, которые работают под управлением драйвера GSPCA и во-вторых, камеры с интерфейсом UVC (USB Video Class).

Первые камеры должны иметь чип, соответствующий определенным и довольно распространенным спецификациям, именно поэтому многие даже дешевые камеры начинают работать из коробки, хотя иногда и требуется определенная подстройка.
Вторые относятся к классу так называемых UVC-камер (USB Video Class). Универсальный интерфейс поддержки камер означает, что камера будет работать с операционной системой без драйвера! Однако не совсем конечно без драйвера. Просто этот стандарт описывает универсальные спецификации поддержки USB-видео устройств и встраивается в операционные системы. Поддержка UVC в ядре Linux существует только начиная с версии ядра 2.6.26
Определить какой чип используется в вашем случае, можно на сайте производителя или опытным путем, используя (lsusb):

$: lsusb: Bus 004 Device 003: ID 093a:2628 Pixart Imaging, Inc.

В связи с мировым кризисом, хотелось бы прикупить камеру подешевле, ведь пикселей от этого у нее меньше не станет :-) Хоть много почитывал, но информации так много, что все в голове не уложилось да и выбор камер не так велик в наших магазинах, что пришлось сначала искать камеру по подходящей цене, а потом узнавать работает ли такая в линуксе... Но так как огнетушитель с собой не ношу, а так "загорелось" в случайный момент, что дернуло меня в магазине купить Genius iLook 300 и вот начались приключения ибо она под лином вообще не должна работать, но...

Пробовал на gspca из репозиторя Убунту: 'sudo apt-get install gspca-source' при этом были установлены зависимости, но это не помогло...

N.B. Так как пакет module-assistan бул устновлен ранее, то загрузить модуль можно, если ваша вебкамера поддерживается так:
m-a prepare
m-a a-i gspca
modprobe gspca


По советам ЛОР-а http://www.linux.org.ru/view-message.jsp?msgid=3290795#3403746
, другим способом таки заставил кое-как работать мою вебкамеру Genius ilook 300 на чипсете PixArt pac7302 в Ubuntu 8.10.

$: lsusb: Bus 004 Device 003: ID 093a:2628 Pixart Imaging, Inc.

1. # apt-get install libv4l-0

2. Берем модули gspca2 отсюда: http://linuxtv.org/hg/~jfrancois/gspca/ , распаковываем.

3. В файл linux/drivers/media/video/gspca/pac7311.c добавляем строчку (в правильное место):
{USB_DEVICE(0x093a, 0x2628), .driver_info = SENSOR_PAC7302},

4. Собираем и устанавливаем модули
# make
# make install

5. Втыкаем камеру, контролируем загрузку модуля в логе
# dmesg

[12196.544006] usb 1-1: New USB device found, idVendor=093a, idProduct=2628
[12196.544128] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[12196.805878] Linux video capture interface: v2.00
[12196.813966] gspca: main v2.4.0 registered
[12196.816876] gspca: probing 093a:2628
[12196.856369] gspca: probe ok
[12196.858577] usbcore: registered new interface driver pac7311
[12196.859559] pac7311: registered

6. export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so

7. skype

N.B. или прописываем в ваш .bashrc строку export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so, чтобы каждый раз не вводить ее снова или в консоли запускаем: LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so . Я просто в меню fluxbox записал: [exec] (skype) {LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so skype}, на быстрые клавиши не вешал так как редко использую.

#########

И что же в итоге я получил? Изображение черное и с жутким торможением.
Что же дальше?
1. LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so camorama -M -d /dev/video1
настрой цвета + вкл. "Effects" -> "Color corection" = видео без сепии :-)
Вот бы еще и параметры эти запомнились бы, а то каждый раз исправлять нужно, а потом запускать skype, для ekiga не нужно (там есть возмоность настроить изображение).

2. Опции в /etc/modprobe.d/options не помогают для настроек цвета, а хотелось бы :-(

options gspca autoexpo=0
options gspca gamma=5
options gspca GBlue=270
options gspca GGreen=270
options gspca GRed=330
options gspca force_gamma_id=3
options gspca force_rgb=1
options gspca compress=1

3. Жуткие тормоза остались, хотя камера заработала. Это было интересно, но для жизни мучительно больно вот и пришлось остановится на Genius (другими камерами в тот момент не торговали) и недомучав торможение остановить выбор таки на камерах с UVC: Genius Eye 320 и iSlim 320 -> и выбор пал таки на более дешевый вариант, но с такими же параметрами и это была вебкамера iSlim 320

Проверку на поддержку UVC можно сделать командой:
~$ modinfo uvcvideo
filename: /lib/modules/2.6.27-11-generic/kernel/drivers/media/video/uvc/uvcvideo.ko
version: v0.1.0
license: GPL
description: USB Video Class driver
...

Поменял взятую ранее камеру с доплатой, принес домой подключил в usb:

~$ lsusb
Bus 005 Device 006: ID 0458:605e KYE Systems Corp. (Mouse Systems)
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Проверим распознана ли наша камера:
~$ dmesg |grep -i "uvc"
[12697.894368] uvcvideo: Found UVC 1.00 device iSlim 320 (0458:605e)
[12697.905368] usbcore: registered new interface driver uvcvideo
[27397.901940] uvcvideo: Found UVC 1.00 device iSlim 320 (0458:605e)

~$ gstreamer-properties # для настройки устройств ввода/вывода....

и запускаем skype, ekiga, empathy и получаем работу камеры и встроенного микрофона (правда использую от наушников чтобы дальше от моцных колонок) и никакой мороки, даже gspca ну нужно устанавливать! Просто наслаждаемся общением! Правда empathy мне совсем не нравится, ведь там совсем нет настроек устройство (может руки, но никах микрофон не могу ей скормить), но для видео gtalk'a другой проги не знаю... Нужен gtalk-linux, что бы отказаться от skype ;-)

Установим пакет luvcview: sudo apt-get install luvcview

Этим увлекательные "мучения" снова подтверждают истину, что скупой платит дважды, от дурной головы нет покоя ногам, 7 раз прочитай и один раз купи :-)


---

spca - это драйвер для более, чем 240 моделей камер. Полный список поддерживаемых моделей можно найти здесь: http://mxhaard.free.fr/spca5xx.html

если для вашей камеры нет поддержки gspca - возможно, она есть в разрабатываемом в данный момент USB Video Class для Linux. Для начала - можно просмотреть список известных устройств, однако и другие камеры, соответствующие спецификации UVC должны работать. http://linux-uvc.berlios.de/#devices, ведь и моей iSlim 320 в списке нет, но работает отлично! :-)

N.B. покупайте камеры UVC они сразу и без проблем работают и на коробках этих камер конечно же не пишут про работу в линуксе, но пишут: "Support Mac" и "Поддержка UVC (USB Video Class), не требует драйвера"! Спрашивайте, а то продавцы сами не знают чем тогруют и что такое UVC...