Armadilloフォーラム

USBメモリのシリアル番号取得方法

huehara

2016年11月4日 21時08分

お世話になります

Armadillo-420にてUSBメモリのシリアル番号を取得したいと考えてます。

通常ですと、udevのrule定義でSYSFS{serial}からシリアル番号が取得できそうだったので試しに行なってみたのですが
USBメモリのシリアル番号ではなく接続先のUSBハブのポート番号?が取得できました。
Armadillo-420では何か他の設定等を行わないと取得できないのでしょうか?
何か別な方法で取得するのでしょうか?

ご存知の方がおられましたら、ご教示ください。

因みに、ruleファイルは下記の通りです。

KERNEL=="sd*[0-9]*",ENV{ID_BUS}=="usb",ENV{ID_PATH}=="platform-ci_hdrc.0-usb-0:1.1:1.0-scsi-0:0:0:0",ACTION=="add",OPTIONS+="event_timeout=120",RUN+="/opt/sh/usb.sh start %k 1 SYSFS{serial}"

SYSFS{serial}で取得できたUSBメモリのシリアル番号をシェルスクリプトの引数として渡したいのです。

現状、試すとUSBハブのポート番号らしき値がとれます6ポートのハブですと、1~6です。

よろしくお願いします。

コメント

at_daisuke.sasaki

2016年11月4日 22時28分

佐々木大輔です。

> SYSFS{serial}で取得できたUSBメモリのシリアル番号をシェルスクリプトの引数として渡したいのです。

SYSFS{serial} についてはあまり調査できていないので、
これでシリアル番号が取れるかまでは確認できていないのですが、、、

udevadm moniter -p

でudevイベントをモニタし、USBメモリを挿してみたのですが、
ENV{ID_SERLAL}でシリアルナンバーが取れるように見えました。

そのため、以下のようなudevルールを書くと シェルにシリアル番号らしき
ユニークな値を渡す事まで確認できました。
# 同じ型のUSBメモリ 2つを接続し、末尾の数字が異なる 値を取れました。

KERNEL=="sd*", ENV{ID_BUS}=="usb", ACTION=="add", RUN+="/etc/config/serial %k %E{ID_SERIAL}"

ひとつのベンダーのUSBメモリしか試していないので、
お試しのUSBメモリでも試してみてください。

> 佐々木大輔です。
>
> > SYSFS{serial}で取得できたUSBメモリのシリアル番号をシェルスクリプトの引数として渡したいのです。
>
> SYSFS{serial} についてはあまり調査できていないので、
> これでシリアル番号が取れるかまでは確認できていないのですが、、、
>
>

> udevadm moniter -p
> 

>
> でudevイベントをモニタし、USBメモリを挿してみたのですが、
> ENV{ID_SERLAL}でシリアルナンバーが取れるように見えました。
>
> そのため、以下のようなudevルールを書くと シェルにシリアル番号らしき
> ユニークな値を渡す事まで確認できました。
> # 同じ型のUSBメモリ 2つを接続し、末尾の数字が異なる 値を取れました。
>
>

> KERNEL=="sd*", ENV{ID_BUS}=="usb", ACTION=="add", RUN+="/etc/config/serial %k %E{ID_SERIAL}"
> 

>
> ひとつのベンダーのUSBメモリしか試していないので、
> お試しのUSBメモリでも試してみてください。
>
>

佐々木様

お世話になります

ご回答ありがとうございました。

試した所、無事USBメモリのシリアル番号が取得できました。
複数のUSBメモリで試してみて各々違う番号が取れたので問題ないと思います。

ありがとうございました。

今後とも、よろしくお願いします