중고 자동차 부품으로 테슬라 Model 3의 컴퓨터를 책상에서 구동해보기
테슬라의 버그 바운티 프로그램에 참여하려면 실제 하드웨어가 필요했습니다. 그래서 eBay에서 테슬라 Model 3 부품을 찾아보기 시작했는데요. 최종 목표는 테슬라 차량용 컴퓨터와 터치스크린을 책상에서 구동하고, 자동차 운영체제를 부팅하는 것이었습니다.
차량용 컴퓨터는 두 개의 부품으로 이루어져 있습니다. MCU(미디어 제어 장치)와 그 위에 얹혀있는 자율주행 컴퓨터(AP)인데요. 실제 자동차에서는 조수석 앞, 글로브박스 뒤쪽 위치에 장착되어 있습니다. 크기는 iPad 정도이고 약 500페이지 두께의 책만큼 두꺼우며, 수냉식 금속 케이싱으로 덮여있습니다.
부품 구하기
eBay에서 "Tesla Model 3 MCU"로 검색하니 $200~300 범위의 많은 상품이 나왔어요. 살펴보니 이들 판매자 대부분은 폐차 자동차를 사들여 분해한 후 부품을 개별 판매하는 회수 업체였습니다. 심지어 원래 충돌한 차량의 사진을 공개하고, 같은 차량에서 추출한 부품끼리 필터링할 수 있게 해놓은 곳도 있었어요.
차량을 구동하고 상호작용하려면 몇 가지가 더 필요했습니다.
- 12V를 공급할 수 있는 DC 전원 공급 장치
- 중고 Model 3의 터치스크린 모듈
- 이들을 연결하는 디스플레이 케이블
전원 공급 장치로는 Amazon에서 0~30V 조정 가능한 제품을 선택했습니다. 5A와 10A 모델이 있었는데, 여유를 두는 게 낫겠다고 생각해서 10A 버전을 샀거든요. 나중에 알고 보니 전체 시스템이 최대 8A까지 소비할 수 있어서 정말 잘한 선택이었습니다.
Model 3 스크린은 eBay에서 생각보다 비쌌어요. 아마 교체용으로 인기가 많아서 그런 것 같습니다. 결국 $175에 괜찮은 상품을 찾을 수 있었습니다.
마지막이자 가장 까다로웠던 부품은 MCU와 스크린을 연결하는 케이블이었습니다. 흥미롭게도 대부분의 판매자가 케이블을 커넥터에서 몇 센티미터 남기고 자르는 바람에 필요했거든요.
케이블 연결 정보 찾기
이때 테슬라가 모든 차량의 배선 "Electrical Reference"를 공개적으로 공개한다는 걸 알게 됐어요. 테슬라 서비스 웹사이트에 들어가면 특정 차량 모델을 조회하고, 디스플레이 같은 부품을 검색하면 정확히 어떻게 배선해야 하는지, 어떤 케이블과 커넥터를 사용하는지, 심지어 커넥터 내부의 각 핀이 무엇을 담당하는지까지 보여줍니다.
디스플레이는 6핀 케이블(12V와 그라운드 2개, 데이터 4개)을 사용하며 특별한 Rosenberger 99K10D-1D5A5-D 커넥터를 쓰더군요. 하지만 자동차 제조사처럼 대량 주문하는 게 아니면 이런 Rosenberger 케이블을 구할 방법이 없다는 걸 금방 알았습니다. eBay는 물론 Aliexpress에도 없고, 검색 결과가 거의 없었거든요.
좀 더 파고들다가 이 케이블이 BMW 자동차에서 비디오를 전송하는데 사용되는 "LVDS"라는 더 광범위하게 사용되는 자동차 케이블과 매우 유사하다는 걸 발견했습니다. 커넥터가 제 Rosenberger와 완벽하게 일치하는 것처럼 보여서 주문했어요.
전원 연결하고 부팅하기
컴퓨터가 먼저 도착했습니다. 전원을 켜기 위해 테슬라 회로도와 같은 책상 MCU 셋업을 해본 사람들의 사진들을 참고해서 12V와 그라운드를 어느 커넥터의 어느 핀에 연결해야 하는지 찾아봤습니다. 컴퓨터에 짧게 자른 케이블이 포함되어 있었으므로, 관련 배선을 벗겨내서 전원 공급 장치의 클립을 맞는 위치에 연결했어요.
빨간 LED가 몇 개 깜빡이더니 컴퓨터가 부팅됐습니다! 아직 스크린이 없어서 자동차와 상호작용할 방법이 많지 않았는데요. GitHub에서 @lewurm의 이전 연구를 읽어보니, 적어도 구형 소프트웨어에서는 차량 내 네트워크가 있고 일부 부품이 자체 웹서버를 가지고 있다는 걸 알 수 있었습니다.
전원 커넥터 옆의 포트에 Ethernet 케이블을 연결하고 제 노트북에도 연결했어요.
차량 내부 네트워크 접속하기
이 네트워크는 DHCP가 없어서 IP 주소를 수동으로 설정해야 했습니다. IP는 반드시 192.168.90.X/24 범위여야 하고, 다른 호스트와 충돌하지 않으려면 192.168.90.105보다 높아야 하더군요.
Reddit에서 찾은 차량의 구형 /etc/hosts 파일에서 일반적으로 특정 IP와 연결된 호스트들을 확인할 수 있었습니다.
192.168.90.100 cid ice # mcu
192.168.90.100 ic # Model X/S에만 있음 | IC = 계기판
192.168.90.102 gw # gateway
192.168.90.103 ap ape # ap = 자율주행
192.168.90.104 lb # 불명
192.168.90.105 ap-b ape-b # 역시 자율주행
192.168.90.30 tuner # 불명
192.168.90.60 modem # FTP 서버 있음
@lewurm의 블로그에 따르면 MCU인 192.168.90.100에서 SSH(포트 22)와 웹서버(포트 8080)가 열려있다고 했는데요. 최신 모델에서도 여전히 그럴까요? 예, 그렇습니다!
MCU에서 탐색할 수 있는 2개의 서비스를 발견했어요.
- "SSH allowed: vehicle parked"라고 표시하는 SSH 서버 - 당시 상황을 고려하면 참 우스꽝스럽습니다
- 이 SSH 서버는 오직 테슬라만 서명할 수 있는 특별한 SSH 키를 요구합니다