2016-12-15 15 views
1

2つのArduino Nanoを使用していますが、現在は常にttyUSB<NUMBER>であるため、/devにリストされているように名前を変更したいと考えています。Arduinoごとに一意のIDを取得する方法

udevルールを作成するために一意のシリアル番号を取得するにはどうすればよいですか?

udevadmで取得しようとしましたが、両方のArduinosで同じシリアルIDを返します。

/var/log: udevadm info -a -n /dev/ttyUSB0 | grep '{serial}' 
    ATTRS{serial}=="0000:00:14.0" 

答えて

1

Arduino Nanoは、USBコントローラが内蔵されていないATmega328をベースにしています。ボード上のUSBコネクタは、外部のUSB-to-TTLコンバータICに接続されています。したがって、PC側で見られるすべてのUSBデバイスパラメータは、Arduino自体ではなくUSBチップに属します。

これらのチップの多くは、独自のシリアル番号で別々にプログラムすることができます。代わりに、Arduinoボードを接続するPCのポート番号を一意の識別子として代わりに使用することもできます。

試したudevadmコマンドは、ArduinoボードのUSBチップのシリアル番号ではなく、Arduinoボードが接続されているPCのUSBコントローラの「シリアル」を示しています。

代わりにudevadm info -n /dev/ttyUSB0 -q allを実行してください。シリアル番号の行はE: ID_SERIAL_SHORT=12345678のようになります。 - その行が欠落しているか、実際にすべてのあなたのボードに同じ番号が含まれている場合はUSBポート番号に基づいて独自の別名を割り当てるには、このudevルールを使用します。私はまさにこれをやってしまった

ACTION=="add", KERNEL=="ttyUSB*", SYMLINK+="arduino/tty-%s{../busnum}-%s{../devpath}" 
+0

、私は私のPCのポート番号を使用しましたArduinosを特定する。このApprochの欠点は、ArduinosをPCに接続する順番を注意しなければならないことです。 – Jonas

+0

@ Jonas、私はあなたのPCの特定のポートに接続されたデバイスを特定のデバイス名にマップする(別名を作成する) 'udev'ルールを作成することを提案していました。その場合、接続順序は重要ではありません。 –

関連する問題