Драйвер stk11xx для вебкамер
Драйвер stk11xx для вебкамер
Вылезу-ка я из "глупых вопросов" http://forum.rosalab.ru/viewtopic.php?p=82806#p82806
в отдельную тему.
Хотя, вопросы будут всё такие же глупые.
Вобщем, поковырялся в несобирающемся драйвере, нашёл пару ошибок (пока только пару).
Возник очередной глупый вопрос:
Как подсунуть в rpm исправленный файл исходника?
И где теперь искать тот rpm, который после установки из "установки программ" теперь каждый раз при загрузке пытается собрать и установить этот злосчастный драйвер?
Естественно, там, где я нашёл распакованные исходники, они каждый раз при этом перезаписываются заново.
Не пинайте особо. Напоминаю - в линуксах я полный нуб.
Чисто от нефиг делать решил поковырять пакеты, не работающие фиг знает сколько времени, со времён перехода на другие ядра.
Пытаюсь исправить ошибки (пока только имена в структурах) пользуясь документацией на ядро 4.11.
в отдельную тему.
Хотя, вопросы будут всё такие же глупые.
Вобщем, поковырялся в несобирающемся драйвере, нашёл пару ошибок (пока только пару).
Возник очередной глупый вопрос:
Как подсунуть в rpm исправленный файл исходника?
И где теперь искать тот rpm, который после установки из "установки программ" теперь каждый раз при загрузке пытается собрать и установить этот злосчастный драйвер?
Естественно, там, где я нашёл распакованные исходники, они каждый раз при этом перезаписываются заново.
Не пинайте особо. Напоминаю - в линуксах я полный нуб.
Чисто от нефиг делать решил поковырять пакеты, не работающие фиг знает сколько времени, со времён перехода на другие ядра.
Пытаюсь исправить ошибки (пока только имена в структурах) пользуясь документацией на ядро 4.11.
Re: Драйвер stk11xx для вебкамер
1) ставим abf-client
2) Регистрируемся на abf
3) Ищем и клонируем в личные репозитории нужный проект, import/syntek
4) делаем abf get -b rosa2014.1 syntek, получается папка со спеком проекта
5) Для его компиляции доустанавливаем необходимые пакеты urpmi syntek.spec
6) Пробуем компилировать и собрать пакет, abf rpmbuild
В результате получим пакеты, идентичные репозиториям. В том числе src.
Теперь можно патчить.
1) Увеличиваем в спеке номер релиза чтоб ставилось поверх
2) Смотрим дерево исходников, они есть в src и во вложенной папке после сборки.
3) Делаем еще одно дерево исходников (см примеры патчей в других проектах), там подправляем нужные файлы, делаем патч через diff
4) Добавляем патч в спек
5) abf rpmbuild - получаем исправленный пакет, который можно ставить-удалять средствами urpmi и проверять, работает ли.
2) Регистрируемся на abf
3) Ищем и клонируем в личные репозитории нужный проект, import/syntek
4) делаем abf get -b rosa2014.1 syntek, получается папка со спеком проекта
5) Для его компиляции доустанавливаем необходимые пакеты urpmi syntek.spec
6) Пробуем компилировать и собрать пакет, abf rpmbuild
В результате получим пакеты, идентичные репозиториям. В том числе src.
Теперь можно патчить.
1) Увеличиваем в спеке номер релиза чтоб ставилось поверх
2) Смотрим дерево исходников, они есть в src и во вложенной папке после сборки.
3) Делаем еще одно дерево исходников (см примеры патчей в других проектах), там подправляем нужные файлы, делаем патч через diff
4) Добавляем патч в спек
5) abf rpmbuild - получаем исправленный пакет, который можно ставить-удалять средствами urpmi и проверять, работает ли.
Re: Драйвер stk11xx для вебкамер
А проще нет метода?keleg писал(а):1) ставим abf-client
2) Регистрируемся на abf
........
Фиг знает сколько ещё строчек придётся править.
И каждый раз через abf гонять, rpm собирать и версию поднимать?
Локально это как-то вообще делается?
Изменил - попробовал откомпиллить - не пошло - правим дальше, не вылазя из терминала - и так пока или не упрусь, или не исправлю все проблемы. А потом уже можно и в abf лезть.
Просто через make в директории с распакованными файлами не проходит - там make.local лезет чёрт знает куда и ругается ещё до компиляции самих исходников.
- VictorR2007
- Сообщения: 7379
- Зарегистрирован: 12 сен 2011, 13:00
Re: Драйвер stk11xx для вебкамер
Можно взять этот пакет src https://abf.rosalinux.ru/build_lists/2522003
Re: Драйвер stk11xx для вебкамер
Пока локально, там через сайт abf гонять не нужно. А релиз поднимать удобно, чтоб можно было откатывать изменения. Оно ж все в систему ставится - вручную потом вычищать?nube писал(а):А проще нет метода?keleg писал(а):1) ставим abf-client
2) Регистрируемся на abf
........
Фиг знает сколько ещё строчек придётся править.
И каждый раз через abf гонять, rpm собирать и версию поднимать?
Локально это как-то вообще делается?
Изменил - попробовал откомпиллить - не пошло - правим дальше, не вылазя из терминала - и так пока или не упрусь, или не исправлю все проблемы. А потом уже можно и в abf лезть.
Просто через make в директории с распакованными файлами не проходит - там make.local лезет чёрт знает куда и ругается ещё до компиляции самих исходников.
Можно и более "грязно" делать, каждый раз запаковывая полученные исходники в файл и подсовывая его как файл исходинков, лежащий рядом со спеком.
Re: Драйвер stk11xx для вебкамер
Драйвер не обычный пакет, а dkms, и исполняемых файлов не содержит.
При установке из пакета rpm копируются его исходные тексты в /usr/src
Далее происходит регистрация посредством команды dkms add (база данных dkms находится в /var/lib/dkms).
Поскольку dkms подразумевает, что исходники компилируемы, то сборка (dkms build) будет происходить при каждом запуске ОС, пока не завершится успешно.
Удилить мoжно из базы вручную, или (правильнее) командой dkms remove, или целиком пакет (urpme dkms-syntek, будут удалены и исходники из /usr/src).
До того, как исходники будут собираться и работать, смысл пакетировать их вряд ли имеется.
В каталоге с исходниками должен быть файл dkms.conf . В нём можно посмотреть команды для сборки драйвера (MAKE="...") и их использовать.
Устанваливать make install и удалять make uninstall (в общем случае, но бывают нюансы).
При установке из пакета rpm копируются его исходные тексты в /usr/src
Далее происходит регистрация посредством команды dkms add (база данных dkms находится в /var/lib/dkms).
Поскольку dkms подразумевает, что исходники компилируемы, то сборка (dkms build) будет происходить при каждом запуске ОС, пока не завершится успешно.
Удилить мoжно из базы вручную, или (правильнее) командой dkms remove, или целиком пакет (urpme dkms-syntek, будут удалены и исходники из /usr/src).
До того, как исходники будут собираться и работать, смысл пакетировать их вряд ли имеется.
В каталоге с исходниками должен быть файл dkms.conf . В нём можно посмотреть команды для сборки драйвера (MAKE="...") и их использовать.
Устанваливать make install и удалять make uninstall (в общем случае, но бывают нюансы).
Re: Драйвер stk11xx для вебкамер
Спасибо.trs писал(а):Драйвер не обычный пакет, а dkms, и исполняемых файлов не содержит.
При установке из пакета rpm копируются его исходные тексты в /usr/src
Далее происходит регистрация посредством команды dkms add (база данных dkms находится в /var/lib/dkms).
Поскольку dkms подразумевает, что исходники компилируемы, то сборка (dkms build) будет происходить при каждом запуске ОС, пока не завершится успешно.
Удилить мoжно из базы вручную, или (правильнее) командой dkms remove, или целиком пакет (urpme dkms-syntek, будут удалены и исходники из /usr/src).
До того, как исходники будут собираться и работать, смысл пакетировать их вряд ли имеется.
В каталоге с исходниками должен быть файл dkms.conf . В нём можно посмотреть команды для сборки драйвера (MAKE="...") и их использовать.
Устанваливать make install и удалять make uninstall (в общем случае, но бывают нюансы).
Содержимое dkms.conf
Код: Выделить всё
PACKAGE_VERSION=3.0.0-3
# Items below here should not have to change with each driver version
PACKAGE_NAME=syntek
BUILT_MODULE_NAME[0]="stk11xx"
DEST_MODULE_LOCATION[0]="/kernel/3rdparty/syntek"
REMAKE_INITRD="no"
AUTOINSTALL=yes
Запустил make -f Makefile.standalone
получаю выхлоп:
Код: Выделить всё
# make -f Makefile.standalone
make -C /lib/modules/4.9.9-nrj-desktop-1rosa-x86_64/build SUBDIRS=/usr/src/syntek-3.0.0-3 modules
make[1]: вход в каталог «/usr/src/linux-4.9.9-nrj-desktop-1rosa-x86_64»
CC [M] /usr/src/syntek-3.0.0-3/stk11xx-usb.o
CC [M] /usr/src/syntek-3.0.0-3/stk11xx-v4l.o
CC [M] /usr/src/syntek-3.0.0-3/stk11xx-sysfs.o
In file included from ./include/linux/thread_info.h:11:0,
from ./arch/x86/include/asm/preempt.h:6,
from ./include/linux/preempt.h:59,
from ./include/linux/spinlock.h:50,
from ./include/linux/seqlock.h:35,
from ./include/linux/time.h:5,
from ./include/linux/stat.h:18,
from ./include/linux/module.h:10,
from /usr/src/syntek-3.0.0-3/stk11xx-sysfs.c:34:
./include/linux/bug.h:37:45: ошибка: битовое поле «<anonymous>» имеет отрицательный размер
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
^
./include/linux/kernel.h:854:3: замечание: in expansion of macro «BUILD_BUG_ON_ZERO»
BUILD_BUG_ON_ZERO((perms) & 2) + \
^
./include/linux/sysfs.h:102:12: замечание: in expansion of macro «VERIFY_OCTAL_PERMISSIONS»
.mode = VERIFY_OCTAL_PERMISSIONS(_mode) }, \
^
./include/linux/device.h:576:45: замечание: in expansion of macro «__ATTR»
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _stor
^
/usr/src/syntek-3.0.0-3/stk11xx-sysfs.c:488:8: замечание: in expansion of macro «DEVICE_ATTR»
static DEVICE_ATTR(brightness, S_IRUGO | S_IWUGO, show_brightness, store_brig
^
./include/linux/bug.h:37:45: ошибка: битовое поле «<anonymous>» имеет отрицательный размер
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
^
./include/linux/kernel.h:854:3: замечание: in expansion of macro «BUILD_BUG_ON_ZERO»
BUILD_BUG_ON_ZERO((perms) & 2) + \
^
./include/linux/sysfs.h:102:12: замечание: in expansion of macro «VERIFY_OCTAL_PERMISSIONS»
.mode = VERIFY_OCTAL_PERMISSIONS(_mode) }, \
^
./include/linux/device.h:576:45: замечание: in expansion of macro «__ATTR»
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _stor
^
/usr/src/syntek-3.0.0-3/stk11xx-sysfs.c:489:8: замечание: in expansion of macro «DEVICE_ATTR»
static DEVICE_ATTR(contrast, S_IRUGO | S_IWUGO, show_contrast, store_contrast
^
./include/linux/bug.h:37:45: ошибка: битовое поле «<anonymous>» имеет отрицательный размер
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
^
./include/linux/kernel.h:854:3: замечание: in expansion of macro «BUILD_BUG_ON_ZERO»
BUILD_BUG_ON_ZERO((perms) & 2) + \
^
./include/linux/sysfs.h:102:12: замечание: in expansion of macro «VERIFY_OCTAL_PERMISSIONS»
.mode = VERIFY_OCTAL_PERMISSIONS(_mode) }, \
^
./include/linux/device.h:576:45: замечание: in expansion of macro «__ATTR»
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _stor
^
/usr/src/syntek-3.0.0-3/stk11xx-sysfs.c:490:8: замечание: in expansion of macro «DEVICE_ATTR»
static DEVICE_ATTR(whitebalance, S_IRUGO | S_IWUGO, show_whitebalance, store_
^
./include/linux/bug.h:37:45: ошибка: битовое поле «<anonymous>» имеет отрицательный размер
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
^
./include/linux/kernel.h:854:3: замечание: in expansion of macro «BUILD_BUG_ON_ZERO»
BUILD_BUG_ON_ZERO((perms) & 2) + \
^
./include/linux/sysfs.h:102:12: замечание: in expansion of macro «VERIFY_OCTAL_PERMISSIONS»
.mode = VERIFY_OCTAL_PERMISSIONS(_mode) }, \
^
./include/linux/device.h:576:45: замечание: in expansion of macro «__ATTR»
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _stor
^
/usr/src/syntek-3.0.0-3/stk11xx-sysfs.c:491:8: замечание: in expansion of macro «DEVICE_ATTR»
static DEVICE_ATTR(colour, S_IRUGO | S_IWUGO, show_colour, store_colour);
^
./include/linux/bug.h:37:45: ошибка: битовое поле «<anonymous>» имеет отрицательный размер
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
^
./include/linux/kernel.h:854:3: замечание: in expansion of macro «BUILD_BUG_ON_ZERO»
BUILD_BUG_ON_ZERO((perms) & 2) + \
^
./include/linux/sysfs.h:102:12: замечание: in expansion of macro «VERIFY_OCTAL_PERMISSIONS»
.mode = VERIFY_OCTAL_PERMISSIONS(_mode) }, \
^
./include/linux/device.h:576:45: замечание: in expansion of macro «__ATTR»
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _stor
^
/usr/src/syntek-3.0.0-3/stk11xx-sysfs.c:492:8: замечание: in expansion of macro «DEVICE_ATTR»
static DEVICE_ATTR(hflip, S_IRUGO | S_IWUGO, show_hflip, store_hflip);
^
./include/linux/bug.h:37:45: ошибка: битовое поле «<anonymous>» имеет отрицательный размер
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
^
./include/linux/kernel.h:854:3: замечание: in expansion of macro «BUILD_BUG_ON_ZERO»
BUILD_BUG_ON_ZERO((perms) & 2) + \
^
./include/linux/sysfs.h:102:12: замечание: in expansion of macro «VERIFY_OCTAL_PERMISSIONS»
.mode = VERIFY_OCTAL_PERMISSIONS(_mode) }, \
^
./include/linux/device.h:576:45: замечание: in expansion of macro «__ATTR»
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _stor
^
/usr/src/syntek-3.0.0-3/stk11xx-sysfs.c:493:8: замечание: in expansion of macro «DEVICE_ATTR»
static DEVICE_ATTR(vflip, S_IRUGO | S_IWUGO, show_vflip, store_vflip);
^
make[2]: *** [scripts/Makefile.build:294: /usr/src/syntek-3.0.0-3/stk11xx-sysfs.o] Ошибка 1
make[1]: *** [Makefile:1483: _module_/usr/src/syntek-3.0.0-3] Ошибка 2
make[1]: выход из каталога «/usr/src/linux-4.9.9-nrj-desktop-1rosa-x86_64»
make: *** [Makefile.standalone:13: driver] Ошибка 2
Re: Драйвер stk11xx для вебкамер
"As a workaround, change S_IRUGO | S_IWUGO to 0660". Даже собрался драйвер.
Почему не проходит проверка с макросами, тоже интересно
Почему не проходит проверка с макросами, тоже интересно
Re: Драйвер stk11xx для вебкамер
S_IRUGO | S_IWURS — вот так собирается.
Re: Драйвер stk11xx для вебкамер
Блин, а где это? Гдеtrs писал(а):"As a workaround, change S_IRUGO | S_IWUGO to 0660". Даже собрался драйвер.
Почему не проходит проверка с макросами, тоже интересно
?change S_IRUGO | S_IWUGO to 0660
Я тоже такое нагуглил, но "как баран на ворота"
Re: Драйвер stk11xx для вебкамер
Это в файле stk11xx-sysfs.c
Наверно, правильней так:
Наверно, правильней так:
Код: Выделить всё
static DEVICE_ATTR(brightness, S_IRUGO | S_IWUSR | S_IWGRP, show_brightness, store_brightness);
- Вложения
-
- syntek.path.gz
- (791 байт) 1022 скачивания
Re: Драйвер stk11xx для вебкамер
всё. нашёл. Вот точно - смотрю в книгу, вижу фигу
Re: Драйвер stk11xx для вебкамер
Вау!
Спасибо ещё раз,ещё много-много раз!
Правленые файлы собрал в кучу. А теперь чё с имя делать?
Как-то это всё установить можно?
Собирается вроде без ошибок (просто в папке).
А я теперь совсем растерялся и не знаю как и куда всё это...
make install сделал.
Драйвер уже должен быть в системе? или после перезагрузки? Или его через dkms надо?
Спасибо ещё раз,ещё много-много раз!
Правленые файлы собрал в кучу. А теперь чё с имя делать?
Как-то это всё установить можно?
Собирается вроде без ошибок (просто в папке).
А я теперь совсем растерялся и не знаю как и куда всё это...
make install сделал.
Драйвер уже должен быть в системе? или после перезагрузки? Или его через dkms надо?
Re: Драйвер stk11xx для вебкамер
Я бы перед пакетированием проверил драйвер.
Вроде бы запускается.*
но без железа не ясно, будет ли от этого толк.
*По make install он, как я понял, не устанавливается, потому modprobe его не видит. Но для dkms это не дожно быть проблемой.
Вроде бы запускается.*
Код: Выделить всё
insmod stk11xx.ko
Код: Выделить всё
[33977.359794] stk11xx: Syntek USB Video Camera driver v3.0.0 startup
[33977.359797] stk11xx: Copyright(c) 2006-2012 Nicolas VIVIEN
[33977.359798] stk11xx: http://sourceforge.net/projects/syntekdriver/
[33977.359837] usbcore: registered new interface driver usb_stk11xx_driver
*По make install он, как я понял, не устанавливается, потому modprobe его не видит. Но для dkms это не дожно быть проблемой.
Re: Драйвер stk11xx для вебкамер
Сделал чистую установку R8.trs писал(а):Я бы перед пакетированием проверил драйвер.
Вроде бы запускается.*Код: Выделить всё
insmod stk11xx.ko
но без железа не ясно, будет ли от этого толк.Код: Выделить всё
[33977.359794] stk11xx: Syntek USB Video Camera driver v3.0.0 startup [33977.359797] stk11xx: Copyright(c) 2006-2012 Nicolas VIVIEN [33977.359798] stk11xx: http://sourceforge.net/projects/syntekdriver/ [33977.359837] usbcore: registered new interface driver usb_stk11xx_driver
*По make install он, как я понял, не устанавливается, потому modprobe его не видит. Но для dkms это не дожно быть проблемой.
Сделал make в папке с исходниками, сделал make install.
insmod stk11xx.ko ничего не выдаёт.
Как проверить с учётом наличия железки?
Или как его установить не через rpm?
Чем дальше, тем меньше понимаю
Re: Драйвер stk11xx для вебкамер
мож, проще все же rpm собрать? Раз уже собирается.
Re: Драйвер stk11xx для вебкамер
А всёравно нет уверенности что заработает.keleg писал(а):мож, проще все же rpm собрать? Раз уже собирается.
Если я сегодня ещё и в abf полезу, то забуду своё имя.
Re: Драйвер stk11xx для вебкамер
ну, мне через abf проще, я неопытный сборщик
Re: Драйвер stk11xx для вебкамер
А давайте я отредактированные файлы сюда прикреплю, а Вы в abf соберёте?keleg писал(а):ну, мне через abf проще, я неопытный сборщик
Я настолько "неопытный сборщик", что даже не понял что Вы там про abf написали дальше, чем "установить abf"
Уж про деревья в файлах, да ещё "завести новую ветку" я промолчу
- Вложения
-
- files.tar.gz
- (8.84 КБ) 1143 скачивания
Re: Драйвер stk11xx для вебкамер
Ну второй пункт я тоже осилил.
По третьему по-подробнее можно?
По третьему по-подробнее можно?
3) Ищем и клонируем в личные репозитории нужный проект, import/syntek
Re: Драйвер stk11xx для вебкамер
вбиваем в поиск syntek, находим import/syntek, открываем, нажимаем кнопку "клонировать"
Re: Драйвер stk11xx для вебкамер
Это хорошо, значит команда драйвер нашла и загрузила.nube писал(а):Сделал make в папке с исходниками, сделал make install.
insmod stk11xx.ko ничего не выдаёт.
Сообщения от драйвера надо смотреть командой dmesg
Пока не знаю, может потребоваться выгрузить встроенные в ядро драйвера так:nube писал(а):Как проверить с учётом наличия железки?
Код: Выделить всё
modprobe -r gspca_stk1135
modprobe -r gspca_main
Re: Драйвер stk11xx для вебкамер
Проверилtrs писал(а):Это хорошо, значит команда драйвер нашла и загрузила.nube писал(а):Сделал make в папке с исходниками, сделал make install.
insmod stk11xx.ko ничего не выдаёт.
Сообщения от драйвера надо смотреть командой dmesg
Пока не знаю, может потребоваться выгрузить встроенные в ядро драйвера так:nube писал(а):Как проверить с учётом наличия железки?Код: Выделить всё
modprobe -r gspca_stk1135 modprobe -r gspca_main
без gspca_main не запускается.
С ним запускается, но выдаёт ошибку. Камера не работает.
Не знаю есть ли смысл дальше ковырять.
В 2016.1 драйвер из ядра в принципе работает.
А он основан на этом пакете. Если чего и ковырять, то, наверное, лучше уже ту реализацию. Может быть, удастся выжать чего получше.
Хотя, он тоже gspca, и видимо в новом скайпе v4l2 пока вообще не работают.
Спасибо за помощь и за подсказки. Кое-чего "нахватался" - и то польза
Re: Драйвер stk11xx для вебкамер
а, интересно, в чем отличие? Ядро вроде одинаковое и в 2014.1 8.1 и в 2016.1
Re: Драйвер stk11xx для вебкамер
Понятия не имею.keleg писал(а):а, интересно, в чем отличие? Ядро вроде одинаковое и в 2014.1 8.1 и в 2016.1
По крайней мере, в 2016.1 в kamoso правильное соотношение сторон, а в 8.1 картинка растянутая.
Старого скайпа для 2016 не обнаружил, новый с этой камерой ни там, ни там не работает, а старый в 2014.1 принимает с камеры картинку 32х32.
Вот даже интересно. Заглянул в исходники драйвера. Почему форматы картинки не выведены в какие-нибудь конфиги? В линуксах не принято?
Зачем-то, жёстко в драйвере создаётся таблица "поддерживаемых форматов" вида " ширина от 32 до 1280 с шагом 2", и с высотой "от 32 до 1024 с шагом 2"? Чем потом руководствуются программы, выбирая формат - одному Богу известно.
camorama с этой камерой вообще не работает. Есть подозрение, что либо косяк с подсчётом полосы пропускания usb, либо определяется как usb 1.1, либо сама камера инициализируется неправильно - тормоза жуткие,
Вобщем, странный подход. Реализовано "как-то, почему-то, кое-где, иногда работает" - и всё. Чтобы что-то подкрутить - лезь в исходники ядра и разбирайся, перекомпилируй...
Re: Драйвер stk11xx для вебкамер
старый скайп в 32-разрядных репозиториях, они у вас подключены?