Closed makmorit closed 1 year ago
具体的には、app_ble_pairing.cにおけるペアリング時のコールバック関数群が呼び出されず、結果としてペアリングに必要な暗号化処理等が続行されないため、無応答状態となります。
現状ですが、ZephyrのBluetoothモジュールから、何らのログも出力されないため、おそらくですが、他に組み込んだモジュールやサブシステムが悪さをしているとしか考えられない状況です。
なお基板(nRF5340 DK)は、Bluetoothモジュール(ペアリング処理)のサンプルアプリケーションBluetooth: Peripheral SC-only
であれば、正常に動作しているようです。
(「BLEペアリングサンプル動作確認手順書」により確認しています)
現状のnRF5340アプリケーションは、あまりにもたくさんのモジュール/サブシステムを組み込みすぎたため、本件問題の切り分けが非常に困難となっています。
そこで、現状正常に動作している前述「Bluetooth: Peripheral SC-only
」をベースに、nRF5340アプリケーションを、再編成したいと考えます。
まず手始めに、今までのnRF5340アプリケーションをベースとして、ペアリングモードでペアリングできるというだけのアプリケーションを「Bluetooth: Peripheral SC-only
」を手本として作成してみます。
(当然のことながら、他の機能はいったんすべて外すことになります)
c4b7f66までの対応の結果、ペアリング時のコールバック関数群が呼び出されない不具合が解消された事を確認しました。 以下の不具合があったようです。
*** Booting Zephyr OS build v3.2.99-ncs1 ***
[00:00:00.011,718] <inf> app_usb_hid: Get USB HID device success
[00:00:00.011,932] <inf> app_usb: USB initialized
[00:00:00.031,158] <inf> bt_hci_core: No ID address. App must call settings_load()
[00:00:00.031,158] <inf> app_bluetooth: Bluetooth initialized
[00:00:00.031,188] <inf> app_bluetooth: Passkey for BLE pairing: 199881
[00:00:00.031,250] <inf> app_settings: Buffer size for reading data from storage: 1024 bytes
[00:00:00.533,508] <inf> app_bluetooth: Advertising successfully started (Non-Pairing mode)
[00:00:00.533,660] <inf> app_main: Secure device application (PCA10095) version 0.4.8
[00:00:08.682,525] <dbg> app_process: button_pressed_long: Long pushed
[00:00:08.684,814] <inf> app_bluetooth: Advertising successfully started (Pairing mode)
[00:00:15.977,813] <inf> app_bluetooth: Connected
[00:00:16.056,304] <wrn> bt_l2cap: Ignoring data for unknown channel ID 0x003a
[00:00:16.586,303] <inf> app_ble_pairing: Passkey for 3C:22:FB:87:13:5E (public): 199881
[00:00:27.634,582] <inf> app_bluetooth: Connected 3C:22:FB:87:13:5E (public) with security level 4
[00:00:27.727,569] <inf> app_ble_pairing: Pairing with authentication completed (bonded)
[00:00:45.321,929] <inf> app_bluetooth: Disconnected (reason 0x13)
[00:00:45.324,768] <inf> app_bluetooth: Advertising successfully started (Non-Pairing mode)
Entering system off; press BUTTON to restart...
ただし現状、上記調査・対応のために、FIDO機能、管理機能などの業務処理を停止させています。 明日以降の作業で、少しずつ業務機能の再組込み/再稼働を進めたいと思います。
現在、本件障害調査・対応のために、以下のプラットフォーム依存コードを停止させていますが、これらをプロジェクトに再取り込みし、再稼働させます。 使用スタック量に問題がある場合は必要に応じ、専用スレッド化します。
app_flash.c
)app_rtcc.c
)app_tiny_tft.c
)app_crypto_xxxx.c
)
概要
737 の対応により、nCS v2.2.0に対応するためのコード移行を実施したnRF5340アプリケーションですが、Bluetoothペアリングが行われず、PCやスマートフォン側でタイムアウトしてしまいます。
具体的には、
app_ble_pairing.c
におけるペアリング時のコールバック関数群が呼び出されず、結果としてペアリングに必要な暗号化処理等が続行されないため、無応答状態となります。 この不具合を収束させるための対応を行いたいと思います。