LINUX.ORG.RU

Драйвер qc-usb для старой web-камеры QuickCam Express 046d:0928 и нового ядра.


0

1

Нужно откомпилировать драйвер quickcam.ko (qc-usb) для web-камеры QuickCam Express 046d:0928.

0. Дебиан 5.0, ядро 2.6.30.

1. Скачал последний qc-usb, версии 0.6.6: http://qce-ga.sourceforge.net/

2. Распаковал, под рутом запустил make all:

# make all
make -C «/lib/modules/2.6.30-andrian-k7/build» SUBDIRS=«/usr/src/modules/qc-usb-0.6.6» modules V=1 USER_OPT="-DHAVE_UTSRELEASE_H=1"

make[1]: Entering directory `/usr/src/linux-2.6.30'
test -e include/linux/autoconf.h -a -e include/config/auto.conf || ( \
echo; \
echo " ERROR: Kernel configuration is invalid."; \
echo " include/linux/autoconf.h or include/config/auto.conf are missing."; \
echo " Run 'make oldconfig && make prepare' on kernel src to fix it."; \
echo; \
/bin/false)
mkdir -p /usr/src/modules/qc-usb-0.6.6/.tmp_versions ; rm -f /usr/src/modules/qc-usb-0.6.6/.tmp_versions/*
make -f scripts/Makefile.build obj=/usr/src/modules/qc-usb-0.6.6
gcc -Wp,-MD,/usr/src/modules/qc-usb-0.6.6/.qc-driver.o.d -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.3.2/include -Iinclude -I/usr/src/linux-2.6.30/arch/x86/include -include include/linux/autoconf.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=athlon -Wa,-mtune=generic32 -ffreestanding -fstack-protector -fstack-protector-all -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fomit-frame-pointer -Wdeclaration-after-statement -Wno-pointer-sign -fwrapv -DNOKERNEL -DHAVE_UTSRELEASE_H=1 -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(qc_driver)" -D"KBUILD_MODNAME=KBUILD_STR(quickcam)" -c -o /usr/src/modules/qc-usb-0.6.6/qc-driver.o /usr/src/modules/qc-usb-0.6.6/qc-driver.c
In file included from /usr/src/modules/qc-usb-0.6.6/qc-driver.c:47:
/usr/src/modules/qc-usb-0.6.6/quickcam.h:129:1: warning: «BIT» redefined
In file included from include/linux/kernel.h:15,
from include/linux/cache.h:4,
from include/linux/time.h:7,
from include/linux/videodev2.h:60,
from include/linux/videodev.h:17,
from /usr/src/modules/qc-usb-0.6.6/quickcam.h:95,
from /usr/src/modules/qc-usb-0.6.6/qc-driver.c:47:
include/linux/bitops.h:6:1: warning: this is the location of the previous definition
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_i2c_init’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:824: error: ‘struct urb’ has no member named ‘lock’
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:825: warning: assignment from incompatible pointer type
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_proc_create’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:997: error: ‘struct proc_dir_entry’ has no member named ‘owner’
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_proc_init’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:1035: error: ‘struct proc_dir_entry’ has no member named ‘owner’
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_isoc_start’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:1867: warning: assignment from incompatible pointer type
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_v4l_poll’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:2256: error: ‘struct video_device’ has no member named ‘priv’
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_v4l_open’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:2308: error: ‘struct video_device’ has no member named ‘priv’
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_v4l_close’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:2376: error: ‘struct video_device’ has no member named ‘priv’
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_v4l_read’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:2424: error: ‘struct video_device’ has no member named ‘priv’
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_v4l_mmap’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:2479: error: ‘struct video_device’ has no member named ‘priv’
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_v4l_ioctl’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:2511: error: ‘struct video_device’ has no member named ‘priv’
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:2529: error: ‘struct video_device’ has no member named ‘type’
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: At top level:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:3008: error: unknown field ‘type’ specified in initializer
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:3009: error: unknown field ‘hardware’ specified in initializer
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:3013: warning: initialization from incompatible pointer type
/usr/src/modules/qc-usb-0.6.6/qc-driver.c: In function ‘qc_usb_init’:
/usr/src/modules/qc-usb-0.6.6/qc-driver.c:3158: error: ‘struct video_device’ has no member named ‘priv’
make[2]: *** [/usr/src/modules/qc-usb-0.6.6/qc-driver.o] Ошибка 1
make[1]: *** [_module_/usr/src/modules/qc-usb-0.6.6] Ошибка 2
make[1]: Leaving directory `/usr/src/linux-2.6.30'
make: *** [quickcam.ko] Ошибка 2

3. Где достать патчи для ядра 2.6.30, чтобы собрать без ошибок?
Хочется попробовать именно qc-usb, а не gspca_spca*
Последние патчи в дистрибутиве драйвера - для 2.6.7, 2.6.8, 2.6.18.
Моих знаний для того, чтобы пропатчить исходники, не хватило.
То есть, модуль собрался, загрузился но структура fops не была
инициализирована - в новых ядрах она константного типа - и
драйвер не заработал (тупо стал висеть в памяти, lsmod).

★★★★★

> Моих знаний для того, чтобы пропатчить исходники, не хватило.

Пропатченный драйвер нашел на: http://www.mandrivalinux.eu/archive/index.php/t-266269.html
Скачивать здесь: http://67.23.226.11/~mandriva/download/linux/drivers/qc-usb-0.6.6-30.tar.gz

Компилируется, загружается. Однако, устройство /dev/video0
при загрузке драйвера не создается. Что делать?


P.S. Попробовал с модулем gspca_spca561 - программа gqcam выводит
совершенно кривое изображение - явно что-то порушили в драйвере (под
2.6.8 камера работала с ним достаточно хорошо).

pacify ★★★★★
() автор топика

> 2. Распаковал, под рутом запустил make all:

дальше можно не читать

Led ★★★☆☆
()

>Нужно откомпилировать драйвер quickcam.ko (qc-usb) для web-камеры QuickCam Express 046d:0928.

Чем не устроил gspca_spca561.ko?

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

>> 2. Распаковал, под рутом запустил make all:

дальше можно не читать


Лень было chown делать.

Чем не устроил gspca_spca561.ko?


Под ним картинка не выводится gqcam'ом, а какой-то мусор.

pacify ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.