자동차의 ECU 그리고 BMW 의 코딩

자동차에는 ECU 라는 장치가 있습니다.

ECU 는 Electric Control Unit 의 약자로 자동차의 다양한 부분들을 전자적으로 제어하는 역할을 담당합니다.

ECU 는 하나의 차량안에 여러개가 있으며 각각 담당하는 부분들이 다릅니다.

차량 제조사마다 칭하는 이름은 다르지만 BMW 의 경우 BDC(Body Domain Controller), DKMOBI4 등이 있습니다.

BDC 는 차량의 전체적인 부분에 대해 담당을 하며 도어제어, 라이트제어 등 여러가지 부분들을 담당하고, DKMOBI4 의 경우 흔히 말하는 계기판(Instrument Cluster)이며 계기판의 역할만 담당합니다.

이렇게 보면 흔히 백엔드 프로그래머들이 말하는 MSA(Micro Service Architecture) 와 유사합니다. MSA 가 생겨난 이유중 하나는 한쪽에 문제가 생겨도 다른쪽에는 문제가 생기지 않도록 한다는 점이 있는데 자동차에서 이런 구성을 도입한 이유도 동일합니다.

예를들면 BDC가 문제가 생겨도 엔진을 컨트롤하는 ECU는 분리되어 있어 주행중 시동이 꺼지는 참사는 피할수 있습니다. 주행중에 문이 열리지 않거나 라이트가 제어되지 않아도 엑셀과 브레이크 그리고 핸들만 동작하면 사고날 확률은 적을 것입니다.

이런 여러 ECU 들은 서로 통신을 하게 되는데 CAN 이라는 bus 를 통해서 통신을 하게 됩니다. CAN 은 차량에서 많이 사용되는 내부 통신 방법으로 멀티캐스트와 비슷하게 방송을 하듯이 커뮤니케이션 하게 됩니다.

다른 ECU가 듣던 말던 내가 할말을 방송한다는 뜻입니다. 그래서 CAN 버스에 연결하고 통신 내용을 감청(sniff)하게 되면 짧은 시간안에 엄청나게 많은 메세지가 오고갑니다. 특정 ECU가 다른 ECU에 요청을 할 경우 본인의 요청 메세지를 broadcast 한 뒤 상대편 ECU가 응답하는 broadcast 메세지를 골라서 수신하는 방식으로 통신합니다.

그리고 broadcasting 의 장점으로 한번 방송하면 여러 ECU에서 수신할수 있습니다. 예를들면 계기판과 HUD가 속도계산 담당 ECU에서 현재 속도값을 가져와 표시하고 싶다면 속도계산을 담당하는 ECU에서 지속적으로 broadcasting 하고 있는 현재 속도값을 읽어서 표시하기만 하면 된다는 편리함이 있습니다.

하지만 얼핏보면 되게 비효율적이고 높은 처리량이 필요할것 같아 보이지만 의외로 신뢰성이 높고 안정적으로 운용되는 통신 시스템입니다.

그리고 CAN 통신은 차량의 실질적인 제어에 대한 부분을 담당하기 때문에 CAN 통신 값을 조작하게 되면 엑셀을 밟게 한다거나 핸들을 돌린다거나 시동을 끄는 동작들이 가능합니다. 이런 기능들을 응용하면 자율주행차를 만들수 있는 기본 인터페이스를 구축할수 있겠지요. 물론 엑스박스 패드나 PS4 컨트롤러로 차량 운전하기와 같은 것도 가능하겠지만 실제로 실행하기에는 무서울듯 합니다.

 

BMW 의 경우는 이러한 차량이 통신하는 네트워크에 LAN 으로 접속할수 있는 인터페이스를 만들어 두었습니다.

기존에 차량의 고장코드나 각종 점검을 위해 사용하는 OBD 단자가 있는데 BMW 는 이 단자의 일부 pin 을 LAN 에 할당하여 LAN 으로 통신할수 있도록 구현해놓았습니다.

원래는 서비스센터나 각종 딜러사에서 전용 프로그램을 통해 차량의 상태를 쉽게 확인하고 변경할수 있도록 하기 위해서 만들어진 인터페이스지만 누군가에 의해 이러한 프로그램과 인터페이스 구조가 유출되어 현재는 많은 사람들이 사용하고 있습니다.

이러한 인터페이스를 일반 사용자들이 어디에 사용할까 하는 궁금증이 들 수 있을텐데요. 차량의 ECU에는 본인의 차량에 맞는 변수값들과 설정값들을 가지고 있습니다. 하지만 이 변수값을 수정하면 없던 기능이 생겨난다면 어떨까요?

차량 제조사가 국가와 차량마다 기능을 제한하기 위해서 이렇게 ECU 내부 변수들로 기능을 비활성화 한 채 출시하는 방법을 사용하고 있습니다. 이 방법이 실제로 부품이나 기능 데이터를 빼고 출시하는것 보다 간편하고 비용이 절약되기 때문입니다.

하지만 BMW 의 경우 자체 프로그램이 너무 잘 만들어져 있어 이를 통해 비교적 쉽게 이러한 값들을 수정하고 차량에 등록하는 과정을 진행할수 있었기 때문에 좀 더 널리 알려진 면이 있습니다.

예를들면 오토하이빔, 반자율주행과 같은 기능들이 차량 판매시에는 비활성화 되어 있지만 관련 부품은 차량에 장착되어 있다면 이러한 변수값 코딩 과정을 통해 활성화 하여 사용할수 있습니다.

 

하지만 시간이 지나서 BMW도 이것을 어떻게 막을까 고민을 하게 되면서 새로운 방지책이 추가되었습니다. 기능 추가는 코딩 과정을 통해 가능하지만 실제 활성화는 활성화 코드가 담긴 인증서와 값이 있어야만 활성화가 되도록 해놓은 것이지요. 그래서 이러한 부분이 적용된 기능들은 코딩 과정을 통해 메뉴를 활성화하여 활성화 체크를 하더라도 실제 기능은 동작하지 않습니다. 하지만 활성화 과정이 비교적 복잡하기 때문에 중요하거나 돈이 될만한 부분들(네비게이션 지도 업데이트, 없던 부품을 추가하는 부분 등)에만 적용이 되어 있습니다.

그리고 이제 시간이 더 지나면서 아예 막아버리기 위한 방지책을 준비하고 있는듯 한데 기존에는 코딩 과정에 필요한 기반 데이터들(코딩 변수 메모리 위치값, 설명 등)을 다운로드 받아 사용하게 해서 유출이 쉬웠는데, 앞으로는 온라인에 연결하여 그때 그때 일부분만 받아와서 사용하게끔 하는 방식을 준비하고 있는듯 합니다. 이렇게 할 경우 온라인 인증을 넣게 되면 일반 사용자가 사용하는것은 매우 힘들어 질 것입니다.

안타깝긴 합니다만 제조사 입장에서는 당연한 조치이지 않나 싶습니다. 사실 BMW 전용 코딩 프로그램의 경우도 원래는 인증을 받아야 사용이 가능하지만 언제나 그렇듯이 여러 사람이 모이면 인증을 우회하는 프로그램도 생기고 그러는 법이라 우회 프로그램을 통해 사용되고 있습니다.

 

하지만 여기서 흥미로운 점들은 이러한 과정들이 일반인도 쉽게 가능하게 프로그램이 잘 제작되어 있다는 점과 인터페이스나 기반구조가 잡혀 있다는 점입니다.

 

물론 사용하다가 실수할 경우엔 ECU 가 멈추게 되면서 차량 운행이 불가능해질수도 있지만 보수적이라고 생각될만한 자동차에 대해 이만한 자유도를 가지고 차량을 제어하고 수정할수 있다는 점이 흥미롭습니다.

케미컬가이 하이드로 슬릭 사용기

그동안 여러가지 왁스를 써보았었는데 그동안 써봤던 왁스들의 단점은 지속력이 떨어진다는 것이었습니다.

왁스를 바르는 작업이 보통 힘든게 아니여서 세차를 좋아하는 사람이라도 매 세차때 마다 바르기에는 무리가 있을 정도입니다.

그래서 가장 좋아하는 것이 퀵디테일러에 속하는 워터골드 CC 인데 세차 후 드라잉 하기 전에 슥슥 뿌리고 드라잉 타월로 닦아만 주면 엄청난 반짝임과 발수성을 보여준다는 장점을 가지고 있습니다.

워터골드 CC. 물금이라고도 불린다. 이시국씨 제품이라 요즘 잘 안팔린다고 한다.

워터골드만 사용하면 세차를 30분 안에도 컷 할 수 있을 정도로 매우 쉽고 빠른 작업성을 보여줍니다.

하지만 워터골드의 단점은 슬릭감(도장 표면을 만졌을때 미끌미끌 하는 느낌)이 없고 지속성이 비교적 짧다는 점입니다.

워터골드 CC 의 엄청난 발수성. 비 올 때 보면 기분이 좋다.

사실 사용하기가 쉬운 만큼 매 세차때마다 사용해주면 되긴 합니다만 다른데에서 보니 세차병자들은 더 오래가고 더 반짝이고 슬릭감이 좋은 왁스를 좋아합니다.

워터골드 다음으로 써본 왁스는 케미컬가이 블랙라이트 였습니다.

왁스 바르는게 귀찮아서 퀵디테일러는 써봤는데 본격적으로 세차의 길을 걷기 시작하면서 처음으로 추천을 받았던 왁스였습니다.

글레이즈와 실란트가 하나에 들어있다고 하는데 원래는 2개로 나눠서 따로 발라야 한다고 합니다. 1개 바르기도 힘든데 어떻게 2개를 바르지..

블랙라이트는 어두운 도장색을 가진 차량에 더 깊은 검은 빛을 맴돌게 해주는 왁스인데 처음 사용해본 후기로는 정말 좋았습니다.

바르기도 어렵지 않고 버핑도 몇번 슥슥 닦으면 깔끔해져서 기존 세차 과정에서 30분 ~ 1시간만 더 투자하면 엄청난 광을 얻을수 있었습니다.

하지만 단점이 있었는데 지속성이 완전 꽝이었습니다.

손세차 2번 정도만 하면 바로 사라지는 안타까운 지속성을 가지고 있습니다.

회사 생활의 고단함으로 인해 세차라곤 물만 뿌리거나 폼건 뿌리고 유리만 솔로 닦으며 살던 기간이 한 6달쯤 지났을 무렵 한 인터넷 커뮤니티에서 엄청난 광을 얻을수 있다는 케미컬가이 하이드로 슬릭에 대해 알게 되었습니다.

일반인도 쉽게 할 수 있는 세라믹 코팅이라고 광고하는 상품으로 해당 글쓴이의 말로는 엄청난 슬릭감과 광을 얻을수 있다고 하였습니다.

바로 아마존에 들어가서 케미컬가이 어플리케이터와 함께 구매를 했습니다.

도착한 이후에 1달정도 방치되어 있다가 오늘 발라보게 되었습니다.

첫번째 후기는 ㅈㄹ 힘들다… 였고
두번째 후기는 개쩐다 였습니다.

약간 외계인 토 혹은 게토레이 슬러시 같은 비주얼을 보여줍니다.

혹시나 맛있는 냄새가 나나 했지만 평범하게 몸에 안좋은 화학약품 냄새가 납니다.

이게 바를때는 쉬운데 버핑할때 버핑타월로 같은곳을 30번 정도 문질러야 얼룩이 없어집니다.

보닛만 작업하고 괜히 시작했다고 후회했었는데 거의 다했을때는 녹초가 되어서 말을 못할 지경이었습니다..

그래도 팔 빠지도록 열심히 버핑해서 끝내고 보니 엄청난 슬릭감과 광을 보여줍니다.

하길 잘했다는 생각이 들긴 하는데 다음번에 할 때는 전동 버핑기를 사야할것 같습니다.

지속성은 한번 써보고 다음번에 이야기를 하는걸로..