नोट: यह एक लिनक्स उत्तर है; अन्य गुठली से निपटने के लिए थोड़ा अलग तरीका होगा।
प्रसंग
PCI बसों के बारे में बात किए बिना USB बसों के बारे में बात करना मुश्किल है। CPU USB बस से बात नहीं कर सकता है, ऐसा क्या होता है कि CPU एक PCI बस से बात करता है जिसमें USB नियंत्रक जुड़ा होता है (और USB नियंत्रक / हब जिसे lsusb
USB बस कहते हैं)। पीसीआई की बसों को उदाहरण के लिए, सीपीयू से कितनी दूर के आधार पर गिना जाता है:
+-----+
| CPU |
+-----+
| PCI Bus 0
---+--+-----------------------------+
| |
+---+----+ +----+---+
| Bridge | | Bridge |
+---+----+ +----+---+
| PCI bus 1 | PCI bus 2
--+--------+ +-------+-------------+
| | |
Disk Controller USB Controller Network Card
(Device 00) (Device 00) (Device 01)
में देख रहे हैं man lspci
हम निम्न देखें:
Slot The name of the slot where the device resides
([domain:]bus:device.function). This tag is
always the first in a record.
इसलिए अब हम जानते हैं कि पीसीआई नंबर की व्याख्या कैसे करें। अगला हम पीसीआई बसों से जुड़े यूएसबी नियंत्रकों को देखेंगे। वर्तमान में मैं जिस मशीन पर हूं, उसमें एक दिलचस्प यूएसबी कॉन्फ़िगरेशन है, इसलिए मैं इसे एक उदाहरण के रूप में उपयोग करूंगा:
$ lspci -tv
-[0000:00]-+-00.0 Advanced Micro Devices, Inc. [AMD] RS780 Host Bridge
+-01.0-[01]----05.0 Advanced Micro Devices, Inc. [AMD/ATI] RS780M [Mobility Radeon HD 3200]
+-04.0-[02]----00.0 Qualcomm Atheros AR928X Wireless Network Adapter (PCI-Express)
+-05.0-[03]----00.0 Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
+-06.0-[04-06]--
+-11.0 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode]
+-12.0 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+-12.1 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
+-12.2 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
+-13.0 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+-13.1 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
+-13.2 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
+-14.0 Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller
+-14.1 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 IDE Controller
+-14.2 Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia (Intel HDA)
+-14.3 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller
+-14.4-[07]--
+-14.5 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
+-18.0 Advanced Micro Devices, Inc. [AMD] Family 11h Processor HyperTransport Configuration
+-18.1 Advanced Micro Devices, Inc. [AMD] Family 11h Processor Address Map
+-18.2 Advanced Micro Devices, Inc. [AMD] Family 11h Processor DRAM Controller
+-18.3 Advanced Micro Devices, Inc. [AMD] Family 11h Processor Miscellaneous Control
\-18.4 Advanced Micro Devices, Inc. [AMD] Family 11h Processor Link Control
रुको रुको रुको, ये सभी प्लसस क्या हैं? शीर्ष पर हमारे पास डोमेन और पीसीआई बस है -[0000:00]
(इस मशीन में केवल एक पीसीआई बस है)। और फिर हमारे पास उस बस से जुड़े कई उपकरण हैं। आइए देखें कि कौन से हैं यूएसबी डिवाइस:
$ lspci -tv | grep -i usb
+-12.0 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+-12.1 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
+-12.2 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
+-13.0 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+-13.1 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
+-13.2 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
+-14.5 Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
अच्छा, अब हम तुलना करते हैं कि lsusb
(मैं sort
बाद में सूची खोजना आसान बनाने के लिए उपयोग करता हूं ):
$ lsusb | sort
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 174f:5a31 Syntek Sonix USB 2.0 Camera
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 046d:c019 Logitech, Inc. Optical Tilt Wheel Mouse
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 0b05:1751 ASUSTek Computer, Inc. BT-253 Bluetooth Adapter
फिर से इंतजार करें। हमारे पास 7 USB डिवाइस हैं, lspci
लेकिन 10 डिवाइस के अनुसार lsusb
! lspci
केवल USB नियंत्रकों को सूचीबद्ध करता है; एक नियंत्रक में एक से अधिक USB उपकरण जुड़े हो सकते हैं। आइए /sys/bus/
देखें कि यह कैसे होता है।
$ ls -l /sys/bus/usb/devices/
... 1-0:1.0 -> ../../../devices/pci0000:00/0000:00:12.2/usb1/1-0:1.0
... 2-0:1.0 -> ../../../devices/pci0000:00/0000:00:13.2/usb2/2-0:1.0
... 2-1 -> ../../../devices/pci0000:00/0000:00:13.2/usb2/2-1
... 2-1:1.0 -> ../../../devices/pci0000:00/0000:00:13.2/usb2/2-1/2-1:1.0
... 2-1:1.1 -> ../../../devices/pci0000:00/0000:00:13.2/usb2/2-1/2-1:1.1
... 3-0:1.0 -> ../../../devices/pci0000:00/0000:00:12.0/usb3/3-0:1.0
... 3-1 -> ../../../devices/pci0000:00/0000:00:12.0/usb3/3-1
... 3-1:1.0 -> ../../../devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.0
... 4-0:1.0 -> ../../../devices/pci0000:00/0000:00:12.1/usb4/4-0:1.0
... 5-0:1.0 -> ../../../devices/pci0000:00/0000:00:13.0/usb5/5-0:1.0
... 6-0:1.0 -> ../../../devices/pci0000:00/0000:00:13.1/usb6/6-0:1.0
... 7-0:1.0 -> ../../../devices/pci0000:00/0000:00:14.5/usb7/7-0:1.0
... 7-1 -> ../../../devices/pci0000:00/0000:00:14.5/usb7/7-1
... 7-1:1.0 -> ../../../devices/pci0000:00/0000:00:14.5/usb7/7-1/7-1:1.0
... 7-1:1.1 -> ../../../devices/pci0000:00/0000:00:14.5/usb7/7-1/7-1:1.1
... 7-1:1.2 -> ../../../devices/pci0000:00/0000:00:14.5/usb7/7-1/7-1:1.2
... 7-1:1.3 -> ../../../devices/pci0000:00/0000:00:14.5/usb7/7-1/7-1:1.3
... usb1 -> ../../../devices/pci0000:00/0000:00:12.2/usb1
... usb2 -> ../../../devices/pci0000:00/0000:00:13.2/usb2
... usb3 -> ../../../devices/pci0000:00/0000:00:12.0/usb3
... usb4 -> ../../../devices/pci0000:00/0000:00:12.1/usb4
... usb5 -> ../../../devices/pci0000:00/0000:00:13.0/usb5
... usb6 -> ../../../devices/pci0000:00/0000:00:13.1/usb6
... usb7 -> ../../../devices/pci0000:00/0000:00:14.5/usb7
अब यह समझ में आने लगा है, हमारे पास 7 USB नियंत्रक हैं जो PCI बस में उपकरणों के रूप में प्लग किए जाते हैं। उदाहरण के लिए, USB बस 001 PCI डिवाइस से मेल खाती है 0000:00:12.2
और USB बस 007 0000:00:14.5
डिवाइस से मेल खाती है।
डिवाइस नंबर
USB बस नंबर (जैसे 7-1:1.2
) से शुरू होने वाली निर्देशिका USB नियंत्रक से जुड़े वास्तविक उपकरण हैं। जैसे पीसीआई बस में कई डिवाइस हो सकते हैं, वैसे ही यूएसबी कंट्रोलर (हब) से जुड़े कई यूएसबी डिवाइस हो सकते हैं।
डिवाइस नंबर बस काउंटर हैं: पहले जुड़े डिवाइस को 1 मिलता है, अगले को 2 मिलता है, और इसी तरह। लेकिन थोड़ा और है: यूएसबी को गर्म-प्लगबेल होने के लिए डिज़ाइन किया गया था; इसलिए आप डिवाइस कनेक्ट और डिस्कनेक्ट कर सकते हैं। जब आप USB डिवाइस को डिस्कनेक्ट करते हैं तो डिवाइस नंबर उस USB नियंत्रक पर किसी अन्य डिवाइस के लिए फिर से कर्नेल द्वारा उपयोग नहीं किया जाएगा। उदाहरण के लिए, यदि आप एक पेन ड्राइव को कनेक्ट करते हैं और डिस्कनेक्ट करते हैं, तो आप lsusb
अपनी पेन ड्राइव के लिए डिवाइस नंबर देखेंगे।
बस नंबरिंग
यदि आपने ध्यान से ऊपर पढ़ा है तो आप एक बात के बारे में सोच रहे होंगे कि मैंने नहीं छुआ। पीसीआई क्रमांकन का क्रम उस क्रम के अनुरूप नहीं है जिसमें यूएसबी नियंत्रक क्रमांकित थे! आइए हम फिर से देखें:
USB | PCI
-----+----
usb1 | 0000:00/0000:00:12.2
usb2 | 0000:00/0000:00:13.2
usb3 | 0000:00/0000:00:12.0
usb4 | 0000:00/0000:00:12.1
usb5 | 0000:00/0000:00:13.0
usb6 | 0000:00/0000:00:13.1
usb7 | 0000:00/0000:00:14.5
सूची क्रम में है, लेकिन काफी नहीं है। पहले दो USB कंट्रोलर आउट ऑफ ऑर्डर लगते हैं। फिर भी, एक कारण है कि: यदि आप lspci
ऊपर देखेंगे तो आप देखेंगे कि वे EHCI
USB (USB 2.0) हैं, जबकि अन्य सभी USB नियंत्रक OHCI
USB (USB 1.x) हैं।
इसलिए हम इस तालिका को निम्नानुसार बदल सकते हैं:
USB | PCI
-----+----
usb1 | 0000:00/0000:00:12.2
usb2 | 0000:00/0000:00:13.2 USB 2.0
-----+---------------------------------
usb3 | 0000:00/0000:00:12.0 USB 1.x
usb4 | 0000:00/0000:00:12.1
usb5 | 0000:00/0000:00:13.0
usb6 | 0000:00/0000:00:13.1
usb7 | 0000:00/0000:00:14.5
और संख्या असाइनमेंट स्पष्ट हो जाता है।