LINUX.ORG.RU

Вышел GSPCA 1.00.04


0

0

Вышла новая (1.00.04) версия V4L1 драйвера web-камер для Linux - GSPCA/SPCA5xx

- Поддерживается ядро 2.6.18;
- Добавлена поддержка нескольких новых устройств:

*Logitech STX;
*Creative Live Cam Video IM;
*Creative Live! Cam Notebook Pro;
*Creative Vista Pro;
*Creative Webcam Live!;
*Logitech QuickCam;

По заявлению автора список поддерживаемых данным драйвером устройств приближается к 220.


>>> Подробности

★★★★★

Проверено: Shaman007 ()
Ответ на: комментарий от anonymous

Re:

>Кому нужен V4L1, когда V4L2 уже давно, а V4L1 считаеться устаревшим?

Кем считается ? ;)

у v4l2 еще интерфейс не устаканился. Разработчики до сих пор спорят по поводу деталей ;) Ну и потом много-ли юзерспайса сейчас поддерживает _полноценно_ v4l2 ?

если хочется v4l2 возьми девелоперскую версию gspcav2 и наслаждайся глюками неустоявшегося API ;) Там проблема как раз только в этом.

К моменту выкидывания v4l1 из ядра оно как раз поспеет.

sS ★★★★★
() автор топика
Ответ на: комментарий от xnix

Re:

>Насколько оно стабильно ?

Что из них ? ;)

gspcv1 вполне. Но многие дополнительные фичи, которые есть в офтопиковых драйверах не поддерживаются. Опять же проблема больше в том что нету соответствующих ioctl и приходится городить приватные расширения которые работают с одной какой-то юзерспайсовой тулзой, которую для этого тоже надо патчить. В том же оффтопике на диске с драйверами идёт юзерспайсовая тулза которая поддерживает эти расширения. А субжевый драйвер это что то типа универсального комбайна в стиле all-in-one. Функционал иногда урезан но зато 220 девайсов из коробки ;) Внутрь правда лучше не заглядывать, бо это свалка грязных хаков ;) Правда в связи с портированием на v4l2 несколько причёсанная местами.

sS ★★★★★
() автор топика
Ответ на: Re: от xnix

Re:

>с spca5xx у меня слетал ksoftirqd вместе с ядром.

ядро небось "от серьёзного вендора" ? ;)

Я использую ванильное. На последней версии пробовал с 4-мя разными камерами, глюков не замечено. Работает как часы.

Из последних глюков это если ядро/драйвер собраны gcc 4.1.x с 4кб стеком Но это никак не косяк драйвера а скорее косяк gcc 4.1.x

sS ★★★★★
() автор топика
Ответ на: Re: от sS

Re:

>ядро небось "от серьёзного вендора" ? ;)

когда последний раз пробовал, ядро было 2.6.14, ванильное, gcc-3.4.6, PREEMPT disabled

Происходило это после чтения из /dev/video

Первый раз, когда заметил, думал что из-за amd64+smp, потом пробовал на ноуте с x86, то же самое.

xnix ★★
()
Ответ на: Re: от xnix

Re:

>когда последний раз пробовал, ядро было 2.6.14, ванильное, gcc-3.4.6, PREEMPT disabled

>Происходило это после чтения из /dev/video

>Первый раз, когда заметил, думал что из-за amd64+smp, потом пробовал на ноуте с x86, то же самое.

Версию spca50x не помнишь ?

насчёт amd64 ничего не скажу, не цеплял к ним камеру, но x86 по крайней мере с версии 0.60.00 особых необъяснимых глюков не имел.

PS: Linux visual 2.6.17.11-jm #5 PREEMPT Tue Sep 5 17:05:10 CEST 2006 i686 unknown unknown GNU/Linux не-SMP

gcc version 3.3.6 насчёт SMP ничего не скажу ...ну разве что с noapic попробовать его загрузить чтоб прерывания на одном ядре обрабатывались

sS ★★★★★
() автор топика
Ответ на: Re: от sS

Re:

Поставил gspca, вроде работает(Linux router 2.6.15-27-amd64-k8 #1 SMP PREEMPT Sat Sep 16 01:57:42 UTC 2006 x86_64 GNU/Linux).

Но размер картинки слишком маленький ;( (320x200)

на коробке от камеры написано vide res : 640 x 480

still image res: 1600 x 1200

Кстати этот драйвер позволяет still image ?

xnix ★★
()

Мда... Вот есть камера Genius VideoCam EYE.

По lsusb мы видим

Bus 002 Device 003: ID 0c45:6007 Microdia

Чисто в теории она поддерживается и модулем sn9c102 и gspca. На практике же sn9c102 заявляет что сенсора не нашел...

А вот gspca это вообще песня... Познакомьтесь, так я выгляжу http://ergil.urh.ru/images/Webcam-1159286801.png по мнению камеры...

У кого есть советы?

ergil ★★★
()
Ответ на: Re: от xnix

Re:

>Но размер картинки слишком маленький ;( (320x200)

>на коробке от камеры написано vide res : 640 x 480

Дык выставь 640 x 480.

> Кстати этот драйвер позволяет still image ?

Нет. Собственно и V4L такого функционала не предоставляет.

sS ★★★★★
() автор топика
Ответ на: комментарий от ergil

Re:

>Bus 002 Device 003: ID 0c45:6007 Microdia

>Чисто в теории она поддерживается и модулем sn9c102 и gspca.

Ну вообще-то я её не вижу в списке поддерживаемых.

>У кого есть советы?

Напиши автору gspca или в список рассылки.

sS ★★★★★
() автор топика
Ответ на: Re: от sS

Re:

spcagui сегфольтится.

в gidio(тоже с сайта автора) перепробовал все режимы.

xnix ★★
()
Ответ на: Re: от xnix

Re:

>spcagui сегфольтится.

попробуй просто mplayer tv:// -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo x11

BTW: И чего там сыпется в dmesg при коннекте камеры ?

sS ★★★★★
() автор топика
Ответ на: Re: от sS

Re:

>И чего там сыпется в dmesg при коннекте камеры ?

ohci_hcd 0000:00:0b.0: wakeup
[19966.828687] usb 1-4: new full speed USB device using ohci_hcd and address 4
[19966.942883] gspca_core.c: USB SPCA5XX camera found.Sunplus FW 2
[19966.942889] gspca_core.c: [spca5xx_probe:3885] Camera type JPEG
[19966.944355] gspca_core.c: [spca5xx_getcapability:1163] maxw 464 maxh 480 minw 176 minh 144

xnix ★★
()
Ответ на: Re: от xnix

Re:

>maxw 464 maxh 480

Так что либо на коробке написали фигню либо одно из 2-х ;)

Возможно там просто програмный enhancing. То же самое по идее должен сделать mplayer хотя конечно разрешение забавное ;) Почти квадрат с портретной ориентацией ;)

sS ★★★★★
() автор топика
Ответ на: Re: от sS

Re:

Так оно запускается в этом разрешении ? (464x480) Картинка нормальная или перекосячена или вообще всё падает ?

Если второе то скорее всего просто в коде очепятка ;)

sS ★★★★★
() автор топика
Ответ на: Re: от sS

Re:

BUG

в момент работы gideo отключил камеру (физически)

программу закрыл, но /dev/video0 все еще был зарегистрирован.

mplayer повис в D

xnix ★★
()
Ответ на: Re: от xnix

Re:

Всё понятн ;)

Держи патч ;)

diff -u -r -N ../gspcav1-20060925/Sunplus-jpeg/sp5xxfw2.h gspcav1-20060925/Sunplus-jpeg/sp5xxfw2.h
--- ../gspcav1-20060925/Sunplus-jpeg/sp5xxfw2.h 2006-04-21 12:13:30.000000000 +0200
+++ gspcav1-20060925/Sunplus-jpeg/sp5xxfw2.h    2006-09-26 18:57:09.000000000 +0200
@@ -440,7 +440,7 @@
        break;
     case BRIDGE_SPCA533:
        memset(spca50x->mode_cam, 0x00, TOTMODE * sizeof(struct mwebcam));
-       spca50x->mode_cam[CUSTOM].width = 464;
+       spca50x->mode_cam[CUSTOM].width = 640;
        spca50x->mode_cam[CUSTOM].height = 480;
        spca50x->mode_cam[CUSTOM].t_palette =
            P_JPEG | P_RAW | P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;


1 пара глаз и 220 девайсов это тяжело ;)

sS ★★★★★
() автор топика
Ответ на: Re: от xnix

Re:

И отвалилось usb. совсем. не пишед даже о коннекте устройств.

[20078.808141] usb 1-4: USB disconnect, address 4

^^^ последняя строка в dmesg

$ uname -a
Linux router 2.6.15-27-amd64-k8 #1 SMP PREEMPT Sat Sep 16 01:57:42 UTC 2006 x86_64 GNU/Linux
$ ps uax|grep mplayer|grep -v grep
user      7414  0.0  1.0 134732  9328 pts/4    D+   20:58   0:00 mplayer tv:// -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo x11

xnix ★★
()
Ответ на: Re: от xnix

Re:

>И отвалилось usb. совсем. не пишед даже о коннекте устройств.

Само собой ;) Издержки монолитного ядра ;)

reboot и патч накладывай на драйвер.

sS ★★★★★
() автор топика
Ответ на: Re: от sS

Re:

А как быть в зависанием mplayer в kernel mode при _отключенной_ камере ?

т.е. в момент отключения /dev/video0 использовался gideo, при отключении из-за того что девайс был занят драйвер не сделал video_unregister_device.

xnix ★★
()
Ответ на: Re: от xnix

Re:

в dmesg дохрена записей

gspca_core.c: [spca50x_move_data:1522] ISOC data error: [14] len=0, status=-110

xnix ★★
()
Ответ на: Re: от xnix

Re:

>А как быть в зависанием mplayer в kernel mode при _отключенной_ камере ?

Ща посмотрю. По идее если нет потока то должно отключатся абсолютно безболезненно.

У меня сейчас правда стоит gspcav2 но на моей камере после выдёргивания шнурка даже при потоке на юзерспейсовую приблуду при её последующем убиении gspca корректно делает video_unregister_device и при последующем втыкании всё нормально работает.

sS ★★★★★
() автор топика
Ответ на: Re: от xnix

Re:

>gspca_core.c: [spca50x_move_data:1522] ISOC data error: [14] len=0, status=-110

Это до или после патча ?

sS ★★★★★
() автор топика
Ответ на: Re: от xnix

Re:

>После патча на 640x480:

Тогда похоже я с патчем поторопился ;)

Верни обратно и запусти на старом разрешении

sS ★★★★★
() автор топика
Ответ на: Re: от sS

Ладно. Поговорю на эту тему с аффтфром может чего и разъяснится насчёт разрешения. В любом случае без железяки на столе это всё равно что ставить диагноз по телевизеру ;)

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

Баг с зависанием в ядре удалось повтористь(2 раза).

1)даем нагрузку на процы

while [ 1 -lt 2 ]; do echo 2 > /dev/null; done

запускаем n+1 таких процессов.

2)подключаем камеру, запускаем gideo.

в момент работы камеры включаем и выключаем ее несколько раз.

3) запускаем мплеер.(камера выключена)

4) убиваем gideo.

результат mplayer in D state.

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

Попробую найти драйвера от венды и машину с вендой и потестировать видеорежимы. Завтра напишу.

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

>Баг с зависанием в ядре удалось повтористь(2 раза).

А мне никак ;)

>1)даем нагрузку на процы

>while [ 1 -lt 2 ]; do echo 2 > /dev/null; done

>запускаем n+1 таких процессов.

Сделал.

>2)подключаем камеру, запускаем gideo.

У меня нету гномов поэтому я заменил его camsteram-ом

>в момент работы камеры включаем и выключаем ее несколько раз.

Сделал.

>3) запускаем мплеер.(камера выключена)

Запустил. Вообще согласно спецификации (V4L1 и 2) /dev/video0 нельзя открыть более 1 раза поэтому mplayer справедливо сказал

Проигрывание tv://. Selected driver: v4l name: Video 4 Linux input author: Alex Beregszaszi comment: under development unable to open '/dev/video0': No such file or directory

>4) убиваем gideo.

Убил camstream

>результат mplayer in D state.

разумеется никакого mplayera в памяти уже нет ...

Как ему удалось открыть уже открытый другим приложением девайс не совсем понятно ... может чего нибудь gideo _этокое_ выдумывает ?

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

>Вообще согласно спецификации (V4L1 и 2) /dev/video0 нельзя открыть более 1 раза поэтому mplayer справедливо сказал

вообще должен был сказать "device or resource is busy"

/dev/video0 deregistered

вот еще раз

http://img244.imageshack.us/my.php?image=screenshot1ts0.png

PS

система SMP ?

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

>gideo _этокое_ выдумывает ?

ну даже если это он, то все равно плохо, иби подсистема usb _вообще_ перестает работать.

xnix ★★
()

Обновился, пропали некоторые глюки, но яркость по-прежнему не настраивается автоматически на моей камере :-(

anonymous
()
Ответ на: комментарий от xnix

>вообще должен был сказать "device or resource is busy"

Он так говорит если при работающем camstream-е пустить mplayer

Если камеру выдернуть на ходу (делаю) проигрывающий процесс уходит в Sl

в логах соответственно имеем

/home/ss/Work/WebCam/all_patches/gspcav1-20060925/gspca_core.c: [spca50x_isoc_irq:927] Non-zero status (-84) in isoc completion handler. /home/ss/Work/WebCam/all_patches/gspcav1-20060925/gspca_core.c: [spca50x_isoc_irq:927] Non-zero status (-84) in isoc completion handler. usb 2-1: USB disconnect, address 34

При запуске mplayer имеем unable to open '/dev/video0': No such device

После убивания процесса (9 сигналом) всё возвращается к status quo

Там какие то были тонкости с остановкой потока от USB device, может в этом дело. Надо код смотреть. Хотя без железяки это "игра в шахматы с помощью голубиной почты" ;)

>система SMP ?

Нет. Ноутбучный Mobile Celeron на Вилли.

sS ★★★★★
() автор топика
Ответ на: комментарий от anonymous

>Обновился, пропали некоторые глюки, но яркость по-прежнему не настраивается автоматически на моей камере :-(

Что за камера ?

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

щас выставил аффинити всех прерываний в 1.

запускал так : taskset -c 0 [cmd]

(короче все пренес на CPU0)

все равно тоже самое ;(

есть 2 вопроса :

1) как-нибудь связан этот драйвер с ksoftirqd ?

2) может ли Linux пускать при таких условиях что-нить из кода драйвера на втором проце ?

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

А с разрешением чего ?

Кстати ты предварительно удалил драйвер из памяти ?

PS: Ща засуну в параметры установки разрешения чтобы можно было на ходу разрешением поиграть ;)

sS ★★★★★
() автор топика
Ответ на: комментарий от xnix

>1) как-нибудь связан этот драйвер с ksoftirqd ?

Да.

>2) может ли Linux пускать при таких условиях что-нить из кода драйвера на втором проце ?

А вот это Х.З. Но сам драйвер там никаких потоков явно не запускает. Возможно действительно не хватает каких то синхронизаций.

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

diff -u -r -N ../gspcav1-20060925/gspca_core.c gspcav1-20060925/gspca_core.c
--- ../gspcav1-20060925/gspca_core.c    2006-09-25 19:24:22.000000000 +0200
+++ gspcav1-20060925/gspca_core.c       2006-09-26 22:13:12.000000000 +0200
@@ -95,11 +95,15 @@
 #endif
 /* Light frequency banding filter 50HZ/60HZ/NoFliker */
 static int lightfreq = 50;
+static int max_width = 640;
+static int max_height = 480;
 #ifdef GSPCA_ENABLE_REGISTERPLAY
 static int RegAddress = 0;
 static int RegValue = 0;
 static int RegStrobe = 0;
 #endif
+module_param(max_width, int, 0644);
+module_param(max_height, int, 0644);
 module_param(autoexpo, int, 0644);
 module_param(debug, int, 0644);
 module_param(force_rgb, int, 0644);
@@ -120,6 +124,8 @@
 module_param(RegValue, int, 0644);
 module_param(RegStrobe, int, 0644);
 #endif
+MODULE_PARM_DESC(max_width,"Max width (default=640)");
+MODULE_PARM_DESC(max_height,"Max height (default=480)");
 MODULE_PARM_DESC(autoexpo,
                 "Enable/Disable auto exposure (default=1: enabled) (PC-CAM 600/Zc03xx/spca561a/Etoms Only !!!)");
 MODULE_PARM_DESC(debug,
diff -u -r -N ../gspcav1-20060925/Sunplus-jpeg/sp5xxfw2.h gspcav1-20060925/Sunplus-jpeg/sp5xxfw2.h
--- ../gspcav1-20060925/Sunplus-jpeg/sp5xxfw2.h 2006-04-21 12:13:30.000000000 +0200
+++ gspcav1-20060925/Sunplus-jpeg/sp5xxfw2.h    2006-09-26 22:14:01.000000000 +0200
@@ -440,8 +440,8 @@
        break;
     case BRIDGE_SPCA533:
        memset(spca50x->mode_cam, 0x00, TOTMODE * sizeof(struct mwebcam));
-       spca50x->mode_cam[CUSTOM].width = 464;
-       spca50x->mode_cam[CUSTOM].height = 480;
+       spca50x->mode_cam[CUSTOM].width = max_width;
+       spca50x->mode_cam[CUSTOM].height = max_height;
        spca50x->mode_cam[CUSTOM].t_palette =
            P_JPEG | P_RAW | P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;
        spca50x->mode_cam[CUSTOM].pipe = 1023;
diff -u -r -N ../gspcav1-20060925/Vimicro/zc3xx.h gspcav1-20060925/Vimicro/zc3xx.h
--- ../gspcav1-20060925/Vimicro/zc3xx.h 2006-09-25 19:16:41.000000000 +0200
+++ gspcav1-20060925/Vimicro/zc3xx.h    2006-09-26 22:14:27.000000000 +0200
@@ -430,8 +430,8 @@
 static void set_zc3xxVGA(struct usb_spca50x *spca50x)
 {
     memset(spca50x->mode_cam, 0x00, TOTMODE * sizeof(struct mwebcam));
-    spca50x->mode_cam[VGA].width = 640;
-    spca50x->mode_cam[VGA].height = 480;
+    spca50x->mode_cam[VGA].width = max_width;
+    spca50x->mode_cam[VGA].height = max_height;
     spca50x->mode_cam[VGA].t_palette =
        P_JPEG | P_RAW | P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;
     spca50x->mode_cam[VGA].pipe = 1023;



Соответственно либо загружать с параметром gspca max_width=<скоко>
либо 

echo <скоко> > /sys/bus/usb/drivers/gspca/module/parameters/max_width
от root-а и потом перевтыкаешь камеру 

sS ★★★★★
() автор топика
Ответ на: комментарий от xnix

те cat /dev/video0

потом выдернуть/вставить камеру несколько раз(делать это надо быстро)

еще раз cat /dev/video0

потом killall -9 cat. один из них не убьется, а останется в D

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

патч щас попробую.

По поводу бага. Предлагаю такое решение.

atomic_t rw_count;

при инициализации сделать atomic_set(&rw_count,0);

на входе в read/mmap

if(atomic_read(&rw_count))
   return -EAGAIN;

atomic_inc(&rw_count);

...Some code...

atomic_dec(&rw_count);

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

>те cat /dev/video0

>потом выдернуть/вставить камеру несколько раз(делать это надо быстро)

Может я нерасторопный стал на старости лет ;) но говорит disconnect и все дела...

sS ★★★★★
() автор топика
Ответ на: комментарий от xnix

>По поводу бага. Предлагаю такое решение.

Можно попробовать.

Только я у себя результат не смогу проверить из-за невоспроизводимости бага на моей железяке ;)

sS ★★★★★
() автор топика
Ответ на: комментарий от xnix

>там celeron и нет никакого smp ядра. Система gentoo, ядро компилил сам.

Тогда вообще непонятно чего там не так. Видимо это действительно камерозависимый баг. Кстати у тебя ядро было собрано без PREEMPT. Может в этом дело ? Как оно на ноуте собрано ?

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