실험 목적으로 일부 Wi-Fi 및 블루투스 장치를 구입했으며 더 구입할 계획입니다.
그러나 동일한 유형의 두 개 이상의 장치가 허브에 연결되면 lsusb
해당 장치의 여러 인스턴스가 나열됩니다.
예를 들어. Realtek Wi-Fi 어댑터를 USB ID로 사용합니다 0bda:f179
. 3개가 있으면 해당 ID가 3번 표시됩니다.
Linux가 동일한 시스템에 연결되어 있을 때뿐만 아니라 다른 시스템에도 연결되어 있을 때 이를 고유하게 식별할 수 있는 방법이 있습니까?
예를 들어 네트워크 어댑터에는 MAC 주소가 새겨져 있고 USB 디스크 드라이버에는 이와 관련된 일부 ID가 있지만 이러한 무선 어댑터와 Bluetooth 장치에 대해서는 모르겠습니다.
MAC 주소가 되기를 원하지만 무선 어댑터에서 내 액세스 포인트에 연결하면 ifconfig
목록에서도 항상 다릅니다. 장치 자체가 아닌 이상 Linux가 매번 새로운 MAC을 제공할지는 의문입니다.
USB 표준은 유형에 관계없이 각 장치를 고유하게 식별하는 방법을 지정합니까?
답변1
Linux에서는 다음을 사용할 수 있습니다.우데브시스템은 장치 공급업체, 제품 ID, 일련 번호, 시스템 USB 버스의 물리적 위치 등 다양한 기준에 따라 USB 장치에 고유 식별자를 할당합니다. 이를 통해 장치의 USB ID가 동일하더라도 장치를 고유하게 식별할 수 있습니다.
무선 네트워크 어댑터의 MAC 주소를 찾으려면 다음을 사용하세요.아이피또는구성된 경우주문하다. 그러나 이미 알고 있듯이 MAC 주소는 장치가 연결된 네트워크에 따라 변경될 수 있습니다. 이는 일부 무선 어댑터가 개인 정보 보호를 위해 임의의 MAC 주소를 사용하기 때문입니다.
Bluetooth 장치에는 Bluetooth 장치 주소(BD_ADDR), MAC 주소와 유사합니다. hcitool 또는 bluetoothctl 명령을 사용하여 볼 수 있습니다.BD 주소블루투스 장치의.
USB 표준과 관련하여 USB 장치에 고유한 일련 번호를 할당하지만 모든 장치에 고유한 일련 번호가 있는 것은 아닙니다. 장치에 일련번호가 있는 경우 이를 사용하여 장치를 고유하게 식별할 수 있습니다. 그러나 장치에 일련번호가 없는 경우에도 다른 기준(예: 공급업체 및 제품 ID)을 사용하여 동일한 USB ID를 가진 다른 장치와 구별할 수 있습니다.
답변2
나는 당신이 당신의 질문에 대답했다고 생각합니다. Linux는 이를 추적합니다. USB ID는 고유 식별자가 아니며 장치 유형을 식별합니다. 디스크 드라이브와 네트워크 카드의 경우 호스트 시스템에 여러 개의 동일한 장치를 연결하는 것은 드문 일이 아닙니다. 커널은 먼저 장치를 열거하고(검색 순서에 따라) 장치 유형 및 검색 순서에 따라 내부 명명 체계를 적용한 다음 udev를 적용합니다.가능한대체 명명 시스템을 적용합니다(일반적으로 장치 이름이 검색된 순서에 관계없이 지속되도록 하기 위해).
일반적으로 동일한 클래스의 두 장치의 물리적 연결을 바꾸면 커널 할당 이름이 바뀌게 됩니다.
장치 유형에 커널에 알려진 고유한 특성이 있는 경우(udevinfo 참조), 이러한 속성 일치에 따라 대체 이름을 적용하도록 udev를 구성할 수 있습니다. 대부분의 장치에는 일련 번호가 표시됩니다. Udev는 외부 프로그램을 실행하여 런타임에 일치시킬 추가 속성을 검색할 수도 있습니다.https://www.reactivated.net/writing_udev_rules.html