NIRO Gen5W — 순정 화면을 유지하는 차량 소프트웨어 연구
기아 니로 한국형 Gen5W 헤드유닛을 분석하고, 순정 UI와 기존 차량 기능을 유지하면서 필요한 기능을 복원·연동한 개인 프로젝트입니다. 작성자는 seo입니다.
이 저장소는 실차 작업 성과와 선별한 소스를 공개하는 곳입니다. 누구나 적용할 수 있는 완성형 설치 패키지나 공식 펌웨어가 아닙니다. 제조사 펌웨어·지도·APK/ODEX 원본·실차 로그·인증정보는 제공하지 않습니다.
공개본 작성: 2026-11-02 · 기능 상태 기준: 2026-11-01의 비공개 운영 기록
어떤 일을 했나
단순히 숨겨진 메뉴를 켜는 데 그치지 않고, Android 앱·ODEX·ARM/Thumb 네이티브 코드·Binder·차량 신호·서버 응답 계약을 연결해 분석했습니다. 실제로 바뀐 부분과 확인하지 못한 부분을 구분해 기록합니다.
| 분야 | 작업 성과 | 현재 구분 |
|---|---|---|
| 온라인 날씨 | 순정 홈·상세 날씨·대기질·예보를 로컬 백엔드에 연결 | 실차 적용·갱신 확인 |
| 시동 브리핑 | 순정 날씨 TTS 경로의 대기 원인을 분석하고 실행 시간대를 확장 | 냉간 부팅 음성 출력 확인 |
| 캘린더·스포츠 | HA 일정과 외부 스포츠 데이터를 순정 요청·응답 모델로 변환 | 순정 화면 확인, 공급자별 범위 제한 |
| 내 차 위치 공유 | 수신자별 독립 링크, 기존 링크 갱신, SMS 중복 방지·부분 실패 격리·개별 해지 | 혼합 수신자와 링크 해지 실차 확인 |
| Send to Car | 주소 검색부터 차량의 순정 POI 저장·ACK까지 연결 | 실차 수신·재부팅 자동 복구 확인 |
| HA·MQTT | 유효한 차량 값을 변화 이벤트에 연결하고 초기값·미확인값을 분리 | 운영 중, 센서별 신뢰도 구분 |
| 지도 RPM·차속 | 수신된 RPM 표시, 내비 내부 차속 보정, 주·야간 가독성 보완 | 실차 적용, ECU 원시값은 변경하지 않음 |
| 지도 축척 | 5단계 자동 축척 사이에 75·150·300·600 m를 추가 | 9단계 적용, 일부 구간·표시 실차 확인 |
| 순정 메뉴 | Wi-Fi 설정·경치 좋은 길·탐색 회피 옵션을 제한된 분기에서 복원 | 적용, 세부 비교 시험 범위는 문서에 명시 |
| DMB/TPEG | 수신 경합·재연결·보존 정책을 분석하고 유효한 교통값 갱신 경계를 보정 | 운영 중, 방송 지연·미지원 도로는 해결하지 못함 |
| 후면 단속 안내 | 검증된 기준 DB와 일치하는 기존 후면 속성 보존 | 알려진 기존 카메라 대상, 신규 후면 자동 분류는 미지원 |
| 지도·엔진 호환 | 신지도와 구형 엔진 조합의 경로 계산 crash를 분석하고 대응 엔진에 기존 변경 이식 | 동일 실패 목적지 재계산 성공 |
| 읽기 진단·원격제어 | 순정 진단·제어 경로와 최종 응답을 서버 상태기계에 연결 | 확인된 기능만, 완전 전원 차단 뒤 수신은 불가 |
미완료도 숨기지 않습니다. Naver 경로를 순정 지도에 완전히 이식하는 작업과 IP 교통정보는 보류, 무선 AA/CarPlay는 이식 검토 단계입니다. 연료 잔량 %는 신뢰할 수 있는 원천을 찾지 못해 측정값처럼 발행하지 않습니다. ECU 정비 쓰기는 제공하지 않습니다.
먼저 읽기
이번 공개본에 포함한 코드
| 위치 | 내용 | 차량 없이 시험 |
|---|---|---|
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 및 데이터 제공 사업자와 무관한 개인 연구입니다.