Files
niro-gen5w/README.md
T

75 lines
6.2 KiB
Markdown

# NIRO Gen5W — 순정 화면을 유지하는 차량 소프트웨어 연구
기아 니로 한국형 Gen5W 헤드유닛을 분석하고, 순정 UI와 기존 차량 기능을 유지하면서 필요한 기능을 복원·연동한 개인 프로젝트입니다. 작성자는 [seo](https://git.chaegeon.com/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 정비 쓰기는 제공하지 않습니다.
## 먼저 읽기
- [전체 기능과 검증 범위](docs/FEATURES_KO.md)
- [차량–서버–HA 구조](docs/ARCHITECTURE_KO.md)
- [어려웠던 문제와 확인된 한계](docs/RESEARCH_KO.md)
- [공개 범위·출처·검증 원칙](docs/PUBLICATION_KO.md)
- [보안·시험 주의사항](SECURITY.md)
## 이번 공개본에 포함한 코드
| 위치 | 내용 | 차량 없이 시험 |
|---|---|---|
| `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 키는 필요하지 않습니다.
```sh
python3 tools/check_publication.py
python3 tools/run_tests.py
```
시험은 임시 디렉터리에서 Java를 컴파일하고 PHP·Python 시험을 실행합니다. 차량·네트워크·ECU에 연결하지 않습니다. 단위시험 통과는 다른 차종·펌웨어에서의 실차 성공을 보장하지 않습니다.
## 개발 원칙
1. 앱에 보이는 메뉴, 통신 계약, 실제 원천 데이터, 화면 결과를 따로 검증합니다.
2. 미확인 초기값을 0·꺼짐·성공으로 위장하지 않습니다.
3. 네이티브 변경은 정확한 입력 버전·해시와 허용 범위를 검사합니다.
4. 전역 개통·모뎀 상태를 속이거나 안전·긴급 기능을 일괄 우회하지 않습니다.
5. 연구 결과, 합성 시험, 실차 관측, 운영 적용을 같은 의미로 쓰지 않습니다.
## 관련 프로젝트와 이용 조건
[hmg_nemesis](https://github.com/xwtk/hmg_nemesis), [HMG-Leafia-Plus](https://github.com/VysseCodes/HMG-Leafia-Plus), [gen5w-utils](https://github.com/Helloyunho/gen5w-utils)는 관련 생태계의 별도 프로젝트입니다. 이 저장소가 이들의 공식 포크나 니로 지원판이라는 뜻은 아니며, 해당 소스·배포물은 이 공개본에 복사하지 않았습니다.
현재 이용 조건은 [RIGHTS.md](RIGHTS.md)를 확인하세요. Hyundai·Kia·현대모비스·Apple·Google 및 데이터 제공 사업자와 무관한 개인 연구입니다.