質問

Bluetooth Le Bugsの順に回避策を見つけようとしています。 OSX 。特に、Bluetooth Le Gatt Tableを読むのにOSXが間違っている場所を知りたいです。したがって、私は real="nofollow noreferrer">ハードウェアIOからのPacketLoggerのL2CAPパケットを表示しています。 Xcode

のためのツール

Bluetooth LEデバイスに接続すると、グループタイプリクエスト(UUID= 0x2800«プライマリサービス»、StartingHandle= 0x0001、EndingHandle»、StartingHandle= 0x0001、StartingHandleでBluetooth Explorerを使用することを期待しています。プライマリサービス(またはタイプ値要求(UUID= 0x2800、value:UUID)、続いて3.4.4.1 typeリクエストの読み取り: (UUID= 0x2803«特性»)特性を発見する。これは私がiPhoneからパケットを盗聴するとき(CC2540を使用して)私が見るものです。

しかしOSXでは、接続後のPacketLogger(およびCC2540)で表示される唯一のL2CAP要求は、

  1. タイプリクエスト(attributeType= 0x2803、出荷ハンドル= 0x001a、EndingHandle= 0x001a)
  2. タイプリクエスト(AttributeType= 0x2802«include»、StartingHandle= 0x0001、EndingHandle= 0x0004)
  3. タイプリクエスト(attributtetype= 0x2802、StartingHandle= 0x0005、EndingHandle= 0x0009)
  4. タイプリクエスト(attributeType= 0x2802、StartingHandle= 0x0010、EndingHandle= 0x0019)
  5. タイプリクエスト(attributeType= 0x2802、StartingHandle= 0x001a、EndingHandle= 0x001a)
  6. タイプリクエスト(attributeType= 0x2803、出荷ハンドル= 0x001a、EndingHandle= 0x001a)
  7. タイプリクエスト(AttributeType= 0x2802、StartingHandle= 0x0021、EndingHandle= 0x0027)
  8. タイプリクエスト(attributeType= 0x2802、StartingHandle= 0x002b、EndingHandle= 0x002e)
  9. これらはサービスを発見するのに十分な要求ではなく、Bluetooth Explorerはこの時点ですべてのサービスUUIDをリストします。これは、OSXがすでにサービスがこのBluetooth LEデバイス上にある場所を知っていることを示しています。 Blued Cache Device Servicesは起動時にそれらを読みますか?もしそうなら、どのように私はキャッシュをクリアすることができますか?

    ブルートゥースをオフにして、ブルートブルード、OSXの再起動を試みましたが、OSXは常にサービスを再発見しません。

役に立ちましたか?

解決

はい、Blued Bluetooth Le Gatt Tableをキャッシュします。キャッシュが悪い場合は、 "Bued Processが私のCPUを殺している"

  1. /library/preferences/com.apple.bluetooth.plistを削除します。これにより、すべてのボンドブルートゥースとBluetooth LEデバイスの知識が削除されます。
  2. kill / usr / sbin / buled。Launchdによって再起動されます。
  3. Bluetooth LEプログラムをもう一度実行します。PacketLoggerは、プライマリサービスを再検出するためのグループタイプ要求によって Readを表示します。
  4. キャッシングは、Bluetooth 4.0 Volume 3 Part Gセクション2.5.2の属性キャッシングに従って、中央(ペアとされていない)で「結合」を確立したときに許可されています。私は中央に周辺機器と絆を結んだことを確認する方法はわかりませんが、それがしたと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top