
Ubuntu を実行している Beagle Bone Black で NovAtel USB セル モデムを有効にするスクリプトで、次の行を見つけました。
/sbin/modprobe option
マニュアル ページを見るとmodprobe
、オプションについてはたくさん書かれていますが (s に注意)、単一のoption
引数については何も書かれていません。 というモジュールoption
か何かがあるのでしょうか? それとも、モデムをセットアップするために引き起こされる他の副作用があるのでしょうか?
答え1
まったくその通りです。カーネル構成パラメータによって制御されるmodprobe option
モジュールをロードしようとします。option
USB_SERIAL_OPTION
さらに詳しい情報はカーネルソース(drivers/usb/serial/Kconfig
)に記載されています。
USB_SERIAL_OPTIONの設定 tristate「GSM および CDMA モデム用 USB ドライバ」 (...) このドライバは、 内蔵 OHCI-USB アダプタと内部接続された GSM モデム。 これらのカードの USB バスには外部からアクセスできません。 サポートされているデバイスには、次のメーカーのデバイス(の一部?)が含まれます。 Option、Huawei、Audiovox、Novatel Wireless、または Anydata。 (...) このドライバーがデバイスを認識しない場合は、 FTDI_SIO ドライバー経由でアクセスできる可能性があります。
これを追跡する方法:
そのようなカーネル モジュールがあるかどうかを確認します (これは、カーネル構成で有効になっている場合にのみ機能します)
$ find /lib/modules -name option.ko /lib/modules/kernel/drivers/usb/serial/option.ko
あるいは、モジュールがロードされるかどうか試すこともできます
# modprobe option # lsmod | grep option option 33128 0 usb_wwan 13044 1 option usbserial 23912 2 option,usb_wwan
これで、ソースファイルを検索することができます(これは、モジュールが現在のカーネルソースに含まれている場合にのみ機能します)。
$ find /usr/src/linux -name option.c /usr/src/linux/drivers/gpu/drm/nouveau/core/core/option.c /usr/src/linux/drivers/usb/serial/option.c
おっしゃるとおり、モジュールは USB モデムと関係があるので、2 番目の一致は有望に思えます。
カーネル設定パラメータも見つけることができる
$ find /usr/src/linux -name Makefile -exec grep -H option\.o '{}' \; /usr/src/linux/drivers/gpu/drm/nouveau/Makefile:nouveau-y += core/core/option.o /usr/src/linux/drivers/usb/serial/Makefile:obj-$(CONFIG_USB_SERIAL_OPTION) += option.o
さて、
/usr/src/linux/drivers/usb/serial/Kconfig
冒頭で引用した説明を見てみます。最後に、ソース自体(
.../drivers/usb/serial/option.c
)を見てみましょう。ほら他にもいろいろあります著者による名前の説明このドライバが存在するのは、「通常の」シリアル ドライバが GSM モデムでうまく動作しないためです。問題点:
- データ損失 - 1つの受信URBではまったく不十分です
- 非標準フロー(オプションデバイス)制御
ボーレートを制御するのは意味がない
このドライバは、Option Inc. 製のPC カード (内部に OHCI-USB インタフェースがあり、
その背後に GSM インタフェースがある)に使用されることが多いため、「option」という名前が付けられています。一部の「1 ポート」デバイスは、実際には USB バス上に複数の USB インスタンスを表示します。これはバグではなく、これらのポートはさまざまなデバイス機能に使用されます。