среда, 4 июня 2008 г.

Skype в Linux

Сейчас на моем ноутбуке стоит Gentoo, по этому все, что тут описано, имеет специфику этого дистрибутива, но общие принципы применимы в любом Linux дистрибутиве. (Вроде это я уже где то писал =), но все равно буду повторяться).

Skype под Linux работает достаточно давно и хорошо, но вот работа с видео и Web-камерами появилась только с версии 2. На сегодня, актуальная версия, по крайней мере в Gentoo, Skype 2.0.0.68.

Первая попытка работы с Web-камерой, как только стал доступен Skype с поддержкой видео, провалилась. Я не смог заставить работать его с web-камерой Genius. К ней я вернусь позже, возможно сейчас она и заработает, учту свои ошибки =) или окажется, что обновились драйверы.

Мне в руки попалась USB Web-камера Logitech. Модель её мне не известна, но точно знаю, что она шла в наборе с гарнитурой, по этому врядли у нее есть отдельное название. Главное то, что она определяется компьютером с USB ID 046d:08c1. По этому ID и был найден правильный для камеры драйвер. Им оказалась некая поделка под названием uvcvideo. Возможно я бы и назвал их классными драйверами, если бы они заработали сразу и как надо, но детали позже.

Драйвер устанавливается из пакета media-video/linux-uvc, дополнительно советую поставить пакет media-video/luvcview. Luvcview работает с веб-камерой, ей удобно тестировать то, что получается.

Первая попытка запустить драйвер через modprobe навыдавала ошибок. Как выяснилось, в моей камере есть USB-микрофон, так вот без загрузки USB драйверов для звука камера не работает.

Первый опыт был проведен с драйверами USB-звука из ядра, при этом я их вкомпилировал в само ядро. Перезагрузился. Не заработало =). Получил те же ошибки. Сделал USB-звук в виде отдельного драйвера. Перезагрузил. Не заработало =))).

Не буду описывать поиски решения, но нашел всего одно упоминание о важности последовательности загрузки драйверов. Помогло это тому человеку в форуме или нет, науке не известно, мне помогло.

Втыкаю камеру, смотрю dmesg, сначала загрузился драйвер uvcvideo, потом usb-snd-audio. Делаю rmmod uvcvideo, а затем modprobe uvcvideo. Запускаю luvcview - УРА! Но ура частичное. Тут мы подошли к кривости драйверов. Почему она сама не грузит драйверы в нужном порядке? Этот вопрос риторический. По этому отправляемся в шикарный файл, который описывает зависимости загружаемых модулей:

/lib/modules/{тут номер версии ядра}/modules.dep

Первой строкой идет упоминание о нашем драйвере и к нему нет ни каких зависимостей:

/lib/modules/2.6.24-gentoo-r8/usb/media/uvcvideo.ko:

Находим строчку с зависимостями для USB-звука snd-usb-audio и переносим её в зависимости для uvcvideo.

Skype работает c видео =). Почему это ни где не написано? Лень? Наверное да. Я настроил, написал тут как это сделать, но ни где нет ссылки на это. Соответственно, кто то будет ходить по моим граблям. Хотя я наверное не первый кто по ним гуляет =).

Комментариев нет: