Раніше я вже писав, що дуже хотів мати робочий Audi Connect (не плутати з myAudi) в автомобілі, але тоді дізнався, що Audi ці сервіси вже не надає й купити підписку не можна, і відклав цю справу в довгу шухляду.
Я знав, що існують кастомні приватні сервери і за 100–150 доларів на рік тебе можуть до них підключити, але мені ця ідея не дуже подобалася: жодних гарантій.
Минуло два роки відтоді, як я востаннє намагався розібратися, і зараз, з активним впровадженням AI в наше життя, я вирішив спробувати ще раз і зробити власний сервер для сервісів Audi Connect.
Я вже колись спілкувався з людьми, які мали свої кастомні сервери або були до таких підключені. Звісно, власники серверів готовим рішенням не ділилися — вони на цьому заробляли або використовували суто для себе, та й, мабуть, поширювати таке і брати за це гроші може бути незаконно. Але ці люди дали невеликі підказки: що у файлі hosts можна підставити свої сервери, додати параметр no-ssl-cert-check тощо.
За допомогою Claude AI я почав досліджувати цю справу. Я підставив свій хост у hosts і додав no-ssl-cert-check, але виявилося, що на моєму MIB це не працює — мабуть, у нових прошивках це вже закрили. MIB ігнорує no-ssl-cert-check і намагається перевіряти сертифікат домену, який, звісно, не Audi.
Попросив Claude пошукати способи обійти це, і він знайшов. Виявилося, що адресу бекенду голова бере зовсім не з hosts, а з конфігу одного зі своїх службових модулів — там прописано понад двадцять профілів бекенду: бойовий Live, тестові Development_1, Development_2 тощо. І частина тестових профілів ходить звичайним HTTP, без жодного TLS. Якщо голова це допускає, то достатньо було замінити в активному профілі адресу сервера Audi на адресу мого сервера по http — і перевірка сертифіката відпала сама собою. Заразом з’ясувалося, що на голові немає навіть налаштувань DNS: без них вона взагалі не може розв’язати жодне доменне ім’я, тож їх довелося створити.
Далі Claude написав примітивний бекенд на PHP, щоб наш сервер міг відповідати й логувати запити. Ми підставили наш бекенд у голові, і вона пішла на нього: достукалася до нашого сервера й запросила авторизацію.
Раніше в мене був бекап моєї прошивки, де лежали кеші сервісів Audi Connect (ще з тих часів, коли вони працювали у США), а також я дістав подібні кеші у знайомих. У кешах були всілякі картинки сервісів, ServiceList.txt, XML- та SCXML- + HTML-відповіді серверів. Найцінніший файл — ServiceList.txt: за ним можна було простежити весь ланцюжок звернень автомобіля до сервера. Claude дуже швидко розібрався, як це працює, і одразу ж накидав увесь ланцюжок на нашому бекенді. Голова успішно достукалася й авторизувалася на нашому бекенді, а далі — справа техніки: треба було віддати якийсь сервіс. Із простих сервісів у кеші була «Погода»; Claude побіжно глянув на формат і, використавши безкоштовний API погоди, додав її до нас. Крім самої відповіді сервісу, треба ще видати ліцензію на те, що цей сервіс нам доступний, — робиться одним рядком у відповіді.
MIB успішно пішов на наш бекенд, авторизувався, отримав ліцензію і вивів на екран якусь інформацію.


Далі треба було детальніше розібрати формат відповідей, додати графіку й логіку екранів. Я наживо ніде не бачив робочий Audi Connect: у нас у країні половина автомобілів зі США, і після приїзду в Україну ці сервіси не працюють — інші частоти LTE, та й сама голова прописана на американський бекенд, який давно вимкнений. Навіть офіційно куплені в Україні авто практично не мають цих сервісів. Але як референс я взяв статтю Олексія (AlexDark) https://mqb-blog.com/ru/2019/12/29/mib2-high-pt4/ — у нього в статті було безліч фото цих сервісів, і я тепер міг хоча б побачити, як воно виглядало в оригіналі. У нього теж був Audi Connect через кастомний сервер, але, по суті, той просто проксіював запити на оригінальний Audi Connect.




Спершу я вирішив довести до ладу сервіс «Погода». Усіх іконок і підкладок у мене не було, тому я знайшов максимально схожі на оригінал векторні іконки та згенерував усілякі підкладки (растрові картинки з погодою у версіях день/ніч).
Вийшло начебто схоже на оригінал.

Далі за відпрацьованою схемою і за тим, що я знайшов у кешах, я зробив інші сервіси: новини, ціни на пальне, розклад поїздів і літаків, зарядки, паркінги. Саме меню Audi connect, до речі, теж віддається з сервера — які сервіси в ньому є і в якому порядку, вирішую я. Як провайдерів даних використав Open-Meteo, RSS-стрічки новин, власний парсер українських заправок, Укрзалізницю (розклад поїздів), AeroDataBox (рейси), OpenStreetMap (паркінги), HERE (зарядні станції, а також поїзди за кордоном). Скрізь використовуються безкоштовні тарифи, лімітів вистачає для одного автомобіля.



З цими сервісами провозився, мабуть, близько тижня. Але із сервісів мені дуже хотілося ще відображення автомобільного трафіку на штатній карті та супутниковий вигляд.
І начебто джерело даних знайти нескладно — такі дані надає HERE, але в HERE немає даних дорожнього трафіку для України: це стало недоступним із лютого 2022 року через вторгнення Росії в Україну, цей функціонал просто вимкнули.
Я довго думав, як би його реалізувати. У TomTom теж є трафік, але в їхньому готовому TPEG-фіді для автопрому України теж немає. Однак Claude сказав, що якщо автомобіль підтримує OpenLR, то трафік можна зібрати самим з інших ендпоінтів TomTom — Traffic Flow (векторні тайли) і Traffic Incidents, — а там дані для України є. Я майже одразу побіг до автомобіля, ми зробили кілька тестів із фейковими даними, і підтвердилося, що для України це працює. Далі Claude зробив енкодер, який збирає на сервері потік TPEG2 з прив’язкою ділянок доріг через OpenLR, а голова вже сама розкладає їх по своїй карті. За кордоном, де в HERE дані є, трафік береться в нього. Патчити саму голову для цього не довелося: штатний модуль трафіку бере адресу сервера з відповіді нашого ж бекенду.


Наступним на черзі був супутниковий вигляд карти. Спочатку я трохи пішов не тим слідом: у прошивці вся обв’язка навколо Google Earth, і я подумав, що треба шукати свіжу прошивку P51XX, де провайдер змінився на HERE. Насправді ж з’ясувалося, що змінився лише ендпоінт, а формат відповіді сервера залишився тим самим. Довго не міг зрозуміти, чому не виводяться тестові тайли, — виявилося, якщо не віддати у відповіді лого провайдера, MIB тайли просто ігнорує. Ще один нюанс: клієнт супутникових тайлів, на відміну від решти сервісів, ходить лише по HTTPS і перевіряє сертифікат за своїм списком кореневих центрів 2018 року, у якому Let’s Encrypt ще не було, — довелося дописати цей корінь у список на голові.

Після вдалого виведення тестових тайлів Claude перевів усе на провайдера HERE, а також додав на нашому сервері кешування тайлів, щоб не вийти за місячні ліміти HERE: одне місто важить близько 150 МБ у парі варіантів зуму.


На цьому все! Планую доробити ще пару сервісів: путівник по пам’ятках на даних Wikipedia вже зібраний, але в автомобілі поки не перевірений. Для решти в мене наразі немає прикладів відповідей, і робити їх немає з чого.
Також, передбачаючи ваші запитання: я не планую надавати доступ для інших автомобілів — ні безкоштовно, ні за гроші. Не очікуйте й того, що я десь викладу готове рішення публічно або більше подробиць про підкапотний функціонал сервера. Було витрачено багато часу, праці й токенів, і далі використання на власному автомобілі поширювати це я не планую — принаймні поки що.