LibreHU Donate (Liberapay)Faire un don (Liberapay) Discord

DocumentationDocumentation

Everything to install, set up and use LibreHU on a Jancar / Autochips AC8257 (UJC201) head unit. For protocols, APIs and building from source, see the developer reference.Tout pour installer, régler et utiliser LibreHU sur un autoradio Jancar / Autochips AC8257 (UJC201). Pour les protocoles, les API et la compilation, voir la référence développeurs.

Before you startAvant de commencer

InstallationInstallation

EditionsÉditions

The launcher, FM, Dialer, Widgets and BtnRemap exist in three builds, one per branch. Pick one edition for all of them:Le launcher, FM, Dialer, Widgets et BtnRemap existent en trois builds, une par branche. Choisir une seule édition pour toutes :

EditionÉditionBranchBrancheForPour
LibreHU servicelibrehu-serviceLibreHU service replaces Jancar's ivi-services (recommended): car data, keys, audio and camera come from it.LibreHU service remplace ivi-services de Jancar (recommandé) : données de la voiture, touches, audio et caméra viennent de lui.
iviiviStock ROM with Jancar's ivi-services still running.ROM d'origine avec ivi-services de Jancar toujours actif.
GenericGénériquemainAny Android 9+ device, without head unit integration.Tout appareil Android 9 ou plus, sans intégration à l'autoradio.

LibreHU Apps

  1. Download LibreHU-OTA-main.apk, copy it to a USB stick (or download it on the unit) and open it with a file manager. Allow installs from that app when Android asks.Télécharger LibreHU-OTA-main.apk, le copier sur une clé USB (ou le télécharger sur l'autoradio) et l'ouvrir avec un gestionnaire de fichiers. Autoriser l'installation depuis cette appli quand Android le demande.
  2. Quick setup (first launch, or Settings → Quick setup): edition, root (silent installs), apps of the edition already ticked, then their installation with progress for each one. Skip closes it; everything stays editable.Configuration rapide (premier lancement, ou Réglages → Configuration rapide) : édition, root (installations silencieuses), applis de l'édition déjà cochées, puis leur installation avec l'avancement de chacune. Passer la ferme ; tout reste modifiable.
  3. Updates: LibreHU Apps checks GitHub, shows the commits of each new version and the screenshots of each app, verifies the SHA-256 and the signing key before installing. An app can be kept on a version, rolled back to an older one, or installed in /system (root).Mises à jour : LibreHU Apps interroge GitHub, montre les commits de chaque nouvelle version et les captures d'écran de chaque appli, vérifie le SHA-256 et la clé de signature avant d'installer. Une appli peut rester sur une version, revenir à une plus ancienne ou être installée dans /system (root).
  4. Offline: Settings → USB stick installs APKs (LibreHU key or the installed app's key) and images or zips whose SHA-256 matches the last list received online.Hors ligne : Réglages → Clé USB installe des APK (clé LibreHU ou celle de l'appli installée) et des images ou zips dont le SHA-256 correspond à la dernière liste reçue en ligne.
  5. Native compilation: Android 9 leaves sideloaded apps interpreted (speed-profile without a profile). LibreHU service (or the Compilation tab when the service is absent) compiles them with cmd package compile -m speed, once per version (root).Compilation native : Android 9 laisse les applis installées à la main interprétées (speed-profile sans profil). LibreHU service (ou l'onglet Compilation sans le service) les compile avec cmd package compile -m speed, une fois par version (root).

Replacing ivi-servicesRemplacer ivi-services

Jancar's com.jancar.services and LibreHU service both open the MCU serial port /dev/ttyS1; two readers steal each other's bytes, so LibreHU service refuses to start while ivi-services runs. Disable it:com.jancar.services de Jancar et LibreHU service ouvrent tous deux le port série de la MCU /dev/ttyS1 ; deux lecteurs se volent les octets, donc LibreHU service refuse de démarrer tant qu'ivi-services tourne. Le désactiver :

adb shell pm disable-user --user 0 com.jancar.services
# back to stockretour à l'origine
adb shell pm enable com.jancar.services

Jancar's own apps (settings, radio, Bluetooth, rear view…) depend on ivi-services and lose those functions; the LibreHU apps replace them. "Start despite ivi-services" forces a quick test, at the risk of serial conflicts. For the clock (SET_TIME) and a reliable start, LibreHU service can be installed as a privileged app (/system/priv-app).Les applis de Jancar (réglages, radio, Bluetooth, recul…) dépendent d'ivi-services et perdent ces fonctions ; les applis LibreHU les remplacent. « Démarrer malgré ivi-services » force un essai rapide, au risque de conflits sur le port série. Pour l'horloge (SET_TIME) et un démarrage fiable, LibreHU service peut être installé en appli privilégiée (/system/priv-app).

Without the Jancar appsSans les applis Jancar

First start of the launcherPremier démarrage du launcher

Set LibreHU Launcher as the home app. Its assistant walks through: notification access (now playing), root for every LibreHU app at once, Bluetooth, the QR code to pair the phone app, and Bluetooth pairing requests from phones.Choisir LibreHU Launcher comme écran d'accueil. Son assistant passe par : l'accès aux notifications (lecture en cours), le root pour toutes les applis LibreHU d'un coup, le Bluetooth, le QR code pour associer l'appli téléphone, et les demandes d'association Bluetooth des téléphones.

Root

Supported root managers: KernelSU Next (with the LibreHU kernel), KernelSU, Magisk, APatch, SuperSU. "Root for all LibreHU apps" asks each app in turn so every prompt arrives at once; each one only runs id as root. Grant with "remember". KernelSU grants from its manager without a popup: LibreHU rechecks a refusal after 30 s. Every LibreHU app of the head unit except MCU Toolkit also takes the old Android su of some Jancar ROMs (/system/xbin/su: su UID COMMAND, no -c, "invalid uid/gid"): its commands then run as su 0 sh -c COMMAND (LibreHU service versionCode 134, fix by Reo Au In; the other apps recognise it once with su -v, which asks for no root). With KernelSU Next, the kernel only gives su to the apps granted in its manager: the others reach the ROM's su.Gestionnaires de root pris en charge : KernelSU Next (avec le noyau LibreHU), KernelSU, Magisk, APatch, SuperSU. « Root pour toutes les applis LibreHU » interroge chaque appli à tour de rôle pour que toutes les demandes arrivent ensemble ; chacune ne lance que id en root. Accorder avec « se souvenir ». KernelSU accorde depuis son gestionnaire sans fenêtre : LibreHU revérifie un refus au bout de 30 s. Toutes les applis LibreHU de l'autoradio sauf MCU Toolkit prennent aussi le vieux su d'Android de certaines ROM Jancar (/system/xbin/su : su UID COMMANDE, sans -c, « invalid uid/gid ») : leurs commandes passent alors en su 0 sh -c COMMANDE (LibreHU service versionCode 134, correctif de Reo Au In ; les autres applis le reconnaissent une fois par su -v, qui ne demande pas le root). Avec KernelSU Next, le noyau ne donne su qu'aux applis autorisées dans son gestionnaire : les autres tombent sur le su de la ROM.

LibreHU service

The core: it replaces Jancar's ivi-services and talks to the MCU, the audio chip, the CAN box and the OBD adapter. Its settings look like Android Auto: eight sections on the left (Home, Vehicle, Audio, Bluetooth, Android Auto, Display, System, Advanced) with their pages as chips, and a search bar on top of every page (menus, groups and settings, accents ignored; a setting found is changed right in the results). Every setting is also reachable from the phone app. A brightness set by hand is kept after a restart, also with the brightness following the headlights (it becomes the day or night value). The OBD no longer takes a USB adapter another app holds (the launcher's TPMS receiver) and skips an adapter that does not answer as an ELM327.Le cœur : il remplace ivi-services de Jancar et parle à la MCU, à la puce audio, au boîtier CAN et à l'adaptateur OBD. Ses réglages ressemblent à Android Auto : huit rubriques à gauche (Accueil, Véhicule, Audio, Bluetooth, Android Auto, Écran, Système, Avancé) avec leurs pages en pastilles. Chaque réglage est aussi accessible depuis l'appli téléphone. Une barre de recherche en haut de chaque page trouve menus, groupes et réglages (sans tenir compte des accents) ; un réglage trouvé se change dans les résultats. Une luminosité réglée à la main est gardée après un redémarrage, aussi quand elle suit les feux (elle devient la valeur jour ou nuit). L'OBD ne prend plus un adaptateur USB tenu par une autre appli (le récepteur TPMS du launcher) et saute un adaptateur qui ne répond pas comme un ELM327.

Home shows the link: RUNNING, the MCU version (JCST_AC8257_8T7-…) and live traffic (ignition 00 01, version 0A, clock 09). "MCU unreachable — open /dev/ttyS1" means another program holds the port (ivi-services) or the app lacks root. Advanced → MCU picks the protocol profile (Jancar JAC_V1 built in; others importable as JSON) and restarts the link. Advanced → MCU tools: state, commands, raw frames, traffic log.L'accueil montre la liaison : RUNNING, la version de la MCU (JCST_AC8257_8T7-…) et le trafic en direct (contact 00 01, version 0A, heure 09). « MCU injoignable — open /dev/ttyS1 » veut dire qu'un autre programme tient le port (ivi-services) ou que l'appli n'a pas le root. Avancé → MCU choisit le profil de protocole (Jancar JAC_V1 intégré ; d'autres importables en JSON) et relance la liaison. Avancé → Outils MCU : état, commandes, trames brutes, journal du trafic.

Audio

Vehicle and CANVéhicule et CAN

Cars decoded with a CAN boxVoitures décodées avec un boîtier CAN

The built-in car profiles of LibreHU service, read from its latest published version (this table follows each new batch by itself). Choose your car in LibreHU service → CAN → Car: its box needs its car type. Since = first version of the service that knows the car.Les profils de voiture intégrés à LibreHU service, relus dans sa dernière version publiée (ce tableau suit seul chaque nouveau lot). Choisir sa voiture dans LibreHU service → CAN → Voiture : son boîtier a besoin de son type de voiture. Depuis = première version du service qui connaît la voiture.

467 cars (years and trims apart) of 11 makes in 4 built-in profiles, LibreHU service v156.467 voitures (années et finitions à part) de 11 marques dans 4 profils intégrés, LibreHU service v156.

MakeMarqueModelsModèlesSince (service)Depuis (service)
Hiworld LNP002 steering wheel keys and angle, ignition, lights, reverse, doors, trip computer, front panel keys, knob, climate, parking radar, side radar, tyre pressure, park assist, vehicle settingstouches et angle du volant, contact, feux, marche arrière, portes, ordinateur de bord, touches de façade, molette, climatisation, radar de recul, radar latéral, pression des pneus, aide au stationnement, réglages du véhicule
LADAPriora, Vestav147
Mercedes-BenzSmartv147
NissanMagnitev147
RenaultArkana, Captur, Captur II, Clio 3 ✓, Clio 4, Clio 5, Duster, Express, Fluence, Jogger, Kadjar, Kangoo II, Kangoo III, Kiger, Koleos, Krebbin, Kwid, Latitude, Lodgy, Logan II, Logan III, Master, Mégane, Mégane 2, Mégane 3, Mégane 4, Sandero, Sandero II, Sandero III, Scénic II, Scénic III, Scénic IV, Smart, Symbol II, Symbol III, Taliant, Talisman, Trafic II, Trafic III, Twingo II, Twingo IIIv147
Clio 3: v23Clio 3 : v23
Renault SamsungQM3, QM5, SM3, SM5, SM6, SM7, XM3v147
Hiworld HDP004 steering wheel keys and angle, ignition, lights, reverse, doors, parking radartouches et angle du volant, contact, feux, marche arrière, portes, radar de recul
Acura2016-2021v148
HondaAccord, Avancier, Breeze, City, Civic, Clarity, CR-V, Crider, Elysion, Envix, Everus, Fit, Freed, Gienia, Greiz, HR-V, Insight, Inspire, Integra, Jade, Jazz, Life, M-NV, Odyssey, Passport, Pilot, Spirior, Step WGN, UR-V, Vezel, XR-V, ZR-Vv148
Hiworld HYP001 steering wheel keys and angle, ignition, lights, reverse, doors, climate, engine speed, speed, mileage, parking radartouches et angle du volant, contact, feux, marche arrière, portes, climatisation, régime, vitesse, kilométrage, radar de recul
HyundaiAccent, Avante, Casper, Elantra, Encino, Equus, Genesis, Genesis Coupe, Genesis G80, Grandeur, GV70, H1 Starex, i30, i40, Ioniq, ix35, ix45, K9, Kona, Lafesta, Lingdong, Mistra, Niro, Porter II, Santa Fe, Sonata, Sonata 9, Staria, Tucson, Veloster, Venue, Veracruz, Xcientv148
KiaBongo III, Carens, Carnival, K5, K7, K9, KX5, KX7, Mohave, Morning, Niro, Opirus, Optima, Pride, Ray, Sedona, Seltos, Sorento, Soul, Sportage, Stonicv148
Hiworld TYP001 steering wheel keys and angle, ignition, lights, reverse, parking radartouches et angle du volant, contact, feux, marche arrière, radar de recul
LexusESv148
ToyotaAlphard, Alphard Hybrid, Avalon, C-HR, Camry, Corolla, Corolla Cross, Crown, Cruiser, Fortuner, Frontlander, Granvia, Harrier, HiAce, Highlander, Hilux, Innova, IZOA, Kluger, Land Cruiser, Levin, Noah, Prado, Previa, Prius, Proace City, RAV4, Reiz, Sequoia, Sienna, Sienta, Tacoma, Tundra, Vellfire, Veloz, Venza, Vios, Wildlander, Yaris, Yaris Crossv148

✓ tried on a car. The others are decoded as Hiworld's own app does, not tried yet: captures and feedback welcome. A Hiworld box sends the steering wheel keys only with service v144 or later (dialogue with the box). Duster, Logan, Sandero, Lodgy and Jogger are also sold as Dacia.✓ essayée sur une voiture. Les autres sont décodées comme le fait l'appli de Hiworld, pas encore essayées : captures et retours bienvenus. Un boîtier Hiworld n'envoie les touches du volant qu'avec le service v144 ou plus (dialogue avec le boîtier). Duster, Logan, Sandero, Lodgy et Jogger sont aussi vendues sous la marque Dacia.

Rear view cameraCaméra de recul

On reverse gear (MCU / GPIO 2), two modes:À la marche arrière (MCU / GPIO 2), deux modes :

com.jancar.hd2cam can be removed with LibreHU service versionCode 134 or later and root: at start-up and after a real standby, the service tells the ARM2 (the fast reverse camera that runs before Android) that Android is ready (BackCar.sendReadyToArm2()), what hd2cam did, and never while reversing. Without that handover the ARM2 keeps two layers of the hardware display mixer and every hardware-decoded video is solid green (Android Auto, video players). Without root, keep hd2cam. Report, fixes (old Android su, a Looper for BackCar) and tests by Reo Au In; details: docs/atc.md.com.jancar.hd2cam peut être retiré avec LibreHU service versionCode 134 ou plus et le root : au démarrage et après une vraie veille, le service indique à l'ARM2 (le recul rapide qui tourne avant Android) qu'Android est prêt (BackCar.sendReadyToArm2()), comme le faisait hd2cam, et jamais pendant une marche arrière. Sans cette passation, l'ARM2 garde deux couches du mélangeur d'affichage matériel et toute vidéo décodée par le matériel est verte unie (Android Auto, lecteurs vidéo). Sans root, garder hd2cam. Rapport, correctifs (vieux su d'Android, Looper pour BackCar) et essais de Reo Au In ; détail : docs/atc.md.

Video inputsEntrées vidéo

CVBS IN 1 / 2 without Jancar's AV app: the video switch of the CVBS decoder (GPIO 167 / 165) then camera 3 full screen; video only with the handbrake on; a test of the four positions tells which RCA jack is which. VIDEO OUT goes through Jancar's USB display app (MacroSilicon chip).CVBS IN 1 / 2 sans l'appli AV de Jancar : commutateur vidéo du décodeur CVBS (GPIO 167 / 165) puis caméra 3 en plein écran ; vidéo seulement frein à main serré ; un test des quatre positions dit quelle prise RCA est où. VIDEO OUT passe par l'appli d'affichage USB de Jancar (puce MacroSilicon).

OBD

Bluetooth

Replaces ivi-btservice: calls (HFP client), music (A2DP sink + AVRCP), phone book and call log (PBAP), pairing, reconnection of the last phone, ringtone. For iPhones, the CarPlay app reports name, model, iOS, battery (cycles, temperature, capacity); plugging an iPhone in can turn Bluetooth on and pair it.Remplace ivi-btservice : appels (HFP client), musique (A2DP sink + AVRCP), répertoire et journal (PBAP), appairage, reconnexion du dernier téléphone, sonnerie. Pour l'iPhone, l'appli CarPlay donne nom, modèle, iOS, batterie (cycles, température, capacité) ; brancher un iPhone peut allumer le Bluetooth et l'appairer.

Ignition and standbyContact et veille

The ignition line drops while the starter turns: LibreHU waits a delay (3 s by default, 0..10 s) before cutting screen, sound and amplifier. Then:Le + après-contact chute pendant que le démarreur tourne : LibreHU attend un délai (3 s par défaut, 0..10 s) avant de couper écran, son et ampli. Ensuite :

ModeWhat happensCe qui se passe
Screen off (default)Écran éteint (défaut)The MCU powers the SoC off by itself 15 s later; cold start at next ignition.La MCU coupe le SoC d'elle-même 15 s plus tard ; démarrage à froid au contact suivant.
StandbyVeilleMedia paused (resumed on wake), home screen, airplane mode and GPS off (root), sync, MCU standby timer F1 n (7 h to 14 days), screen off. On wake: PC_READY again, screen on, radios back, playback resumed 4 s later.Médias en pause (repris au réveil), écran d'accueil, mode avion et GPS coupés (root), sync, minuterie de veille de la MCU F1 n (7 h à 14 jours), écran éteint. Au réveil : PC_READY renvoyé, écran rallumé, radios rétablies, lecture reprise 4 s plus tard.
ShutdownExtinctionMedia paused, sync, F1 0: the MCU cuts the SoC.Médias en pause, sync, F1 0 : la MCU coupe le SoC.

Spontaneous reboot with the screen off (analysed 28/10): Android's display off while the SoC stays awake ends in a reboot by MediaTek's hang_detect about 5 min later. A standby whose SoC has not suspended 25 s after the ignition went off now shuts Android down cleanly instead (the MCU firmware, disassembled: after F1 it waits 40 s at most for the SoC to suspend, then cuts a rail of the SoC anyway; on wake up it presses the power key with a 100 ms pulse and waits 10 s for 1F 01; the engine-start delay is limited to 8 s so that F1 reaches it before its 15 s cut), and the journal says at each start how the previous boot ended.Reboot spontané écran éteint (analysé le 28/10) : l'écran d'Android éteint alors que le SoC reste réveillé finit par un reboot du hang_detect de MediaTek environ 5 min plus tard. Une veille dont le SoC ne s'est pas suspendu 25 s après la coupure du contact éteint maintenant Android proprement (firmware MCU désassemblé : après F1, il attend la mise en veille du SoC 40 s au plus puis coupe quand même un rail du SoC ; au réveil, il appuie sur la touche power par une impulsion de 100 ms et attend 1F 01 10 s ; le délai « démarrage moteur » est limité à 8 s pour que F1 arrive avant sa coupure à 15 s), et le journal dit à chaque démarrage comment la session précédente a fini.

QuickBoot stops the LibreHU apps (analysed 28/10): on this ROM every screen off is an Autochips "QuickBoot power off", and QuickBootManager force stops every app missing from /vendor/etc/qb_list.xml: LibreHU service and launcher included. Their alarms are lost and nothing answers the MCU after the wake up, so the head unit stays off. Flash the zip qb-whitelist (Zips → Tweaks → Standby) and reboot. Until then a root guard starts the service again during a standby, and the apps are started again on wake up. The suspend test with the ignition on is off: nothing can wake the SoC then. After a QuickBoot power off the Autochips framework turns down ordinary wake ups ("implicit intent to wakeup, reject!"): the service now tries the wake key, the power key, then the keypad's power key as the hardware sends it, and the journal says which one worked. SoC kept awake (journal of 29/10): Open Headunit held a 10 min wake lock taken at each start, so the SoC never suspended and the MCU cut it about 40 s after the ignition, then a cold boot. Open Headunit LibreHU now releases it at the screen off, and the standby stops any app still holding a wake lock 3 s after the screen off (written in the journal, started again on wake up).QuickBoot arrête les applis LibreHU (analysé le 28/10) : sur cette ROM chaque extinction de l'écran est un « QuickBoot power off » Autochips, et QuickBootManager arrête de force toute appli absente de /vendor/etc/qb_list.xml, service et launcher LibreHU compris. Leurs alarmes sont perdues et plus rien ne répond à la MCU au réveil : l'autoradio reste éteint. Flasher le zip qb-whitelist (Zips → Réglages → Veille) puis redémarrer. En attendant, un gardien root relance le service pendant la veille et les applis sont relancées au réveil. Le test de suspension contact mis est désactivé : rien ne peut alors réveiller le SoC. Après un QuickBoot power off, le framework Autochips refuse les réveils ordinaires (« implicit intent to wakeup, reject! ») : le service essaie maintenant la touche de réveil, la touche power, puis la touche power du clavier telle que le matériel l'envoie, et le journal dit laquelle a marché. SoC resté réveillé (journal du 29/10) : Open Headunit tenait un verrou de réveil de 10 min pris à chaque démarrage, le SoC ne se mettait jamais en veille et la MCU le coupait environ 40 s après le contact, puis démarrage à froid. Open Headunit LibreHU le relâche maintenant à l'extinction de l'écran, et la veille arrête toute appli qui tient encore un verrou 3 s après l'extinction (écrit dans le journal, relancée au réveil).

Kernel side: a real standby needs the kernel kernel-stable-4.9.337 r127 or later (LibreHU Apps → Zips → Kernel). Older kernels hung when switching the CPU cores off (fixed on 29/10), and after the first real standby (29/10, SoC suspended 53 s, woken by the MCU) the panel stayed black, the touch panel was reset five times and a USB enumeration could stay locked (fixed in r126 / r127). Still open: a USB DVD drive has to be replugged and there is no sound after waking: attach the standby journal and the kernel log.Côté noyau : une vraie veille demande le noyau kernel-stable-4.9.337 r127 ou plus récent (LibreHU Apps → Zips → Noyau). Les noyaux plus anciens bloquaient en éteignant les cœurs du CPU (corrigé le 29/10), et après la première vraie veille (29/10, SoC suspendu 53 s, réveillé par la MCU) la dalle restait noire, le tactile était réinitialisé cinq fois et une énumération USB pouvait rester verrouillée (corrigé en r126 / r127). Restent : un lecteur DVD USB est à rebrancher et le son est absent au réveil : joindre le journal de veille et le journal du noyau.

Standby journal (System → Standby): every step of each standby and wake up, timed from the ignition (the MCU cuts the SoC at t+15 s), written to the storage at each line so it survives the cut; wakelocks when the SoC does not suspend, the kernel's suspend / resume lines, and at each start the boot reason and the end of the previous kernel log (root). Export and attach it to an issue.Journal de veille (Système → Veille) : chaque étape de chaque mise en veille et de chaque réveil, minutée depuis la coupure du contact (la MCU coupe le SoC à t+15 s), écrite sur le stockage à chaque ligne pour survivre à la coupure ; wakelocks quand le SoC ne se suspend pas, lignes suspend / resume du noyau, et à chaque démarrage la raison du démarrage et la fin du journal noyau précédent (root). L'exporter et le joindre à un ticket.

Safe shutdown (mute, pause, sync, "you can turn the ignition off") and Reset SoC through the MCU (works even when Android hangs) are in System → Watchdog.Arrêt sécurisé (sourdine, pause, sync, « vous pouvez couper le contact ») et redémarrage du SoC par la MCU (marche même quand Android est bloqué) sont dans Système → Watchdog.

Sound after waking (01/11): the MCU cuts the sound processor's supply during a real standby; at the screen on that follows a suspend, the service now sends it its start-up sequence, its input and all the settings again (before, only volume, tone, faders and mute were sent and there was no sound).Son au réveil (01/11) : la MCU coupe l'alimentation du processeur audio pendant une vraie veille ; à l'allumage d'écran qui suit une suspension, le service lui renvoie maintenant sa séquence de démarrage, son entrée et tous les réglages (avant, seuls le volume, les tonalités, les faders et le mute étaient renvoyés, et il n'y avait plus de son).

USB

Port mode (Advanced → Autochips): host (USB keys, phones, Android Auto / CarPlay) or device (adb from a computer), switched at once like Jancar's settings. File transfer with a computer (MTP) is off by default: the port in device mode then only offers adb and charging. On, the computer sees the head unit's storage; the Jancar ROM never starts Android's MTP server, so the service starts it at each connection.Mode du port (Avancé → Autochips) : hôte (clés USB, téléphones, Android Auto / CarPlay) ou périphérique (adb depuis un ordinateur), changé tout de suite comme dans les réglages Jancar. Le transfert de fichiers avec un ordinateur (MTP) est désactivé par défaut : le port en périphérique ne propose alors qu'adb et la recharge. Activé, l'ordinateur voit la mémoire de l'autoradio ; la ROM Jancar ne lance jamais le serveur MTP d'Android, le service le démarre à chaque branchement.

Windows shows "Code 28" for the MTP device (no driver, interface seen as class ff): Windows remembered that at a first connection the head unit did not answer its Microsoft descriptor request, and never asks again. As administrator: reg delete "HKLM\SYSTEM\CurrentControlSet\Control\usbflags\2BE182570223" /f, uninstall the device in the Device Manager, plug it in again.Windows affiche « Code 28 » pour l'appareil MTP (pas de pilote, interface vue en classe ff) : Windows a retenu qu'à un premier branchement l'autoradio n'avait pas répondu à sa requête de descripteurs Microsoft, et ne redemande plus. En administrateur : reg delete "HKLM\SYSTEM\CurrentControlSet\Control\usbflags\2BE182570223" /f, désinstaller l'appareil dans le Gestionnaire de périphériques, rebrancher.

Touch panelDalle tactile

Display and lightsÉcran et lumières

Android dark mode and brightness follow the headlights (day / night levels); on-screen warning lights (lights, reverse, handbrake, turn signals; off by default); button backlight: the two PWM outputs of the MCU (5..100 %), one level lights off and one lights on. Panel picture (Display): MediaTek's picture quality engine, what Jancar's TFT display app (com.jancar.tftdisplay) set: picture brightness, contrast, hue, saturation, sharpness, hue and saturation of skin, grass and sky tones; root, set again at start-up, MiraVision button when the ROM has it; not tried on the head unit yet.Mode sombre d'Android et luminosité selon les feux (niveaux jour / nuit) ; voyants à l'écran (feux, marche arrière, frein à main, clignotants ; désactivés par défaut) ; rétroéclairage des boutons : les deux sorties PWM de la MCU (5..100 %), un niveau feux éteints et un feux allumés. Image de la dalle (Affichage) : moteur de qualité d'image de MediaTek, ce que réglait l'appli d'écran TFT de Jancar (com.jancar.tftdisplay) : luminosité de l'image, contraste, teinte, saturation, netteté, teinte et saturation des tons peau, herbe et ciel ; root, remis au démarrage, bouton MiraVision quand la ROM l'a ; pas encore essayé sur l'autoradio.

Tweaks

Backup and migrationSauvegarde et migration

Settings of every installed LibreHU app (and ViPER4Android, Open Headunit, CarPlay, MCU Toolkit) into a .tar in Download/LibreHU: preferences, files, databases. Restoring refuses archives with links or .. paths.Réglages de toutes les applis LibreHU installées (et ViPER4Android, Open Headunit, CarPlay, MCU Toolkit) dans une archive .tar de Download/LibreHU : préférences, fichiers, bases de données. La restauration refuse les archives avec des liens ou des chemins ...

LibreHU Launcher

Phone app (LibreHU Bridge)Appli téléphone (LibreHU Bridge)

  1. Install: Android 8.0+ APK, or the unsigned iPhone .ipa (iOS 16+) signed by yourself with AltStore or Sideloadly (every 7 days with a free Apple ID). The home screen shows the installed version and checks GitHub for a newer one (link to the APK or the ipa).Installer : APK Android 8.0+, ou le .ipa iPhone non signé (iOS 16+) à signer soi-même avec AltStore ou Sideloadly (tous les 7 jours avec un identifiant Apple gratuit). L'écran d'accueil montre la version installée et recherche une version plus récente sur GitHub (lien vers l'APK ou l'ipa).
  2. Pair: QR code from the launcher's assistant or LibreHU service → Bluetooth → Phone → LibreHU phone app → Pair a phone (single-use token, 5 minutes); or, phone already paired in Bluetooth, choose the head unit and accept on its screen.Associer : QR code de l'assistant du launcher ou de LibreHU service → Bluetooth → Téléphone → Appli téléphone LibreHU → Associer un téléphone (jeton à usage unique, 5 minutes) ; ou, téléphone déjà appairé en Bluetooth, choisir l'autoradio et accepter sur son écran.
  3. Use: Wi-Fi when both are on the same network (phone or head unit hotspot), else Bluetooth (Android only). Five tabs: Home (battery, GPS status without position, temperatures, system), Settings (every page of the head unit and the apps, with search), Apps (open an app on the unit, or here), Files, Tools (reboot normal / recovery / fastboot, logs, advanced Android settings).Utiliser : Wi-Fi quand les deux sont sur le même réseau (point d'accès du téléphone ou de l'autoradio), sinon Bluetooth (Android seulement). Cinq onglets : Accueil (batterie, état du GPS sans la position, températures, système), Réglages (toutes les pages de l'autoradio et des applis, avec recherche), Applis (ouvrir une appli sur l'autoradio, ou ici), Fichiers, Outils (redémarrer normal / recovery / fastboot, journaux, réglages Android avancés).
  4. Head unit screen on the phone (for the passenger): Apps → Head unit screen here, or an app → Open here. The phone shows the head unit's screen and touches it (several fingers; Back, Home, recent apps keys); the head unit keeps its own screen for the driver. Wi-Fi only, root on the head unit; hardware H.264, same method as scrcpy. A notification on the head unit shows the share and stops it.Écran de l'autoradio sur le téléphone (pour le passager) : Applis → Écran de l'autoradio ici, ou une appli → Ouvrir ici. Le téléphone affiche l'écran de l'autoradio et le touche (plusieurs doigts ; touches Retour, Accueil, applis récentes) ; l'autoradio garde son écran pour le conducteur. Wi-Fi seulement, root sur l'autoradio ; H.264 matériel, même méthode que scrcpy. Une notification sur l'autoradio signale le partage et l'arrête.
  5. Android Auto (Android phone): battery, speed, RPM, temperatures and quick settings. Car App Library apps appear only when installed by a trusted store: reinstall as Google Play (adb install -r -i com.android.vending, or the in-app button with root on the phone).Android Auto (téléphone Android) : batterie, vitesse, régime, températures et réglages rapides. Une appli Car App Library n'apparaît que si elle vient d'un store de confiance : la réinstaller comme Google Play (adb install -r -i com.android.vending, ou le bouton de l'appli avec root sur le téléphone).

The link is end-to-end encrypted (ECDH P-256, ECDSA, HKDF-SHA256, AES-256-GCM) and the head unit lists and can forget paired phones. Secrets (GitHub token, MFi token, hotspot password) never go through it.La liaison est chiffrée de bout en bout (ECDH P-256, ECDSA, HKDF-SHA256, AES-256-GCM) et l'autoradio liste et peut oublier les téléphones associés. Les secrets (jeton GitHub, jeton MFi, mot de passe du point d'accès) n'y passent jamais.

Other appsAutres applis

LibreHU FM

FM radio on the internal MediaTek chip (MT6631 combo, /dev/fm): stations, seek, scan, RDS, station logos, widget; asks LibreHU service for the antenna power (GPIO 110 + MCU 43) while it plays. RDS on the AC8257 (station name, radiotext, PTY, TP / TA, AF) since builds e65f5a0 (main), 44994bc (librehu-service) and 33a91aa (ivi): the FM driver gives a 720-byte RDS record (RT+ tags included) and the app, which asked for 688 bytes, never got one; it now reads both formats. Analysis and first fix: Reo Au In. Band and region (settings, also from the phone): from the country or chosen; Europe, Africa, Asia 87.5–108 MHz, 100 kHz steps, 50 µs de-emphasis; Americas and South Korea 87.5–107.9 MHz on the odd tenths, 200 kHz steps, 75 µs de-emphasis (US stations no longer sound too bright) and RBDS programme types; Brazil with its extended band 76.1–107.9 MHz; Japan 76–95 MHz. US call letters worked out from the PI code (NRSC-4-B) when the station sends no name. Enhanced RadioText (eRT), the UTF-8 text of non-Latin scripts, rebuilt from the raw RDS groups, with its artist and title (eRT+). Reception: signal bars and stereo indicator, forced mono (LibreHU kernel r146 and later, whose FM driver now passes the command on), search of strong stations only (local), antenna amplifier (option, on by default: the antenna is powered, GPIO 110 + MCU command 43, while the FM chip is on; off for a passive antenna; shown in the LibreHU-service edition, ivi-services decides by itself). Traffic announcements (option): full volume while the radio plays; over another source, the radio staying on in the background and taking over during the announcement (not with Jancar ivi-services). RDS clock (option): the head unit's clock set from the station's time. Alert (programme type 31): red line and priority notification. Songs heard: RT+ history with the time. US station logos looked up by call letters. Accented letters of the RDS (EN 50067 character set) are shown instead of spaces. RT+: artist and title tagged by the station, under the station name, on the widget, the notification and the launcher's media card.Radio FM sur la puce MediaTek interne (combo MT6631, /dev/fm) : stations, recherche, balayage, RDS, logos des stations, widget ; demande à LibreHU service l'alimentation de l'antenne (GPIO 110 + MCU 43) pendant la lecture. RDS sur l'AC8257 (nom de station, radiotexte, PTY, TP / TA, AF) depuis les builds e65f5a0 (main), 44994bc (librehu-service) et 33a91aa (ivi) : le pilote FM rend un enregistrement RDS de 720 octets (balises RT+ comprises) et l'appli, qui en demandait 688, n'en recevait aucun ; elle lit maintenant les deux formats. Analyse et premier correctif : Reo Au In. Bande et région (paramètres, aussi depuis le téléphone) : d'après le pays ou au choix ; Europe, Afrique, Asie 87,5–108 MHz, pas de 100 kHz, désaccentuation 50 µs ; Amériques et Corée du Sud 87,5–107,9 MHz sur les dixièmes impairs, pas de 200 kHz, désaccentuation 75 µs (les stations américaines ne sonnent plus trop aiguës) et types de programme RBDS ; Brésil avec sa bande étendue 76,1–107,9 MHz ; Japon 76–95 MHz. Indicatifs américains calculés depuis le code PI (NRSC-4-B) quand la station n'envoie pas de nom. Radiotexte étendu (eRT), le texte UTF-8 des écritures non latines, reconstruit à partir des groupes RDS bruts, avec son artiste et son titre (eRT+). Réception : barres de signal et indicateur stéréo, mono forcé (noyau LibreHU r146 et plus, dont le pilote FM transmet enfin la commande), recherche des stations fortes seulement (locales), ampli d'antenne (option, activé par défaut : l'antenne est alimentée, GPIO 110 + commande MCU 43, pendant que la puce FM est allumée ; à couper avec une antenne passive ; affiché dans l'édition LibreHU-service, ivi-services décide lui-même). Annonces trafic (option) : volume plein si la radio joue ; par-dessus une autre source, la radio restant allumée en fond et prenant la main pendant l'annonce (pas avec Jancar ivi-services). Heure RDS (option) : horloge de l'autoradio réglée sur l'heure de la station. Alerte (type de programme 31) : ligne rouge et notification prioritaire. Titres entendus : historique RT+ avec l'heure. Logos des stations américaines cherchés par indicatif. Les lettres accentuées du RDS (table de caractères EN 50067) s'affichent au lieu d'espaces. RT+ : artiste et titre balisés par la station, sous le nom de la station, sur le widget, la notification et la carte média du lanceur.

Internet radio (FM | Internet switch at the top left of the modern style, with a dot on the source playing; in that style every key is at least 76 dp, Google's minimum touch size in a car): Media3 player (MP3, AAC, Opus, FLAC, HLS) with the song title sent by the stream (ICY), a 15 to 60 s buffer and automatic reconnection after a coverage hole. Add by hand a stream address or an M3U / PLS link, or import an M3U / PLS file (USB key). Catalogue: the Radio Browser list of the country (community, about 4 MB for France, kept a week), by region (merged spellings; only about one French station in five gives one, national networks none: they are under "National / no region"), by genre and by name, each chosen on a grid of big tiles fitting one screen (biggest regions first, small ones under "Other regions"; country of the catalogue apart from the FM band's); the streams of a station are grouped and the one played follows the quality setting: best sound (FLAC, then the highest bitrate) or less data (128 kbit/s ≈ 58 MB per hour, 320 kbit/s ≈ 144 MB). The head unit's audio output is 48 kHz / 16-bit stereo: above CD quality nothing more is heard. From FM to the internet: when the FM station is also on the internet and the internet works, the FM screen offers its stream (one touch), then "Back to FM"; only on a clear name match (two stations about as close to the 8-letter RDS name: nothing is offered). In the launcher's factory and LHU-Link styles too: an Internet key on their FM screen, which also shows the offer; factory = the station between ‹ ›, saved stations in six-tile pages, catalogue list; LHU-Link = Playing / Internet stations / Catalogue tabs, Options. Also: a logo chosen per station (touch the logo), stream titles in the songs heard, the phone app's radio page (FM or internet, station), reconnection as soon as the network is back. Traffic announcements stay FM only.Radio internet (sélecteur FM | Internet en haut à gauche du style moderne, avec un point sur la source qui joue ; dans ce style chaque touche fait au moins 76 dp, la taille tactile minimale de Google en voiture) : lecteur Media3 (MP3, AAC, Opus, FLAC, HLS) avec le titre envoyé par le flux (ICY), un tampon de 15 à 60 s et la reconnexion automatique après une coupure de réseau. Ajouter à la main une adresse de flux ou un lien M3U / PLS, ou importer un fichier M3U / PLS (clé USB). Catalogue : la liste Radio Browser du pays (communautaire, environ 4 Mo pour la France, gardée une semaine), par région (écritures fusionnées ; une station française sur cinq environ en donne une, les réseaux nationaux aucune : ils sont dans « Nationales / sans région »), par genre et par nom, chacun choisi sur une grille de grandes tuiles qui tient sur un écran (grandes régions d'abord, petites sous « Autres régions » ; pays du catalogue à part de celui de la bande FM) ; les flux d'une station sont regroupés et celui joué suit le réglage de qualité : meilleur son (FLAC, puis le plus haut débit) ou moins de données (128 kbit/s ≈ 58 Mo par heure, 320 kbit/s ≈ 144 Mo). La sortie audio de l'autoradio est en stéréo 48 kHz / 16 bits : au-delà de la qualité CD, rien ne s'entend en plus. De la FM à internet : quand la station FM est aussi sur internet et qu'internet marche, l'écran FM propose son flux (un toucher), puis « Revenir en FM » ; seulement sur un nom sans doute (deux stations presque aussi proches du nom RDS de 8 lettres : rien n'est proposé). Aussi dans les styles d'usine et LHU-Link du launcher : touche Internet sur leur écran FM, qui montre aussi la proposition ; usine = la station entre ‹ ›, stations enregistrées en pages de six tuiles, catalogue en liste ; LHU-Link = onglets Lecture / Stations internet / Catalogue, Options. Et : un logo au choix par station (toucher le logo), titres des flux dans les titres entendus, page radio de l'appli téléphone (FM ou internet, station), reconnexion dès le retour du réseau. Les annonces trafic restent en FM seulement.

DAB+ radio (USB dongle): a DAB+ tab between FM and Internet (a DAB+ key in the factory and LHU-Link styles) once a DAB+ USB dongle was plugged in. Engine: DABplay+ by jvspier (MIT, pure Kotlin), the dongle sends the raw multiplex and the head unit decodes it (DAB+ AAC through MediaCodec, MP2 for DAB). Dongles: wRadio C100 / DTR-100 (16c0:05dc: XTRONS USBDAB01, Joying, Pumpkin, Dasaita; tested on a head unit by DABplay+'s author), Si4684 (1a86:5537: Eonon A503) and Siano SMS2160 (untested); not the SMS2270, RTL-SDR or mass-storage sticks. Band III scan (5A to 13F) at the first plug, favourites, steering-wheel keys, station text (DLS, songs in the history), slideshow picture, signal bars, service following, traffic announcements with the TA setting, same media session as FM. The DAB aerial goes on the dongle's SMA socket. Not yet tried on the UJC201 (no dongle here).Radio DAB+ (clé USB) : onglet DAB+ entre FM et Internet (touche DAB+ dans les styles d'usine et LHU-Link) dès qu'une clé DAB+ USB a été branchée. Moteur : DABplay+ de jvspier (MIT, Kotlin pur), la clé envoie le multiplex brut et l'autoradio le décode (AAC du DAB+ par MediaCodec, MP2 pour le DAB). Clés : wRadio C100 / DTR-100 (16c0:05dc : XTRONS USBDAB01, Joying, Pumpkin, Dasaita ; testée sur autoradio par l'auteur de DABplay+), Si4684 (1a86:5537 : Eonon A503) et Siano SMS2160 (non testées) ; pas les SMS2270, RTL-SDR ni clés vues comme stockage USB. Recherche de la bande III (5A à 13F) au premier branchement, favoris, touches du volant, texte de la station (DLS, titres dans l'historique), image du diaporama, barres de signal, suivi de la station, annonces trafic avec le réglage TA, même session média que la FM. L'antenne DAB se branche sur la prise SMA de la clé. Pas encore essayé sur l'UJC201 (aucune clé ici).

LibreHU Dialer

Bluetooth phone made for the car: keypad, recents, contacts, favourites, incoming call window and floating bubble, widgets.Téléphone Bluetooth pensé pour la voiture : clavier, récents, contacts, favoris, fenêtre d'appel entrant et bulle flottante, widgets.

LibreHU Widgets

Several home screen widgets in one APK: warning lights (handbrake, lights, ignition, reverse, turn signals, MCU link, external amp), info (trip time…), with a setup app; retro style and segment font followed.Plusieurs widgets d'écran d'accueil dans un APK : voyants (frein à main, feux, contact, marche arrière, clignotants, liaison MCU, ampli externe), infos (temps de trajet…), avec une appli de réglage ; style rétro et police à segments suivis.

LibreHU BtnRemap

Every steering wheel or CAN box button, short and long press: open an app, next source in your list or EasySource's, play / pause, next / previous, volume, mute, home, back, navigation, voice assistant, phone… Buttons add themselves when pressed (learning).Chaque bouton du volant ou du boîtier CAN, appui court et long : ouvrir une appli, source suivante de votre liste ou d'EasySource, lecture / pause, suivant / précédent, volume, sourdine, accueil, retour, navigation, assistant vocal, téléphone… Les boutons s'ajoutent d'eux-mêmes quand on les appuie (apprentissage).

LibreHU EasySource

Full screen source picker for the MODE / SRC key: each press shows the next source (FM, Bluetooth music, AUX, music apps), which starts after a few seconds or at once with OK.Sélecteur de sources plein écran pour la touche MODE / SRC : chaque appui montre la source suivante (FM, musique Bluetooth, AUX, applis de musique), qui démarre après quelques secondes ou tout de suite avec OK.

LibreHU Disc

USB optical drive: audio CD (with MusicBrainz names), data CD / DVD, unprotected DVD video, ripping (format, safe mode, retries, tags). Needs root (the drive node /dev/block/sr0 is root only) and the LibreHU kernel's CD/DVD drivers. Protected commercial DVDs (CSS) are not supported.Lecteur optique USB : CD audio (noms par MusicBrainz), CD / DVD de données, DVD vidéo non protégés, extraction (format, mode sûr, essais, tags). Demande le root (le nœud du lecteur /dev/block/sr0 est réservé à root) et les pilotes CD/DVD du noyau LibreHU. Les DVD du commerce protégés (CSS) ne sont pas pris en charge.

ViPER4Android LibreHU

Material 3 ViPER4Android with the ViPERFX_RE engine (driver zip in LibreHU Apps → Zips), started early at boot by the service so effects apply from the first song; every effect settable from the phone app. It follows the launcher's light / dark theme, accent, retro, factory and LHU-Link styles and key clicks.ViPER4Android Material 3 avec le moteur ViPERFX_RE (zip du pilote dans LibreHU Apps → Zips), démarré tôt au démarrage par le service pour que les effets s'appliquent dès le premier morceau ; chaque effet réglable depuis l'appli téléphone. Suit le thème clair / sombre du launcher, son accent, ses styles rétro, d'usine et LHU-Link et le son des touches.

LibreHU Helper

Read-only diagnostics for porting: zip report (system, partitions dump options, proprietary APKs, tty / I²C / USB scan, MFi chip, MCU, CAN box protocol), with anonymisation. Run it on another head unit and attach the report to an issue.Diagnostic en lecture seule pour le portage : rapport zip (système, options de dump des partitions, APK propriétaires, scan tty / I²C / USB, puce MFi, MCU, protocole du boîtier CAN), avec anonymisation. Le lancer sur un autre autoradio et joindre le rapport à une issue.

Android Auto · CarPlay

TWRP, kernel, zipsTWRP, noyau, zips

All system pieces are in LibreHU Apps → Zips (also on GitHub). Each one is checked (size, SHA-256), backs up the current partition to /sdcard/LibreHU/backup, then is written and read back. Zips are sorted by category and section (for example Kernel: LibreHU 4.9.117, linux-stable, back to 4.9.117, drivers); the versions of one zip (without / with boot menu, kernel + modules / modules only…) are on one card, with screenshots when there are some.Toutes les pièces système sont dans LibreHU Apps → Zips (aussi sur GitHub). Chacune est vérifiée (taille, SHA-256), sauvegarde la partition actuelle dans /sdcard/LibreHU/backup, puis est écrite et relue. Les zips sont triés par catégorie et par section (par exemple Noyau : LibreHU 4.9.117, linux-stable, retour au 4.9.117, pilotes) ; les versions d'un même zip (sans / avec menu de démarrage, noyau + modules / modules seuls…) sont sur une seule carte, avec des captures d'écran quand il y en a.

Direct downloads: TWRP stable / beta (zips; the .img for fastboot is in the TWRP releases), stable kernel 4.9.337 kernel + modules / modules only, original modules back, all zips.Téléchargements directs : TWRP stable / bêta (zips ; le .img pour fastboot est dans les releases de TWRP), noyau stable 4.9.337 noyau + modules / modules seuls, retour des modules d'origine, tous les zips.

ZipWhat it doesRôle
twrp-ujc201 / -betaTWRP recovery for the UJC201: touch and front keys, landscape, ADB / MTP, USB stick, MCU state in the status bar, steering wheel and Hiworld CAN box keys (beta; it answers the box like LibreHU service, from /sdcard/TWRP/ujc201_can.conf written by the service for the chosen car). Signed with the stock recovery's AVB footer, so Android still boots.Recovery TWRP de l'UJC201 : tactile et touches de façade, paysage, ADB / MTP, clé USB, état de la MCU dans la barre d'état, touches du volant et du boîtier CAN Hiworld (bêta ; il répond au boîtier comme LibreHU service, d'après /sdcard/TWRP/ujc201_can.conf écrit par le service pour la voiture choisie). Signé avec le pied AVB du recovery d'origine, donc Android démarre toujours.
kernel-librehu / -bootmenuLibreHU kernel in boot (with KernelSU Next), optionally with a TWRP / Android / Fastboot boot menu. vbmeta is never touched.Noyau LibreHU dans boot (avec KernelSU Next), en option avec un menu de démarrage TWRP / Android / Fastboot. vbmeta n'est jamais touché.
kernel-connectivitySame kernel with the Wi-Fi / BT / GPS / FM drivers built in (testing).Même noyau avec les pilotes Wi-Fi / BT / GPS / FM intégrés (en test).
viper4android-reViPERFX_RE audio driver for ViPER4Android.Pilote audio ViPERFX_RE pour ViPER4Android.
kernel-stable-4.9.<N>For each linux-stable kernel (4.9.150, 200, 225, 250, 300, 319, 337): the kernel (with the TWRP / Android / Fastboot boot menu) and its Wi-Fi / BT / GPS / FM modules in one zip. Everything is checked before writing; boot is saved in /sdcard/LibreHU/backup, original modules in conn-modules-orig. Needs dm-verity disabled. 4.9.337 is the stable kernel (used daily on the unit without problems); the others are kept only to find which batch broke something.Pour chaque noyau linux-stable (4.9.150, 200, 225, 250, 300, 319, 337) : le noyau (avec le menu de démarrage TWRP / Android / Fastboot) et ses modules Wi-Fi / BT / GPS / FM en un seul zip. Tout est vérifié avant d'écrire ; boot sauvegardé dans /sdcard/LibreHU/backup, modules d'origine dans conn-modules-orig. dm-verity doit être désactivé. 4.9.337 est le noyau stable (utilisé tous les jours sur l'autoradio sans problème) ; les autres ne servent qu'à retrouver le lot qui aurait cassé quelque chose.
conn-modules-stable-4.9.<N>Modules only, for that linux-stable kernel already in boot (the zip checks it). Flash conn-modules-stable-restore before going back to another kernel (LibreHU-main, stock).Modules seuls, pour ce noyau linux-stable déjà dans boot (le zip le vérifie). Flasher conn-modules-stable-restore avant de revenir à un autre noyau (LibreHU-main, stock).
conn-modules-stable-restoreOriginal Wi-Fi / BT / GPS / FM modules, to go back to the 4.9.117 kernel (GPL kernel-librehu or stock): restored from the backup made on the unit before any change (stock files are not published); does nothing if they were never replaced. Then flash the 4.9.117 kernel before rebooting.Modules Wi-Fi / BT / GPS / FM d'origine, pour revenir au noyau 4.9.117 (GPL kernel-librehu ou stock) : remis depuis la sauvegarde faite sur l'autoradio avant toute modification (les fichiers stock ne sont pas publiés) ; ne fait rien s'ils n'ont jamais été remplacés. Flasher ensuite le noyau 4.9.117 avant de redémarrer.
conn-modules-stock-4.9.117The stock Wi-Fi / BT / GPS / FM modules of the UJC201 themselves, to go back to the 4.9.117 kernel (GPL or stock) even without a backup on the unit. The current modules are saved first; warns if boot does not hold a 4.9.117 kernel. Needs dm-verity disabled.Les modules Wi-Fi / BT / GPS / FM stock de l'UJC201 eux-mêmes, pour revenir au noyau 4.9.117 (GPL ou stock) même sans sauvegarde sur l'autoradio. Les modules actuels sont sauvegardés d'abord ; avertit si boot ne contient pas un noyau 4.9.117. dm-verity doit être désactivé.
usb-netUSB Ethernet drivers (Realtek, RNDIS, iPhone, LAN78xx, SMSC…).Pilotes Ethernet USB (Realtek, RNDIS, iPhone, LAN78xx, SMSC…).
no-deep-bufferAudio tweak (deep buffer off), with its restore zip.Réglage audio (deep buffer coupé), avec son zip de retour.
gapps-removeRemoves the Google Apps of the ROM (OpenGApps, Android 9) from the installer's own list, with their updates and data; keeps the Google pieces that replace a missing AOSP one (ExtServices, WebView, keyboard…). Backup first, restore zip gapps-restore. No Play Store, Google Maps or network location afterwards (GPS works).Retire les Google Apps de la ROM (OpenGApps, Android 9) d'après la liste de l'installeur lui-même, avec leurs mises à jour et données ; garde les morceaux Google qui remplacent une appli AOSP absente (ExtServices, WebView, clavier…). Sauvegarde d'abord, zip de retour gapps-restore. Ensuite : ni Play Store, ni Google Maps, ni localisation par réseau (le GPS marche).
qb-whitelistAdds the LibreHU apps and ViPER4Android to the whitelist of QuickBoot (/vendor/etc/qb_list.xml) so that a screen off no longer force stops them; only lines are added, the original is kept next to it. Reboot afterwards. Restore zip qb-whitelist-restore.Ajoute les applis LibreHU et ViPER4Android à la liste blanche de QuickBoot (/vendor/etc/qb_list.xml) : l'extinction de l'écran ne les arrête plus de force ; seules des lignes sont ajoutées, l'original est gardé à côté. Redémarrer ensuite. Zip de retour qb-whitelist-restore.
supersu-removeRemoves the stock SuperSU, with its restore zip.Retire le SuperSU d'origine, avec son zip de retour.

Manual TWRP install:Installation manuelle de TWRP :

adb reboot bootloader
fastboot flash recovery twrp_ujc201.img
fastboot oem reboot-recovery

Flash the post-processed twrp_ujc201.img from the releases, never a raw recovery.img from a build: without the stock AVB footer Android bootloops. fastboot boot does not work on this unit. LibreHU never disables dm-verity or rewrites vbmeta.Flasher le twrp_ujc201.img post-traité des releases, jamais un recovery.img brut d'une build : sans le pied AVB d'origine, Android boucle au démarrage. fastboot boot ne marche pas sur cet autoradio. LibreHU ne désactive jamais dm-verity et ne réécrit jamais vbmeta.

TroubleshootingDépannage

SymptomSymptômeCause and fixCause et solution
No steering wheel key from the CAN boxAucune touche du volant venant du boîtier CANIn LibreHU service → CAN, card Dialogue with the box: if the box answers the requests, the link with the head unit works and the keys are lost before the box. On a Renault with a separate dashboard display (Clio 3…), the steering column remote goes through that display (the clock): it must stay plugged in, even hidden. Otherwise check the box's harness and the car profile chosen.Dans LibreHU service → CAN, carte Dialogue avec le boîtier : si le boîtier répond aux demandes, la liaison avec l'autoradio marche et les touches se perdent avant le boîtier. Sur une Renault à afficheur séparé (Clio 3…), la commande sous volant passe par cet afficheur (l'horloge) : il doit rester branché, même caché. Sinon, vérifier le faisceau du boîtier et le profil de voiture choisi.
"MCU unreachable"« MCU injoignable »ivi-services still holds /dev/ttyS1 (disable it) or root refused.ivi-services tient encore /dev/ttyS1 (le désactiver) ou root refusé.
Update refused by AndroidMise à jour refusée par AndroidDifferent signing key (old debug build): uninstall once. Or a lower versionCode: LibreHU Apps offers to uninstall first.Clé de signature différente (ancienne build debug) : désinstaller une fois. Ou versionCode plus petit : LibreHU Apps propose de désinstaller d'abord.
The head unit powers off again right after waking from standbyL'autoradio se recoupe juste après le réveil de veilleThe MCU waits for PC_READY (1F 01) for 10 s after waking the SoC: LibreHU service (or ivi-services) must be running and holding the link. On this ROM QuickBoot stops it at the screen off unless it is in its whitelist: zip qb-whitelist.La MCU attend PC_READY (1F 01) 10 s après avoir réveillé le SoC : LibreHU service (ou ivi-services) doit tourner et tenir la liaison. Sur cette ROM QuickBoot l'arrête à l'extinction de l'écran s'il n'est pas dans sa liste blanche : zip qb-whitelist.
Black screen after waking from standby (backlight on)Écran noir au réveil de veille (rétroéclairage allumé)Kernel older than stable-4.9.337 r126: the panel lost its power during the standby and was never set up again. Flash the zip kernel-stable-4.9.337 (LibreHU Apps → Zips → Kernel). Still black: attach the standby journal and dmesg.Noyau antérieur à stable-4.9.337 r126 : la dalle a perdu son alimentation pendant la veille et n'était jamais réinitialisée. Flasher le zip kernel-stable-4.9.337 (LibreHU Apps → Zips → Noyau). Toujours noir : joindre le journal de veille et dmesg.
Screen goes off when starting the engineÉcran coupé au démarrage du moteurRaise the ignition off delay (System → Standby).Augmenter le délai avant coupure (Système → Veille).
Stripes on the screen from the boot logoBandes à l'écran dès le logo de démarrageAutochips' second LVDS panel (metazone 65550) was turned on without a second panel: it is not VIDEO OUT. Turn off Service → Autochips → Fast reverse → "Second LVDS panel", or from a PC: adb shell 'su -c "CLASSPATH=$(pm path org.librehu.service | cut -d: -f2) app_process /system/bin org.librehu.service.atc.AtcHelper set 65550=0"' (answers ok), then ignition off 1 min. The service's standby journal says so 30 s after the start.Le second écran LVDS d'Autochips (metazone 65550) a été activé sans second écran : ce n'est pas VIDEO OUT. Le désactiver dans Service → Autochips → Recul rapide → « Second écran LVDS », ou depuis un PC : adb shell 'su -c "CLASSPATH=$(pm path org.librehu.service | cut -d: -f2) app_process /system/bin org.librehu.service.atc.AtcHelper set 65550=0"' (répond ok), puis couper le contact 1 min. Le journal de veille du service le signale 30 s après le démarrage.
Touch is offsetTactile décaléCalibrate in Display → Touch panel ("start from a neutral matrix" if needed).Calibrer dans Écran → Dalle tactile (« partir d'une matrice neutre » si besoin).
Android hangsAndroid bloquéReset SoC from the phone app or the service: the MCU power cycles the SoC.Redémarrage du SoC depuis l'appli téléphone ou le service : la MCU coupe et rallume le SoC.
Need logsBesoin de journauxPhone app → Tools → Logs (LibreHU, full logcat, kernel), or LibreHU Helper's report; attach to a GitHub issue.Appli téléphone → Outils → Journaux (LibreHU, logcat complet, noyau), ou le rapport de LibreHU Helper ; joindre à une issue GitHub.