내 USB 웹캠때때로키보드로 인식되므로 작동하지 않는 것 같습니다. 보통 재부팅하면 해결되는데 귀찮아서 다른 방법이 없을지 궁금합니다.
편집하다
처음에는 udev에서 이상한 메시지를 보고 udev인 줄 알고 이 질문을 게시했지만 (@tecloM 덕분에) 이것이 관련이 없다는 것을 알게 되었습니다.
이것이 XY 문제인지 알려주십시오. udev의 횡설수설(웹캠 장치는 키보드임)을 보았으므로 udev 문제라고 가정하지만 아마도 그렇지 않을 것입니다. 웹캠이 안정적으로 작동하기를 원합니다! 어쩌면 udev가 단지 이름을 지정하고 문제가 더 깊을 수도 있습니까?
웹캠을 연결한 후 나타나는 syslog 줄은 다음과 같습니다.
Apr 8 16:56:21 meowko kernel: [561385.593298] usb 1-2.1: new high-speed USB device number 78 using xhci_hcd
Apr 8 16:56:23 meowko kernel: [561387.935896] usb 1-2.1: New USB device found, idVendor=046d, idProduct=085c, bcdDevice= 0.16
Apr 8 16:56:23 meowko kernel: [561387.935902] usb 1-2.1: New USB device strings: Mfr=0, Product=2, SerialNumber=1
Apr 8 16:56:23 meowko kernel: [561387.935905] usb 1-2.1: Product: C922 Pro Stream Webcam
Apr 8 16:56:23 meowko kernel: [561387.935908] usb 1-2.1: SerialNumber: 80ADA8BF
Apr 8 16:56:23 meowko kernel: [561387.937534] uvcvideo: Found UVC 1.00 device C922 Pro Stream Webcam (046d:085c)
Apr 8 16:56:23 meowko kernel: [561387.939350] input: C922 Pro Stream Webcam as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1/1-2.1:1.0/input/input230
Apr 8 16:56:24 meowko mtp-probe: checking bus 1, device 78: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1"
Apr 8 16:56:24 meowko mtp-probe: bus: 1, device: 78 was not an MTP device
Apr 8 16:56:24 meowko systemd-udevd[1153237]: controlC1: Process '/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore 1' failed with exit code 99.
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (II) config/udev: Adding input device C922 Pro Stream Webcam (/dev/input/event28)
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (**) C922 Pro Stream Webcam: Applying InputClass "libinput keyboard catchall"
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (II) Using input driver 'libinput' for 'C922 Pro Stream Webcam'
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (II) systemd-logind: got fd for /dev/input/event28 13:92 fd 107 paused 0
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (**) C922 Pro Stream Webcam: always reports core events
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (**) Option "Device" "/dev/input/event28"
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (**) Option "_source" "server/udev"
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (II) event28 - C922 Pro Stream Webcam: is tagged by udev as: Keyboard
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (II) event28 - C922 Pro Stream Webcam: device is a keyboard
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (II) event28 - C922 Pro Stream Webcam: device removed
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1/1-2.1:1.0/input/input230/event28"
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (II) XINPUT: Adding extended input device "C922 Pro Stream Webcam" (type: KEYBOARD, id 27)
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (**) Option "xkb_model" "pc105"
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (**) Option "xkb_layout" "gb"
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (WW) Option "xkb_variant" requires a string value
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (WW) Option "xkb_options" requires a string value
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (II) event28 - C922 Pro Stream Webcam: is tagged by udev as: Keyboard
Apr 8 16:56:24 meowko /usr/lib/gdm3/gdm-x-session[1047636]: (II) event28 - C922 Pro Stream Webcam: device is a keyboard
Apr 8 16:56:24 meowko gnome-shell[1047764]: Window manager warning: Overwriting existing binding of keysym 31 with keysym 31 (keycode a).
...various versions of last line (don't think relevant?)...
Apr 8 16:56:24 meowko mtp-probe: checking bus 1, device 78: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1"
Apr 8 16:56:24 meowko mtp-probe: bus: 1, device: 78 was not an MTP device
실행 중: udevadm info -ap /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1
다음을 제공합니다.
looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1':
KERNEL=="1-2.1"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{bNumConfigurations}=="1"
ATTR{configuration}==""
ATTR{quirks}=="0x42"
ATTR{busnum}=="1"
ATTR{ltm_capable}=="no"
ATTR{bDeviceSubClass}=="02"
ATTR{avoid_reset_quirk}=="0"
ATTR{urbnum}=="130"
ATTR{serial}=="80ADA8BF"
ATTR{bMaxPower}=="500mA"
ATTR{removable}=="unknown"
ATTR{speed}=="480"
ATTR{idProduct}=="085c"
ATTR{tx_lanes}=="1"
ATTR{bMaxPacketSize0}=="64"
ATTR{bDeviceProtocol}=="01"
ATTR{version}==" 2.00"
ATTR{bmAttributes}=="80"
ATTR{devnum}=="78"
ATTR{rx_lanes}=="1"
ATTR{authorized}=="1"
ATTR{idVendor}=="046d"
ATTR{bConfigurationValue}=="1"
ATTR{devpath}=="2.1"
ATTR{maxchild}=="0"
ATTR{product}=="C922 Pro Stream Webcam"
ATTR{bDeviceClass}=="ef"
ATTR{bNumInterfaces}==" 4"
ATTR{bcdDevice}=="0016"
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-2':
KERNELS=="1-2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{speed}=="480"
ATTRS{maxchild}=="4"
ATTRS{tx_lanes}=="1"
ATTRS{bNumConfigurations}=="1"
ATTRS{bConfigurationValue}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bDeviceSubClass}=="00"
ATTRS{product}=="USB2.0 Hub"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bmAttributes}=="e0"
ATTRS{devpath}=="2"
ATTRS{urbnum}=="336"
ATTRS{quirks}=="0x0"
ATTRS{bNumInterfaces}==" 1"
ATTRS{authorized}=="1"
ATTRS{version}==" 2.00"
ATTRS{bcdDevice}=="0288"
ATTRS{removable}=="removable"
ATTRS{idProduct}=="3431"
ATTRS{devnum}=="68"
ATTRS{bDeviceClass}=="09"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{idVendor}=="2109"
ATTRS{configuration}==""
ATTRS{rx_lanes}=="1"
ATTRS{ltm_capable}=="no"
ATTRS{bMaxPower}=="100mA"
ATTRS{busnum}=="1"
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{idProduct}=="0002"
ATTRS{authorized_default}=="1"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bConfigurationValue}=="1"
ATTRS{bNumConfigurations}=="1"
ATTRS{speed}=="480"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{version}==" 2.00"
ATTRS{ltm_capable}=="no"
ATTRS{tx_lanes}=="1"
ATTRS{serial}=="0000:00:14.0"
ATTRS{quirks}=="0x0"
ATTRS{busnum}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bmAttributes}=="e0"
ATTRS{bcdDevice}=="0504"
ATTRS{bMaxPower}=="0mA"
ATTRS{bDeviceSubClass}=="00"
ATTRS{product}=="xHCI Host Controller"
ATTRS{devnum}=="1"
ATTRS{idVendor}=="1d6b"
ATTRS{authorized}=="1"
ATTRS{maxchild}=="16"
ATTRS{bNumInterfaces}==" 1"
ATTRS{rx_lanes}=="1"
ATTRS{devpath}=="0"
ATTRS{configuration}==""
ATTRS{bDeviceClass}=="09"
ATTRS{urbnum}=="32052"
ATTRS{removable}=="unknown"
ATTRS{interface_authorized_default}=="1"
ATTRS{manufacturer}=="Linux 5.4.0-66-generic xhci-hcd"
looking at parent device '/devices/pci0000:00/0000:00:14.0':
KERNELS=="0000:00:14.0"
SUBSYSTEMS=="pci"
DRIVERS=="xhci_hcd"
ATTRS{class}=="0x0c0330"
ATTRS{numa_node}=="-1"
ATTRS{dma_mask_bits}=="64"
ATTRS{revision}=="0x31"
ATTRS{local_cpus}=="ff"
ATTRS{driver_override}=="(null)"
ATTRS{device}=="0xa12f"
ATTRS{consistent_dma_mask_bits}=="64"
ATTRS{subsystem_vendor}=="0x1028"
ATTRS{dbc}=="disabled"
ATTRS{broken_parity_status}=="0"
ATTRS{ari_enabled}=="0"
ATTRS{enable}=="1"
ATTRS{msi_bus}=="1"
ATTRS{local_cpulist}=="0-7"
ATTRS{vendor}=="0x8086"
ATTRS{subsystem_device}=="0x06e4"
ATTRS{d3cold_allowed}=="1"
ATTRS{irq}=="133"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
온라인 중 Linux 5.4.0-66-generic #74-Ubuntu SMP Wed Jan 27 22:54:38 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
.
미리 감사드립니다!
편집하다
출력 lsinput
(카메라가 작동 중일 때):
/dev/input/event27
bustype : BUS_USB
vendor : 0x46d
product : 0x85c
version : 22
name : "C922 Pro Stream Webcam"
phys : "usb-0000:00:14.0-2/button"
bits ev : (null) (null)
답변1
나는 당신과 똑같은 Logitech C922 웹캠을 가지고 있습니다.
내 시스템이 Debian 10이기 때문에 systemd 로그에 모두 표시되지는 않지만 로그에 비슷한 메시지가 표시됩니다.
이러한 특정 메시지는 X11 디스플레이 서버에 의해 생성됩니다.
[ 121.255] (II) config/udev: Adding input device C922 Pro Stream Webcam (/dev/input/event31)
[ 121.255] (**) C922 Pro Stream Webcam: Applying InputClass "evdev keyboard catchall"
[ 121.255] (**) C922 Pro Stream Webcam: Applying InputClass "libinput keyboard catchall"
[ 121.255] (II) Using input driver 'libinput' for 'C922 Pro Stream Webcam'
[ 121.255] (**) C922 Pro Stream Webcam: always reports core events
[ 121.255] (**) Option "Device" "/dev/input/event31"
[ 121.255] (**) Option "_source" "server/udev"
[ 121.259] (II) event31 - C922 Pro Stream Webcam: is tagged by udev as: Keyboard
[ 121.259] (II) event31 - C922 Pro Stream Webcam: device is a keyboard
[ 121.259] (II) event31 - C922 Pro Stream Webcam: device removed
[ 121.293] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.4/1-4.4.2/1-4.4.2:1.0/input/input40/event31"
[ 121.293] (II) XINPUT: Adding extended input device "C922 Pro Stream Webcam" (type: KEYBOARD, id 19)
[ 121.293] (**) Option "xkb_model" "pc105"
[ 121.293] (**) Option "xkb_layout" "fi"
[ 121.293] (**) Option "xkb_options" "compose:menu,ctrl:nocaps"
[ 121.297] (II) event31 - C922 Pro Stream Webcam: is tagged by udev as: Keyboard
[ 121.297] (II) event31 - C922 Pro Stream Webcam: device is a keyboard
하지만 내 웹캠은 잘 작동해요.
제 경우에는 장치가 로 표시됩니다 /dev/input/event31
. 따라서 이 도구를 사용하여 더 자세히 알아볼 수 있습니다 lsinput
.
# lsinput -v -s 31
/dev/input/event31
id : 046d:085c, USB, v22
phys : "usb-0000:00:14.0-4.4.2/button"
name : "C922 Pro Stream Webcam"
KEY : CAMERA
실제 USB 키보드와 비교하면 어떤가요? 글쎄, 내 키보드는 다음과 같이 표시되며 /dev/input/event7
결과 lsinput
는 다음과 같습니다.
# lsinput -v -s 7
/dev/input/event7
id : 04d9:2221, USB, v272
phys : "usb-0000:00:14.0-13/input0"
name : "USB Keyboard"
KEY : [ 143 codes ]
MSC : SCAN
LED : NUML CAPSL SCROLLL
따라서 lsinput
실제 키보드의 정보에 따르면 약 143개의 서로 다른 키 코드를 보낼 수 있습니다. 웹캠 "키보드"는 하나만 있으며 이름도 CAMERA
.
일부 웹캠에는 다양한 목적으로 하나 또는 두 개의 버튼이 있을 수 있습니다. 웹캠 uvcvideo
드라이버는 웹캠을 렌더링하여 이러한 버튼을 지원합니다.반품"키보드" 장치로서,또한주요 웹캠 기능입니다. 이를 통해 웹캠 버튼을 특별히 처리하기 위한 사용자 정의 소프트웨어가 없어도 키보드 이벤트 매핑 도구를 사용하여 웹캠 버튼의 기능을 사용자 정의할 수 있습니다.
Logitech C922 Pro Stream 웹캠에는 실제로 물리적 버튼이 없는 것 같습니다. 아마도 웹캠 내부의 하드웨어가 버튼을 지원하지만 Logitech은 이 기능이 실제로 지원되지 않음을 나타내기 위해 웹캠 펌웨어를 변경하지 않고 이 특정 모델에서 버튼을 생략하기로 결정했습니다. 거기.
내 이전 컴퓨터에는 Logitech QuickCam 9000이 있었는데 여기에는 이와 같은 버튼이 있었습니다. Windows에서 버튼을 누르면 웹캠 소프트웨어가 카메라를 사용하여 가능한 최고 해상도로 정지 이미지를 캡처하도록 실행됩니다.
따라서 추가 증거가 없는 한 웹캠의 신뢰성 문제에 대한 단서를 찾을 때 웹캠에 버튼이 있을 수 있다는 사실을 모르고 uvcvideo
이를 시스템에 표시할 수 있다는 사실을 모르기 때문에 아마도 잘못된 것에 초점을 맞추고 있는 것 같습니다. 키보드 키와 비슷합니다.
웹캠이 현재 연결되어 있는 USB 포트가 충분한 전력을 공급하지 않거나 커넥터가 느슨할 수 있습니다. 다른 USB 포트에 연결해 보셨나요?
카메라가 버스 전원 공급 USB 허브를 통해 연결된 경우 컴퓨터에 내장된 USB 포트나 자체 전원이 있는 허브에 직접 연결해 보십시오(허브가 연결된 장치에 더 많은 전원을 공급할 수 있도록). 그것).
웹캠이 작동하지 않는 경우 USB 케이블을 뽑았다가 다시 연결하면 문제가 해결됩니까? 그렇지 않은 경우 uvcvideo
드라이버를 제거하고 다시 로드해 보십시오 .
sudo modprobe -r uvcvideo
sudo modprobe uvcvideo
드라이버를 언로드했다가 다시 로드하면 드라이버 내에 문제가 있는 경우 드라이버 상태가 완전히 다시 초기화됩니다.
실패 하면 modprobe -r uvcvideo
그럼무엇웹캠이 사용 중이거나 마이크 등 일부 기능이 작동하지 않거나 운전자와 웹캠 간의 통신이 끊어졌습니다.
dmesg
출력에서 오류를 확인 하고 루트로서 fuser /dev/video*
웹캠의 비디오 부분과 입력 장치 부분을 사용하고 있을 수 있는 fuser /dev/input/event27
프로세스를 식별해 보십시오.
불행하게도 오디오 섹션의 사용법을 확인하는 것은 더 복잡합니다. 특정 ALSA 오디오 장치를 사용하는 프로세스를 식별하는 좋은 하위 수준 명령을 아는 사람이 있습니까? (이 답변을 자유롭게 편집하거나 알고 있는 경우 직접 추가하십시오.)