2156784_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2156784_ja-JP

2156784_ja-JP

iMX91-FRDM BLE接続の問題

こんにちは、

私は iMX91-FRDM ボード上の BLE コネクティビティに取り組んでいます。BLE チップは ( IW610 ) です私の目標は、Gatt-Client を実装することです。
初期段階では特定の BLE デバイスに接続しようとしています。以下はその C コードです。

#define  OCF_LE_EXT_CREATE_CONN            0x0043
int hci_connect( uint8_t *pMacAddr )
{
    le_ext_create_conn_cp  cp;
    int                    ret;
    memset( (& cp), (0x00), sizeof(cp) );
    cp.filter_policy       = (0x00);      //// do not filter
    cp.own_addr_type       = (0x00);      //// THIS device has a Random MAC address
    cp.peer_addr_type      = (0x01);      //// peer has a Random MAC
    cp.peer_addr.b[0]      = (pMacAddr[0]);
    cp.peer_addr.b[1]      = (pMacAddr[1]);
    cp.peer_addr.b[2]      = (pMacAddr[2]);
    cp.peer_addr.b[3]      = (pMacAddr[3]);
    cp.peer_addr.b[4]      = (pMacAddr[4]);
    cp.peer_addr.b[5]      = (pMacAddr[5]);
    cp.initiating_phys     = (0x01);      //// 01-->1M PHY
    cp.scan_interval       = (0x0060);    //// time between scans (x 0.625) => 60mS
    cp.scan_window         = (0x0060);    //// scan duration      (x 0.625) => 60mS
    cp.conn_interval_min   = (0x0050);    //// connection interval MIN => 50mS
    cp.conn_interval_max   = (0x00A0);    //// connectino interval MAX => 100mS
    cp.conn_latency        = (0x0000);    //// connecion latency => 0mS
    cp.supervision_timeout = (0x03E8);    //(0x0190);    //// supervision timeout => 250mS
    cp.min_ce_length       = (0x0000);    //// 0
    cp.max_ce_length       = (0x0000);    //// 0

    ret = send_hci_command( m_hci_device, OGF_LE_CTL, OCF_LE_EXT_CREATE_CONN, (uint8_t *)(& cp), sizeof(cp) );
    if ((0x00) != ret) {
        printf("-------- !!!! hci_connect() ---- %02x-%04x  ", OGF_LE_CTL, OCF_LE_EXT_CREATE_CONN);
        printf("  ---- FAIL(0x%02x)\r\n", ret);
        return (0);
    }
    printf("@@@@@@@@ hci_connect() ---- %02x-%04x  ", OGF_LE_CTL, OCF_LE_EXT_CREATE_CONN);
    printf("  ---- OK(0x%02x)\r\n", ret);
    return (1);
}

........

    bdaddr_t bdaddr;
    uint16_t handle;

   str2ba("CC:CD:C5:BA:7B:71", &bdaddr);

   int status = hci_le_add_white_list(m_hci_device, &bdaddr, 0, 1000); // 0 = public, 1 = random

    if (status == 0x00)
      printf("Device added to white list\n");
    else
      printf("Failed, status: 0x%02x\n", status);

    scanEnabParm.enable             = (0x00);   //// enable == true
    printf("Set Scan-DISABLE Parameters.\n");

    if (! send_hci_command( m_hci_device, 0x08, 0x0042, (uint8_t *)(& scanEnabParm), sizeof(scanEnabParm)    )) {
        printf("\nSet Scan-Disable Parameters command failed.\n");
    }
    sleep(2);
    if (! hci_connect(m_con_addr)) {
        printf("*Error- hci_connect() - FAILED \n");
        return (0);
    }


ただし、接続は完全には成功していません。以下はその hcidump です。

コードを実行すると、以下の応答が返されます。

HCI送信失敗: 入出力エラー


以下のコマンドは検出されません:

HCIコマンド: 不明 (0x08|0x0043) plen 26

  0000: 00 01 01 71 7b ba c5 cd  cc 01 60 00 60 00 50 00  ...q{.....`.`.P.

  0010: a0 00 00 00 e8 03 00 00  00 00                    …………

> HCIイベント情報: コマンドステータス (0x0f) plen 4

    不明 (0x08|0x0043) ステータス 0x00 ncmd 1

< HCIコマンド: LEデバイスを承認リストに追加 (0x08|0x0011) plen 7

  0000: 00 71 7b ba c5 cd cc                              .q{....

> HCIイベント情報: コマンド完了 (0x0e) plen 4

    LE デバイスを承認リストに追加 (0x08|0x0011) ncmd 1

    ステータス 0x00

< HCIコマンド: 不明 (0x08|0x0042) plen 6

  0000: 00 01 00 00 00 00                                ……

> HCIイベント情報: コマンド完了 (0x0e) plen 4

    不明 (0x08|0x0042) ncmd 1

    0000: 00                                               

< HCIコマンド: 不明 (0x08|0x0043) plen 26

  0000: 00 01 01 71 7b ba c5 cd  cc 01 60 00 60 00 50 00  ...q{.....`.`.P.

  0010: a0 00 00 00 e8 03 00 00  00 00                    …………

> HCIイベント情報: コマンドステータス (0x0f) plen 4

    不明 (0x08|0x0043) ステータス 0x00 ncmd 1

> HCI イベント情報: LE メタ イベント情報 (0x3e) プレン 31

    接続リクエスト

    0000: 00 80 00 00 01 71 7b バ  c5 cd cc 00 00 00 00 00  .....q{.........

    0010: 00 00 00 00 00 00 00 9c  00 00 00 e8 03 01        ..............

< HCI コマンド: LE リモート使用機能の読み取り (0x08|0x0016) plen 2

  0000: 80 00                                            ..

> HCI イベント情報: LE メタ イベント情報 (0x3e) プレン 4

    コマンド完了

    0000: 80 00 01                                          ...

> HCIイベント情報: コマンドステータス (0x0f) plen 4

    LE リモート使用機能読み取り (0x08|0x0016) ステータス 0x00 ncmd 1

> ACLデータ: ハンドル128フラグ0x02 dlen 7

    ATT: MTU要求 (0x02)

      クライアント RX MTU 245

> HCI イベント情報: LE メタ イベント情報 (0x3e) プレン 11

    お問い合わせ完了

    0000: 80 00 f9 00 48 08 f9 00  48 08                    ……はぁ……はぁ。

> HCI イベント情報: LE メタ イベント情報 (0x3e) プレン 12

    LE リモート読み取り使用機能完了

      ステータス 0x00 ハンドル 128

      機能: 0x25 0x41 0x00 0x00 0x00 0x00 0x00 0x00

< ACLデータ: ハンドル128フラグ0x00 dlen 7

    ATT: MTU要求 (0x02)

      クライアント rx mtu 517

< ACLデータ: ハンドル128フラグ0x00 dlen 7

    ATT: MTU応答 (0x03)

      サーバー rx mtu 517

> HCIイベント情報: 完了したパケットの数 (0x13) plen 5

    128パケットを処理する1

> ACLデータ: ハンドル128フラグ0x02 dlen 7

    ATT: MTU応答 (0x03)

      サーバー RX MTU 245

< ACLデータ: ハンドル128 フラグ 0x00 dlen 11

    ATT: タイプによる読み取り要求 (0x08)

      開始 0x0001、終了 0xffff

      タイプUUID 0x2b3a

> HCIイベント情報: 完了したパケットの数 (0x13) plen 5

    128パケットを処理する1

> HCIイベント情報: 完了したパケットの数 (0x13) plen 5

    128パケットを処理する1

> ACLデータ: ハンドル128フラグ0x02 dlen9

    ATT: エラー (0x01)

      エラー: 属性が見つかりません (10)

      ハンドル 0x0001 のタイプ要求 (0x08) による読み取り

< ACLデータ: ハンドル128 フラグ 0x00 dlen 11

    ATT: グループによる読み取り要求 (0x10)

      開始 0x0001、終了 0xffff

      タイプUUID 0x2800

> HCIイベント情報: 完了したパケットの数 (0x13) plen 5

    128パケットを処理する1

> ACLデータ: ハンドル128フラグ0x02 dlen 24

    ATT: グループ応答による読み取り (0x11)

      属性ハンドル 0x0001、終了グループハンドル 0x0009

      値 0x00 0x18

      属性ハンドル 0x000a、終了グループハンドル 0x000d

      値 0x01 0x18

      属性ハンドル 0x000e、終了グループハンドル 0x001a

      値 0x0a 0x18

< ACLデータ: ハンドル128 フラグ 0x00 dlen 11

    ATT: グループによる読み取り要求 (0x10)

      開始 0x001b、終了 0xffff

      タイプUUID 0x2800

> HCIイベント情報: 完了したパケットの数 (0x13) plen 5

    128パケットを処理する1

> ACLデータ: ハンドル128 フラグ 0x02 dlen 86

    ATT: グループ応答による読み取り (0x11)

      属性ハンドル 0x001b、終了グループハンドル 0x002f

      値 0x66 0x9a 0x0c 0x20 0x00 0x08 0x12 0xab 0xea 0x11 0x78 0x6f 0x40 0x1b 0xc9 0xed

      属性ハンドル 0x0030、終了グループハンドル 0x003e

      値 0x66 0x9a 0x0c 0x20 0x00 0x08 0xf4 0xbd 0xe6 0x11 0x42 0x5b 0x90 0x82 0xea 0x18

      属性ハンドル 0x003f、終了グループハンドル 0x0053

      値 0x66 0x9a 0x0c 0x20 0x00 0x08 0xf4 0xbd 0xe6 0x11 0xcc 0x8b 0x50 0x10 0x58 0x4b

      属性ハンドル 0x0054、終了グループハンドル 0xffff

      値 0x9e 0xca 0xdc 0x24 0x0e 0xe5 0xa9 0xe0 0x93 0xf3 0xa3 0xb5 0x01 0x00 0x40 0x6e

< ACLデータ: ハンドル128フラグ0x00 dlen 9

    ATT: 書き込み要求 (0x12)

      0x000dの値を処理する  0x02 0x00

> HCIイベント情報: 完了したパケットの数 (0x13) plen 5

    128パケットを処理する1

> ACLデータ: ハンドル128フラグ0x02 dlen5

    ATT: 書き込み応答 (0x13)

< ACLデータ: ハンドル128フラグ0x00 dlen 7

    ATT: 読み取り要求 (0x0a)

      ハンドル 0x0003

> HCIイベント情報: 完了したパケットの数 (0x13) plen 5

    128パケットを処理する1

> HCI イベント情報: LE メタ イベント情報 (0x3e) プレン 11

    お問い合わせ完了

    0000: 80 00 f9 00 48 08 f9 00  48 08                    ……はぁ……はぁ。

> HCI イベント情報: LE メタ イベント情報 (0x3e) プレン 6

    認証完了

    0000: 00 80 00 02 02                                    .....

> ACLデータ: ハンドル128フラグ0x02 dlen16

    ATT: 読み取り応答 (0x0b)

      0000: 53 42 44 2d 44 43 20 54  4f 4f 4c                SBD-DCツール

< ACLデータ: ハンドル128フラグ0x00 dlen 7

    ATT: 読み取り要求 (0x0a)

      ハンドル 0x0005

> HCIイベント情報: 完了したパケットの数 (0x13) plen 5

    128パケットを処理する1

> ACLデータ: ハンドル128フラグ0x02 dlen 7

    ATT: 読み取り応答 (0x0b)

      0000: c0 03                                            ..

> HCIイベント情報: 切断完了 (0x05) plen 4

    ステータス 0x00 ハンドル 128 理由 0x13

    理由: リモートユーザーが接続を終了しました


Re: iMX91-FRDM BLE connection issue

こんにちは、


ご確認いただきありがとうございます。

- BluetoothCTを使用したテストのターミナル出力全体を共有してください

- btmon -w file.pcapを使用してテストした HCI ログ ファイルを共有してください。

- 接続しようとしている BT デバイスの詳細を教えてください。IW610 がセントラルとして動作していると理解しています。ペリフェラルの GATT プロファイルを共有してください。


よろしくお願いいたします。

ダニエル。

Re: iMX91-FRDM BLE connection issue

こんにちは、

私の返信は以下をご覧ください。

1.

root@imx91frdm:~# cat /etc/os-release

ID=fsl-imx-xwayland

NAME="NXP i.MX リリース ディストリビューション"

VERSION="6.6-スカースギャップ (スカースギャップ)"

バージョンID=6.6-スカースギャップ

VERSION_CODENAME="スカースギャップ"

PRETTY_NAME="NXP i.MX リリース ディストリビューション 6.6-scarthgap (scarthgap)"

CPE_NAME="cpe:/o:openembedded:fsl-imx-xwayland:6.6-scarthgap"

ルート@imx91frdm:~#    uname -a

Linux imx91frdm 6.6.36-lts-next-ge3c30730af75 #1 SMP PREEMPT 水曜日 9月  4 08:22:45 UTC 2024 aarch64 GNU/Linux

2.

root@imx91frdm:~# bluetoothctl

hci0 new_settings: 電源付きボンディング可能 le secure-conn cis-セントラル cis-ペリフェラル 

エージェント登録済み

[CHG] コントローラ B8:F4:4F:E0:53:A4 ペアリング可能: はい

[Bluetooth] # バージョン

バージョン5.72

[ブルートゥース]

3.
bluetoothctl から接続を試みましたが、正常に接続されません。ACL ログは hcidump -X で表示されます。BLE デバイスからの応答が表示されます。また、モバイル上の nRF Connect アプリを使用して BLE デバイスを正常に接続できました。

Re: iMX91-FRDM BLE connection issue

こんにちは、


以下の情報についてご協力をお願いします。


1. 使用している OS のバージョンは何ですか?

2. 使用しているワイヤレス ドライバのバージョンは何ですか?

3. 問題を再現するために、bluetoothctl などの BlueZ ツールを既に試しましたか?


よろしくお願いいたします。

ダニエル。

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 07:17 AM
Updated by: