タイトル:i.MX95 19x19 EVK with JODY-W263-00B:Android 15 / Linux 6.12.23におけるWiFiファームウェアの有効化タイムアウト
NXPチームの皆様、こんにちは。
以下の構成でWiFiの初期化に関するデバッグを行っています。
ボード: NXP i.MX95 19x19 EVK
WiFiモジュール:u-blox JODY-W263-00B
Androidビルド:AOSP 15(Androidプロパティ認証待ち)
実行中のカーネル: 6.12.23-android16-5-maybe-dirty-4k
正確なNXPのAndroid BSPリリース/タグ:まだ確定していません
WiFiドライバ:mlan/moal(MWLAN)
選択されたファームウェア: sduart8987_combo.bin
SDIOデバイス: mmc2:0001:1
カーネル情報の実行:
SDIOデバイスが検出され、ドライバが「FWダウンロードオーバー」と表示します。しかし、ファームウェアはタイムアウト時間内にアクティブにならず、WiFi SDIOプローブが失敗します。
Relevant boo$ adb shell uname -a
Linux localhost 6.12.23-android16-5-maybe-dirty-4k #1 SMP PREEMPT 1970年1月1日木曜日 00:00:00 UTC aarch64 Toybox
tログ:
[ 10.845985] mlan: loading out-of-tree module taints kernel.
[ 10.961712] wlan: Loading MWLAN driver
[ 10.973277] wlan: Register to Bus Driver...
[ 11.016613] Attach moal handle ops, card interface type: 0x105
[ 11.070275] sta_name=wlan
[ 11.086277] uap_name=wlan
[ 11.086294] fw_name=sduart8987_combo.bin
[ 11.168031] Enable moal_recv_amsdu_packet
[ 11.168086] Attach mlan adapter operations.card_type is 0x105.
[ 11.257673] wlan: Enable TX SG mode
[ 11.257679] wlan: mpa_tx.buf_size=65280
[ 11.257682] wlan: Enable RX SG mode
[ 12.226020] Wlan: FW download over, firmwarelen=628200 downloaded 619156
[ 17.279039] FW failed to be active in time!
[ 17.286246] wlan_dnld_fw fail ret=0xffffffff
[ 17.296825] WLAN: Fail download FW with nowwait: 0
[ 17.502477] woal_request_fw failed
[ 17.537460] wlan_sdio mmc2:0001:1: probe with driver wlan_sdio failed with error -1
[ 17.547534] wlan: Register to Bus Driver Done
[ 17.553159] wlan: Driver loaded successfullyドライバをアンロードして再ロードした後、次のことも観察しました:
[ 4051.080660] fw_name=sduart8987_combo.bin
[ 4051.159940] Wlan: FW download over, firmwarelen=628200 downloaded 0
[ 4056.079262] FW failed to be active in time!
[ 4056.084697] wlan_dnld_fw fail ret=0xffffffff
[ 4056.089909] WLAN: Fail download FW with nowwait: 0
[ 4056.250548] woal_request_fw failed
[ 4056.273119] wlan_sdio mmc2:0001:1: probe with driver wlan_sdio failed with error -1関連するコミュニティの議論を見つけました。
議論はNvidia AGX Orin上の88W8801に関するもので、異なるモジュール/プラットフォームです。著者はノーSDを除去しバス幅を4から1に変更し、元の構成で正常に動作した結果改善を報告しています。これらの変更を自分のボードでまだテストしていません。
もう少し詳しく教えていただけますか:
Is sduart8987_combo.bin JODY-W263-00Bの正しいファームウェアですか?このAndroid/カーネルの組み合わせには、どのファームウェアリリースとMLAN/MOALドライバのリビジョンが推奨されますか?
i.MX95 19x19 EVK 上のこのモジュールについて、推奨される SDIO デバイスツリー設定は何ですか?特に、バス幅、最大周波数、pinctrl、電源、リセット GPIO、および電源シーケンス遅延について教えてください。
バス幅=<1> やSDIOクロックを低くすることで、このタイムアウトの診断に役立つ でしょうか?このプラットフォームにおいて、 無SD の除去は 重要または推奨されますか?
ドライバがファームウェアのダウンロード完了を報告した後、ファームウェアのアクティベーションタイムアウトが発生する原因は何でしょうか?ドライバ再ロード後にダウンロード0になるということは、再試行前にモジュールの完全な電源サイクルやハードウェアリセットが必要だということを示しているのでしょうか?
このボード/モジュール/カーネルの組み合わせに関して、既知の問題や必要なパッチはありますか?
ファームウェアやドライバの互換性問題とSDIO通信や電源・リセットシーケンスの問題を区別するために、どの追加のデバッグ設定、SDIOレジスタダンプ、ログを集めるべきでしょうか?
確認され次第、完全なブートログ、関連するデバイスツリーノード、wifi_mod_para.conf、そして正確なBSP/ドライバのリビジョンも提供できます。
よろしくお願いします。
NXPチームの皆様、こんにちは。
JODY-W263-00Bを搭載したi.MX95 19x19 EVKにおけるファームウェアのアクティベーションタイムアウトに関する、さらなる診断証拠を収集しました。
ハードウェアモード検証
両方のレジスタ読み取りが成功しました。
WIFI_DIAG: magic_reg=0xf0 magic_raw=0x24 read_ret=0
WIFI_DIAG: strap_reg=0xf4 strap_raw=0xd2 read_ret=0
WIFI_DIAG: magic=0x24 strap=0x0
WIFI_DIAG: explicit fw_name=sduart8987_combo.bin; skipping automatic selectionマスクされたストラップは、ドライバーソースによるとSD-UARTモードを示しており、設定されたファームウェア名と一致しています。
ダウンロードループからの脱出が確認されました
WIFI_DL_DIAG: exit=zero_request offset=619156 firmwarelen=628200 tries=100 max_tries=100
WIFI_DL_DIAG: base0_reg=0xf8 base0=0x0 base1_reg=0xf9 base1=0x0 last_txlen=16
Wlan: FW download over, firmwarelen=628200 downloaded 619156
Fail to poll firmware status: firmwarestat=0xf005
FW failed to be active in time!要求された長さのレジスタが100回のポーリング試行中ずっとゼロのままであるため、ダウンロードループが終了します。
ファームウェアバイナリ検査
ソースの 16 バイトのFWHeaderレイアウトとコマンド長ルールを使用してオフライン解析を行うと、オフセット 619140 から 619156 で終了する CMD4 レコードが特定され、ダウンロードカウンタと完全に一致します。ソースでは、CMD4 をFW_HAS_LAST_BLOCKとして定義しています。
このレコードの後に9044バイトの空きがあります。これらの解析ルールの目的はまだ明らかにされておらず、また、これらのルールがSDIOブートローダーのフォーマットを完全に記述しているかどうかも確認されていません。したがって、カウンターの差額だけでは、ダウンロードが不完全であったことの証明とはみなしません。
その他詳細:
MOAL/MLAN バージョン: 537.p9
組み込みファームウェア文字列: w8987o-V0、RF878X、FP92、16.92.21.p151.4
ファームウェアサイズ:628200バイト
SHA-256: db9e2ef58aba5778cddd7b7fbc84a34884bebef076052186e8b0d036e68d9f34
実際の1ビットSDIO動作は、以前に50MHzで同じタイムアウト値で検証済みである。
最新の診断テストは、4ビット、50MHzで実行されます。
期待されるファームウェアのREADYステータスは0xfedcですが、観測されたステータスは0xf005のままです。
Wi-Fiネットワークインターフェースは作成されません。
NXP BSPの正確なリリース/タグは現在確認中です。
もう少し詳しく教えていただけますか:
この特定の画像において、CMD4境界(オフセット619156)で停止することは想定されている動作でしょうか?残りの9044バイトの目的は何ですか?
SD8987ファームウェアのアクティベーション中に、 0xf005は何を示していますか?
バージョン文字列16.92.21.p151.4を含むファームウェアは、JODY-W263-00Bのドライバ537.p9でサポートされていますか?どのBSPとファームウェア/ドライバーパッケージを使うべきでしょうか?
この不具合に対して推奨されるモジュール電源/リセットタイミング、電源供給、および基準クロックのチェック項目はどれですか?
ファームウェアの起動失敗と、通信またはハードウェアの初期化の問題を区別するために、他にどのようなレジスタや診断情報を使用すればよいでしょうか?
ファームウェアのバイナリファイルは変更されていません。ソースコードの変更により診断ログ機能が追加され、完全なブートログとソースコードの差分が利用可能になりました。
よろしくお願いします。
失敗段階に関する重要な補足事項:
プロセッサはSDIO経由でSD8987のWi-Fiデバイスを検出し、ファームウェアダウンロードルーチンでは「FW download over」と報告されます。しかし、その後のアクティベーションチェックでは、ドライバはSDIO_FIRMWARE_READY = 0xfedcを期待し、報告された状態は0xf005とされています。
そのため、ファームウェアの初期化とSDIOプローブが失敗し、Wi-Fiネットワークインターフェースは作成されません。50MHzでの実際の1ビットSDIO動作を確認した後も、この結果は変わりません。
この段階でSD8987 0xf005が何を示しているのか、またファームウェアがREADYステータスに到達しない理由を特定するのに役立つ追加のレジスタ値やログについて説明していただけますか?
NXPチームの皆様、こんにちは。
前回の報告に続き、追加の検証と、制御されたSDIOバス幅実験を完了しました。Wi-Fiの初期化は、ファームウェアの有効化段階で依然として失敗します。
1. 確認されたデバイスおよびソフトウェアの詳細
ボード/モジュール: i.MX95 19x19 EVK (JODY-W263-00B搭載)
Android fingerprint: Android/evk_95_car/evk_95:15/BP1A.250505.005/eng.nisar:userdebug/dev-keys
カーネル: 6.12.23-android16-5-maybe-dirty-4k
NXP BSPの正確なリリース/タグ:現在確認中
SDIOデバイス: mmc2:0001:1
SDIO ID: 02DF:9149、ドライバーソースではSD8987にマッピングされています
ホストコントローラー:USDHC3、 mmc@428b0000
moalとmlanはどちらもバージョン537.p9を報告している。
MOAL ソースバージョン: 358C14898F4DDF4EB40AB03
ソースリポジトリのリビジョン:
nxp-mwifiex: 9630752ea1d9e28d9956adf27c652f40399e85ad
imx ファームウェア: 34faa4b3008bf9c6f814b5767cacbc3857cdc49b
両方のコミットの件名は「MA-23689-1 [Android-15]WCS Q2 release patch integrate」となっています。これらのソースコードのリビジョンをインストール済みのモジュールビルドにマッピングする作業は、現在も検証中です。
2. ファームウェアの識別情報を確認しました
選択されたファームウェアは/vendor/firmware/sduart8987_combo.binで、サイズは628200 バイトです。
ソースコピーとインストール済みボードコピーのSHA-256ハッシュ値は同じです。
db9e2ef58aba5778cddd7b7fbc84a34884bebef076052186e8b0d036e68d9f34これにより、コピーが一致していることが確認されました。ただし、モジュールとのファームウェアの互換性については、まだ確認が必要です。
3. 実際の1ビットSDIOテストが完了しました
当初、ライブデバイスツリーはbus-width = <1>と報告していましたが、 /sys/kernel/debug/mmc2/iosでは依然として 4 ビット動作が表示されていました。
ソースコードでは、 mmc_of_parse() は バス幅 = の既存の 4 ビット機能をクリアしませんが <1>、汎用 SDHCI 設定では、 SDHCI_QUIRK_FORCE_1_BIT_DATA が設定されてい ない限り、 MMC_CAP_4_BIT_DATA が追加されます 。
そこで、 sdhci-esdhc-imx.cのmmc_of_parse()エラーチェックの直後に診断ブロックを追加しました。
{
u32 bus_width;
if (!of_property_read_u32(np, "bus-width", &bus_width) &&
bus_width == 1) {
host->quirks |= SDHCI_QUIRK_FORCE_1_BIT_DATA;
host->mmc->caps &=
~(MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA);
}
}変更したカーネルとDT構成を再構築およびデプロイした後、以下のことを確認しました。
Live DT bus-width: 00 00 00 01
clock: 50000000 Hz
bus width: 0 (1 bits)
timing spec: 2 (sd high-speed)
signal voltage: 0 (3.30 V)しかし、同じ失敗が続いた。
Request firmware: sduart8987_combo.bin
Wlan: FW download over, firmwarelen=628200 downloaded 619156
Fail to poll firmware status: firmwarestat=0xf005
FW failed to be active in time!
Firmware Init Failed
wlan_sdio mmc2:0001:1: probe with driver wlan_sdio failed with error -1Wi-Fiネットワークインターフェースは一切表示されません。
設定された最大周波数は100 MHzですが、実際の動作は50 MHzのままです。したがって、低クロックのテストは完了していません。また、 レビューしたUSDHC3構成にはSDが含まれていなかったため、削除は行われませんでした。
4. WLAN専用ファームウェアのリロードテスト
設定済みのファームウェアパスに一時的にsd8987_wlan.binをバインドマウントし、MOALを再読み込みました。ドライバーは代替ファイルサイズを読み取りましたが、次のように報告しました:
firmwarelen=416836 downloaded 0
firmwarestat=0xf005
FW failed to be active in time!これは以前の初期化失敗後の再読み込みであったため、結果は決定的なものではないと判断します。これは、WLAN専用ファームウェアの互換性や正常な転送を保証するものではありません。
再起動により一時的なバインドマウントが解除され、元の628200バイトのコンボファームウェアが再度検証されました。
5. 現在の調査
moal_sdio_mmc.cで診断ログを準備し、以下の情報をキャプチャします。
生のチップマジックとホストストラップレジスタの値。
両方のレジスタ読み取りの戻りステータス。
仮面魔法とストラップの価値。
ソースコードでは、 CHIP_MAGIC_VALUE = 0x24 、 CARD_TYPE_SD_UART = 0と定義されています。既存のブートログではこれらの値は公開されていませんでした。このログ記録の変更はまだ展開されていません。
firmwarestat=0xf005 の正確な意味 、およびファームウェアサイズとダウンロードカウンタの 差が9044バイト 繰り返される現象 については、未解決のままです。完了メッセージをファームウェアがアクティブであることの証明とはみなしていません。
以下の点についてアドバイスいただけますか?
このファームウェア/ドライバーパッケージは、このBSP/カーネル上のJODY-W263-00Bに適していますか?バイナリやパッケージから正確なファームウェアリリースをどうやって特定できますか?
628200バイトのコンボイメージに対して619156バイトがダウンロードされたのは、このファームウェア形式では想定されるサイズなのでしょうか、それとも予期せぬ終了を示しているのでしょうか?
SD8987の初期化中にファームウェアステータス0xf005が表示されるのはどういう意味ですか?
上記の診断ホスト・ドライバの変更は1ビットテストを強制するのに適切でしょうか、それとも推奨されるBSPメカニズムがありますか?
ストラップベースのファームウェア選択を検証するために、どのレジスタ/ログを収集すべきでしょうか?また、明示的なfw_nameを指定すると、その選択は上書きされますか?
この障害発生後、再試行する前に必要な電源投入/リセット手順は何ですか?次に推奨する実験は、クロック周波数を低く設定するテストでしょうか、それとも別の対象を絞った実験でしょうか?
完全なブートログ、DT/オーバーレイの変更、ホストドライバーの違い、wifi_mod_para.confも提供可能です。
よろしくお願いします。
お問い合わせありがとうございます。
WiFiモジュールに uSDHC3 インターフェースを使っていると聞きました。i.MX95-EVKはM.2 KEY EコネクタでuSDHC3をサポートしています。ですので、M.2 WiFiモジュール、JODY-W263-00B(88W8987ベース)を使っているのだと思います。
M.2 KEY EコネクタでSDIO WiFiを有効にする際の以下の手順を明確にする必要があります。
-- uSDHC3 IO レベルは NVCC_WAKEUP によって決定されます
NVCC_WAKEUPは1.8V(VDD_1V8_Sから)です。
--M.2電源、VCC_KE_3V3はデフォルトで無効になっています
電力はNX5P2924DUKによって生成され、M2_KE_PWRENイネーブルメントを制御しています。
3. ソフトウェアが何をするか
(1)imx95-19x19-evk.dtsにuSDHC3ノードを追加する
デフォルトではuSDHC3ノードは存在しないため、手動で追加する必要があります。
[注]
imx95-15x15-evk.dtsを参照できますそれを追加するためのusdhc3コード。
異なるGPIOに注意してください。
--電源GPIOを有効にする
--M.2のW_DISABLE1#ピンとW_DISABLE2ピンをプルアップします
--SDIO_WAKE# および SDIO_RST# ピン
(3)Android 15 SDIO WiFi パワーエンイブルメント
i.MX95 の haredBoardConfig.mk ファイルを確認し、pwrseq_simple.ko がサポートされているかどうかを確認してください。サポートされていない場合は、追加してください。おそらく以下のような感じでしょう。
......
$(KERNEL_OUT)/net/wireless/cfg80211.ko \
$(KERNEL_OUT)/drivers/mmc/core/pwrseq_simple.ko \
......
(3)imx95-19x19_gki.fragment を有効化します(名前が異なる場合もありますので、ご確認ください)。
......
CONFIG_PWRSEQ_SIMPLE=m
......
(4)pcie1ノードの無効化( imx95-19x19-evk.dts内)
……
&pcie1 {
pinctrl-0 = <&pinctrl_pcie1>;
pinctrl-names = "default";
reset-gpio = <&i2c7_pcal6524 16 GPIO_ACTIVE_LOW>;
vpcie-supply = <®_slot_pwr>;
ステータス = "無効";
};
......
(5) BoardConfig.mk が8987を直接サポートできる
デフォルトのWiFiファームウェアファイル名を88W8987に変更できます。
わかりました、試してみてください。
ありがとうございます
よろしくお願いいたします。
維東
こんにちは、ウェイドンさん
ご指導ありがとうございました。
以下の設定更新をテストしましたが、ファームウェアの初期化は依然として失敗します。
imx95-19x19-evk.dtsでpcie1を無効化しました。既存の uSDHC3 の設定は保持されています。
BoardConfig.mk と SharedBoardConfig.mk でWi-Fi設定ラベルとモジュールパラメータファイル名を更新しました。
evk_95.mk内のファームウェア構成の宛先名を更新しました。
カーネルフラグメント内にCONFIG_PWRSEQ_SIMPLE=mが既に存在していることが確認されました。pwrseq_simple.koの実行時ロードとDTSパワーシーケンス接続については、引き続き検証が必要です。
最新のブートでは以下が使用されます。
moal.mod_para=wifi_mod_para_sd8987.confモジュールはNXP 88W8987をベースにしたJODY-W263-00Bと報告されており、Wi-Fiドライバーのバージョンは537.p9です。
現在のファームウェア:
Path: /vendor/firmware/sduart8987_combo.bin
Size: 628200 bytes
SHA-256: db9e2ef58aba5778cddd7b7fbc84a34884bebef076052186e8b0d036e68d9f34ブートログ:
SD8987: init module param from usr cfg
card_type: SD8987, config block: 0
fw_name=sduart8987_combo.bin
Request firmware: sduart8987_combo.bin
Wlan: FW download over, firmwarelen=628200 downloaded 619156
Fail to poll firmware status: firmwarestat=0xf005
FW failed to be active in time!
Firmware Init Failed
wlan_sdio mmc2:0001:1: probe with driver wlan_sdio failed with error -1以前にも、 lf-6.18.20_2.0.0ブランチからの代替ファームウェアをテストしました。
Size: 644352 bytes
SHA-256: ccaff1bc0a0232fb59111bb01f27cd28ba985d9a0bcb79beca61cde5e67ca823デプロイされたハッシュは検証されましたが、同じfirmwarestat=0xf005アクティベーション失敗が発生しました。
ドライバ537.p9と互換性のあるJODY-W263-00B / 88W8987の検証済みsduart8987_combo.binを教えていただけませんか?ファームウェアのバージョン、リポジトリコミット/タグ、SHA-256および推奨モジュールパラメータを記載してください。別のドライバリリースが必要な場合は、対応するドライバとファームウェアの組み合わせを指定してください。
参考までに、弊社のソースコードの改訂履歴は以下のとおりです。
Driver: 9630752ea1d9e28d9956adf27c652f40399e85ad
Original firmware repository: 34faa4b3008bf9c6f814b5767cacbc3857cdc49b0xf005が何を示しているのか、また、原因特定に役立つ追加のステータスレジスタキャプチャや電源/リセットチェックがあれば教えてください。電気的測定とリセットシーケンスの完全な検証はまだ実施中です。
よろしくお願いいたします。
ラケシュ