통합 웹캠을 비활성화하고 여전히 외부 웹캠을 사용하는 방법


13

랩톱에 통합 된 웹캠을 비활성화하는 방법을 찾고 있습니다. 웹캠이 uvcvideo 모듈을 사용하고 있지만 외부 웹캠에서도 사용 중이므로 차단 목록에 포함하고 싶지 않습니다.

모듈 목록을 터치하지 않고 장치 자체를 비활성화하는 방법이 있습니까?

웹캠이 lsusb에 의해 나열되는 방식입니다. 첫 번째는 통합 된 것 (일부 앱에서 BisonCam NB Pro로 식별 됨)이고 두 번째는 외부 Logitech C525입니다.

Bus 002 Device 004: ID 5986:0361 Acer, Inc 
Bus 003 Device 002: ID 046d:0826 Logitech, Inc. 

이미 BIOS를 확인했습니다. 웹캠을 비활성화 할 수있는 방법이 없습니다. 어쨌든 ID로 장치를 비활성화하는 방법을 배우고 싶습니다.

감사!


이것을 LinuxQuestions에 크로스 포스트했습니다. 내가 한 것은 결국이 특정 장치를 찾을 때 오류를 발생시켜 uvc_driver.c 커널 모듈을 해킹하는 것이 었습니다. 이것은 실제로 해결책이 아니라 더러운 해결 방법이지만 나에게 효과적입니다. 여기에 설명했습니다 : linuxquestions
AtomHeartFather

답변:


14

아주 간단합니다. 힘든 일은 USB 장치의 경로가 무엇인지를 해결하는 것입니다. 비활성화하려는 장치를 찾아서 시작해야합니다. 우리는 이것을 할 수 있습니다 lsusb:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0402:5602 ALi Corp. M5602 Video Camera Controller
Bus 001 Device 003: ID 045e:0723 Microsoft Corp. LifeCam VX-7000 (UVC-compliant)

비활성화하려면 1-6을 장치 포트로 변경하십시오. 포트는 종종 논리적이지 않지만 (물리적이지만)로 포트 매핑을 얻을 수 있습니다 lsusb -t. 일단 당신이 그것을 생각하면, 당신은 그것을 테스트 할 수 있습니다 :

cat /sys/bus/usb/devices/1-6/id{Vendor,Product} 

이것은 올바른 장치에 대한 나 04025602벤더 및 제품 ID를 제공합니다 (에 나열된 lsusb).

이제 우리는 그것을 발견했습니다. 끄는 것은 간단합니다.

echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValue

원하는대로 작동하는지 확인한 후 모든 시작 (예 :에서 /etc/rc.local) 을로드하십시오 .


1
훌륭하고 깨끗한 솔루션. 공유해 주셔서 감사합니다!
AtomHeartFather

1
이 기술은 더 이상 14.10에서 작동하지 않는 것 같습니다. "bConfigurationValue"파일이 존재하지 않으며 사용자 또는 루트로 파일을 쓰려고하면 권한이 거부됩니다.
lysdexia

'장치 포트 변경 1-6'의 의미를 이해하지 못했습니다. 나는 1-6라는 이름의 dir를 찾을 수 없었다
surajck

우분투 14.04에서는 echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValuesudo를 사용 하더라도 작동하지 않습니다. 값은 그대로 유지되며 파일에 아무것도 포함되지 않습니다. 웹캠은 여전히 ​​작동합니다.
soham

좋아, echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValue줄을 추가 한 후에 작동 합니다 /etc/rc.local.
소함

6

@surjack : 1-6포트 매핑에 따라 다릅니다. 입력 lsusb -t하면 얻을 수 있고의 출력과 비교됩니다 lsusb. 나를 위해 다음과 같은 출력을 얻습니다.

lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 5986:0525 Acer, Inc 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 012: ID 413c:2107 Dell Computer Corp. 

lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Video, Driver=uvcvideo, 5000M
    |__ Port 1: Dev 2, If 1, Class=Video, Driver=uvcvideo, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 3: Dev 9, If 0, Class=Vendor Specific Class, Driver=hdm_usb, 480M
    |__ Port 4: Dev 10, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 3: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 12, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 3: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 3: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M

이제는 카메라 04이기 때문에 내 경우에 올바른 버스를 찾으십시오 Acer, Inc. 포트 매핑은 카메라가Bus 04.Port 1 . 이것은 사용하는 대신 1-6을 사용해야 함을 의미 합니다 4-1. 나는 Linux / Ubuntu 전문가는 아니지만 Bus-Port숫자 를 사용 하고 단순히 사용해야 한다는 인상을줍니다 . 100 % 확실하게하려면 cat설명 된대로 명령을 사용하십시오 .

cat /sys/bus/usb/devices/<Bus>-<Port>/id{Vendor,Product} 

lsusb와 비교하십시오.

나의 경우에는:

cat /sys/bus/usb/devices/4-1/id{Vendor,Product}
5986
0525

이는 lsusb 출력과 동일합니다 5986:0525.

이제 내부 웹캠을 찾았습니다.

그러나 불행히도 lysdexia가 바르고 echo 명령이 작동하지 않습니다 Permission denied.

사용 가능한 다른 솔루션이 있습니까?


3
sudo -i그리고 나중에 echo "0" > ....
sygi

또는sudo echo "0" > sudo /sys/bus/usb/devices/...
soham

0

외부 장치를 연결했을 때만 사용하도록 설정하고 외부 장치가 연결되어 있지 않은 경우 내부를 사용하도록 설정하려면 여기에 해당하는 스크립트가 있습니다. Wildneuro의 답변을 기반으로하지만 ID가 주어진 장치 경로를 알아낼 수 있습니다.

내가 사용하는 일부 앱은 선호하는 카메라를 쉽게 선택할 수있는 방법을 제공하지 않는 것 같아서 사용합니다. 자신의 카메라 ID (에서 lsusb)로 쉽게 사용자 정의 할 수 있습니다 .

여기에 코드 : https://gist.github.com/shimon/12cd1080fb8669549aadc2b5408922bc


링크의 내용이 변경 될 수 있으므로 여기에 링크 된 페이지의 관련 내용을 추가하십시오.
차이 티 렉스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.