문제

나는 Bluetooth Le 버그에 대한 해결 방법을 찾으려고합니다. OSX . 특히 Bluetooth Le Gatt 테이블을 읽는 데 OSX가 잘못된 위치를 알고 싶습니다. 따라서, PacketLogger에서 L2CAP 패킷을 Hardware Io에서 볼 수 있습니다. Xcode 용 도구 .

Bluetooth Explorer를 사용하여 Bluetooth LE 장치에 연결하면 그룹 유형 요청 (UUID= 0x2800«기본 서비스», StartingHandle= 0x0001, EndingHandle)에 의해 3.4.4.9 <강력한> 읽기를 볼 것으로 기대하고 있습니다.= 0xffff) 기본 서비스 (또는 유형 값 요청 (uuid= 0x2800, value : 서비스 UUID)를 검색하여 3.4.4.1 유형 요청에 의해 읽기 (uuid= 0x2803«특성»)을 찾으려면 특성을 발견하십시오. 이것은 iPhone에서 패킷을 킁킁 거리며 (CC2540 사용)

그러나 OSX에서는 연결 후 PacketLogger (및 CC2540)에서 볼 수있는 유일한 L2CAP 요청이 다음과 같습니다.

  1. 유형 요청 (attribututype= 0x2803, startyhandle= 0x001a, endinghandle= 0x001a)
  2. 유형 요청 (attributeType= 0x2802«include», statinghandle= 0x0001, endingHandle= 0x0004)
  3. 유형 요청 (attribututype= 0x2802, startyhandle= 0x0005, endinghandle= 0x0009)
  4. 유형 요청 (attribututype= 0x2802, startyhandle= 0x0010, endinghandle= 0x0019)
  5. 유형 요청 (attribututype= 0x2802, startyhandle= 0x001a, endinghandle= 0x001a)
  6. 유형 요청 (attribututype= 0x2803, startyhandle= 0x001a, endinghandle= 0x001a)
  7. 유형 요청에 의한 읽기 (attribututype= 0x2802, startyhandle= 0x0021, endinghandle= 0x0027)
  8. 유형 요청 (attribututype= 0x2802, startyhandle= 0x002b, endinghandle= 0x002e)
  9. 이들은 서비스를 발견 할 수있는 요청이 충분하지 않지만 Bluetooth Explorer는이 시점에서 모든 서비스 UUID를 나열합니다. 이는 OSX 가이 블루투스 LE 장치에 서비스가있는 위치를 이미 알고 있음을 나타냅니다. Blued 캐시 장치 서비스를 사용하고 시작시 읽을 수 있습니까? 그렇다면 캐시를 어떻게 지울 수 있습니까?

    Bluetooth를 끄고 Blued를 죽이고 OSX를 재시작하려고 시도했지만 OSX는 서비스를 재발견하지 않아도됩니다.

도움이 되었습니까?

해결책

YES, Blued Bluetooth Le Gatt 테이블을 캐시합니다.캐시가 나쁜 경우 "Blued Process가 내 CPU를 죽이고 있습니다" :

  1. 삭제 /library/preferences/com.apple.bluetooth.plist.이렇게하면 모든 본딩 된 Bluetooth 및 Bluetooth LE 장치에 대한 지식이 제거됩니다.
  2. kill / usr / sbin / blued.런치가 다시 시작됩니다.
  3. 블루투스 LE 프로그램을 다시 실행하십시오.PacketLogger는 현재 주요 서비스를 재발견하기 위해 그룹 유형 요청에 의해 읽기를 보여줍니다.
  4. 캐싱은 Bluetooth 4.0 Volume 3 Part G 섹션 2.5.2 속성 캐싱에 따라 주변 장치 (균형화되지 않은 ""결합 "과"본드 "를 확립 할 때 허용됩니다.나는 중앙이 주변 장치와 실제로 결합되었는지 확인하는 방법을 확신하지 못해, 나는 그것이 그랬다고 가정한다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top