ইউএসবি ডিভাইস চিহ্নিত করা


15

আমার পাঁচটি ইউএসবি ক্যামেরা, একই ব্র্যান্ড, একই মডেল রয়েছে (ক্যানিয়ন CNR-FWC120H)। তারা বিভিন্ন দৃশ্যের নজরদারি 24/7 ব্যবহার করা হয়। আমি যে কোন ক্যামেরাটি যা লিনাক্স (ডেবিয়ান) কনসোল বা প্রোগ্রাম্যাটিক্যাল (কোনও ভাষা) থেকে সনাক্ত করতে হবে।

আমি আউটপুট খুঁজছেন চেষ্টা করেছি lsusb -vvv, একটি ক্ষেত্র আছে iSerial যা প্রতিটি ক্যামেরাটির জন্য আলাদা হওয়া উচিত তবে দুর্ভাগ্যবশত এই নির্মাতার সিদ্ধান্ত নেওয়ার সিদ্ধান্ত নেন না এবং সমস্ত ক্যামেরাগুলিতে একই সিরিয়াল রয়েছে: 200901010001

অন্য যে কোন উপায় আছে যা আমি সনাক্ত করতে পারি কোন ক্যামেরাটি ইউএসবি পোর্টের সাথে স্বাধীনভাবে যুক্ত হয় কারণ দুর্ভাগ্যবশত আমার নির্দিষ্ট দৃশ্যের মধ্যে আমি এই ক্যামেরাটি একই পোর্টে সংযুক্ত থাকব।

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

আপডেট 2 আমি ক্যামেরার একটির জন্য আমার লগগুলিতে নিম্নলিখিত তথ্য দেখতে পাচ্ছি:

[Wed Apr 30 18:35:02 2014] uvcvideo: Found UVC 1.00 device FULL HD 1080P Webcam (0bda:58b0)
[Wed Apr 30 18:35:02 2014] input: FULL HD 1080P Webcam as /devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4

যে ব্যবহার করে, আমি এই কমান্ড বলা হয়েছে:

udevadm info --query=all --path=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4

এবং এই পেয়েছিলাম:

P: /devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4
E: DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4
E: EV=3
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_MODEL=FULL_HD_1080P_Webcam
E: ID_MODEL_ENC=FULL\x20HD\x201080P\x20Webcam
E: ID_MODEL_ID=58b0
E: ID_PATH=pci-0000:01:00.0-usb-0:2:1.0
E: ID_PATH_TAG=pci-0000_01_00_0-usb-0_2_1_0
E: ID_REVISION=5801
E: ID_SERIAL=Generic_FULL_HD_1080P_Webcam_200901010001
E: ID_SERIAL_SHORT=200901010001
E: ID_TYPE=video
E: ID_USB_DRIVER=uvcvideo
E: ID_USB_INTERFACES=:0e0100:0e0200:010100:010200:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Generic
E: ID_VENDOR_ENC=Generic
E: ID_VENDOR_ID=0bda
E: KEY=100000 0 0 0
E: MODALIAS=input:b0003v0BDAp58B0e5801-e0,1,kD4,ramlsfw
E: NAME="FULL HD 1080P Webcam"
E: PHYS="usb-0000:01:00.0-2/button"
E: PRODUCT=3/bda/58b0/5801
E: PROP=0
E: SUBSYSTEM=input
E: UDEV_LOG=3
E: USEC_INITIALIZED=41090223

ক্যামেরা মধ্যে আলাদা যে জিনিস DEVPATH, ID_PATH, ID_PATH_TAG, PHYS এবং (সবচেয়ে আকর্ষণীয়) USEC_INITIALIZED। এখন প্রথম চারটি উপাদান সম্ভবত USB পোর্টের সাথে সম্পর্কিত, তবে শেষটি USEC_INITIALIZED সিরিয়াল নম্বর কিছু সাজানোর মত দেখায়। আমি আসলে এটি প্রতিনিধিত্ব করে কি কোন তথ্য খুঁজে পাচ্ছি না। কেউ এটা সম্পর্কে কিছু জানেন না? আমি ভাবছিলাম যে এটি হয়তো মাইক্রো সেকেন্ডের সময় যখন ক্যামেরাটি শুরু হয়েছিল তবে এটির পরে যে ক্যামেরাটি শুরু হয়েছিল তা হল USEC_INITIALIZED=17919751, এবং তারপর যে এক পরে USEC_INITIALIZED=25609278 তাই এটা বরং র্যান্ডম মনে হয়। আমি সিস্টেমটি পুনরায় বুট করার চেষ্টা করব এবং দেখব, তবে এটি করার জন্য আমাকে সুবিধাজনক সময় অপেক্ষা করতে হবে।

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


এটা কি অ প্রোগ্রামিক / অ সফটওয়্যার হতে পারে? যেমন একটি মার্কার (বিভিন্ন রং) সঙ্গে ক্যামেরা সামনে গ্লাস চিহ্নিত করে? যদি হার্ডওয়্যার এবং / অথবা সিরিয়ালগুলিতে কোন পার্থক্য না থাকে তবে আমি সন্দেহ করি এটি কাস্টম পুনঃসূচনা ছাড়াই সম্ভব হবে, তবে আপনি ক্যামেরাগুলি রিলে / হাবের মাধ্যমে আলাদা করতে পারেন যা ভিন্ন?
Gizmo

দুর্ভাগ্যবশত মার্কার ধারণাটির জন্য নয়, কারন আমি ছবিটি নিজেই কিছু পরিচয় করিনি। ক্যামেরা সিরিয়াল নম্বর overwrite করার সম্ভাবনা আছে যদি আমি বিস্মিত ছিল? অথবা অন্য কোন ক্যামেরা সেটিং / তথ্য ... যে মত কিছু বিদ্যমান? লিখিত, স্থায়ী মেমরি?
Ivan Kovacevic

এটি সত্যিই কঠিন হতে যাচ্ছে, বিশেষ করে যখন ডিভাইসের জন্য কোনও অনন্য তথ্য সরবরাহ করা হয় না, এটি দেখুন: stackoverflow.com/questions/14053764/... । মেমরি ওভাররাইট করার জন্য, আপনি একটি ফার্মওয়্যার ফ্ল্যাশিং ইউটিলিটি খুঁজে বের করতে চেষ্টা করতে পারেন, ফার্মওয়্যারে সিরিয়াল সনাক্ত করতে এবং হেক্স-এটিকে আপনার পছন্দ মতো কিছুতে সম্পাদনা করুন? তবে আমি এর জন্য কোন সরঞ্জাম খুঁজে পাচ্ছি না। আপনি ইউএসবি ডিভাইস বর্ণনাকারী পরিবর্তন করার উপায় খুঁজে পেতে পারেন তবে এটি থেকে সহজ হবে।
Gizmo

আপনি এখানে HID বর্ণনাকারী টুলটি চেষ্টা করতে পারেন - usb.org/developers/hidpage - আতঙ্ক, শুধুমাত্র যদি আপনার ক্যাম লুকানো হয়
Gizmo

হুমকি, Yup আমি এই অসম্ভব অনুমান, এই মডেলের জন্য কোন ফার্মওয়্যার আছে যাতে ধারণা খুব আউট। আমি অনুমান করতে পারি যে আমি যা করতে পারি তা হল প্রতিটি ক্যামেরা পিসিতে একই পোর্টের সাথে সংযুক্ত থাকে তা প্রয়োগ করার জন্য সর্বদা ... আমি আমার প্রশ্নটি সংশোধন করব।
Ivan Kovacevic

উত্তর:


2

একটি নির্দিষ্ট অবস্থানে ক্যামেরা আছে? দৃশ্যগুলো কি কম বা ধ্রুবক? যদি তাই হয় তবে আপনি পরিবর্তে যা দেখছেন তার মাধ্যমে ক্যামেরা সনাক্ত করতে আপনি চিত্র সনাক্তকরণ ব্যবহার করতে পারেন।

এটি করার জন্য কিছু শালীন পাইথন সরঞ্জাম রয়েছে, এই উত্তরটির বিষয়ে কিছু ভাল তথ্য রয়েছে: https://stackoverflow.com/questions/1927660/compare-two-images-the-python-linux-way


আমি মনে এই সমাধান ছিল, তবে আমি কিছু সহজ আশা। এবং আমার একটি সমস্যা হবে কারণ কয়েকটি ক্যামেরা প্রকৃতপক্ষে একটি ব্যস্ত বন্দর দেখছে, জাহাজগুলি চলছে, সমুদ্রের পৃষ্ঠ তরঙ্গের কারণে ধ্রুবক নয়।
Ivan Kovacevic

2

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

প্রোগ্রামটির মাধ্যমে কার্নেলের তথ্যটি ডিভাইসের জন্য পেতে sysfs ব্যবহার করা যাবে। কার্নেল তাদের দেখায় হিসাবে Sysfs ডিভাইসগুলির একটি ফাইল-সিস্টেম-মত উপস্থাপনা। (এটি ডিস্কের আসল ফাইল নয়)

এর সাথে আপনি করতে পারেন: - পণ্য এবং বিক্রেতা আইডি সঙ্গে ডিভাইস টাইপ সনাক্ত - যদি এটি একটি ডিভাইস সিরিয়াল নম্বর পড়ুন। - ইউএসবি হাব উপর শারীরিক সংযোগ সংখ্যা পড়ুন

আপনি আপনার টাইপ ডিভাইসগুলি / sys / ক্লাসে সন্ধান করে শুরু করতে পারেন। এই উদাহরণে আমি একটি ইউএসবি → এলপিটি পোর্ট ব্যবহার করি। কিন্তু নীতি একই।

$ ls -l /sys/class/usbmisc
lp1 -> ../../devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.5/4-1.5:1.0/usbmisc/lp1
lp2 -> ../../devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.6/4-1.6:1.0/usbmisc/lp2

Uevent ফাইল থেকে ডিভাইসের নাম গ্র্যাপ করুন:

cat /sys/class/usbmisc/lp1/uevent
MAJOR=180
MINOR=1
DEVNAME=__usb/lp1__

add / dev যাতে আপনি ডিভাইসের নাম খুলে পেতে পারেন: আপনার / dev / USB / lp1

আসল পথ ব্যবহার করুন:     $ সিডি-পি / সিএসএস / ক্লাস / ইউএসবিমিস / এলপি 1

ফিরে 3 শাখা:

$ cd ../../../
/sys/devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.5

এই ডিরেক্টরির মধ্যে ডিভাইসের অনেক তথ্য রয়েছে:

idProduct এবং idVendor ডিভাইস টাইপ অনন্য সনাক্ত করতে ব্যবহার করা যেতে পারে।

যদি একটি আছে ক্রমিক ফাইল এবং এটি একটি অনন্য সিরিয়াল নম্বর রয়েছে, আপনি সম্পন্ন করা হয়।

অন্যথায় আপনার বিকল্প সনাক্তকরণ হিসাবে শারীরিক সংযোগ ব্যবহার করা হয়, যা এই ডিরেক্টরি নাম " 4-1.5 "এটি শারীরিক সংযোগের জন্য অনন্য, এবং যদি আপনি অন্য পোর্টে ডিভাইসটি প্লাগ করলে আপনি ইতিমধ্যে উল্লেখ করা পরিবর্তন হিসাবে দেখবেন।


আমার মনে হয় এটি সর্বোত্তম সমাধান, বা আমার ক্ষেত্রে আপোস ... একই ডেডিকেটেড USB পোর্টে ক্যামেরাগুলিকে ফিক্স করুন। আমি আপোস করি কারণ আমার ক্ষেত্রেও ক্যামেরা সনাক্ত করার প্রয়োজনীয়তা ছিল যদি উদাহরণস্বরূপ হার্ডওয়্যার রক্ষণাবেক্ষণের পরে ক্যামেরাগুলি রক্ষণাবেক্ষণকারী ব্যক্তি দ্বারা বিভিন্ন পোর্টে সংযুক্ত হবে।
Ivan Kovacevic

আমি রাজী. এই নিখুঁত থেকে অনেক দূরে। আমি এটা বিক্রেতাদের জন্য সাধারণ ছিল, একটি ফ ... যোগ সহজ ডিভাইস serialnumber, প্রোটোকল নির্দিষ্ট করে। আমি আপনাকে একটি ভাল সমাধান খুঁজে পেতে আশা করি!
Simon Rigét

1

কেবল ক্যামেরার আনপ্লাগ করুন, প্লাগ ইন করুন এবং একটি lsusb করুন। ক্যামেরা সনাক্ত করুন এবং কোন ইউএসবি পোর্ট ব্যবহার করা হয় তা নোট করুন। হয়তো ক্যাম উপর একটু লেবেল রাখুন। তারপর অন্য ক্যামেরা এর জন্য পুনরাবৃত্তি করুন এবং আপনি সেখানে পাবেন। কিছুই মিশন অসম্ভব;)


এইবার বুঝতে পারছি. শুধু একবারে একটি ক্যামেরা প্লাগ করুন এবং এটি সংযুক্ত করা হয়েছে এমন কোনও পোর্টটি নোট করুন। আপনি যদি নিজের সফ্টওয়্যারের মধ্যে পার্থক্য করতে না পারলে আপনি ব্যক্তিগত পোর্টগুলি চালু এবং বন্ধ করতে পারেন তবে মনে হচ্ছে এক সময়ে একমাত্র প্রদর্শিত হবে। দেখ askubuntu.com/questions/342061/...
Ryan Griggs

আমি স্বীকার করি আমি সম্পূর্ণরূপে আমার কনফিগারেশন উদ্দেশ্য পরিষ্কার ব্যাখ্যা না। এটি দীর্ঘস্থায়ী (মাস) সময়-ল্যাপস রেকর্ড করার জন্য ব্যবহৃত একটি দূরবর্তী অবস্থানের একটি পিসি। আমি এমন একটি সমাধান চাই যা স্বয়ংক্রিয়ভাবে আমার হস্তক্ষেপ ছাড়াই ক্যামেরা সনাক্ত করতে পারে। এখন কোনও পাওয়ার আউটেজের পরে আমি লগ ইন করতে এবং ক্যামেরা সংখ্যার ম্যানুয়ালি পুনর্গঠন করতে হবে।
Ivan Kovacevic

0

এটা সব ক্যামেরা চিহ্নিত করা সম্ভব। আদেশ

 $ sudo lsusb -v -d 046d:082d | grep -i serial
   iSerial                 1 05C6D16F

আমার ক্যামেরার সিরিয়াল নম্বরটি ফেরত দেয় (একটি লোগাইটেক এইচডি প্রো ওয়েবক্যাম, সঠিক বিক্রেতার সাথে একটি উদাহরণ হিসাবে ব্যবহৃত: পূর্ববর্তী ব্যবহার থেকে প্রাপ্ত পণ্য কোড lsusb )। অনুগ্রহ করে লক্ষ্য করুন যে এটি একটি বিশেষ ব্যবহারকারী হিসাবে এই ক্রিয়াকলাপটি সম্পাদন করার জন্য একেবারে প্রয়োজনীয়: একটি অননুমোদিত ব্যবহারকারী কমান্ডের মাধ্যমে উপলব্ধ সমস্ত তথ্য অ্যাক্সেস পায় না।

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

এখন কমান্ড

$ sudo udevadm info --query=all /dev/video1 | grep 'VENDOR_ID\|MODEL_ID\|SERIAL_SHORT'
  E: ID_MODEL_ID=082d
  E: ID_SERIAL_SHORT=05C6D16F
  E: ID_VENDOR_ID=046d

এই বিশেষ ক্যামেরা জন্য উপযুক্ত কোড ফেরত। সব সঙ্গে ট্রায়াল এবং ত্রুটি /dev/videoX ডিভাইস তাদের সব কবুতর-holing করতে পারবেন।


মনে হচ্ছে যেন আপনি হয়তো শেষ পর্যন্ত আমার প্রাথমিক প্রশ্ন পোস্টটি পড়েননি। আমি ইতোমধ্যেই udevadm ব্যবহার সম্পর্কে আমার পোস্টে উল্লেখ করেছি ... সমস্যাটি হল যে সমস্ত ক্যামেরাগুলির একই সিরিয়াল নম্বর রয়েছে যাতে আপনি সেটি থেকে তাদের আলাদা করতে পারেন না। আপনি উল্লেখ করেছেন যে "আপনি তাদের সেট করতে পারেন যাতে তারা স্বতন্ত্র" "সেট" / সিরিয়াল নম্বর পরিবর্তন করতে কোন উপায় আছে?
Ivan Kovacevic

-1

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

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

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