ブログ

USBデバイスの認識を遅らせる

at_kazutaka.bito
2015年2月1日 21時24分

カーネル起動時にUSBのプローブが有効になっていると、 認識された順番にデバイスファイルの末尾の番号がつく。

例えば、Armadillo-IoT開発セットの場合、3Gモジュールには、ttyUSB[0-4]が割り当てられるが、 USBコネクタにUSB-シリアル変換ケーブルを挿入した状態で起動すると、  USB-シリアル変換ケーブル:ttyUSB0  3Gモジュール:ttyUSB[1-4] のように3Gモジュールのデバイスファイルの番号がずれる。 補足)本例では、カーネルコンフィギュレーションのUSBサポートの機能で、シリアル変換のサポートを有効にしているものとする。

このような番号ずれを防ぐ方法としては、delayed_probeという方法がある。

本例について、USBコネクタにさしたデバイスを、3Gモジュールより後で認識させる場合は、 make menuconfigでカーネルコンフィギュレーションを

Linux Kernel Configuration
  Device Drivers  --->
    [*] USB support  --->
      [*]           Delay probe of OTG port <- '*'にする

のように設定してビルドしたカーネルを使用する。

上記のカーネルを使用すると、Armadillo起動時には、USBコネクタ側は認識されず、 3Gモジュールには、ttyUSB[0-4]が割り当てられるため、デバイスファイルの番号ずれを防ぐことができる。

USBコネクタ側のデバイスを認識するには、下記のようにdelayed_probeに'1'を設定する。

[armadillo ~]# echo 1 > /sys/devices/platform/fsl-ehci.1/delayed_probe