LinuxForum.Fans
Тема

Драйвер веб-камеры

Автор: u_____________15 5 сообщений 3856 просмотров
#387862

Здравствуйте!
Поставил Debian Wheezy на новый ноутбук Sony SVF. Версия ядра в базовом комплекте системы - 3.2, и были проблемы со звуком (драйвер не поддерживал слишком новую модель звукового устройства). Поставил тогда ядро 3.11 - и со звуком стало всё нормально. Ставил из исходников, с сайта kernel.org. Но только вот с этим ядром не работает веб-камера (id 0489:e062). Как я понимаю, драйвер для всех веб-камер называется uvcvideo. Посмотрел - а оказывается, в поздних версиях ядра этого модуля нету вообще. Не знаю, начиная с какой версии, но в 3.2 в исходниках он ещё есть - в директории drivers/media/video/uvc, а в 3.11 - уже нету, нет даже директории drivers/media/video. И где его взять, чтобы был совместим с поздними версиями ядра - не нашёл. Находил какой-то совсем старый, который, естественно, не собирается. И пробовал брать из исходников 3.2 и компилировать под 3.11 - тоже не собирается. Это понятно: несовместим с новой версией ядра.
Но почему этого драйвера нет в комплекте ядра 3.11? Его чем-то заменили? Если так, то почему ж не работает камера - ведь под 3.2 работает? Кстати, с ядром 3.15 камера тоже не работает. Не работает также кардридер SD, хотя, опять же, под 3.2 работает.

Вот мои lsmod'ы:
Под 3.2:

Показать
  • [*]Module Size Used by
  • parport_pc 22364 0
  • ppdev 12763 0
  • lp 17149 0
  • parport 31858 3 lp,ppdev,parport_pc
  • rfcomm 33700 10
  • bnep 17567 2
  • binfmt_misc 12957 1
  • uinput 17440 1
  • nfsd 216167 2
  • nfs 308353 0
  • nfs_acl 12511 2 nfs,nfsd
  • auth_rpcgss 37143 2 nfs,nfsd
  • fscache 36739 1 nfs
  • lockd 67306 2 nfs,nfsd
  • sunrpc 173730 6 lockd,auth_rpcgss,nfs_acl,nfs,nfsd
  • fuse 61972 5
  • loop 22641 0
  • snd_hda_codec_hdmi 30824 1
  • snd_hda_codec_realtek 188851 0
  • uvcvideo 57744 0
  • usbhid 36418 0
  • hid 81372 1 usbhid
  • btusb 17502 2
  • videodev 70889 1 uvcvideo
  • v4l2_compat_ioctl32 16655 1 videodev
  • media 18148 2 videodev,uvcvideo
  • bluetooth 119455 23 btusb,bnep,rfcomm
  • wl 6278967 0
  • snd_hda_intel 26259 2
  • snd_hda_codec 78031 3 snd_hda_intel,snd_hda_codec_realtek,snd_hda_codec_hdmi
  • snd_hwdep 13186 1 snd_hda_codec
  • snd_pcm 68083 3 snd_hda_codec,snd_hda_intel,snd_hda_codec_hdmi
  • snd_page_alloc 13003 2 snd_pcm,snd_hda_intel
  • i915 378495 2
  • snd_seq 45126 0
  • snd_seq_device 13176 1 snd_seq
  • drm_kms_helper 31370 1 i915
  • drm 183952 3 drm_kms_helper,i915
  • snd_timer 22917 2 snd_seq,snd_pcm
  • rts_pstor 261815 0
  • cfg80211 137243 1 wl
  • joydev 17266 0
  • coretemp 12898 0
  • i2c_algo_bit 12841 1 i915
  • snd 52893 13 snd_timer,snd_seq_device,snd_seq,snd_pcm,snd_hwdep,snd_hda_codec,snd_hda_intel,snd_hda_codec_realtek,snd_hda_codec_hdmi
  • battery 13146 0
  • iTCO_wdt 17081 0
  • sony_laptop 36225 0
  • iTCO_vendor_support 12704 1 iTCO_wdt
  • acpi_cpufreq 12935 1
  • soundcore 13065 1 snd
  • ac 12624 0
  • power_supply 13475 2 ac,battery
  • rfkill 19012 6 sony_laptop,cfg80211,bluetooth
  • i2c_i801 16870 0
  • crc32c_intel 12747 0
  • ghash_clmulni_intel 13130 0
  • i2c_core 23876 6 i2c_i801,i2c_algo_bit,drm,drm_kms_helper,i915,videodev
  • cryptd 14517 1 ghash_clmulni_intel
  • evdev 17562 21
  • mperf 12453 1 acpi_cpufreq
  • pcspkr 12579 0
  • psmouse 69265 0
  • serio_raw 12931 0
  • processor 28149 1 acpi_cpufreq
  • video 17683 1 i915
  • button 12937 1 i915
  • ext4 350763 2
  • crc16 12343 2 ext4,bluetooth
  • jbd2 62115 1 ext4
  • mbcache 13114 1 ext4
  • sg 25874 0
  • sr_mod 21899 0
  • sd_mod 36136 5
  • cdrom 35401 1 sr_mod
  • crc_t10dif 12348 1 sd_mod
  • thermal 17383 0
  • thermal_sys 18040 3 thermal,video,processor
  • ahci 24997 4
  • libahci 22941 1 ahci
  • xhci_hcd 73450 0
  • libata 140630 2 libahci,ahci
  • ehci_hcd 40249 0
  • scsi_mod 162269 5 libata,sd_mod,sr_mod,sg,rts_pstor
  • r8169 47008 0
  • mii 12675 1 r8169
  • usbcore 128741 6 ehci_hcd,xhci_hcd,btusb,usbhid,uvcvideo
  • usb_common 12354 1 usbcore

Под 3.11:

Показать
  • [*]Module Size Used by
  • parport_pc 22409 0
  • ppdev 12724 0
  • lp 13025 0
  • parport 31855 3 lp,ppdev,parport_pc
  • bnep 17535 2
  • rfcomm 33424 10
  • binfmt_misc 12932 1
  • uinput 17439 1
  • nfsd 192158 2
  • auth_rpcgss 39122 1 nfsd
  • oid_registry 12419 1 auth_rpcgss
  • nfs_acl 12511 1 nfsd
  • nfs 105635 0
  • lockd 55654 2 nfs,nfsd
  • fscache 38267 1 nfs
  • sunrpc 160404 6 nfs,nfsd,auth_rpcgss,lockd,nfs_acl
  • fuse 67363 5
  • loop 22869 0
  • hid_generic 12393 0
  • usbhid 40964 0
  • hid 81894 2 hid_generic,usbhid
  • btusb 17678 0
  • bluetooth 169854 24 bnep,btusb,rfcomm
  • i915 522652 2
  • wl 6278840 0
  • snd_hda_codec_hdmi 31811 1
  • cfg80211 315689 1 wl
  • drm_kms_helper 31837 1 i915
  • snd_hda_codec_realtek 37011 1
  • drm 208643 3 i915,drm_kms_helper
  • snd_hda_intel 35487 3
  • snd_hda_codec 122851 3 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel
  • x86_pkg_temp_thermal 13054 0
  • joydev 17232 0
  • ehci_pci 12472 0
  • snd_hwdep 13189 1 snd_hda_codec
  • snd_pcm 68479 3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
  • snd_page_alloc 13018 2 snd_pcm,snd_hda_intel
  • ehci_hcd 40640 1 ehci_pci
  • acpi_cpufreq 13277 1
  • i2c_algo_bit 12841 1 i915
  • snd_seq 45147 0
  • sony_laptop 41019 0
  • coretemp 12898 0
  • snd_timer 22773 2 snd_pcm,snd_seq
  • snd_seq_device 13176 1 snd_seq
  • iTCO_wdt 12831 0
  • i2c_i801 17008 0
  • i2c_core 24353 5 drm,i915,i2c_i801,drm_kms_helper,i2c_algo_bit
  • mperf 12411 1 acpi_cpufreq
  • iTCO_vendor_support 12704 1 iTCO_wdt
  • lpc_ich 16764 0
  • mfd_core 12601 1 lpc_ich
  • psmouse 74786 0
  • evdev 17610 10
  • serio_raw 12940 0
  • pcspkr 12595 0
  • processor 28184 1 acpi_cpufreq
  • snd 53014 15 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_hda_codec,snd_hda_intel,snd_seq_device
  • crc32c_intel 21850 0
  • ac 12668 0
  • rfkill 19242 6 cfg80211,sony_laptop,bluetooth
  • soundcore 13026 1 snd
  • video 17844 1 i915
  • battery 13101 0
  • ghash_clmulni_intel 13062 0
  • cryptd 14560 1 ghash_clmulni_intel
  • microcode 26065 0
  • button 12944 1 i915
  • ext4 390676 2
  • crc16 12343 2 ext4,bluetooth
  • jbd2 76557 1 ext4
  • mbcache 13082 1 ext4
  • sg 26095 0
  • sr_mod 21988 0
  • cdrom 35173 1 sr_mod
  • sd_mod 40582 5
  • crc_t10dif 12348 1 sd_mod
  • ahci 25148 4
  • libahci 23136 1 ahci
  • thermal 17468 0
  • thermal_sys 23293 4 video,thermal,processor,x86_pkg_temp_thermal
  • libata 141968 2 ahci,libahci
  • xhci_hcd 78348 0
  • r8169 52951 0
  • mii 12675 1 r8169
  • scsi_mod 162344 4 sg,libata,sd_mod,sr_mod
  • usbcore 135040 5 btusb,ehci_hcd,ehci_pci,usbhid,xhci_hcd
  • usb_common 12440 1 usbcore

Под 3.15:

Показать
  • [*]Module Size Used by
  • parport_pc 22409 0
  • ppdev 12724 0
  • lp 13025 0
  • parport 31855 3 lp,ppdev,parport_pc
  • rfcomm 33808 10
  • bnep 17535 2
  • binfmt_misc 12896 1
  • uinput 17439 1
  • nfsd 191612 2
  • auth_rpcgss 39419 1 nfsd
  • oid_registry 12419 1 auth_rpcgss
  • nfs_acl 12511 1 nfsd
  • nfs 149726 0
  • lockd 55654 2 nfs,nfsd
  • fscache 42698 1 nfs
  • sunrpc 170133 6 nfs,nfsd,auth_rpcgss,lockd,nfs_acl
  • fuse 72228 5
  • loop 22831 0
  • ecb 12737 1
  • hid_generic 12393 0
  • usbhid 40828 0
  • hid 82149 2 hid_generic,usbhid
  • btusb 21814 0
  • bluetooth 208265 24 bnep,btusb,rfcomm
  • x86_pkg_temp_thermal 13054 0
  • coretemp 12820 0
  • ghash_clmulni_intel 13019 0
  • i915 653816 2
  • snd_hda_codec_hdmi 37168 1
  • snd_hda_codec_realtek 50657 1
  • snd_hda_codec_generic 51403 1 snd_hda_codec_realtek
  • cryptd 14600 1 ghash_clmulni_intel
  • snd_hda_intel 22222 3
  • snd_hda_controller 22404 1 snd_hda_intel
  • snd_hda_codec 88375 5 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller
  • drm_kms_helper 32481 1 i915
  • drm 213823 4 i915,drm_kms_helper
  • iTCO_wdt 12831 0
  • microcode 30342 0
  • snd_hwdep 13189 1 snd_hda_codec
  • snd_pcm 68848 4 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_controller
  • iTCO_vendor_support 12704 1 iTCO_wdt
  • snd_seq 45147 0
  • snd_timer 22728 2 snd_pcm,snd_seq
  • joydev 17188 0
  • lpc_ich 20905 0
  • mfd_core 12601 1 lpc_ich
  • sony_laptop 45530 0
  • i2c_i801 17008 0
  • evdev 17598 23
  • i2c_algo_bit 12841 1 i915
  • i2c_core 33900 5 drm,i915,i2c_i801,drm_kms_helper,i2c_algo_bit
  • ehci_pci 12472 0
  • ehci_hcd 40930 1 ehci_pci
  • pcspkr 12595 0
  • snd_seq_device 13176 1 snd_seq
  • snd 53201 16 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,snd_seq_device
  • soundcore 13026 2 snd,snd_hda_codec
  • rfkill 19086 4 sony_laptop,bluetooth
  • psmouse 79175 0
  • serio_raw 12894 0
  • acpi_cpufreq 13240 1
  • processor 28058 1 acpi_cpufreq
  • battery 13101 0
  • video 17804 1 i915
  • ac 12715 0
  • button 12944 1 i915
  • ext4 395387 2
  • crc16 12343 2 ext4,bluetooth
  • jbd2 76312 1 ext4
  • mbcache 13493 1 ext4
  • sg 26057 0
  • sd_mod 40584 5
  • sr_mod 21988 0
  • cdrom 35173 1 sr_mod
  • crc_t10dif 12431 1 sd_mod
  • crct10dif_common 12356 1 crc_t10dif
  • ahci 25244 4
  • libahci 23131 1 ahci
  • thermal 17559 0
  • thermal_sys 23550 4 video,thermal,processor,x86_pkg_temp_thermal
  • libata 141828 2 ahci,libahci
  • crc32c_intel 21850 0
  • xhci_hcd 92444 0
  • r8169 52951 0
  • mii 12675 1 r8169
  • scsi_mod 167587 4 sg,libata,sd_mod,sr_mod
  • usbcore 139573 5 btusb,ehci_hcd,ehci_pci,usbhid,xhci_hcd
  • usb_common 12440 1 usbcore

(wl - это драйвер wlan, который я ставил вручную).

Большой вывод убирайте под спойлер. Исправил.

// Rizado

#387864

Зачем вы собирали ядро из исходников? Если для Wheezy есть репозиторий wheezy-backports, в который помещаются некоторые новые пакеты из тестовой ветки, например там есть более новое ядро-3.14: https://packages.debian.org/ru/wheezy-backports/linux-image-amd64, подключите этот репозиторий и установите ядро оттуда.

Ну а то, что нет старого драйвера, так это не беда, скорее всего, в новых версиях ядра переработали подсистему доступа к видео устройствам (видео камерам) и теперь вашу камеру обслуживает другой драйвер.

Установите ядро из указанного репозитория и проверьте.

Для более детальной картины лучше приложите вывод

text

lsusb

и вывод dmesg на старом ядре, где всё работало и на новом ядре (3.14).

#387888
"Максим Зубов" написал:
Посмотрел - а оказывается, в поздних версиях ядра этого модуля нету вообще.

плохо смотрел... в 3.лохматом они переехали в drivers/media/usb/uvc/ опция всё также называется USB_VIDEO_CLASS.

если нужна помощь со сборным ядром, то конфиги в студию (на pastebin)...

#387895

Что касается установки новой версии ядра из репозитория backports: почему-то оно не ставится, apt-get выдаёт ошибки:

Показать
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
linux-image-3.14-0.bpo.1-amd64 : Ломает: initramfs-tools (< 0.110~) но 0.109.1 будет установлен
Ломает: initramfs-tools:i386 (< 0.110~)

И при попытке установить ядро 3.12 - то же самое.
sources.list вроде бы нормальный:

Показать
deb http://mirror.mephi.ru/debian/ wheezy-backports main
deb http://www.bchemnet.com/suldr/ debian extra
# deb cdrom:[Debian GNU/Linux 7.4.0 _Wheezy_ - Official amd64 CD Binary-1 20140208-13:47]/ wheezy main
# deb cdrom:[Debian GNU/Linux 7.4.0 _Wheezy_ - Official amd64 CD Binary-1 20140208-13:47]/ wheezy main
deb http://mirror.mephi.ru/debian/ wheezy main non-free contrib
deb-src http://mirror.mephi.ru/debian/ wheezy main non-free contrib
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
# wheezy-updates, previously known as 'volatile'
deb http://mirror.mephi.ru/debian/ wheezy-updates main contrib non-free
deb-src http://mirror.mephi.ru/debian/ wheezy-updates main contrib non-free

(здесь bchemnet.com - это просто реп с драйверами принтера).
Архитектура AMD64, но добавлена поддержка I386 (для Wine главным образом).

И, к тому же, сейчас на том компьютере, о котором шла речь, стоит уже Ubuntu 12.10 вместо Debian. Это компьютер не мой, а жены, и она, попользовавшись некоторое время Debian, захотела Ubuntu. Мне последние релизы не очень понравились, а 12.10 хотя и не поддерживается уже официально, но на old-releases.ubuntu.com всё же есть полный репозиторий, его теперь и подключил. Но там, даже при включённом разделе backports нет ядер версии позднее 3.5! А с 3.5 на этом компьютере те же проблемы со звуком, что были с 3.2 в Debian. Так что, по-любому, надо ставить ядро из исходников.
А вот что касается присутствия драйвера веб-камеры в исходниках 3.11 - да, действительно, виноват, не заметил их там сразу. Но, хотя они там и присутствуют в исходниках, однако же при установке ядра у меня не ставятся - может быть, даже не компилируются. sudo modprobe uvcvideo пишет, что нет такого модуля, да и поиск файла uvcvideo.ko по всей файловой системе находит этот файл только в директориях, относящихся к старому ядру. Может быть, конечно, набор драйверов при установке ядра из исходников зависит от того, как отвечать на вопросы перед компиляцией. Но этих вопросов там порядка сотни - там разобраться чёрт ногу сломит, а инструкция, которой я следовал при установке ядра из исходников (http://pevma.blogspot.ru/2014/04/upgrading-debian-wheezys-kernel.html), предписывает на все отвечать по умолчанию с помощью программки yes, что я и делал.
Потом, я так-таки нашёл, где и как скачать драйвер uvc отдельно: его, оказывается, надо качать с помощью программки git из особого репозитория. Я поначалу не понял было, что это за git. Теперь вот разобрался. А просто в виде файла с исходниками драйвер этот, похоже, скачать нельзя. Так вот, с помощью git у меня получилось скачать и собрать драйвер под ядром 3.13 в Debian - но это на другом компьютере. А на данном Sony, где теперь стоит Ubuntu, я поставил опять из исходников 3.11 - но драйвер uvc почему-то не собирается! Скрипт build долго чего-то делает, а потом выдаёт такие ошибки:

Показать
CC [M] /home/tanushka/Драйвера/v4l/media_build/v4l/cx231xx-cards.o
/home/tanushka/Драйвера/v4l/media_build/v4l/cx231xx-cards.c: In function 'cx231xx_init_v4l2':
/home/tanushka/Драйвера/v4l/media_build/v4l/cx231xx-cards.c:1295:2: error: implicit declaration of function 'devm_kmalloc_array' [-Werror=implicit-function-declaration]
/home/tanushka/Драйвера/v4l/media_build/v4l/cx231xx-cards.c:1295:35: warning: assignment makes pointer from integer without a cast [enabled by default]
/home/tanushka/Драйвера/v4l/media_build/v4l/cx231xx-cards.c:1327:33: warning: assignment makes pointer from integer without a cast [enabled by default]
/home/tanushka/Драйвера/v4l/media_build/v4l/cx231xx-cards.c:1361:39: warning: assignment makes pointer from integer without a cast [enabled by default]
/home/tanushka/Драйвера/v4l/media_build/v4l/cx231xx-cards.c: In function 'cx231xx_usb_probe':
/home/tanushka/Драйвера/v4l/media_build/v4l/cx231xx-cards.c:1532:34: warning: assignment makes pointer from integer without a cast [enabled by default]
cc1: some warnings being treated as errors
make[3]: *** [/home/tanushka/Драйвера/v4l/media_build/v4l/cx231xx-cards.o] Ошибка 1
make[2]: *** [_module_/home/tanushka/Драйвера/v4l/media_build/v4l] Error 2
make[2]: Leaving directory `/usr/src/linux-3.11'
make[1]: *** [default] Ошибка 2
make[1]: Выход из каталога `/home/tanushka/Драйвера/v4l/media_build/v4l'
make: *** [all] Ошибка 2
build failed at ./build line 491.

Хотя я следовал инструкциям с офф. сайта: http://www.ideasonboard.org/uvc/#download .
Надо было сразу ядро 3.13 ставить, я только побоялся, что под ним может модуль для wlan BCM 43142 не собраться - под 3.15 он у меня не собирался, поэтому я и не решился 3.13 пробовать ставить, а дело это долгое.
В-общем, видимо, либо дело в вопросах при конфигурации ядра перед компиляцией. Либо всё-таки попробую скачать и поставить драйвер git'ом, но - под ядром 3.13.

#388007

Проблема решена: дело действительно оказалось в конфигурировании ядра перед компиляцией. По умолчанию, поддержка камер была выключена. Теперь всё работает.

Войдите или зарегистрируйтесь, чтобы ответить.