কীভাবে ইন্টিগ্রেটেড ওয়েবক্যাম অক্ষম করবেন এবং এখনও একটি বহিরাগত ব্যবহার করতে সক্ষম হবেন


13

আমি আমার ল্যাপটপের সাথে সংহত হওয়া ওয়েবক্যামটি অক্ষম করার একটি উপায় খুঁজছি। ওয়েবক্যামটি ইউভিসিভিডিও মডিউলটি ব্যবহার করছে তবে আমি এটি কালো তালিকাভুক্ত করতে চাই না কারণ এটি আমার কাছে থাকা একটি বহিরাগত ওয়েবক্যামও ব্যবহার করছে।

মডিউল তালিকায় স্পর্শ না করে ডিভাইসটি নিজেই অক্ষম করার কোনও উপায় আছে কি?

এইভাবে ওয়েবক্যামগুলি lsusb দ্বারা তালিকাবদ্ধ করা হয়। প্রথমটি হ'ল সংহত একটি (এটি কিছু অ্যাপস দ্বারা বাইসন ক্যাম এনবি প্রো হিসাবে চিহ্নিত করা হয়েছে), দ্বিতীয়টি হ'ল বহিরাগত লজিটিচ সি 525:

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

আমি ইতিমধ্যে বায়োস পরীক্ষা করেছি - সেখান থেকে ওয়েবক্যাম অক্ষম করার কোনও উপায় নেই। পাশাপাশি আমি কীভাবে আইডির মাধ্যমে ডিভাইসটি অক্ষম করতে হয় তা শিখতে চাই।

ধন্যবাদ!


লিনাক্স কিউশনস এ এটি ক্রসপোস্ট করেছে। আমি শেষ পর্যন্ত যা করেছি তা হ'ল uvc_driver.c কার্নেল মডিউলটি হ্যাক করা যখন এই নির্দিষ্ট ডিভাইসটি পাওয়া যায় তখন একটি ত্রুটি জোর করে। এটি আসলে কোনও সমাধান নয় তবে এটি একটি নোংরা কাজ, তবে এটি আমার জন্য কার্যকর। আমি এটি এখানে বর্ণনা করেছি: linuxquestions
AtomHeartFather

উত্তর:


14

এটা বেশ সহজ। কঠোর পরিশ্রম ইউএসবি ডিভাইসের পথে কী তা চালিয়ে যাচ্ছে। আমরা কোন ডিভাইসটি অক্ষম করতে চাই তা খুঁজে বের করে আমাদের প্রয়োজন। আমরা এটি দিয়ে এটি করতে পারি 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} 

এটি আমাকে 0402এবং 5602, সঠিক ডিভাইসটির জন্য বিক্রেতা এবং পণ্য আইডি দেয় (যেমন তালিকাভুক্ত lsusb)।

এখন আমরা এটি খুঁজে পেয়েছি, এটি বন্ধ করে দেওয়া সহজ:

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

এটি পছন্দসই হিসাবে কাজ করে তা নিশ্চিত করার পরে, এটি প্রতিটি স্টার্টআপে লোড করুন (উদাহরণস্বরূপ, ইন /etc/rc.local)


1
উজ্জ্বল, পরিষ্কার সমাধান। ভাগ করে নেওয়ার জন্য আপনাকে অনেক ধন্যবাদ!
এটমহার্টফাদার

1
এই কৌশলটি আর 14.10-এ কাজ করবে বলে মনে হচ্ছে না। "BConfigrationValue" কোনও ফাইল বিদ্যমান নেই এবং যদি কেউ ব্যবহারকারী বা মূল হিসাবে একটি লেখার চেষ্টা করে তবে অনুমতি অস্বীকার করা হয়।
লাইসডেক্সিয়া

'আপনার ডিভাইস পোর্টে 1-6 পরিবর্তন' এর অর্থ আমি বুঝতে পারি নি। আমি 1-6
সুরজ্যাক

উবুন্টু 14.04-এ, যদিও আমি echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValueসুডো দিয়ে করি , এটি কার্যকর হয় না। মানটি সেখানে থাকে না, ফাইলটিতে কিছুই নেই। ওয়েবক্যাম এখনও কাজ করে।
সোহম

ঠিক আছে, আমি echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValueলাইন যুক্ত করার পরে এটি কাজ করে /etc/rc.local
সোহম

6

@ সুরজ্যাক: 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। আমি লিনাক্স / উবুন্টু বিশেষজ্ঞ নই তবে এটি আমাকে এই ধারণা দেয় যে আপনাকে ব্যবহার করতে হবে 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

এখন আপনি আপনার অভ্যন্তরীণ ওয়েবক্যামটি খুঁজে পেয়েছেন।

তবে দুর্ভাগ্যক্রমে লাইসডেক্সিয়া ঠিক এবং ইকো কমান্ড কাজ করে না কারণ এটি Permission denied

অন্য কোন সমাধান পাওয়া যায়?


3
sudo -iএবং পরে echo "0" > ...
সিজি

বাsudo echo "0" > sudo /sys/bus/usb/devices/...
সোহম

0

আপনি যদি কেবলমাত্র বাহ্যিকটিকে সংযুক্ত থাকাকালীন সক্ষম করতে চান তবে বাহ্যিকটি সংযুক্ত না থাকলে অভ্যন্তরীণটিকে সক্ষম করে রাখতে হবে, তার জন্য এখানে একটি স্ক্রিপ্ট রয়েছে। এটি ওয়াইল্ডনুরোর উত্তরের ভিত্তিতে, তবে আপনাকে আইডি দেওয়ার জন্য ডিভাইসটির পথটি বের করতে পারে।

আমি এটি ব্যবহার করি কারণ আমি নির্ভর করি এমন কিছু অ্যাপ্লিকেশনগুলি আপনার পছন্দসই ক্যামেরাটি সহজেই বাছাইয়ের কোনও উপায় প্রস্তাব করে না। আপনি সহজেই নিজের ক্যামেরা আইডি (থেকে lsusb) কাস্টমাইজ করতে পারেন ।

এখানে কোড: https://gist.github.com/shimon/12cd1080fb8669549aadc2b5408922bc


যেহেতু লিঙ্কগুলির বিষয়বস্তু পরিবর্তন হতে পারে, দয়া করে এখানে লিঙ্কযুক্ত পৃষ্ঠার প্রাসঙ্গিক সামগ্রী যুক্ত করুন।
চই টি। রেক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.