воскресенье, 12 декабря 2010 г.

Настройка веб-камеры в Squeeze

Я пишу эти строки с чувством, являющимся смесью глубокого удовлетворения и некоторой досады. Дело в том, что на настройку моей веб-камеры (Logitech QuickCam E1000) в Squeeze ушло на удивление много времени. Ниже изложен только сухой остаток всех тех действий, которые мне пришлось выполнить - многие из них в конце концов оказались ошибочными.

Начать нужно с того, что подробная инструкция, написанная ещё для Etch и актуальная в Lenny, уже несколько устарела для Squeeze, в репозиториях которого больше нет исходников gspcaК сожалению, я пошёл по ложному пути, попытавшись настроить qc-usb. Подробно описывать мои мытарства не имеет смысла, так как подводных камней оказалось много, а результат достигнут не был.

На самом деле исходники gspca отсутствуют на том основании, что его поддержка уже включена в новые ядра (как минимум в 2.6.32 и выше). В дистрибутивных ядрах все нужные опции уже должны быть активированы, в самодельные нужно включить:

1) Device Drivers -> I2C support
I2C device interface 
I2C Hardware Bus support (выбрать модель, у меня Intel 82801 (ICH/PCH))

2) Device Drivers -> Multimedia Support
Video For Linux (там Enable Video For Linux API 1 compatible Layer)
Video capture adapters
V4L USB devices
USB Video Class (UVC)
UVC input events device support
GSPCA based webcams

В последнем разделе также нужно указать конкретный модуль, который зависит от модели чипа камеры. Почему-то это оказалось тайной за семью печатями, поэтому я включил поддержку всех возможных, а потом посмотрел, какой из них загружает камера, командой lsmod. У меня оказался ZC3XX USB Camera Driver.
Примечание: возможно, потребуются и другие опции в этих разделах. 

Если с конфигурацией ядра всё в порядке, камера должна заработать. Проверить это можно в программке camorama или командой mplayer tv:// (если есть собранный mplayer с поддержкой v4l - обычно это так). Если камера не работает, для начала удостоверьтесь, что нужные модули gspca загружены, командой lsmod. Не используйте Skype для первичного тестирования камеры, про него отдельный куплет.

...на самом деле я стал самостоятельно конфигурировать последнее стабильное ядро тогда, когда накопилось несколько проблем, которые я хотел таким образом решить. Одна из них формулировалась так: "Камера не работает только в Skype". Я пошёл по длинному пути, который для дистрибутивных ядер не является обязательным; на самом деле если в названных выше утилитах камера работает, а в Скайпе не определяется (или определяется, но не работает), должно хватить только описанного ниже.

Проанализировав информацию, полученную в храме знаний, я пришёл к выводу, что Скайп испытывает сложности с загрузкой нужных библиотек. Не совсем понятно, с чем именно это связано, вероятно, Skype несколько отстаёт в развитии от последних версий Убунту и даже Debian. К счастью, можно немножко помочь ему, настояв на выборе.
В консоли пишем

LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so skype

#для 64битных систем - вместо lib - lib32
(как вариант в интернете можно встретить LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so skype - для старой версии, у меня сработало выделенное жирным)
Если в консоли ошибок с загрузкой нет, а в настройках Скайпа появилось видеоустройство, можно автоматизировать загрузку, к примеру, так (все команды от рута)

cd /usr/bin
mv skype skype_vanilla
nano skype #вместо nano - ваш любимый текстовый редактор :)

В создаваемом файле пишем

LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so skype_vanilla

Сохраняем, закрываем, делаем исполняемым:

chmod +x skype

Всё готово.
P.S. Пока писал, нашёл ещё одну инструкцию, особо ценную для 64-битных систем, здесь.
Адд: То же самое для Linux Mint.

1 комментарий: