Хочу немного поведать о том, как я установил сабж в
Gentoo Linux с ядром
2.6.30-gentoo-r8 и заставил ее работать под
Skype 2.1.0.81, а точнее видео, т.к. звук в нем нормально работает со стандартными драйверами ядра из набора GSPCA:
gspca_ov519, но вот видео завести мне никак не удавалось.
Видео с камеры также работало в различного рода программах, как то cheese или mplayer. Для mplayer достаточно в консоли набрать команду, принимая во внимание, что камера находится на
/dev/video0
mplayer tv:// -tv driver=v4l:width=640:height=480:device=/dev/video0
и лицезреть в появившемся окошке изображение с камеры.
Но, для начала, поведаю о всех действиях которые я опробывал, чтобы решить проблему с видео в Skype. Оптимизма мне добавляло то, что камеру я заставил нормально жить со Skype на ядре 2.6.27, воспользовавшись хорошим описанием по
этому адресу. Однако жизнь ушла вперед, мне понадобились более новые ядра, но вот развитие модуля
ov51x-jpeg не спешило идти в ногу с развитием kernel. Потому при компилировании модуля на
2.6.30-gentoo-r8 выскакивала следующая ошибка:
ov51x-jpeg-1.5.9 # make
make -C /lib/modules/2.6.30-gentoo-r8/build M=/root/ov51x-jpeg-1.5.9 modules
make[1]: Entering directory `/usr/src/linux-2.6.30-gentoo-r8'
CC [M] /root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.o
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:543: error: ‘v4l_compat_ioctl32’ undeclared here (not in a function)
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c: In function ‘create_proc_ov511_cam’:
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:677: error: implicit declaration of function ‘info’
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:681: error: ‘struct proc_dir_entry’ has no member named ‘owner’
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:689: error: ‘struct proc_dir_entry’ has no member named ‘owner’
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:700: error: ‘struct proc_dir_entry’ has no member named ‘owner’
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:712: error: ‘struct proc_dir_entry’ has no member named ‘owner’
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c: In function ‘proc_ov511_create’:
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:766: error: ‘struct proc_dir_entry’ has no member named ‘owner’
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c: In function ‘ov51x_clear_snapshot’:
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:1691: error: implicit declaration of function ‘warn’
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c: In function ‘ov51x_v4l1_ioctl’:
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:6386: warning: passing argument 1 of ‘video_usercopy’ from incompatible pointer type
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:6386: warning: passing argument 2 of ‘video_usercopy’ makes integer from pointer without a cast
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:6386: warning: passing argument 4 of ‘video_usercopy’ makes pointer from integer without a cast
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:6386: error: too many arguments to function ‘video_usercopy’
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c: At top level:
/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c:6651: warning: initialization from incompatible pointer type
make[2]: *** [/root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.o] Error 1
make[1]: *** [_module_/root/ov51x-jpeg-1.5.9] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.30-gentoo-r8'
make: *** [all] Error 2
После длительного поиска в инете я натолкнулся на
следующую страницу, где данную проблему пытались решить путем включения в ядро следующих модулей:
CONFIG_VIDEO_ALLOW_V4L1=y
CONFIG_VIDEO_V4L1=m
и затем сам Skype запускать следующей командой:
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype
Аналогичного рода советы давались и на других ресурсах (
первый,
второй), однако мне от подобного рода советов никакой выгоды не было, потому как попросту выскакивала ошибка:
ERROR: ld.so: object '/usr/lib/libv4l/v4l2convert.so' from LD_PRELOAD cannot be preloaded: ignored
Подмена библиотек v4l2convert.so и v4l1compat.so на библиотеки из других дистрибутивов ничего не давала.
И вот я наткнулся на
следующую статью , где предлагалось по svn установить нечто новое из
ov51x-jpeg. Я и попробовал это сделать. Установив
subversion я запустил следующую команду:
svn co svn://rastageeks.org/svn/ov51x-jpeg/trunk
но связь с данным ресурсом у меня отсутствовала
svn: Can't connect to host 'rastageeks.org': Connection refused
Тогда пришлось снова пускаться во все тяжкие в интернет поиске, ну и труды дали свои плоды. Я вышел на
данный ресурс, где скачал следующие патчи к файлам модуля
ov51x-jpeg:
kernel_messages.patch
ov51x-jpeg-2.6.29.patch
ov51x-jpeg-2.6.30.patch
noowner.patch
v4lcompat_old_kernels_only.patch
Затем обычными действиями накладываем патчи и пробуем заново откомпилировать:
#качаем
wget http://www.rastageeks.org/downloads/ov51x-jpeg/ov51x-jpeg-1.5.9.tar.gz
#распаковываем
tar xf ov51x-jpeg-1.5.9.tar.gz
cd ov51x-jpeg-1.5.9
#закачиваем патчи
wget https://svn.pardus.org.tr/pardus/2009/devel/kernel/default/drivers/module-ov51x-jpeg/files/kernel_messages.patch
wget https://svn.pardus.org.tr/pardus/2009/devel/kernel/default/drivers/module-ov51x-jpeg/files/ov51x-jpeg-2.6.29.patch
wget https://svn.pardus.org.tr/pardus/2009/devel/kernel/default/drivers/module-ov51x-jpeg/files/ov51x-jpeg-2.6.30.patch
wget https://svn.pardus.org.tr/pardus/2009/devel/kernel/default/drivers/module-ov51x-jpeg/files/noowner.patch
wget https://svn.pardus.org.tr/pardus/2009/devel/kernel/default/drivers/module-ov51x-jpeg/files/v4lcompat_old_kernels_only.patch
#накладываем патчи
patch -i kernel_messages.patch
patch -i noowner.patch
patch -i ov51x-jpeg-2.6.29.patch
patch -i ov51x-jpeg-2.6.30.patch
patch -i v4lcompat_old_kernels_only.patch
make
и о чудо, команда make завершается без ошибок:
ov51x-jpeg-1.5.9 # make
make -C /lib/modules/2.6.30-gentoo-r8/build M=/root/ov51x-jpeg-1.5.9 modules
make[1]: Entering directory `/usr/src/linux-2.6.30-gentoo-r8'
CC [M] /root/ov51x-jpeg-1.5.9/ov51x-jpeg-core.o
CC [M] /root/ov51x-jpeg-1.5.9/ov511-decomp.o
CC [M] /root/ov51x-jpeg-1.5.9/ov518-decomp.o
CC [M] /root/ov51x-jpeg-1.5.9/ov519-decomp.o
LD [M] /root/ov51x-jpeg-1.5.9/ov51x-jpeg.o
Building modules, stage 2.
MODPOST 1 modules
CC /root/ov51x-jpeg-1.5.9/ov51x-jpeg.mod.o
LD [M] /root/ov51x-jpeg-1.5.9/ov51x-jpeg.ko
make[1]: Leaving directory `/usr/src/linux-2.6.30-gentoo-r8'
Затем командой:
make install
завершаем установку модуля. После этого, воспользовавшись рекомендациями с
данной страницы завершаем настройку модуля для работы видео в Skype:
echo "options ov51x-jpeg forceblock=1" | sudo tee -a /etc/modprobe.d/options
Как было написано
здесь:
Теперь еще одни глюк, что бы в skype работал предпросмотр камеры (в настройках и в "видеть себя"),
надо отключить получение изображения блоками.
Делается это очень просто, надо поставить параметр загрузки модуля в /etc/modprobe.d/options
options ov51x-jpeg forceblock=1
Или загружать его руками
modprobe ov51x-jpeg forceblock=1
потому я и выполнил команду echo, чтобы постоянно не выполнять modprobe.
Затем осталось только выставить в настройках Skype появившиеся устройства.
Микрофон:
Камера:
После этих действий я, «О чудо, не прошло и 3 года», смог наконец-то провести видеозвонок. Отмечу также, что настройку ядра я проводил
по данному руководству, избавившись от модулей gspca_ov519 и аналогичных gspca_ov5*, чтобы в дальнейшем не было конфликтов с ov51x-jpeg.
Комментарии (11)
RSS свернуть / развернутьdegtyarchuk
Одним словом, как писалось на одном из форумов в ответе на вопрос, какой из дистрибутивов посоветуете, ставьте тот, который стоит у вашего друга, который разбирается в нем.
yuginboy
degtyarchuk
yuginboy
degtyarchuk
yuginboy
cyril
yuginboy
cyril
degtyarchuk
cyril
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.