9

Ubuntu 10.1 で複数の同一の USB シリアル アダプタからデータを読み取っています。

/dev/tty パスが変更されることがあります (たとえば、起動時に他の USB デバイスが接続されている場合)。

このような変更を通じて、同じアダプターを繰り返し参照する方法が必要です。

udevadm によると、デバイスはすべて同じシリアル番号を持っています。

最も可能性の高いオプションは、アダプターが接続されているポートを特定することだと思います(アダプターは移動しません)。

機能する可能性のあるあらゆる種類の興味深い /dev パスを見つけることができますが、オンラインで udev に関するすべての議論にもかかわらず、デバイスが静的ポートに接続されている場合にこれらのパスの一部が静的であるかどうかについての決定的な声明を見つけることができません。

4

7 に答える 7

2

Ilya Matvejchikov の答えと同じように、良い解決策は、udev ルールを追加して、デバイスで必要なことを行うことです。あなたと同じように、私も同様の問題を抱えていました。私は USB-to-multi-serial アダプタに UPS を持っていましたが、時折、システムが /dev/tty 番号を切り替えることがありました。

私の解決策は、ドライバーとポートごとにデバイスのタイプを一致させるルールを作成し、UPS が接続されているポートへのシンボリック リンクを作成することでした。常に同じ物理ポートに接続されている UPS を監視するために NUT を使用しました。

# File contents of /etc/udev/rules.d/75-nut-ups.rules
# Create /dev/nut-ups0 to use as a persistent serial device that can be used
# reliably by nut to communicate with a UPS attached to the system.
# The UPS is attached to the first port of a MosSemiconductor dual USB
# serial adapter.
KERNELS=="ttyUSB*", SUBSYSTEMS=="usb-serial", DRIVERS=="moschip7720", ATTRS{port_number}=="0", SYMLINK+="nut-ups0"

ここで、シリアル ポートとして常に一定の /dev/nut-ups0 を使用するように NUT を構成し、usb-serial デバイスが認識されたときにルールが適切にマッピングを処理するようにします。

lsusb コマンドを使用して、プラグイン時にルールで使用する実際のデバイス名を見つけることができます。

于 2012-04-02T01:32:39.440 に答える
2

USB デバイスが接続されているポートを確認します。親デバイスの 1 つの変数KERNELS$ udevadm info -n /dev/ttyUSB0 -aは、KERNELS=="1-1.2:1.0" のようになっている必要があります。

udev ルールを作成します。

SUBSYSTEM=="tty", KERNELS=="1-1.2:1.0", SYMLINK+="ttyUSB42"
SUBSYSTEM=="tty", KERNELS=="1-1.3:1.0", SYMLINK+="usb-serial"

udevをトリガーします

$ udevadm trigger
于 2013-07-23T12:19:31.423 に答える
0

usb-devices は、ポート番号とバス/デバイスの列挙を取得できます。

于 2013-09-24T20:16:42.567 に答える
-1

デバイスはすべて同じシリアル番号を持っています [..]

usb-parse-devpath.pm は、アダプターのバスとポート ID を使用してこれに対処します。

于 2011-01-28T17:15:02.513 に答える