実験目的でいくつかのWi-FiとBluetoothデバイスを購入し、さらに購入する予定です。
ただし、同じタイプの複数のデバイスがハブに接続されている場合は、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アドレスBluetoothデバイスの。
USB規格に関しては、USBデバイスに一意のシリアル番号を割り当てますが、すべてのデバイスに一意のシリアル番号があるわけではありません。デバイスにシリアル番号がある場合は、それを使用してデバイスを一意に識別できます。ただし、デバイスにシリアル番号がない場合でも、異なる基準(ベンダーや製品IDなど)を使用して、同じUSB IDを持つ他のデバイスと区別することができます。
答え2
私はあなたの質問に答えたと思います。 Linuxはこれを追跡します。 USB IDは一意の識別子ではなく、デバイスの種類を識別します。ディスクドライブとネットワークカードの場合、複数の同じデバイスをホストシステムに接続することはまれではありません。カーネルは最初にデバイスを列挙し(検索順序に従って)、デバイスタイプと検索順序に従って内部命名スキームを適用し、次にudevを適用します。可能代替命名システムを適用します(通常、デバイス名が検索された順序に関係なく持続するようにするため)。
通常、同じクラスの2つのデバイスの物理接続を変更すると、カーネル割り当て名が変更されます。
デバイスタイプにカーネルに既知の固有の属性がある場合(udevinfoを参照)、これらの属性の一致に応じて代替名を適用するようにudevを設定できます。ほとんどのデバイスにはシリアル番号が表示されます。 Udevは外部プログラムを実行して、実行時に一致する追加の属性を検索することもできます。https://www.reactivated.net/writing_udev_rules.html