CAN-BUS

벨로스터N(Veloster N) CAN-BUS Part .4 - CAN-BUS Logging

Mapsosa 2021. 6. 4. 18:26

이제 CAN 통신 케이블을 연결 하였고 이제 로깅만 하면 된다.

준비물은 peak can이나 candlelight 펌웨어가 로딩된 CANable, OBD2 breakout cable, candlelight 펌웨어의 경우 can-utils가 설치된 리눅스 시스템 peak can 펌웨어의 경우 윈도우 시스템이 필요하다.

 

펌웨어 로딩 방법은 안드로이드 폰에 OTG를 이용해 CANable을 연결해준 후 안드로이드 Chrome을 통하여 공식 홈페이지에 UPDATER에 들어가서 connect를 누르고 CANable 디바이스를 선택해주면 된다 주의점은 안드로이드에서만 작동한다는 것이다. 윈도우나 다른 운영체제에서는 동작을 하지 않는다. 그리고 꼭 안드로이드의 Chrome에서만 된다.

 

펌웨어 종류는 slcan 펌웨어, candlelight 펌웨어, pcan 펌웨어가 있으며 slcan 및 candlelight 펌웨어는 리눅스에서 동작하며 pcan펌웨어는 리눅스 및 윈도우즈 시스템에서 작동한다. pcan펌웨어의 경우에 윈도우즈에서 사용하기 위해서는 Peak USB 드라이버를 설치하고 PCAN-VIEW라는 프로그램을 설치하면 사용할 수 있다.

 

나는 리눅스폰인 PinePhone을 사용하므로 리눅스에서만 설명한다.

파인폰은 언젠가 쓸데 있지 않을까 해서 구매한건데 이렇게 쓰일 줄은 몰랐다.

근데 이제서야 알게된건데 노트북보다 차에서 보고 캔통신을 로깅하거나 분석할때 편한 것 같다 왜냐하면 폰 거치대에 그대로 꽂을 수 있으니까...

 

먼저 Linux system에서

sudo modprobe can
sudo modprobe can_dev
sudo modprobe gs_usb

를 입력하여

can 모듈을 로딩해준다

그리고 canable을 폰에 OTG로 연결하고

ip link set can0 up type can bitrate 500000

를 입력한다.

그러면 ip -a 에 can0 인터페이스가 올라온다

 

그상태에서 cansniffer를 이용하면 캔통신의 변화된 값을 컬러로 표시해준다.

명령어는

cansniffer -c can0

이다

 

그리고

candump can0

을 입력하면

can통신의 모든 값을 파일로 저장해준다.

 

http://blog.naver.com/PostView.nhn?blogId=grandtourer&logNo=221253224285&categoryNo=0&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView 

 

CAN 리버스 엔지니어링

1. 사전정보 이 글은 다음에 대한 지식이 있는 분을 대상으로 합니다. - 기초적인 EDPS 지식 : 16진수,...

blog.naver.com

이 블로그의 방법을 이용하여 cansniffing을 해본다

ACC ON 상태에서 cansniffer -c can0 을 입력하게 되면 처음에는 많은 값들이 나오지만 나중에 변하지 않는 값은 소거되고 변하는 값만 나오게 된다.

이상태에서 브레이크와 엑셀페달 클러치 혹은 사이드브레이크 작동을 볼 수 있다.

자신의 폰이 노트라면 해당값이 나왔을 때 사진을 찍거나 해서 메모를 하는게 좋다 너무 값이 많기 때문에 다 기억하기 힘들다

CAN통신은 최대길이 8바이트다

그러니까 11 22 33 44 55 66 77 88 이런식으로 16진수 2개가 1바이트고 그게 8개가 있다 근데 보니까 4바이트 짜리도 있고 5바이트짜리도 있고 자기마음대로다.

 

candump를 이용해서

candump can0을 입력하고 엑셀을 밟고 candump를 종료하고 하는 방식으로도 로깅이 가능하다

나는 후자가 더 좋더라

cansniffer에서는 잘 안나오는 경우가 있다.

정차한 상태에서 변화하는 값을 다 찾은거 같으면 이제 사람이 없고 차가 안다니는 공터를 찾아야한다.

거기서 엔진을 켜고 차를 움직이면서 CAN값을 찾아야한다.

움직이는 상태에서는 cansniffer로 값을 찾기가 어렵다. 그러므로 candump를 이용하고 부가적으로 cansniffer를 사용해서 해당 can ID에 대한 값만 봐야한다.

 

반응형