CarPlay Bridge
Belaidis CarPlay automobilyje, kuris moka tik laidą – Raspberry Pi tarp telefono ir automobilio ekrano.
Iššūkis
Gamyklinis automobilio ekranas palaiko tik laidinį CarPlay. Kiekvieną kartą sėdus reikia susirasti laidą, jį įkišti ir palaukti – net ir dešimties minučių kelionei.
Parduodami adapteriai šią problemą sprendžia, bet yra uždaros dėžutės: nedokumentuota programinė įranga, kai kuriuose net reklama, ir jokio aiškaus atsakymo, kur keliauja telefono duomenys. Įrenginiui, kuris nuolat lieka automobilyje, to man buvo per mažai.
Sprendimas
Vietoje gatavos dėžutės – įrenginys, kurio elgesį visiškai suprantu: Raspberry Pi, kuris vienoje pusėje imituoja iPhone, o kitoje – belaidžiu ryšiu bendrauja su tikru telefonu.
USB įrenginys vietoje laido
Pi prisijungia prie ekrano per Linux branduolio USB gadget režimą ir elgiasi kaip įkištas iPhone. Kitoje pusėje jis su tikru telefonu bendrauja per Wi-Fi ir Bluetooth.
Protokolo supratimas
USB srauto įrašymas, palyginimas su atviromis realizacijomis ir programinės įrangos analizė su Ghidra, kad būtų tiksliai atkurtas ryšio užmezgimas, garso kanalai ir vaizdo srautas.
Patikimas užvedus variklį
Automatinis paleidimas per systemd, nutrūkusių ryšių stebėjimas ir pakartotinis prisijungimas be jokių veiksmų: pasukai raktelį – žemėlapis jau ekrane.
Svarbiausi faktai
laidų įlipus
ryšiai: Bluetooth ir Wi-Fi
savas, atviras kodas