Armadilloフォーラム

カーネル起動中にUSBドングルのファームウェアファイルの読み込みが失敗する

tsydc

2022年8月8日 23時12分

USBドングルのBluetooth通信機能を使用しようとしております。

当該USBドングルは、ポートへの挿入時にファームウェアファイルを
「/usr/lib/firmware/rtl_bt」内から読み込む為、予めファイルを配置しております。

Armadillo本体の電源を投入する前から挿入していると、カーネル起動中にファイルを読み込もうとする際にエラーが発生してしまいます。
電源投入してカーネルが起動完了した後にUSBドングルを挿入する場合は、エラーは置きず読み込みされます。

なんとか、USBドングルを挿入したまま電源投入してもファームウェアファイルを正常に読み込んでほしいと考えております。
読み込み失敗する原因や、その対策方法などをご教示いただけないでしょうか。

起動時のログを添付しております。
何卒、よろしくお願い申し上げます。

コメント

at_mizo

2022年8月9日 9時37分

溝渕です。

> Armadillo本体の電源を投入する前から挿入していると、カーネル起動中にファイルを読み込もうとする際にエラーが発生してしまいます。
> 電源投入してカーネルが起動完了した後にUSBドングルを挿入する場合は、エラーは置きず読み込みされます。
>
> なんとか、USBドングルを挿入したまま電源投入してもファームウェアファイルを正常に読み込んでほしいと考えております。
> 読み込み失敗する原因や、その対策方法などをご教示いただけないでしょうか。

原因は、USBドングルのドライバをアタッチするタイミングでルートファイルシステムがマウントされていない(ルートファイルシステムに存在するファームウェアが見えない)為です。

回避策は以下2通りあります。

1. Linuxカーネルにファームウェアを組み込む
2. USBドングルのドライバをカーネルモジュールにする

前者については、Linuxカーネルコンフィギュレーションの以下の場所で指定可能です。

Device Drivers  --->
  Generic Driver Options  --->
    [*]   Include in-kernel firmware blobs in kernel binary
    () <- ここに指定する

上記を指定したソースがあるPC(ATDE)の"/lib/firmware/"以下にファームウェアを配置した状態でビルドしてみてください。