Автор Тема: Драйвер за WEB камера - как?  (Прочетена 4547 пъти)

kgochev

  • Напреднали
  • *****
  • Публикации: 84
    • Профил
Драйвер за WEB камера - как?
« -: May 11, 2010, 17:12 »
Опитвам се да си подкарам камерата. Първо разбрах това:
dmesg | less
433.279177] Linux video capture interface: v2.00
[  433.298069] uvcvideo: Found UVC 1.00 device USB2.0 PC CAMERA (18ec:3290)
[  433.302230] uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
[  433.306067] input: USB2.0 PC CAMERA as /devices/pci0000:00/0000:00:03.1/usb3/3-1/3-1:1.0/input/input9
[  433.306660] usbcore: registered new interface driver uvcvideo
[  433.310699] USB Video Class driver (v0.1.0)

то е само част от изхода при тази команда, но от него се разбира какъв тип е камерата, в смисъл кой е производителят. След това изпълних:

lsusb -v -d 18ec:3290

Bus 003 Device 002: ID 18ec:3290 Arkmicro Technologies Inc.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x18ec Arkmicro Technologies Inc.
  idProduct          0x3290

в края на което пише

wMaxPacketSize     0x03c8  1x 968 bytes
        bInterval               1
cannot read device status, Operation not permitted (1)

т.е. не ще да се разбере с нея.

Накрая намерих драйвер за камерата, който би следвало да се постави на мястото на uvcvideo.ko Драйверът е на http://bitbucket.org/hiranotaka/dvb-pt1/src/dc1b11be42d7/linux/drivers/media/video/uvc/uvc_driver.c
Предполагам, че е програмен код, който трябва да се компилира, защото uvcvideo.ko пък е обектен код и не мога да го "видя" с никаква програма.

Та въпросът ми е: Как да сменя едното с другото и дали това е начинът?

Активен

ROKO__

  • Напреднали
  • *****
  • Публикации: 1531
  • Distribution: Calculate Linux Workstation amd64
  • Window Manager: GNOME 2.30
  • AMD Athlon64 4000+ Dual Core 2100 MHz 2MB L2 cache
    • Профил
Re: Драйвер за WEB камера - как?
« Отговор #1 -: May 11, 2010, 18:14 »
.ko е самият модул но както и да е няма да ти свърши работа
Активен

Не е важно да си добър, важно е да си най добрия!!!

http://www.calculate-linux.ru/
http://www.agilialinux.ru/

ROKO__

  • Напреднали
  • *****
  • Публикации: 1531
  • Distribution: Calculate Linux Workstation amd64
  • Window Manager: GNOME 2.30
  • AMD Athlon64 4000+ Dual Core 2100 MHz 2MB L2 cache
    • Профил
Re: Драйвер за WEB камера - как?
« Отговор #2 -: May 11, 2010, 18:15 »
Пробва ли първо да заредиш всички модули в ядрото в секцията Device Drivers Multimedia V4L Devices GSPCA based cam
Активен

Не е важно да си добър, важно е да си най добрия!!!

http://www.calculate-linux.ru/
http://www.agilialinux.ru/

pulsari

  • Напреднали
  • *****
  • Публикации: 27
  • Distribution: Debian, Arch, Gentoo, Slackware
  • Window Manager: KDE, Gnome
    • Профил
Re: Драйвер за WEB камера - как?
« Отговор #3 -: May 11, 2010, 20:37 »
На мен това ми свърши работа:http://skss.learnfree.eu/archives/738
Активен

tolostoi

  • Напреднали
  • *****
  • Публикации: 1337
  • Distribution: Ubuntu
  • Window Manager: Unity
  • левел: авераж :)
    • Профил
Re: Драйвер за WEB камера - как?
« Отговор #4 -: May 12, 2010, 11:39 »
Май uvc драйвер ти трябва, но не си казал с какво дистро си и до къде са я докарали там нямам идея  ???  Виж тук https://help.ubuntu.com/community/UVC
Активен


... в Столичен инспекторат една година след миграцията, продължават да работят под Linux. Което, май прави "експеримента" успешен
by entusiast

kgochev

  • Напреднали
  • *****
  • Публикации: 84
    • Профил
Re: Драйвер за WEB камера - как?
« Отговор #5 -: May 12, 2010, 20:57 »
Дистрибуцията ми е Ubuntu 10.04-LTS.
По отношение на инсталиране на всички модули, може би не ми е ясно, но ми се струва, че като сложа камерата, системата я "намира", т.е. има съответния модул. В първия ми пост съм приложил изходите от dmesg | less и lsusb -v -d 18ec:3290. От резултата на първата команда става ясно, че камерата "се познава", но във функционално отношение не е съвместима с определена "проба" (uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.) Точно този проблем се решава от програмния код в посочения линк. (http://bitbucket.org/hiranotaka/dvb-pt1/src/dc1b11be42d7/linux/drivers/media/video/uvc/uvc_driver.c) Аз предполагам, че от това може да стане модул или част от него, но не знам как да го направя и всъщност в това ми е проблема.
Благодаря и на pulsari и tolostoi, но предложените линкове не покриват проблема ми. Първият - не е такава "картинката" и съответният пакет е вече инсталиран, а вторият касае по-ранните  кернели, в които няма uvc драйвери (само че аз съм си виновен, защото наистина не съм писал каква ми е дистрибуцията).
Все пак, искам да помоля roco да ми обясни по-подробно (или да ми каже къде да прочета), как да да заредя всички модули в ядрото в секцията Device Drivers Multimedia V4L Devices GSPCA based cam, защото това не ми е ясно.(не съм разбутвал кернел, не разбирам от това пък и засега ме е страх да се уча "на сляпо")
« Последна редакция: May 12, 2010, 21:03 от kgochev »
Активен

tolostoi

  • Напреднали
  • *****
  • Публикации: 1337
  • Distribution: Ubuntu
  • Window Manager: Unity
  • левел: авераж :)
    • Профил
Re: Драйвер за WEB камера - как?
« Отговор #6 -: May 12, 2010, 21:40 »
Аха, тогава, ако това което си дал ти трябва (понеже не съм в течение с това което питаш, предполагам си проучил въпроса), то пробвай така.
Код:
sudo apt-get install module-assistant mercurial
sudo m-a prepare
hg clone http://bitbucket.org/hiranotaka/dvb-pt1
cd dvb-pt1
т. е. вече имаш сорса, там имаш и хелп файл, четеш и компилираш. Ето какво пише там
Mauro Carvalho Chehab                                   2006 Apr 26

V4L/DVB building procedures are based at the use of Makefile rules.
Those rules are close to the ones at Linux Kernel, to allow an easier
usage.

=======================================================================
Quick building procedure is:
 make all
======================================================================

For those who may want more than just build all stuff there are some
other interesting parameters to make:

======================
Normal building rules:
all      - build all modules

clean      - Cleans compiled files from the tree,
    but keeping the latest
    used configuration and kernel version

distclean   - Cleans compiled files from the tree,
    latest used configuration and kernel
    version.

default      - Continues building the latest module selection
    This is the behavior when just typed:
   make

install      - Installs all modules at kernel's default dir
    for V4L/DVB. Requires root access.

man_install   - Install V4L2 API man pages.

rminstall   - cleans previous installations of V4L/DVB modules

sound-install   - installs the sound modules related to V4L/DVB
    tree.

======================
Firmware rules:

firmware   - Create the firmware files that are enclosed at the
    tree.
    Notice: Only a very few firmwares are currently here

firmware_install- Install firmware files under /lib/firmware

======================
Documentation rules:
spec      - Creates both V4L and DVB API specification

man      - Creates V4L2 API man pages

=======================
Module selection rules:
(Those may require write access to kernel tree)

allmodconfig   - Called by make all. Selects all modules that are known
    to compile against the kernel version used.

xconfig      - Generate a xconfig menu. Requires full
    kernel source, since it depends on kernel's
    qconf stript;

gconfig      - Generate a qt menu. Requires full
    kernel source, since it depends on kernel's
    gconf stript;

config      - Generate a text-mode menu. Requires full
    kernel source, since it depends on kernel's
    conf stript;

menuconfig   - Generate a ncurses menu. Requires full
    kernel source, since it depends on kernel's
    mconf and lxconfig stripts;

release      - Allows changing kernel version.
    Typical usage is:
   make release VER=2.6.12-18mdk
   (to force compiling to 2.6.12-18mdk)
   (This will work only if
    /lib/modules/2.6.12-18mdk/build/
    points to that kernel version)
    Or
   make release DIR=~/linux-git
   (to force using kernel at a specific dir)
    To use current kernel version instead:
   make release

======================
Module handling rules:
(require root access)

insmod      - inserts all modules from V4L/DVB tree

rmmod      - removes all modules from V4L/DVB tree

reload      - removes then reinserts all modules

===================
Tree merging rules:

ivtv      - enable merged ivtv build, using the latest ivtv sources
    from ivtvdriver.org (requires subversion)

cx88-ivtv   - enable cx88-blackbird ivtv API emulation

ivtv-update   - update ivtv sources from ivtvdriver.org

==========================================
Patch preparation and tree handling rules:
(used by developers)

kernel-links   - Generate links to V4L/DVB at kernel tree.
    Requires write access to kernel tree.

cardlist   - Updates Documentation/video4linux/CARDLIST.*

update      - updates the tree from master repository

commit      - commits the change, asking for a commit msg

push      - sends outgoing stuff to master repository

checkemacs   - checks codingstyle and reports to emacs
    using "make checkemacs" at emacs compile menu,
    will report the lines with errors inside emacs.

checkpatch   - checks codingstyle and reports using the same
    format as c. This way, c error parsers will
    handle it.

checkterse   - checks codingstyle and reports using terse
    syntax, used on several compilaton tools.

mismatch   - checks for linker section mismatch. In other words,
    check if some driver has functions not properly
    declared with __init/__exit, and similar tags.
    It will also be more pedantic by dealing with
    compilation warnings as if they are errors.
Активен


... в Столичен инспекторат една година след миграцията, продължават да работят под Linux. Което, май прави "експеримента" успешен
by entusiast

kgochev

  • Напреднали
  • *****
  • Публикации: 84
    • Профил
Re: Драйвер за WEB камера - как?
« Отговор #7 -: May 13, 2010, 16:47 »
Направих последното, което ме посъветва toostoi. Резултатът е, че се опитва да създаде модули, но разширението с което ги прави е  .о, докато моите са с .ко В края на краищата, командата sudo make дава грешка и фактически не мога след това да инсталирам модулите. Единственият резултат, (който обаче не е свързан с това, което правих), е че подкарах камерата с guvcview (това обаче не означава, че имам видео в Skype). Ако можете, помагайте, пък аз продължавам да чета....
Активен

tasmaniec

  • Напреднали
  • *****
  • Публикации: 32
  • Distribution: Kubuntu 13.10
  • Window Manager: KDE
  • "Това, което не ме убива ме прави по-силен."Ницшe
    • Профил
Re: Драйвер за WEB камера - как?
« Отговор #8 -: May 13, 2010, 20:06 »
Здравей,прочети тука.На мен ми свърши работа. http://skss.learnfree.eu/archives/738
Активен

CPU -Intel Pentium E2140@ 3000Gh,VGA-Ati Radeon 4850,Mem. A-Data 2*1Gb.,2*160Gb. Hitachi,Jetway ip35- sg.

kgochev

  • Напреднали
  • *****
  • Публикации: 84
    • Профил
Re: Драйвер за WEB камера - как?
« Отговор #9 -: May 14, 2010, 10:55 »
Благодаря на всички! Проблемът се реши по начина, предложен от pulsari и tasmaniek. Съжалявам, но отначало мислех, че това не е моя случай и просто, когато го предложи pulsari, не съм го пробвал докрая. Сега го направих и стана. Още един път Благодаря на всички!!!
Активен