PoBD_Urea앱 만들기(30) - PoBD앱에 적합한 OBD 스캐너????(1)
BT4.0 규격 일부만 이해한 상태에서 앱 만들어서 그런지,
iCar pro BT 4.0외에 극히 제한적인 블루투스 OBD 스캐너 제품만 동작했습니다.
제품 호환성 점검을 위해, 초창기 사용했던 OBD 스캐너가 6개(링크1) 이고 얼마전 추가로 구매한 2개(링크) 포함하면 8개이고
이번에 새롭게 구매한것까지(위의 사진 파란색 제품) 총9개를 가지고 있습니다.
더는 구매하지 않으려고 했는데....
NEXAS NexLink (BT 5.0)제품은 해외 사용자분이 사용하는것인데 이것 역시 동작하지 않는다고 보고 되어서 이번 기회에 집중적으로 분석해보려고 구매했습니다.
돌이켜보면, 개발하는 동안 고민이 많았었습니다.
왜 다양한 OBD 스캐너에서 동작하지 않을까?
저렴한 스캐너의 불량 사례 다수 보았기 때문에 의문점을 덮어 두었는데,
국내에서 판매되는 나니카 BT4(나니카 BT2나 BT3규격으로 FAP앱이 동작함에도 불구하고....), 인포카, 한중무역 제품이 동작하지 않는 이유가 궁금하기도 했었습니다.
정말 BT4 문제일까? 아니면 ELM327칩 불량일까?
실제 제품 구매해서 분석해 보는게 가장 좋은데 다양한 블루투스 OBD스캐너를 모두 구매할 수는 없고.....
(첫번째 시도했던 원인 분석 방법)
얼마전까지는 주로 로그분석 통해서 해결하려고 시도해봤습니다.
- iCar pro BT4 제품외에 나니카 BT4, Info Car BT4 미지원 문제 개선 (rev 0.1 )
위의 방법은 원인 분석하는데 큰 도움이 되긴했지만 개선된 앱버전을 테스트하는데는
1) 실물이 없으므로 개선여부 검증하는데 어려움이 많았고,
2) 제공받은 로그 정보가 부족하고 실시간으로 볼수 없는 허들외에
여러가지 극복할수 없는 문제가 있었습니다.
(두번째 시도했던 원인 분석 방법)
푸조 차량에서 동작하는 상용 OBD앱(블루투스 4.0 지원) 분석후 동일한 방법으로 앱 업데이트해서 NEXAS NexLink (BT 5.0)제품에 적용하는 방법 시도했습니다.
1) 푸조차량에서 Fault code 읽어 오는것이 가능한 3종 앱( iOS) BT4 연결과 ELM327 초기화 방법 확인하기
- Car Scanner (자동차 스캐너) ELM OBD2
- OBDII Ternmal
- LightBlue
2) BT4 & ELM327 초기화 방법 분석 도구들...
- PacketLogger + Mac OS 활용 (아이폰에는 프로필 & Log 설치 필수) <-- 이 두가지가 가장 탁월한 분석 도구임
-(설치방법) 아래 사진처럼 Additional Tools for Xcode 16.3(원하는 버전으로 선택) 다운로드후 PacketLogger 실행 (별도 설치는 필요없고 dmg 파일 열어서 해당 app 실행하면 됨)
(참고) https://developer.apple.com/download/all/?q=Packet%20Logger
- PacketLogger 실행 결과(아래) : BT4관련 주고 받은 모든 명령들과 내용 표시됨
한가지 허들이 있다면, 내용을 봐도 무슨 말인지 알수가 없다는 것입니다.(외계어...) 결국 내용을 이해하기 위해서는 Bluethooth 규격을 공부해야만 했습니다. 시간을 쪼개서 규격 공부하는데 또 몇일이 흘러갑니다. ㅠㅜ
(참고) 참조한 블루투스 규격관련 사이트 내용
[1]https://files.bluetooth.com/wp-content/uploads/dlm_uploads/2025/02/ATT.ICS.p14.pdf
통신 로그에서 가장 주의 깊게 봐야하는 것은 Opcode이고, 분석결과
- (Car Scanner앱이나 OBDII Ternmal앱) : "notify"로 수신하고 "write"로 ELM327칩으로 AT 명령 전송하는 방식
- (PoBD-U앱) "notify"로 수신하고 "writeWithoutResponse"로 ELM327칩으로 AT 명령 전송
즉, 초기화 명령 보내는 방식에서 차이가 있었습니다.!!!!!
write방식은 writeWithoutResponse방식보다 안정적이지만 속도가 빠르지 않다는점이 차이가 있습니다.
그밖에 문제점으로는 OBD스캐너 내부 속성 정보 읽어오면 write과 writeWithoutResponse을 제공한다고 표시되어 있으나 실제로 명령 전송해보면 notify 속성과 쌍으로 동작하지 않는 오류가 많아서 기능 확인하는 코드도 업데이트 버전에 추가해야 했습니다.
(2025.05.26) 구글 플레이 등록 완료 --> version 1.0.36
3) NEXAS NexLink BT5.0에 적용 하기
업데이트된 PoBD-U앱으로 NEXAS NexLink BT5.0 제품에 연결시도했습니다.
https://youtube.com/shorts/UEvOaw8wnRw?feature=share
저의 차량이 비요소수 차량이라 "시작"버튼 생성은 안되고 ECU와 연결되는것 까지만 검증했습니다. 한가지 아쉬운점은 NEXAS NexLink BT5.0 제품은 푸조 차량에 맞지 않습니다. 부분적으로 잘 동작하지만 간헐적으로 ELM칩 오류가 발생해서 송수신 데이터가 누락되거나 가비지 데이터가 추가됩니다. (BT4 규격 사용하는 PoBD-U와 함께 사용하시는 용도로 구매하시면 안됩니다.)
(구글 검색해보면 FAP앱이 잘 동작한다는 사례도 있습니다 : BT2 or BT3로 사용시)
ELMScan adapter Vlidator앱으로 점검해보면 아래와 같이 fake 제품으로 표시됩니다.
(강력 추천)
iCar pro BT4.0버전은 "notify"로 수신하고 "writeWithoutResponse"로 ELM327칩으로 AT 명령 전송으로 write 방식에 비해 속도가 매우 빠릅니다.