[sisyphus] gspca

Sergey Vlasov vsu на altlinux.ru
Ср Май 20 16:50:16 MSD 2009


On Wed, May 20, 2009 at 02:44:46PM +0300, tiger на gauss.com.ua wrote:
> 
>   Народ ! Есть такое чудо:
> 0ac8:303b Z-Star Microelectronics Corp. ZC0303 Webcam
> на старом ядре 2.6.25-чего-то там std-def жило и вполне сносно
> обслуживается драйвером gspca. В старом ядре оно было отдельным пакетом,
> сейчас включено в модули ядра (вроде v4l). Обслуживается оно конкретно
> драйвером gspca_zc3xx. Причем система сама считает, что надо обслуживать
> устройство драйвером zc0301, и в логах ругается так:
> ----------/var/log/messages------------
> Product: PC Camera
> usb 1-4: Manufacturer: Vimicro Corp.
> zc0301: V4L2 driver for ZC0301[P] Image Processor and Control Chip v1:1.10
> usb 1-4: ZC0301[P] Image Processor and Control Chip detected (vid/pid
> 0x0AC8:0x303B)
> usb 1-4: No supported image sensor detected
> usbcore: registered new interface driver zc0301
> ---------------------------------------
> ---------dmesg-------------------------
> Product: PC Camera
> Manufacturer: Vimicro Corp.
> usb 1-4: USB disconnect, address 13
> usb 1-4: new full speed USB device using ohci_hcd and address 14
> usb 1-4: configuration #1 chosen from 1 choice
> usb 1-4: New USB device found, idVendor=0ac8, idProduct=303b
> usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
> usb 1-4: Product: PC Camera
> usb 1-4: Manufacturer: Vimicro Corp.
> zc0301: V4L2 driver for ZC0301[P] Image Processor and Control Chip v1:1.10
> usb 1-4: ZC0301[P] Image Processor and Control Chip detected (vid/pid
> 0x0AC8:0x303B)
> usb 1-4: No supported image sensor detected
> usbcore: registered new interface driver zc0301
> --------------------------------------
> никакого /dev/video* не появляется, естественно.
> если грузить драйвер gspca_zc3xx, то тоже не работает ничего.

В 2.6.27 (commit c41492c89a00630c7482eae25deaf9af91b73c98) в драйвере
gspca_zc3xx отключили поддержку USB ID для устройств, для которых в
ядре есть другие драйверы (в том числе zc0301).  В 2.6.27-std-*-alt17
этот код выглядит так:

#if !defined CONFIG_USB_ZC0301 && !defined CONFIG_USB_ZC0301_MODULE
	{USB_DEVICE(0x0ac8, 0x303b)},
#endif

Т.е., если в конфигурации ядра включена сборка драйвера zc0301, в
драйвере gspca_zc3xx отключается поддержка USB ID, совпадающих в этих
драйверах, чтобы для устройства выбирался только один драйвер.

Однако на самом деле хитрые китайцы собирают камеры из тех чипов,
которые подвернулись им под руку, при этом USB ID зависит от
используемого контроллера, но к одному и тому же контроллеру могут
быть подключены разные сенсоры.  В данном случае драйвер zc0301
поддерживает используемый контроллер, но поддержки подключенного к
нему сенсора в этом драйвере нет, а в gspca, вероятно, есть.  Эта
проблема исправлена в 2.6.30-rc1 путём переноса USB ID 0ac8:303b в
драйвер gspca_zc3xx (commit ef6bc5aec2d8bd53dcc851a5cd2fc8e918db239b);
теперь уже в zc0301 это устройство добавляется в таблицу только в том
случае, если драйвер gspca_zc3xx не собирается.

С имеющейся версией ядра можно попробовать сделать следующее:

  modprobe gspca_zc3xx
  echo "0x0ac8 0x303b" > /sys/bus/usb/drivers/gspca_zc3xx/new_id

Чтобы не грузился лишний модуль zc0301, можно дополнительно запретить
его автозагрузку:

  echo "blacklist zc0301" >> /etc/modprobe.d/local.conf

(если этот модуль не нужен для других устройств).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20090520/526b06ea/attachment.bin>


Подробная информация о списке рассылки Sisyphus