Проблемная Web камера Vimicro ZC0301PL (0x0AC8, 0x301b) и Linux
c примерами установки для старых и новых ядер.
Vimicro ZC0301PL (0x0AC8, 0x301b) work with Linux now!!!
Moscow 2011
Указанная выше Web камера имеет уникальное свойство - она не желает добровольно работать ни со старыми, ни с новыми версиями ядер Linux и версиями gspca.
Как выяснилось, одной из причиной этого является отсутствие открытой техдокументации на сенсоры, применяемые в конструкции данной камеры. И в результате этого , некорректной работой модулей (функций) АВТОМАТИЧЕСКОЙ идентификации сенсоров в gspca.
Поэтому, пришлось начать с изучения драйверов, поставляемых с камерой для работы с ОС Windows, в частности файла usbvm31.inf.
Данный файл содержит таблицу инициализации сенсора TAS5130C, которая с учетом замысловатых перестановок никах не хотела совпадать с таблицами автора gspca для камер с идентификаторами 0x0AC8, 0x301b Vimicro и сенсором tas5130cxx.
Напротив, таблица инициализации Windows usbvm31.inf для tas5130C (Vimicro ZC0301PL) почти полностью совпала с сенсором pb0330 из gspcav1 (pb0330.h) и с таблицей для tas5130CK из новой версии gspca V2 (gspca_zc3xx).
Вот только после этого и удалось запустить Vimicro ZC0301PL (0x0AC8, 0x301b)
под Linux, используя правильную таблицу инициализации и управления сенсором.
________________________________________________________________________________
____________________
Работа со старой версией ядра. Old kernel. Ubuntu 6.10 (2.6.17-10-generic)
________________________________________________________________________________
____________________
Скачать с сайта
http://mxhaard.free.fr/ файл gspcav1-20071224.tar.gz
Распаковать архив в папку /home/<имя пользователя>/Desktop
Переименовать полученную папку в gspcav1 для краткости.
Заменить файл /gspcav1/Vimicro/tas5130c.h на файл zc0301pl_tas5130c.h, с новой таблицей инициализации видеосенсора (таблица является творческим обьединением pb0330.h и tas5130CK из последнего gspca V2). Текст файла zc0301pl_tas5130c.h прилагаю, его можно усовершенствовать и упростить, но нужно иметь фирменную и полную систему команд сенсора и его контроллера (моста). Действовать методом проб нецелесообразно. Работает и так.
Файл zc0301pl_tas5130c.h
/****************************************************************************
# TAS5130C library #
# Copyright © 2004 Michel Xhaard mxhaard@magic.fr #
# #
# It does for Vimicro ZC0301PL (0x0AC8, 0x301b) #
# from pb0330.h (gspcav1*) and tas5130CK (gspca V2) #
# by r_evgeni45@mail.ru #
# Moscow 2011 #
# This program is free software; you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation; either version 2 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
****************************************************************************/
static __u16 tas5130cxx_start_data[][3] = {
{0xa0, 0x01, 0x000},
{0xa0, 0x01, 0x003b},
{0xa0, 0x0e, 0x003a},
{0xa0, 0x01, 0x0038},
{0xa0, 0x0b, 0x0039},
{0xa0, 0x00, 0x0038},
{0xa0, 0x0b, 0x0039},
{0xa0, 0x01, 0x0000}, // analog from tas5130C usbvm31.inf Windows
{0xa0, 0x03, 0x0008},
{0xa0, 0x0a, 0x0010},
{0xa0, 0x10, 0x0002},
{0xa0, 0x02, 0x0003},
{0xa0, 0x80, 0x0004},
{0xa0, 0x01, 0x0005},
{0xa0, 0xe0, 0x0006},
{0xa0, 0xdc, 0x008b}, //8b -> dc
{0xa0, 0x01, 0x0001},
{0xa0, 0x07, 0x0012},
{0xa0, 0x05, 0x0012},
{0xa0, 0x00, 0x0098},
{0xa0, 0x00, 0x009a},
{0xa0, 0x00, 0x011a},
{0xa0, 0x00, 0x011c},
{0xa0, 0xdc, 0x008b},
// 00,02,00,dd,
{0xa0, 0x01, 0x0092},
{0xa0, 0x01, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x06, 0x0092},
{0xa0, 0x00, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x08, 0x0092},
{0xa0, 0x00, 0x0093}, //83
{0xa0, 0x04, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x01, 0x0092},
{0xa0, 0x04, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x08, 0x0092},
{0xa0, 0x06, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x02, 0x0092},
{0xa0, 0x11, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x03, 0x0092},
{0xa0, 0xe7, 0x0093},
{0xa0, 0x01, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x04, 0x0092},
{0xa0, 0x87, 0x0093},
{0xa0, 0x02, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x07, 0x0092},
{0xa0, 0x02, 0x0093},
{0xa0, 0x30, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x20, 0x0092},
{0xa0, 0x00, 0x0093},
{0xa0, 0x11, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x35, 0x0092},
{0xa0, 0x50, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x30, 0x0092},
{0xa0, 0x05, 0x0093}, // 05
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x31, 0x0092},
{0xa0, 0x20, 0x0093}, // 00
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x58, 0x0092},
{0xa0, 0x50, 0x0093}, // 78
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x62, 0x0092},
{0xa0, 0x50, 0x0093}, // 11
{0xa0, 0x04, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x2b, 0x0092}, // 30
{0xa0, 0x20, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x2c, 0x0092},
{0xa0, 0x20, 0x0093}, // 30
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x2d, 0x0092},
{0xa0, 0x20, 0x0093}, // 30
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x2e, 0x0092},
{0xa0, 0x20, 0x0093}, // 30
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x10, 0x0087},
{0xa0, 0x37, 0x0101},
{0xa0, 0x05, 0x0012},
{0xa0, 0x0d, 0x0100},
{0xa0, 0x06, 0x0189},
{0xa0, 0x00, 0x01ad},
{0xa0, 0x03, 0x01c5},
{0xa0, 0x13, 0x01cb},
{0xa0, 0x08, 0x0250},
{0xa0, 0x08, 0x0301},
{0xa0, 0x60, 0x01a8},
{0xa0, 0x78, 0x018d},
{0xa0, 0x61, 0x0116},
{0xa0, 0x65, 0x0118},
{0xa0, 0x09, 0x01ad}, //from tas5130CK zc3xx.c gspca V2
{0xa0, 0x15, 0x01ae},
{0xa0, 0x4c, 0x10A}, /* matrix */
{0xa0, 0xf1, 0x10B},
{0xa0, 0x03, 0x10C},
{0xa0, 0xfe, 0x10D},
{0xa0, 0x51, 0x10E},
{0xa0, 0xf1, 0x10F},
{0xa0, 0xec, 0x110},
{0xa0, 0x03, 0x111},
{0xa0, 0x51, 0x112},
{0xa0, 0x03, 0x008},
{0xa0, 0x08, 0x1C6}, /* sharpness+ */
{0xa0, 0x0f, 0x1CB}, /* sharpness- */
{0xa0, 0x38, 0x120}, // gamma > 5
{0xa0, 0x51, 0x121},
{0xa0, 0x6e, 0x122},
{0xa0, 0x8c, 0x123},
{0xa0, 0xa2, 0x124},
{0xa0, 0xb6, 0x125},
{0xa0, 0xc8, 0x126},
{0xa0, 0xd6, 0x127},
{0xa0, 0xe2, 0x128},
{0xa0, 0xed, 0x129},
{0xa0, 0xf5, 0x12A},
{0xa0, 0xfc, 0x12B},
{0xa0, 0xff, 0x12C},
{0xa0, 0xff, 0x12D},
{0xa0, 0xff, 0x12E},
{0xa0, 0xff, 0x12F},
{0xa0, 0x12, 0x130},
{0xa0, 0x1b, 0x131},
{0xa0, 0x1d, 0x132},
{0xa0, 0x1a, 0x133},
{0xa0, 0x15, 0x134},
{0xa0, 0x12, 0x135},
{0xa0, 0x0f, 0x136},
{0xa0, 0x0d, 0x137},
{0xa0, 0x0b, 0x138},
{0xa0, 0x09, 0x139},
{0xa0, 0x07, 0x13A},
{0xa0, 0x05, 0x13B},
{0xa0, 0x00, 0x13C},
{0xa0, 0x00, 0x13D},
{0xa0, 0x00, 0x13E},
{0xa0, 0x01, 0x13F},
{0xa0, 0x4c, 0x10A}, // matrix
{0xa0, 0xf1, 0x10B},
{0xa0, 0x03, 0x10C},
{0xa0, 0xfe, 0x10D},
{0xa0, 0x51, 0x10E},
{0xa0, 0xf1, 0x10F},
{0xa0, 0xec, 0x110},
{0xa0, 0x03, 0x111},
{0xa0, 0x51, 0x112},
{0xa0, 0x10, 0x180},
{0xa0, 0x00, 0x180},
{0xa0, 0x00, 0x019},
{0xa0, 0x05, 0x092},
{0xa0, 0x62, 0x093},
{0xa0, 0x00, 0x094},
{0xa0, 0x01, 0x090},
{0xa0, 0x09, 0x092},
{0xa0, 0xaa, 0x093},
{0xa0, 0x01, 0x094},
{0xa0, 0x01, 0x090},
{0xa0, 0x00, 0x190},
{0xa0, 0x03, 0x191},
{0xa0, 0x9b, 0x192},
{0xa0, 0x00, 0x195},
{0xa0, 0x00, 0x196},
{0xa0, 0x47, 0x197},
{0xa0, 0x0e, 0x18C},
{0xa0, 0x1c, 0x18F},
{0xa0, 0x14, 0x1A9},
{0xa0, 0x66, 0x1AA},
{0xa0, 0x62, 0x01D},
{0xa0, 0x90, 0x01E},
{0xa0, 0xc8, 0x01F},
{0xa0, 0xff, 0x020},
{0xa0, 0x60, 0x11D},
{0xa0, 0x42, 0x180},
{0xa0, 0x09, 0x01ad},
{0xa0, 0x15, 0x01ae},
{0xa0, 0x40, 0x180},
{0xa0, 0x42, 0x180},
{0xa0, 0x30, 0x0007},
{0xa0, 0x02, 0x008},
{0xa0, 0x00, 0x0007},
{0xa0, 0x03, 0x008},
{0, 0, 0},
};
static __u16 tas5130cxx_scale_data[][3] = {
{0xa0, 0x01, 0x0000}, // from pb0330.h
{0xa0, 0x03, 0x0008},
{0xa0, 0x0a, 0x0010},
{0xa0, 0x00, 0x0002},
{0xa0, 0x02, 0x0003},
{0xa0, 0x80, 0x0004},
{0xa0, 0x01, 0x0005},
{0xa0, 0xe0, 0x0006},
{0xa0, 0xdc, 0x008b}, // 8b -> dc
{0xa0, 0x01, 0x0001},
{0xa0, 0x07, 0x0012}, // 3
{0xa0, 0x05, 0x0012}, //
{0xa0, 0x00, 0x0098},
{0xa0, 0x00, 0x009a},
{0xa0, 0x00, 0x011a},
{0xa0, 0x00, 0x011c},
{0xa0, 0xdc, 0x008b},
{0xa0, 0x01, 0x0092},
{0xa0, 0x01, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x06, 0x0092},
{0xa0, 0x00, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x08, 0x0092},
{0xa0, 0x83, 0x0093},
{0xa0, 0x04, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x01, 0x0092},
{0xa0, 0x04, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x08, 0x0092},
{0xa0, 0x06, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x02, 0x0092},
{0xa0, 0x11, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x03, 0x0092},
{0xa0, 0xe7, 0x0093},
{0xa0, 0x01, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x04, 0x0092},
{0xa0, 0x87, 0x0093},
{0xa0, 0x02, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x07, 0x0092},
{0xa0, 0x02, 0x0093},
{0xa0, 0x30, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x20, 0x0092},
{0xa0, 0x00, 0x0093},
{0xa0, 0x11, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x35, 0x0092},
{0xa0, 0x50, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x30, 0x0092},
{0xa0, 0x05, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x31, 0x0092},
{0xa0, 0x00, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x58, 0x0092},
{0xa0, 0x78, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x62, 0x0092},
{0xa0, 0x11, 0x0093},
{0xa0, 0x04, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x2b, 0x0092},
{0xa0, 0x28, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x2c, 0x0092},
{0xa0, 0x30, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x2d, 0x0092},
{0xa0, 0x30, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x2e, 0x0092},
{0xa0, 0x28, 0x0093},
{0xa0, 0x00, 0x0094},
{0xa0, 0x01, 0x0090},
{0xa1, 0x01, 0x0091},
{0xa0, 0x10, 0x0087},
{0xa0, 0x37, 0x0101},
{0xa0, 0x05, 0x0012},
{0xa0, 0x0d, 0x0100},
{0xa0, 0x06, 0x0189},
{0xa0, 0x00, 0x01ad},
{0xa0, 0x03, 0x01c5},
{0xa0, 0x13, 0x01cb},
{0xa0, 0x08, 0x0250},
{0xa0, 0x08, 0x0301},
{0xa0, 0x60, 0x01a8},
{0xa0, 0x78, 0x018d},
{0xa0, 0x61, 0x0116},
{0xa0, 0x65, 0x0118},
{0, 0, 0},
};
static __u16 tas5130cxx_50HZ[][3] = {
{0xa0, 0x0000, 0x0019}, //00,19,00,cc
{0xa0, 0x00a3, 0x0092}, //00,a3,01,aa
{0xa0, 0x0001, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x00a4, 0x0092}, //00,a4,63,aa
{0xa0, 0x0063, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x0001, 0x00a3}, //00,a3,01,cc
{0xa0, 0x0063, 0x00a4}, //00,a4,63,cc
{0xa0, 0x0000, 0x0190}, //01,90,00,cc
{0xa0, 0x0002, 0x0191}, //01,91,02,cc
{0xa0, 0x0038, 0x0192}, //01,92,38,cc
{0xa0, 0x0000, 0x0195}, //01,95,00,cc
{0xa0, 0x0000, 0x0196}, //01,96,00,cc
{0xa0, 0x0047, 0x0197}, //01,97,47,cc
{0xa0, 0x0010, 0x018c}, //01,8c,10,cc
{0xa0, 0x0020, 0x018f}, //01,8f,20,cc
{0xa0, 0x000c, 0x01a9}, //01,a9,0c,cc
{0xa0, 0x0026, 0x01aa}, //01,aa,26,cc
{0xa0, 0x00d3, 0x001d}, //00,1d,d3,cc
{0xa0, 0x00da, 0x001e}, //00,1e,da,cc
{0xa0, 0x00ea, 0x001f}, //00,1f,ea,cc
{0xa0, 0x00ff, 0x0020}, //00,20,ff,cc
{0xa0, 0x0003, 0x009f}, //00,9f,03,cc
/*******************/
{0, 0, 0}
};
static __u16 tas5130cxx_50HZScale[][3] = {
{0xa0, 0x0000, 0x0019}, //00,19,00,cc
{0xa0, 0x00a3, 0x0092}, //00,a3,01,aa
{0xa0, 0x0001, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x00a4, 0x0092}, //00,a4,77,aa
{0xa0, 0x0077, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x0001, 0x00a3}, //00,a3,01,cc
{0xa0, 0x0077, 0x00a4}, //00,a4,77,cc
{0xa0, 0x0000, 0x0190}, //01,90,00,cc
{0xa0, 0x0003, 0x0191}, //01,91,03,cc
{0xa0, 0x00e8, 0x0192}, //01,92,e8,cc
{0xa0, 0x0000, 0x0195}, //01,95,00,cc
{0xa0, 0x0000, 0x0196}, //01,96,00,cc
{0xa0, 0x007d, 0x0197}, //01,97,7d,cc
{0xa0, 0x0014, 0x018c}, //01,8c,14,cc
{0xa0, 0x0020, 0x018f}, //01,8f,20,cc
{0xa0, 0x000c, 0x01a9}, //01,a9,0c,cc
{0xa0, 0x0026, 0x01aa}, //01,aa,26,cc
{0xa0, 0x00f0, 0x001d}, //00,1d,f0,cc
{0xa0, 0x00f4, 0x001e}, //00,1e,f4,cc
{0xa0, 0x00f8, 0x001f}, //00,1f,f8,cc
{0xa0, 0x00ff, 0x0020}, //00,20,ff,cc
{0xa0, 0x0003, 0x009f}, //00,9f,03,cc
/*******************/
{0, 0, 0}
};
static __u16 tas5130cxx_60HZ[][3] = {
{0xa0, 0x0000, 0x0019}, //00,19,00,cc
{0xa0, 0x00a3, 0x0092}, //00,a3,01,aa
{0xa0, 0x0001, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x00a4, 0x0092}, //00,a4,36,aa
{0xa0, 0x0036, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x0001, 0x00a3}, //00,a3,01,cc
{0xa0, 0x0036, 0x00a4}, //00,a4,36,cc
{0xa0, 0x0000, 0x0190}, //01,90,00,cc
{0xa0, 0x0001, 0x0191}, //01,91,01,cc
{0xa0, 0x00f0, 0x0192}, //01,92,f0,cc
{0xa0, 0x0000, 0x0195}, //01,95,00,cc
{0xa0, 0x0000, 0x0196}, //01,96,00,cc
{0xa0, 0x003e, 0x0197}, //01,97,3e,cc
{0xa0, 0x0010, 0x018c}, //01,8c,10,cc
{0xa0, 0x0020, 0x018f}, //01,8f,20,cc
{0xa0, 0x000c, 0x01a9}, //01,a9,0c,cc
{0xa0, 0x0026, 0x01aa}, //01,aa,26,cc
{0xa0, 0x00ca, 0x001d}, //00,1d,ca,cc
{0xa0, 0x00d0, 0x001e}, //00,1e,d0,cc
{0xa0, 0x00e0, 0x001f}, //00,1f,e0,cc
{0xa0, 0x00ff, 0x0020}, //00,20,ff,cc
{0xa0, 0x0003, 0x009f}, //00,9f,03,cc
/*******************/
{0, 0, 0}
};
static __u16 tas5130cxx_60HZScale[][3] = {
{0xa0, 0x0000, 0x0019}, //00,19,00,cc
{0xa0, 0x00a3, 0x0092}, //00,a3,01,aa
{0xa0, 0x0001, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x00a4, 0x0092}, //00,a4,77,aa
{0xa0, 0x0077, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x0001, 0x00a3}, //00,a3,01,cc
{0xa0, 0x0077, 0x00a4}, //00,a4,77,cc
{0xa0, 0x0000, 0x0190}, //01,90,00,cc
{0xa0, 0x0003, 0x0191}, //01,91,03,cc
{0xa0, 0x00e8, 0x0192}, //01,92,e8,cc
{0xa0, 0x0000, 0x0195}, //01,95,00,cc
{0xa0, 0x0000, 0x0196}, //01,96,00,cc
{0xa0, 0x007d, 0x0197}, //01,97,7d,cc
{0xa0, 0x0014, 0x018c}, //01,8c,14,cc
{0xa0, 0x0020, 0x018f}, //01,8f,20,cc
{0xa0, 0x000c, 0x01a9}, //01,a9,0c,cc
{0xa0, 0x0026, 0x01aa}, //01,aa,26,cc
{0xa0, 0x00c8, 0x001d}, //00,1d,c8,cc
{0xa0, 0x00d0, 0x001e}, //00,1e,d0,cc
{0xa0, 0x00e0, 0x001f}, //00,1f,e0,cc
{0xa0, 0x00ff, 0x0020}, //00,20,ff,cc
{0xa0, 0x0003, 0x009f}, //00,9f,03,cc
/*******************/
{0, 0, 0}
};
static __u16 tas5130cxx_NoFliker[][3] = {
{0xa0, 0x0000, 0x0019}, //00,19,00,cc
{0xa0, 0x00a3, 0x0092}, //00,a3,01,aa
{0xa0, 0x0001, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x00a4, 0x0092}, //00,a4,40,aa
{0xa0, 0x0040, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x0001, 0x00a3}, //00,a3,01,cc
{0xa0, 0x0040, 0x00a4}, //00,a4,40,cc
{0xa0, 0x0000, 0x0190}, //01,90,00,cc
{0xa0, 0x0001, 0x0191}, //01,91,01,cc
{0xa0, 0x00f0, 0x0192}, //01,92,f0,cc
{0xa0, 0x0000, 0x0195}, //01,95,00,cc
{0xa0, 0x0000, 0x0196}, //01,96,00,cc
{0xa0, 0x0010, 0x0197}, //01,97,10,cc
{0xa0, 0x0010, 0x018c}, //01,8c,10,cc
{0xa0, 0x0020, 0x018f}, //01,8f,20,cc
{0xa0, 0x0000, 0x01a9}, //01,a9,00,cc
{0xa0, 0x0000, 0x01aa}, //01,aa,00,cc
{0xa0, 0x00bc, 0x001d}, //00,1d,bc,cc
{0xa0, 0x00d0, 0x001e}, //00,1e,d0,cc
{0xa0, 0x00e0, 0x001f}, //00,1f,e0,cc
{0xa0, 0x00ff, 0x0020}, //00,20,ff,cc
{0xa0, 0x0002, 0x009f}, //00,9f,02,cc
/*******************/
{0, 0, 0}
};
static __u16 tas5130cxx_NoFlikerScale[][3] = {
{0xa0, 0x0000, 0x0019}, //00,19,00,cc
{0xa0, 0x00a3, 0x0092}, //00,a3,01,aa
{0xa0, 0x0001, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x00a4, 0x0092}, //00,a4,90,aa
{0xa0, 0x0090, 0x0093}, //
{0xa0, 0x0000, 0x0094}, //
{0xa0, 0x0001, 0x0090}, //
{0xa1, 0x0001, 0x0091}, //
/**********************/
{0xa0, 0x0001, 0x00a3}, //00,a3,01,cc
{0xa0, 0x0090, 0x00a4}, //00,a4,90,cc
{0xa0, 0x0000, 0x0190}, //01,90,00,cc
{0xa0, 0x0003, 0x0191}, //01,91,03,cc
{0xa0, 0x00f0, 0x0192}, //01,92,f0,cc
{0xa0, 0x0000, 0x0195}, //01,95,00,cc
{0xa0, 0x0000, 0x0196}, //01,96,00,cc
{0xa0, 0x0010, 0x0197}, //01,97,10,cc
{0xa0, 0x0010, 0x018c}, //01,8c,10,cc
{0xa0, 0x0020, 0x018f}, //01,8f,20,cc
{0xa0, 0x0000, 0x01a9}, //01,a9,00,cc
{0xa0, 0x0000, 0x01aa}, //01,aa,00,cc
{0xa0, 0x00bc, 0x001d}, //00,1d,bc,cc
{0xa0, 0x00d0, 0x001e}, //00,1e,d0,cc
{0xa0, 0x00e0, 0x001f}, //00,1f,e0,cc
{0xa0, 0x00ff, 0x0020}, //00,20,ff,cc
{0xa0, 0x0002, 0x009f}, //00,9f,02,cc
/*******************/
{0, 0, 0}
};
/* конец файла END */
Пояснение для начинающих. Копируем текст файла , начиная с верхних левых символов /* и кончая нижними правыми */ или }; перед надписью /* конец файла END */.
Переименовать файл zc0301pl_tas5130c.h в tas5130c.h
В файле /gspcav1/gspca_core.c в строке 3592 заменить SENSOR_PB0330 на SENSOR_TAS5130CXX
Для справки - идентификатор сенсора, определяемый gspcav1, равен 0xffffffff, что неправильно.
В файле /gspca/Vimicro/zc3xx.h в строке 598 проверить, что записано. Нужно записать
spca50x->sensor = SENSOR_TAS5130CXX;
Зайти в папку Desktop с правами суперпользователя:
su <пароль>
или sudo passwd root
Скопировать папку gspcav1 в /usr/src
Для этого набрать
cp -r gspcav1 /usr/src
Перейти в папку c исходниками исправленного gspca
cd /usr/src/gspca1
Выгрузить старый модуль ядра gspca.ko , набрав:
rmmod gspca
Создать новые модули *.ko , набрав
./gspca_build
Напоминание. Для безошибочной компиляции в папке /usr/src/ должны находиться заголовочные файлы Вашего ядра - linux-headers-*
После этого подключите Webкамеру.
Установите с сайта
http://mxhaard.free.fr/ программу spcaview и наслаждайтель видами со своей ожившей камеры.
_______________________________________________________________________________
Работа с новой версией ядра. New kernel. Ubuntu 10.04 (2.6.32-24-generic) .
_______________________________________________________________________________
Здесь все очень просто. Только не забываем работать от имени суперпользователя root.
Выгружаем модуль gspca_zc3xx командой
rmmod gspca_zc3xx
Далее загружаем его вновь с принудительно выбранным идентификатором сенсора 15
Необходимость этого связана с некорректной работой модулей (функций) автоматической идентификации сенсоров в gspca.
modprobe gspca_zc3xx force_sensor=15
(modprobe gspca_zc3xx force_sensor=14 для Ubuntu 8.10 с ядром 2.6.27-16-generic)
В связи с тем, что модули находятся в постоянном развитии, возможно придется поэкспериментировать с
номером идентификатора.
Для автозагрузки gspca_zc3xx, c заранее выбранным идентификатором сенсора, в папку
/etc/modprobe.d
добавляем файл gspca.conf со следующим содержимым:
options gspca_zc3xx force_sensor=15
Cмотреть свое Web видео можно программами
cheese, xawtv, mplayer tv:// , v4l2ucp
и многими другими.
Evgeni45
r_evgeni45@mail.ru Январь 2011 г. Москва