IoT의 요(카나메)! BLE 통신을 Mac만으로 디버깅할 수 있게 되는 방법!
지난 몇 개월 동안 iOS 앱과 BLE로 통신하는 기기를 개발하고 있다 @kazuph
원래는 단순한 웹 프로그래머였습니다만, 어느새 마이크로컴퓨터의 임베디드 프로그래밍을 할 때까지 되었습니다.
서버, 앱, 마이크로 컴퓨터를 포함하여 소위 "소프트웨어"라고 부를 수있는 부분은 전부 쓰고 있습니다만, 그 근처의 습득까지의 흐름이라든지는 맛있는 블로그에 써 가고 싶습니다.
이번은 평상시 일로 BLE 개발을 하는 중에서 습득한, GATT의 내용이나 어드버타이징 패킷 내용을 Mac만으로 확인하는 방법을 쓰고 싶습니다.
해보자
아무것도 도구를 설치합니다.
사용하는 것은 다음 두 가지입니다.
LightBlue

AppStore에서 설치하십시오.
LightBlue는 iOS 앱으로도 있지만 Mac 버전도 있으므로 이번에는 이것을 사용합니다.
인스톨하고 기동하면 즉시 스캔을 개시해 주변에 있는 BLE 기기의 리스트를 내 줍니다.
이대로 클릭하면 GATT(서비스와 characteristic)를 볼 수 있습니다. 읽기, 쓰기도 무엇이든 할 수 있습니다! !

본래는 앱을 사용하지 않으면 동작시킬 수 없는 기기를 이것으로 움직여 보세요. 「에, 지금 어떻게 했어!?」라고 말하면 도야 얼굴입니다( ・`д・´)
그리고 주의점으로서 GATT를 재기록하면서 개발하고 있으면 LightBlue가 갱신되어 있지 않을 때가 있습니다. 이것은 OS 레벨에서 캐시되어 버리는 것이 원인이므로 한 번 Mac의 Bluetooth를 OFF → ON하고 LightBlue도 재부팅하십시오. 그러면 고칠 것입니다 (아마).
PacketLogger

이는 게시된 앱이 아니라 Apple의 Downloads for Apple Developers에서 다운로드해야 합니다. Dev 등록을 하고 다운로드하세요. URL은 이하.

packet으로 검색하면 나옵니다만, Hardware IO Tools for Xcode는 녀석입니다.
열면 PacketLogger가 들어있는 것을 알 수 있습니다.

시작하자! 덧붙여서 로그를 흘리려면 관리자 권한이 필요합니다.

어라, 아무것도 나오지 않아? Mac이 BLE를 스캔하지 않기 때문입니다.
스캔을 시작하는 방법은 간단합니다. LightBlue를 시작하기만 하면 됩니다! ! (그것을 위한 복선!!)
다양한 로그가 흐르기 시작하지만 가장 흥미로운 것은 파란색 로그입니다.
드디어 라고 Type2라고 쓰고 있으면 그것은 iBeacon입니다! !
이번에는 근처의 iPhone을 iBeacon으로 할 수있는 Locate Beacon이라는 앱을 사용했습니다.

그럼 실제로 Type2의 로그를 전개해 봅시다.

다음과 같은 설명이 있습니다.
LE Meta Event - LE Advertising Report - 0 - 9C:F3:87:29:D3:B5 -34 dBm - Type 2
Parameter Length: 42 (0x2A)
LE Advertising Report
Num_Reports: 0X01
Event_Type: Connectable undirected advertising (ADV_IND)
Address_Type: Public Device Address
Peer_Address: 9C:F3:87:29:D3:B5
Length_Data: 0X1E
Flags: 0x1a
Manufacturer Specific Data: --
Data: 02 01 1A 1A FF 4C 00 02 15 74 27 8B DA B6 44 45 20 8F 0C 72 0E AF 05 99 35 00 0C 00 63 C5
RSSI: -34 dBm
Data 안에 있는 바이너리가 광고 패킷입니다. 광고하는 내용을 알면 다양한 디버깅이 가능하네요!
( ・`д・´)
결론
이번에는 BLE를 디버깅하는 도구에 대해 이야기했습니다. 특히 PacketLogger를 도입한 직후는 개발이 조금 가속했습니다. 하야리 추측보다 관측이 중요하네요.
내일 담당도 저입니다.
기대하세요! !
Reference
이 문제에 관하여(IoT의 요(카나메)! BLE 통신을 Mac만으로 디버깅할 수 있게 되는 방법!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazuph/items/85ae7b350cd8a4209541텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)