_ projekt · własna centrala telemetrii
OBD2-Central
Trzy samochody i motocykl, jedna własna centrala
komputer w aucie, lokalna kolejka, panel z przejazdami i kosztami oraz telemetria na fabrycznym ekranie MMI 3G+
Wstęp
Trzy auta,
trzy aplikacje,
jeden arkusz
Zbieranie danych o przejazdach zaczęło się od trzech osobnych aplikacji producentów i arkusza kalkulacyjnego, do którego trzeba było wszystko przepisywać ręcznie. Każde auto mówiło innym językiem: jedno jest na oleju napędowym, drugie to hybryda, trzecie jest w pełni elektryczne. Trzy aplikacje, trzy sposoby liczenia, zero wspólnego obrazu.
Powstała więc własna centrala: jedno miejsce, do którego trafia wszystko, co samochody same podają — przejazdy, zużycie, koszt kilometra i stan na bieżąco. Kod, baza, testy i dokumentacja siedzą w jednym repozytorium, bez zależności od zamkniętego oprogramowania producentów.
To projekt, w którym najciekawsze nie jest samo zbieranie liczb, tylko to, ile warstw trzeba było zbudować, żeby dane z trzech różnych aut trafiły w jedno miejsce i nie zginęły po drodze. Poniżej cała droga: od komputera pokładowego, przez własny silnik diagnostyczny i wirtualnego bliźniaka 360°, po fabryczny ekran MMI 3G+ i granice, których świadomie nie przekroczyłem.
Audi A8 (D4) Sedan
4.2 TDI V8 (CDSB Stage 1)
VIN: SEKRETSEKRETSEKRE
Toyota C-HR (X10)
2.0 Hybrid Dynamic Force
VIN: SEKRETSEKRETSEKRE
BMW i4 Gran Coupé
dwa silniki elektryczne (xDrive40)
VIN: SEKRETSEKRETSEKRE
Jak system radzi sobie z różnicami w protokołach producentów
● Toyota C-HR — dwutorowa obsługa danych
Działanie dwutorowe: w trasie dane czytane z OBD2 (obroty silnika, moc hybrydy, temperatura inwertera, przepływ MAF), a na postoju — wprost z chmury MyToyota Connected Services (DCM LTE). Dzięki temu mamy stabilny odczyt przebiegu, aktualny poziom paliwa i automatyczne wykrycie tankowania do kolejki FIFO — bez budzenia uśpionej magistrali CAN i bez rozładowywania małego akumulatora 12 V.
▲ Audi A8 — ograniczenie protokołu i ręczny przebieg
W karcie Audi A8 początkowo przebieg trzeba było podawać ręcznie. Powód: standardowy protokół SAE J1979 (Mode 01) w sterownikach grupy VAG (Bosch EDC17 silnika 4.2 TDI) nie udostępnia całkowitego przebiegu (odometer) — zwraca jedynie PID 0x31 (dystans od skasowania błędów DTC), który zeruje się po każdym resecie. Całkowity przebieg auta i głębokie parametry nadwozia siedzą w osobnych sterownikach, dostępnych przez fabryczny protokół UDS (ISO 14229). To była bezpośrednia motywacja do zbadania kabla Ross-Tech / VCDS — a później do sięgnięcia po te dane legalną, wyłącznie odczytową drogą (szczegóły w sekcji Diagnostyka).
- Skalatrzy pojazdy o trzech różnych napędach, jeden panel; setki przejazdów i miliony pojedynczych odczytów w bazie
- Zasadawyłącznie odczyt — system nigdy nie wysyła poleceń do auta; dane najpierw lądują lokalnie, dopiero potem lecą dalej
Architektura
Dwa
poziomy
Całość ma dwa poziomy. W aucie siedzi mały komputer z adapterem diagnostycznym OBD-II — złączem, do którego warsztat podłącza swój sprzęt — i przez adapter czyta to, co samochód sam podaje: obroty, temperatury, napięcia, obciążenie. Odczyty lądują najpierw w lokalnej kolejce na dysku, więc słaby zasięg w trasie niczego nie gubi: co się nie udało wysłać, poczeka i pójdzie później, bez powtórzeń i bez dziur.
Drugi poziom to centrala: osobna maszyna, połączona z domem szyfrowanym tunelem, bez wystawiania czegokolwiek do internetu. To ta sama zasada, co przy zdalnym dostępie do domu — to nikt nie puka do nas, tylko my wychodzimy na zewnątrz. Centrala trzyma bazę, liczy przejazdy i wystawia panel.
Panel pokazuje stan łańcucha jak na dłoni: czy komputer pokładowy jest online, czy adapter jest widoczny i czy sterownik auta odpowiada. Gdy któreś ogniwo zamilknie, widać dokładnie które i od jak dawna — zamiast zgadywania „chyba coś nie działa". Do tego dochodzi fabryczny ekran MMI 3G+, który jest tylko kolejnym klientem panelu — nie osobnym systemem i nie dodatkowym ekranem przyklejonym do deski.
Autonomiczny odczyt magistrali CAN, bufor SQLite WAL w aucie i centrum analityczne
- • Połączenie: USB szeregowy (/dev/ttyUSB0) z adapterem STN
- • Adapter diagnostyczny: Vgate vLinker FS (raw CAN + ISO-TP) wpięty w magistralę ISO 15765-4 CAN (11/500)
- • Cykliczny odczyt 14 parametrów PID (RPM, MAF, prędkość, coolant temp, napięcie) co niespełna sekundę
- • Kolejkowanie transakcyjne na nośniku eMMC komputera pokładowego
- • Pełna odporność na brak zasięgu w trasie — dane nie giną i nie duplikują się
- • Automatyczna wysyłka zbiorczą po nawiązaniu łączności z siecią
- • Cena hurtowa Orlen z VAT (stawki SPOT)
- • Wycena 20 porcji paliwa kolejką FIFO
- • Estymacja z przepływomierza MAF (obejście awarii pływaka w baku)
- • Odczyt błędów confirmed, pending i permanent
- • Zero modyfikacji sterownika — wyłącznie odczyt
- • Eksport metryk pojazdów do Home Assistanta
Sprzęt
Mały komputer
i adapter
Sercem układu jest Khadas VIM2 — mały komputer jednopłytkowy, który w aucie pełni rolę bezobsługowego rejestratora. Na pokładzie ma system linuksowy, port USB do adaptera diagnostycznego, wbudowaną pamięć i dyskretny pobór prądu. Zamontowany w aucie, po prostu pracuje: zbiera, zapisuje i dosyła, gdy tylko pojawi się sieć.
Do rozmowy z autem służy adapter diagnostyczny wpięty w gniazdo OBD-II. Zaczynałem od taniego klona ELM327 po Bluetooth, ale szybko pokazał swoje granice: nie nadawał surowych ramek magistrali, więc nie sięgał do modułów komfortu, a w czystym elektryku trafił na sprzętową bramkę i nie przepuścił ani jednego zapytania. Dlatego do głębokiej diagnostyki doszedł Vgate vLinker FS — otwarty adapter USB (układ STN), który mówi wprost surowym CAN-em z obsługą ISO-TP. To on odblokował cały odczyt sterowników po UDS (szczegóły w sekcji Diagnostyka).
Nowy adapter to nieduże, przewodowe pudełko między gniazdem OBD-II a portem USB komputera. W środku siedzi 32-bitowy procesor z pełnym zestawem komend STN — dlatego nasz kod rozmawia z magistralą wprost, bez pośrednictwa aplikacji producenta. Połączenie kablowe (bez Bluetooth) daje transfer do 3 MHz i bufor 8192 bajtów, czyli radzi sobie z długimi ramkami bez gubienia pakietów. Magistralę przełącza sam (HS-CAN / MS-CAN), działa w instalacji 12 V i 24 V, a po zamknięciu auta przechodzi w stan czuwania, żeby nie rozładować akumulatora — dzięki temu może zostać wpięty na stałe.
Sam adapter niczego nie wymyśla: tłumaczy zapytania na język magistrali. Cała robota odbywa się po stronie kodu, który wie, które parametry odpytywać i co z odpowiedziami zrobić.
Interfejs i wygląd
Sylwetki pojazdów
i wspólna konsola
Surowe liczby z magistrali CAN — stopnie, gramy powietrza na sekundę, wolty i kody PID — bez żadnego kontekstu wyglądają jak sucha tabela w bazie. A każde auto ma przecież swój charakter i własną bryłę. Na początku próbowałem robić osobne skórki wzorowane na systemach fabrycznych (BMW iDrive 8, Audi MMI 3G Plus, Toyota Touch 2). Szybko się okazało, że to ślepa uliczka: trzy odrębne interfejsy utrudniały porównywanie danych między autami i podwajały ilość kodu do utrzymania.
Dlatego wybrałem jeden wspólny panel: ciemny, nowoczesny OBD2-CENTRAL (dostępny przez szyfrowany tunel VPN), który jednakowo obsługuje wszystkie trzy rodzaje napędów (elektryczny, hybryda, diesel V8) bez żadnych ustępstw na czytelność.
Każde auto dostało zestaw precyzyjnych rzutów w trzech osiach ze studia Carsized: widok od przodu, profil boczny i widok od tyłu — to one nadają każdemu pojazdowi własny, rozpoznawalny charakter w panelu.
- Wspólny garażjeden pulpit przełącza między trzema autami jednym kliknięciem i od razu filtruje koszyki, historię i bieżące parametry
- Ciemna skórkaciemna paleta barw (głęboki granat #0b0f17) i czcionki monospacowe gwarantują czytelność wskaźników przy każdym świetle
Panel i analityka
Energia, fotowoltaika,
paliwo i zabezpieczenia
Konsola OBD2-CENTRAL nie ogranicza się do suchych obrotów silnika — integruje pełną analitykę kosztów eksploatacji, bilansu energetycznego i bezpieczeństwa floty:
Dla pojazdu elektrycznego (BMW i4) kluczowy jest bilans energii i fotowoltaiki. System automatycznie kategoryzuje i rozlicza sesje ładowania nocnego w taryfie Energa G12w (ze zoptymalizowanym, niskim kosztem za 100 km), sesje na szybkich stacjach publicznych DC w trasie oraz energię słoneczną z dwóch mikroinstalacji domowych: SEKRETSEKRE oraz SEKRETSEKRE. Dzięki integracji z fotowoltaiką centrala wylicza w czasie rzeczywistym narastające oszczędności z fotowoltaiki — modelując jazdę na własnym słońcu jako całkowicie bezkosztową (0.00 zł / 100 km).
W przypadku hybrydy (Toyota C-HR) centrala realizuje układ dwóch źródeł: magistrala OBD2 w trasie + chmura producenta na postoju połączoną z księgą 20 koszyków paliwa FIFO. W trasie Khadas czyta bieżące dane z magistrali CAN (praca silnika spalinowego i motoru elektrycznego), a na postoju pobiera dane z chmury MyToyota (aktualny przebieg oraz poziom paliwa w litrach). Każde tankowanie wyceniane jest metodą FIFO według giełdowych stawek hurtowych PKN Orlen SPOT — dzięki temu można na bieżąco zestawiać koszt historyczny baku z jego aktualną ceną odtworzenia na rynku.
Uzupełnieniem pulpitu jest moduł lokalizacji i zabezpieczeń. Mapa na ciemnym podkładzie pokazuje bieżące położenie, a kafelki telemetryczne monitorują ciśnienie w 4 kołach TPMS (2.4 / 2.3 bar), odliczanie do inspekcji serwisowej CBS (2000 km lub 28 dni) oraz status ryglowania zamków i domknięcia szyb.
Osobny kafel dostało zawieszenie pneumatyczne Audi A8. Wysokości kół nie są wystawione jako gotowe pole — trzeba było porównać snapshoty w trybach Comfort, Auto i Dynamic oraz po podniesieniu auta. Dziś panel pokazuje cztery kanały wysokości, aktualny tryb i stan układu; brakuje już tylko kalibracji milimetrów względem realnego prześwitu. To nadal wyłącznie odczyt — bez kalibracji i bez zapisu do sterownika.
Mapa i lokalizacja są zasilane tam, gdzie auto podaje pozycję z chmury albo z fabrycznego modułu. W Audi A8 GPS jest osobnym, ciekawszym wątkiem — i to nie tam, gdzie podpowiada numer adresu. Szczegóły w sekcji GPS i nawigacja.
Diagnostyka
Kabel, którego
nie złamałem —
i ten, który kupiłem
Standardowy odczyt OBD-II daje garść podstawowych parametrów. W Audi A8 D4 (silnik 4.2 TDI V8) napotkaliśmy jednak twarde ograniczenie: brak całkowitego przebiegu w standardowym protokole OBD-II. Tani adapter zwraca jedynie parametr PID 0x31 (dystans od skasowania błędów), który po każdym resecie wraca do zera. Prawdziwy przebieg i głębokie parametry osprzętu siedzą w osobnych sterownikach, a droga do nich prowadzi przez fabryczny protokół UDS (ISO 14229). To była bezpośrednia motywacja całej tej historii.
Pierwsza myśl była naturalna: sięgnąć po profesjonalny kabel
warsztatowy Ross-Tech HEX-USB. Szybko okazało się jednak, że to nie
pasywny przewód, lecz samodzielny mikrokomputer z procesorem, który rozmawia
z aplikacją zastrzeżonym protokołem ramkowym (marker 0x53 host
→ kabel, 0x4D kabel → host) i wymianą kryptograficznego
kryptograficznej wymiany klucza (0x0b → 0x09). Bez licencji
kabel pracuje w trybie awaryjnym (ograniczonym), w którym przepuszcza wyłącznie
starszą linię K-Line — a cała komunikacja Audi A8 D4 idzie magistralą CAN.
Kabel widział więc jedynie echo własnych bajtów na martwej linii K. Dalsze
próby oznaczałyby łamanie zabezpieczeń dongla, co od razu uznałem za ślepą
uliczkę: ciekawość inżynierska nie może przekraczać granic prawa i etyki.
Zamiast łamać cudzy kabel, kupiłem własny — otwarty. Wybór padł na Vgate vLinker FS (układ STN, USB): tani adapter diagnostyczny, który nie jest przywiązany do żadnej aplikacji producenta i mówi wprost surowym CAN-em z obsługą ISO-TP. Dzięki temu rozmawia z nim nasz własny kod, a nie zamknięta aplikacja. (Prostszą, „gołą” alternatywą jest CANable/gs_usb za kilkadziesiąt złotych — opcja na przyszłość.)
Ta jedna zmiana odblokowała wszystko naraz. Po pierwsze prędkość: wcześniej program czekał na pełny limit czasu przy każdej krótkiej odpowiedzi, więc pętla dziesięciu parametrów trwała kilkanaście sekund. Po przepisaniu odbioru na USB czas pętli spadł do ułamka sekundy (ok. 17× szybciej), a opóźnienie telemetrii na żywo — do ok. 0,2 s. Po drugie dostęp: w jednym przebiegu, w trybie wyłącznie odczytu, odpowiedziało 29 sterowników — od silnika i skrzyni, przez zawieszenie pneumatyczne i kamerę, po oświetlenie, komfort i zegary.
Po drodze trzeba było ustalić, jak auta tej grupy adresują się na magistrali (adres odpowiedzi to adres zapytania plus stała wartość w danym zakresie), a potem napisać parser, który składa wieloramkowe odpowiedzi. Standardowe skanery ucinają kody błędów VAG do dwóch pierwszych bajtów — nasz czyta pełną, 24-bitową liczbę producenta. Doszła też sonda po rozszerzone rekordy usterek (moment, przebieg i warunki w chwili wystąpienia) oraz odczyt z zegarów całkowitego przebiegu, którego nie ma w standardowym OBD-II.
Dopełnieniem jest parser raportów z pełnego skanu, które kabel generuje we własnym oprogramowaniu (kodowanie Windows-1250): wyciąga z nich
przebieg, mapę kilkudziesięciu sterowników i zamrożone ramki z datą
i stanem licznika w chwili wystąpienia usterki. Tak rozpoznaliśmy m.in.
przerwę w lewym zaworze poduszki silnika N144 (kod 0x00150E)
i błąd czujnika poziomu paliwa, który tłumaczył opadającą wskazówkę
w kokpicie.
Najciekawszym rozdziałem było zawieszenie pneumatyczne. Wysokości kół nie są wystawione jako gotowe pola — trzeba je było znaleźć doświadczalnie: zrobić zrzut wszystkich odczytywanych danych w jednym trybie, potem w drugim, i porównać różnice. Tak udało się zlokalizować blok odpowiadający za poziom nadwozia i indeks trybu (komfort / auto / dynamiczny). To nadal tylko odczyt — kalibracji i kasowania błędów świadomie nie ruszamy.
Osobny wątek to moduł multimediów i fabryczne menu inżynierskie. Ustaliliśmy, jak je włączyć (odwracalnie, z karty pamięci), ale do funkcji chronionych potrzeba logowania kluczem, którego nie da się policzyć bez tablic producenta — więc go nie zgadywaliśmy. Zamiast tego zostaje materiał z instalacji diagnostycznej: tysiące definicji pomiarowych z nazwami i przelicznikami tych surowych liczb. Kierunek na przyszłość.
Z tego samego śledztwa wyszła lekcja o numerach adresów.
W MMI 3G+ nawigacja jest w module 5F (J794), a nie pod
legendarnym adresem 37 — ten należy do starszej generacji MMI 2G/RNS-E.
Kiedy nasz skaner zapytał 37, odpowiedział… moduł fotela z numerem
4H0 907 182 D. Auto-scan rozstrzygnął sprawę: 5F z bazą map,
8A z fotelem. W diagnostyce trzeba sprawdzać tożsamość modułu, nie tylko
numer adresu. Więcej w sekcji GPS i nawigacja.
- Efektwłasny silnik diagnostyczny z auto-skanem i odczytem kodów błędów, a przy okazji pełne zrozumienie, gdzie przebiega granica między badaniem a łamaniem zabezpieczeń
- Sprzęttani, otwarty adapter USB (Vgate vLinker FS, układ STN) zamiast zamkniętego dongla — to nasz kod rozmawia z magistralą; alternatywa „bez pośredników” to CANable/gs_usb
- Skala (październik 2026)odczyt ok. 17× szybszy (opóźnienie telemetrii na żywo ~0,2 s), 47 pozycji w pełnym auto-scanie i 29 modułów rozpoznanych po UDS w trybie odczytu, pełne 24-bitowe kody usterek i rozszerzone rekordy zdarzeń, wykryty blok poziomów zawieszenia pneumatycznego — wszystko bez ani jednego zapisu do sterowników
- Zabezpieczeniadiagnostyka wyłącznie w trybie odczytu (bez kasowania i kodowania), żadnych artefaktów licencyjnych w repozytorium, a do zaawansowanych modułów — tylko legalna droga przez własny adapter magistrali
Wizualizacja
Wirtualny
bliźniak 360°
Liczby z magistrali są dokładne, ale trudno je sobie wyobrazić. Dlatego panel dostał wirtualnego bliźniaka: trójwymiarowy model auta obracany w 360°, na którym widać na żywo to, co dzieje się z pojazdem — otwarte drzwi, podniesioną maskę, klapę bagażnika, oświetlenie, wycieraczki i ciśnienie kół. Zamiast szukać wartości w tabeli, patrzy się na samochód.
Bliźniak Audi A8 (D4) to 50 fotorealistycznych klatek obracanych wokół osi, w barwie czarnej ze srebrnymi lusterkami i felgami. Silnik efektów dogrywa do tego ruch: felgi kręcą się z prędkością zależną od aktualnej szybkości, pod autem pojawiają się linie prędkości, wiązka reflektorów Matrix LED pada na jezdnię, a z tyłu zapala się poświata świateł stopu. Wszystko zasilane danymi z magistrali — model nie jest animacją „na oko”.
Pod rzutnią 3D siedzi Centrum Telemetrii Nadwozia w stylu nowoczesnego kokpitu: kafelki grupują stan nadwozia i zamków, oświetlenie, wycieraczki i szyby oraz koła. Dane pochodzą wprost ze sterowników nadwozia, czytanych po UDS — z tego samego legalnego, wyłącznie odczytowego kanału, o którym mowa w sekcji Diagnostyka.
Ten sam mechanizm obsługuje motocykl: model Honda CBR650R obraca się w 360° (36 klatek, dwa warianty kolorystyczne), a suwakiem albo autoodtwarzaniem można obejrzeć go z każdej strony. To pokazuje, że silnik wizualizacji jest uniwersalny — obsłuży dowolny pojazd, dla którego da się przygotować zestaw klatek.
Żeby to wszystko nie „zamulało”, trzeba było przyspieszyć sam odczyt. Wąskim gardłem okazał się sposób odbierania krótkich odpowiedzi z adaptera: program czekał na pełny limit czasu przy każdym kilkunastobajtowym pakiecie. Po zmianie na odczyt tego, co faktycznie przyszło, pętla dziesięciu parametrów skróciła się z kilkunastu sekund do ułamka sekundy, a opóźnienie telemetrii na żywo spadło do ok. 0,2 s — dość, by ruch na modelu nadążał za rzeczywistością.
- Efektmodel pojazdu pokazuje stan auta na żywo: drzwi, światła, wycieraczki i koła zamiast tabeli liczb
- Wydajnośćodczyt przyspieszony 17×, opóźnienie telemetrii na żywo ok. 0,2 s
- Zasadawizualizacja wyłącznie z odczytu, bez wysyłania poleceń do pojazdu
Fabryczny ekran
Telemetria
na MMI 3G+
Zamiast dokładać kolejny ekran do deski, można wykorzystać ten, który już tam jest. Audi A8 D4 ma MMI 3G+ z ekranem 800×480 i własną przeglądarką. Fabryczna usługa Audi Connect, przez którą MMI pobierała pogodę i inne treści, jest od lat martwa — serwery Audi zostały wyłączone. To otwiera miejsce, w które można podstawić własny adres: kafelek „pogoda” zamiast chmury Audi otwiera naszą stronę — dziś panel Yanosika, docelowo pełną telemetrię.
Docelowy szablon jest celowo lekki: czysty HTML5, CSS i ES5, bez frameworków i bez nowoczesnego JavaScriptu, który na QNX-owej przeglądarce MMI tylko by się dławił. W pełnej wersji — tej na renderze — na ekranie miałyby się zmieścić doładowanie, moc i moment, temperatury oleju, płynu, spalin i skrzyni, wysokość czterech kół zawieszenia pneumatycznego, stan DPF, ciśnienie szyny i napięcie. Sterowanie ma obsługiwać fabryczna gałka.
Droga wdrożenia jest dwutorowa: albo przekierowanie w DNS/proxy (bez ruszania plików MMI), albo wpis adresu w bazie MMI. Do odblokowania ukrytych funkcji służy Zielone Menu (GEM) — aktywowane odwracalnie kartą SD lub VCDS. Jest też własny ekran startowy. Nic z tego nie wymaga flashowania firmware ani zapisu do sterowników; to zmiany konfiguracyjne, które można cofnąć.
Status jest prostszy niż render: na MMI działa już pierwsza,
lekka strona — telemetria.wimexsc.pl/mmi pokazuje
limit prędkości i aktualną prędkość z Yanosika (alerty są w walidacji),
a wersja bez JavaScriptu /mmi/basic działa nawet w starej
przeglądarce. Pełny PIT-WALL telemetrii pozostaje w planach:
najpierw MMI musi nauczyć się czytać pozycję i dane auta, a nie tylko je
wyświetlać. Ograniczenia są znane — stara przeglądarka, brak TLS, mało
pamięci i wolny procesor. Dlatego MMI ma być tylko lekkim klientem:
dane liczy centrala, a ekran je wyświetla.
Adres jest celowo HTTP, nie HTTPS: przeglądarka MMI
zna tylko starsze TLS, a Cloudflare wymaga nowszego; http://
zwraca 200 bez przekierowania. Publiczny proxy nie wystawia współrzędnych
auta — strona dostaje tylko wiek pozycji i flagę stale.
- Dziś na żywo
/mmii/mmi/basic— limit i prędkość Yanosika (alerty w walidacji); pełny PIT-WALL telemetrii nadal w planach - Docelowy ekranfabryczne 800×480 MMI 3G+, bez dodatkowego monitora i bez tabletu na desce
- InterfejsHTML5/CSS/ES5, gałka MMI, zero frameworków — pod QNX i procesor Renesas SH4
- WdrożenieGEM, własny splash i przekierowanie martwej usługi Audi Connect; odwracalne, bez flashowania firmware
- ZasadaMMI tylko wyświetla; dane i logika zostają w centrali, a sterowniki auta są nadal tylko czytane
GPS i nawigacja
Nie tam, gdzie
podpowiada numer
Fabryczny GPS w Audi A8 D4 siedzi w module 5F (J794) — tym samym, który obsługuje MMI i nawigację. Antena jest w płetwie dachowej, a odbiornik (u-blox Antaris4) wewnątrz jednostki. Pozycja nie jest jednak wystawiona jako prosty identyfikator do odczytu przez złącze OBD, tak jak większość parametrów silnika. Trzeba było zejść głębiej: do wewnętrznego DSI/NDR (magistrala MMI), gdzie publikowane są szerokość, długość, wysokość, prędkość i kurs.
Po drodze był piękny ślepy zaułek. Starsze MMI 2G i RNS-E miały
nawigację pod adresem 37 — i stamtąd wzięło się
przekonanie, że „GPS jest w 37”. W MMI 3G+ nawigacja jest już w 5F,
a pod 37 nasz skaner dostał odpowiedź… modułu fotela. Auto-scan
rozstrzygnął: 5F z bazą map, 8A z fotelem o numerze
4H0 907 182 D. Numer adresu bywa reliktem; liczy się
tożsamość modułu.
Co wiemy: VCDS i fabryczny GEM widzą fix — ekran GEM → Nav → GPS → Coordinates pokazuje np. 53°01′45″N, 18°39′22″E i wysokość ~52 m (stopnie, minuty, sekundy). Pozycja żyje w wewnętrznym DSI/NDR MMI, a nie w zwykłym UDS. Skan 5F (1661 DID), modułów 37, 19 i 17 oraz nasłuch CAN na złączu OBD nie dały ani jednej szerokości/długości. To definitywnie zamyka drogę przez OBD.
Próba mostu DSI→shell przez per3-reader (class 48 i 51)
nie wyszła: bundle nie wystartował, a odczyt zwracał brak danych.
Po eksperymencie przywróciliśmy fabryczny stan MMI (oryginalny
DSITracer.jar), bez trwałych zmian. Zostaje NDR/DSI,
zdalny shell przez drugą kartę WLAN/GSM (żeby zajrzeć w J9/OSGi) oraz
uczciwy fallback: telefon /gps i mały USB GPS. Żadnego
zgadywania kluczy i żadnego zapisu do sterowników.
- Moduł5F J794 — MMI 3G+, nawigacja, baza map i odbiornik GPS w jednej jednostce
- Źródłowewnętrzny DSI/NDR
AllGps; GEM pokazuje stopnie/minute/sekundy, OBD nie wystawia szerokości/długości - 37relikt MMI 2G/RNS-E; w tym aucie odpowiada za niego moduł fotela 8A, nie nawigacja
- Statusper3-reader nie wystartował; NDR/zdalny shell w toku, fallback telefon/USB GPS
Laboratorium
Nawigacja
jako czujnik
Mostek Yanosik → MMI działa w warstwie danych:
w kontenerze Android (Redroid 13) na Proxmoxie (CT320) chodzi Yanosik
26.9.0, dostaje pozycję z naszej telemetrii, a mostek czyta z jego
ekranu limit prędkości i prędkość auta. Na MMI otwiera
się lekka strona /mmi (albo /mmi/basic bez JS).
Publiczny proxy nie wystawia współrzędnych auta; strona dostaje tylko
wiek pozycji i flagę stale.
Test na DK91 (21.10.2026, 294 próbki) potwierdził kanał danych i OCR limitu 50 km/h. Detekcji fotoradaru nie potwierdził: mostek zapisał alert, ale na zrzutach w tym czasie była Biedronka (sklep/POI), a nie ikona aparatu. To był fałszywy pozytyw; po teście mostek dostał szablon ignorujący ten znacznik. Prawdziwy fotoradar to aparat w żółtym kole — i taki test jest jeszcze przed nami. Wniosek: sam kształt ikony to za mało, trzeba sprawdzić, czym zdarzenie jest naprawdę.
Dlatego nie ogłaszamy „fotoradaru za 400 m”, dopóki nie zobaczymy ikony aparatu i nie potwierdzimy jej w logu mostka. Warstwa danych (limit, prędkość, GPS, API 15–25 ms) działa; warstwa alertów jest w trakcie walidacji. Aplikacja zostaje w laboratorium; granicą są regulamin, prywatność pozycji i zasada „auto tylko do odczytu”.
Tak wygląda fotoradar w Yanosiku — aparat w żółtym kole. Biedronka na zrzucie z DK91 to sklep/POI, nie alert; mostek ją ignoruje.
- ŚrodowiskoRedroid 13 / Yanosik 26.9.0 na Proxmox CT320; mostek na „lewym” hoście
- Pomysłnawigacja jako czujnik: limit i prędkość na MMI, bez patrzenia w telefon
- Statuskanał danych/limit działa (test DK91 21.10, 294 próbki); detekcja alertów (fotoradar) niepotwierdzona — test z ikoną aparatu przed nami
- Granicaaplikacja w laboratorium, publiczny proxy bez lat/lon, auto tylko odczyt
Oś czasu
Od arkusza
do MMI
Projekt nie powstał w jednym zrywie. Szedł warstwami: od pierwszego adaptera i lokalnej kolejki, przez własny silnik diagnostyczny i wizualizację 360°, po fabryczny ekran MMI i pytania o GPS. Poniżej skrót — pełna historia jest w dzienniku działań.
- 10–20.09start: trzy auta, adapter ELM327 po Bluetooth, lokalna kolejka i pierwsza centrala na Proxmoxie
- 18.09BMW i4 dołącza przez ConnectedDrive; dane z chmury trafiają do tej samej bazy
- 15.10własny adapter STN USB, 29 modułów po UDS w trybie odczytu, pełne 24-bitowe kody i auto-scan 47 pozycji
- 17.10publiczny panel, wirtualny bliźniak 360° i czarne Audi A8; tablica i VIN zostają zamaskowane
- 19–20.10GPS z 5F/DSI, jazdy testowe, zawieszenie pneumatyczne H1–H4 i tryby Comfort/Auto/Dynamic
- 21.10auto-scan rozstrzyga: nawigacja w 5F, nie w 37; start projektu MMI Connect i laboratorium nawigacji na serwerze
- 21–23.10Yanosik → MMI: pierwsza strona
/mmi(limit i prędkość; alerty w walidacji); GPS w MMI widoczny w GEM, per3-reader zamknięty, MMI przywrócone do stanu fabrycznego - Dziśponad 450 testów jednostkowych, lint czysty, zero zapisu do sterowników — i nadal kilka otwartych pytań, które warto sprawdzić
Wnioski
Co z tego
zostaje
Ten projekt zaczął się od prostego pytania: czy da się legalnie odczytać z własnego auta to, co ono samo podaje? Po drodze okazało się, że najciekawsze nie leży w samych liczbach, tylko w ścianach, które trzeba było obejść. Tani adapter nie przechodził przez bramkę elektryka. Kabel warsztatowy był zamkniętym pudełkiem — więc zamiast go łamać, kupiłem własny, otwarty. A magistrala, na którą „trzeba było poczekać z innym sprzętem", w końcu odpowiedziała: dziś z jej danych korzysta cały panel, bez ani jednego zapisu do sterowników.
Z tych decyzji zostało coś bardzo konkretnego: jedno miejsce, w którym trzy różne samochody (i motocykl) mówią tym samym językiem, a liczby — spalanie, koszt kilometra, stan baterii — zgadzają się z rzeczywistością, bo pochodzą z realnych pomiarów, nie z aplikacji producenta. Doszedł do tego wirtualny bliźniak 360°, na którym stan auta widać na żywo, zamiast szukać go w tabeli, oraz telemetria na fabrycznym ekranie MMI 3G+. Doszedł też mostek Yanosik → MMI, który zamienia nawigację w czujnik limitów i prędkości (detekcja alertów jest w walidacji) — i pokazał, że MMI potrafi być ekranem, nawet jeśli wydobycie z niego GPS wciąż jest otwarte. Wszystko działa na sprzęcie za kilka stów, własnym kodem, bez chmury po drodze.
Najnowsza lekcja jest przekorna: numer adresu nie jest prawdą objawioną. W MMI 3G+ nawigacja siedzi w 5F, a 37 to relikt starszej generacji; pod 737 odpowiedział moduł fotela. Zanim uznamy, że czegoś nie ma, trzeba prześledzić auto-scan i tożsamość modułu. I odwrotnie — zanim dołożymy kolejny ekran, warto sprawdzić, czy fabryczny ekran MMI nie da się wykorzystać.
Najważniejsze zostało jednak to samo, co na początku: granica. Ciekawość inżynierska może iść bardzo daleko, ale zatrzymuje się tam, gdzie trzeba by łamać cudze zabezpieczenia albo wysyłać do auta polecenia w trybie zapisu. Wszystko, co tu opisane, to odczyt.
Krótsza wersja tej historii jest w dzienniku działań.
- Efekttrzy auta i motocykl w jednej bazie i jednym panelu, koszt kilometra liczony wprost z danych, wirtualny bliźniak 360°, pierwsza strona na MMI 3G+ (Yanosik: limit i prędkość; alerty w walidacji) i zero zależności od zamkniętego oprogramowania producentów
- Zasadanajpierw lokalnie, potem dalej; wyłącznie odczyt; własny, otwarty sprzęt zamiast łamania cudzych zabezpieczeń
Koniec