Armadilloフォーラム

マルチカードリーダでのメディア自動マウント

rz_yamamoto

2016年9月14日 19時24分

お世話になります。

過去のフォーラム等検索いたしましたが解決策を見つけることができませんでしたのでお知恵を拝借したく質問させていただきます。

実行環境:
 Armadillo420 
 Kernel : 3.14 at 4
 カードリーダ:ADR-GSDU3BK サンワサプライ
 SDカード:NSDA-004GK(H00AEI) ハギワラソリューションズ
 
Armadillo420に上記USB接続のマルチカードリーダを接続して使用したいと考えております。
udevルールを作成して起動時からメディアを挿入した状態で起動したときは自動的にマウントもできるのですが、起動後にメディアを挿入した場合と一度メディアを外したときにudevのイベントが発生しません。
具体的にはメディアは/dev/sda1に認識されますが抜いてもこれが残ったままになり、
/dev/sda(リーダ自体)が認識された状態からメディア後さしの場合は/dev/sda1が挿入後も認識されません。

上記の状況下でマニュアルでudevadm trigger /dev/sda1を実行すると問題なく動作するのですがなにか対策ありますでしょうか?
Armadillo420ではないですが動作確認済みのマルチカードリーダあるようですが何か特別な対応されているのか、それとも単なる相性なのでしょうか。
ちなみにウェブでカーネル再構築でCONFIG_SCSI_MULTI_LUNを有効にとかあったのでそれは有効にしております。

以上よろしくお願いします。

コメント

at_yuma.arakawa

2016年9月15日 18時22分

カーネル側でデバイス検出のポーリング設定を行うことで、検出できることを確認しました。

設定は、/sys/block/sda/events_poll_msecs というファイルに対して行います。

Armadilloのデフォルトでは、-1が設定されており、ポーリング設定が無効化されています。

[armadillo]# cat /sys/block/sda/events_poll_msecs
-1

例えば、2000msというポーリング周期を設定してみたところ、
マルチカードリーダーに挿入したSDカードを検出できることを確認しました。

[armadillo]# echo 2000 > /sys/block/sda/events_poll_msecs

この設定をudev ruleとして記述する場合、例えば以下のように設定すれば良いかと思います。
(Debian 8の /lib/udev/rules.d/60-persistent-storage.rules の記載内容の抜粋です。)

ACTION=="add", ATTR{removable}=="1", ATTR{events_poll_msecs}=="-1", ATTR{events_poll_msecs}="2000"

> カーネル側でデバイス検出のポーリング設定を行うことで、検出できることを確認しました。
>
> 設定は、/sys/block/sda/events_poll_msecs というファイルに対して行います。
>
> Armadilloのデフォルトでは、-1が設定されており、ポーリング設定が無効化されています。
>

> [armadillo]# cat /sys/block/sda/events_poll_msecs
> -1
> 

>
> 例えば、2000msというポーリング周期を設定してみたところ、
> マルチカードリーダーに挿入したSDカードを検出できることを確認しました。
>

> [armadillo]# echo 2000 > /sys/block/sda/events_poll_msecs
> 

>
> この設定をudev ruleとして記述する場合、例えば以下のように設定すれば良いかと思います。
> (Debian 8の /lib/udev/rules.d/60-persistent-storage.rules の記載内容の抜粋です。)
>

> ACTION=="add", ATTR{removable}=="1", ATTR{events_poll_msecs}=="-1", ATTR{events_poll_msecs}="2000"
> 

お世話になっております。

早急な回答ありがとうございました。
頂いた情報もとにudev ruleを展開し、起動後のメディア抜き差しに関しても対応できること確認できました。

山本