8.3 KiB
NIRO Gen5W — 순정 화면을 유지하는 차량 소프트웨어 연구
기아 니로 한국형 Gen5W 헤드유닛을 분석하고, 순정 UI와 기존 차량 기능을 유지하면서 필요한 기능을 복원·연동한 개인 프로젝트입니다. 작성자는 seo입니다.
이 저장소는 실차 작업 성과와 선별한 소스를 공개하는 곳입니다. 누구나 적용할 수 있는 완성형 설치 패키지나 공식 펌웨어가 아닙니다. 제조사 펌웨어·지도·APK/ODEX 원본·실차 로그·인증정보는 제공하지 않습니다.
공개본 갱신: 2026-11-02 · 차량 상태 기준: 2026-11-01 운영 기록 · 서버 기능은 해당 시점 소스·운영 문서 기준
전체 기능·수정·연구 목록에 20개 분야·131개 세부 항목을 정리했습니다. 현재 적용 기능뿐 아니라 부분 검증·보류·원복·폐기한 작업도 포함합니다. 131개의 독립 기능이 모두 완성됐다는 뜻은 아닙니다.
어떤 일을 했나
단순히 숨겨진 메뉴를 켜는 데 그치지 않고, Android 앱·ODEX·ARM/Thumb 네이티브 코드·Binder·차량 신호·서버 응답 계약을 연결해 분석했습니다. 실제로 바뀐 부분과 확인하지 못한 부분을 구분해 기록합니다.
| 분야 | 작업 성과 | 현재 구분 |
|---|---|---|
| 온라인 날씨 | 순정 홈·상세 날씨·대기질·예보를 로컬 백엔드에 연결 | 실차 적용·갱신 확인 |
| 시동 브리핑 | 순정 날씨 TTS 경로의 대기 원인을 분석하고 실행 시간대를 확장 | 냉간 부팅 음성 출력 확인 |
| 캘린더·스포츠 | HA 일정과 외부 스포츠 데이터를 순정 요청·응답 모델로 변환 | 순정 화면 확인, 공급자별 범위 제한 |
| 실시간 주차 | 공공 주차장 정보와 확인된 가용 대수를 순정 목록·지도·상세에 연결 | 실차 확인, CarPay 결제는 별개·미제공 |
| 내 차 위치 공유 | 수신자별 독립 링크, 기존 링크 갱신, SMS 중복 방지·부분 실패 격리·개별 해지 | 혼합 수신자와 링크 해지 실차 확인 |
| 사람에게 목적지 공유 | 현재 위치와 분리한 정적 목적지 지도 링크를 문자로 전달 | 실차 발송·수신 확인, 오프라인 화면의 숨김 버튼은 미해결 |
| Send to Car | 주소 검색부터 차량의 순정 POI 저장·ACK까지 연결 | 실차 수신·재부팅 자동 복구 확인 |
| HA·MQTT | 유효한 차량 값을 변화 이벤트에 연결하고 초기값·미확인값을 분리 | 운영 중, 센서별 신뢰도 구분 |
| 마지막 확인값 | 핵심 참고값·관측 시각을 별도 보존하고 실시간 unavailable과 분리 | 단절·복구 시험, 제어·차계부 판정에는 사용 안 함 |
| 디지털 액자 | 순정 사진 공급·분할 화면·해상도·비율·재부팅 복구 연결 | 운영·실차 확인, 개인 사진은 미공개 |
| 지도 RPM·차속 | 수신된 RPM 표시, 내비 내부 차속 보정, 주·야간 가독성 보완 | 실차 적용, ECU 원시값은 변경하지 않음 |
| 지도 축척 | 5단계 자동 축척 사이에 75·150·300·600 m를 추가 | 9단계 적용, 일부 구간·표시 실차 확인 |
| 순정 메뉴 | Wi-Fi 설정·경치 좋은 길·탐색 회피 옵션을 제한된 분기에서 복원 | 적용, 세부 비교 시험 범위는 문서에 명시 |
| DMB/TPEG | 수신 경합·재연결·보존 정책을 분석하고 유효한 교통값 갱신 경계를 보정 | 운영 중, 방송 지연·미지원 도로는 해결하지 못함 |
| 후면 단속 안내 | 검증된 기준 DB와 일치하는 기존 후면 속성 보존 | 알려진 기존 카메라 대상, 신규 후면 자동 분류는 미지원 |
| 지도·엔진 호환 | 신지도와 구형 엔진 조합의 경로 계산 crash를 분석하고 대응 엔진에 기존 변경 이식 | 동일 실패 목적지 재계산 성공 |
| 읽기 진단 | 수동·자동·딜러 진단의 순정 읽기 보고와 결과 보존 | 실차 확인, 예약·원격 보고는 미구현 |
| 원격제어 | 허용 동작의 순정 실행 경로·최종 ACK를 서버 상태기계에 연결 | 대표 동작 실차 확인, 완전 전원 차단 뒤 수신은 불가 |
| 포털·모니터링 | 인증·권한 공유·차량 상태 조합·관리자 API 디버깅·실시간 화면 | 운영 확인, 개인 접속 정보·원문 로그는 미공개 |
| 자가 차계부 | 장부·가져오기·주행 판정·금융 사건 분류·주유 후보·PWA·영수증 보조 | 서버 구현·시험 기준, 실제 금융·주행 자료는 미공개 |
| 운영 기반 | 부팅 worker·SSH·Tailscale·Wi-Fi 저장·자동 연결·불필요 자산 정리 | 실차 확인, 개인 접속·배포 설정은 미공개 |
미완료도 숨기지 않습니다. Naver 경로 완전 이식과 IP 교통정보는 보류, 무선 AA/CarPlay는 이식 검토 단계입니다. ECO 주 경로·예약 진단·전 패치 자동 OTA·완전 전원 차단 뒤 wake는 미구현이며, Bluetooth 끊김은 분석했지만 수정 완료가 아닙니다. 연료 잔량 %는 신뢰할 수 있는 원천을 찾지 못해 측정값처럼 발행하지 않습니다. ECU 정비 쓰기와 실제 CarPay 결제는 제공하지 않으며 N 모드 실험은 폐기했습니다.
먼저 읽기
이번 공개본에 포함한 코드
| 위치 | 내용 | 차량 없이 시험 |
|---|---|---|
telemetry/java/ |
조각난 HSCAN 프레임을 재조립·검증하는 수신 전용 RPM decoder | 가능 |
weather/java/ |
날씨 요청 중복 병합·캐시 재사용·실패 backoff와 요청/완료 계수 | 가능 |
backend/php/ |
수신 트래픽과 독립적인 MQTT keepalive, raw Snappy literal encoder | 가능 |
navigation/archived/v038/ |
고정 입력 해시·허용 변경 창을 검사하는 과거 차속 보정 생성기 | 합성 시험 가능, 적용에는 별도 원본 필요 |
tests/, tools/ |
합성 입력 시험과 공개 파일 검사 | 가능 |
위 코드는 전체 운영 프로젝트의 일부입니다. 서버 전체, 실제 차량 접속 도구, 자동 설치·재부팅 기능은 포함하지 않았습니다. 과거 네이티브 예제를 현재 운영 엔진용 패치로 사용하면 안 됩니다.
로컬 검증
Linux 또는 WSL에서 Python 3.10+, JDK 8+, PHP 8.1+가 필요합니다. Python 외부 패키지, Android SDK, 제조사 파일, 차량 연결, API 키는 필요하지 않습니다.
python3 tools/check_publication.py
python3 tools/run_tests.py
시험은 임시 디렉터리에서 Java를 컴파일하고 PHP·Python 시험을 실행합니다. 차량·네트워크·ECU에 연결하지 않습니다. 단위시험 통과는 다른 차종·펌웨어에서의 실차 성공을 보장하지 않습니다.
개발 원칙
- 앱에 보이는 메뉴, 통신 계약, 실제 원천 데이터, 화면 결과를 따로 검증합니다.
- 미확인 초기값을 0·꺼짐·성공으로 위장하지 않습니다.
- 네이티브 변경은 정확한 입력 버전·해시와 허용 범위를 검사합니다.
- 전역 개통·모뎀 상태를 속이거나 안전·긴급 기능을 일괄 우회하지 않습니다.
- 연구 결과, 합성 시험, 실차 관측, 운영 적용을 같은 의미로 쓰지 않습니다.
관련 프로젝트와 이용 조건
hmg_nemesis, HMG-Leafia-Plus, gen5w-utils는 관련 생태계의 별도 프로젝트입니다. 이 저장소가 이들의 공식 포크나 니로 지원판이라는 뜻은 아니며, 해당 소스·배포물은 이 공개본에 복사하지 않았습니다.
직접 작성한 소스와 문서는 MIT License로 제공합니다. 저작권·이용 허락 고지를 유지하면 사용·수정·재배포·상업적 이용이 가능합니다. 제3자 권리와 적용 범위는 RIGHTS.md를 확인하세요. Hyundai·Kia·현대모비스·Apple·Google 및 데이터 제공 사업자와 무관한 개인 연구입니다.