Fatih'sMG4 — ABRP telemetry for an MG4 EH32 on SWI69

A fork of malys/EVABRPUploader (itself a fork of Leon Kernan's ABRP_Uploader)
carrying the changes that make it work on this car. History starts here: the
tree is what matters, and the upstream projects are where the earlier work
belongs.

EVHardware is vendored rather than tracked as a submodule, so one clone
builds.

Telemetry. SOC, battery power and range read as unavailable on SWI69 because
the vendor fallbacks were gated to SWI68 alone, while the property ids they
use are the ones this car publishes — the gates now admit SWI69. Tyre
pressure, the odometer and charge status come from the vendor block too,
since the generic properties for all three are declared here and never
publish. Tyre pressure is confirmed on the vehicle; the other two are not
yet.

Vehicle page. Every signal the car answers, in a table. One that it does not
publish shows a dash: an unimplemented VHAL property returns zero, and
"0 °C" would read as a measurement.

Wi-Fi page. Joins a network the unit already has saved, so a phone hotspot
does not need a trip into Settings on every drive. Tried on the upload tick
and from a button, skipped while already associated. This leans on the unit
being API 28 and the build being platform-signed — getConfiguredNetworks and
enableNetwork are closed to ordinary apps from API 29 — and fails quietly
where that does not hold.

The OTA updater points at this repository. An APK from upstream is signed
with a different key, which Android will not install over a platform-signed
build.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
TCFDONMEZ
2026-09-22 10:45:00 +03:00
co-authored by Claude
commit 2fd7b2dde1
245 changed files with 35594 additions and 0 deletions
@@ -0,0 +1,223 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Catalogue labels — owned by the EVHardware library (the catalogue lives here). -->
<resources>
<string name="group_context">Contesto</string>
<string name="group_environment">Ambiente</string>
<string name="group_driving">Guida</string>
<string name="group_comfort">Comfort</string>
<string name="group_audio">Audio</string>
<string name="group_adas">Assistenza alla guida</string>
<string name="group_climate">Clima</string>
<string name="group_profile">Profilo</string>
<string name="group_system">Sistema</string>
<string name="unit_celsius">°C</string>
<string name="unit_kmh">km/h</string>
<string name="unit_percent">%</string>
<string name="unit_command">cmd</string>
<string name="drive_eco">Eco</string>
<string name="drive_normal">Normale</string>
<string name="drive_sport">Sport</string>
<string name="drive_snow">Neve</string>
<string name="drive_custom">Personalizzato</string>
<string name="regen_low">Bassa</string>
<string name="regen_medium">Media</string>
<string name="regen_high">Alta</string>
<string name="regen_adaptive">Adattivo</string>
<string name="regen_off">Disattivato</string>
<string name="regen_one_pedal">Un pedale</string>
<string name="aeb_alert_only">Solo avviso</string>
<string name="aeb_alert_brake">Avviso + frenata</string>
<string name="sensitivity_low">Bassa</string>
<string name="sensitivity_standard">Standard</string>
<string name="sensitivity_high">Alta</string>
<string name="elk_off">Disattivato</string>
<string name="elk_warn">Avviso (LDW)</string>
<string name="elk_assist">Assistenza (LDP)</string>
<string name="elk_full">Mantenimento d\'emergenza (ELK)</string>
<string name="acc_off">Disattivato</string>
<string name="acc_acc">Cruise control adattivo (ACC)</string>
<string name="acc_tja">Assistente ingorghi (TJA)</string>
<string name="limiter_off">Disattivato</string>
<string name="limiter_manual">Manuale</string>
<string name="limiter_smart">Intelligente</string>
<string name="ignition_lock">Bloccato</string>
<string name="ignition_off">Spento</string>
<string name="ignition_acc">Accessori</string>
<string name="ignition_on">In funzione</string>
<string name="ignition_start">Avviamento</string>
<string name="cond_bt_device">Telefono Bluetooth connesso</string>
<string name="cond_bt_any">Qualsiasi dispositivo Bluetooth connesso</string>
<string name="cond_bt_onboard">Telefono a bordo (Bluetooth)</string>
<string name="cond_bt_handsfree">Telefono vivavoce Bluetooth</string>
<string name="cond_time">Ora del giorno</string>
<string name="cond_day">Giorno della settimana</string>
<string name="cond_date">Data esatta</string>
<string name="cond_firmware">Generazione firmware</string>
<string name="cond_outside_temp">Temperatura esterna</string>
<string name="cond_ignition">Stato del quadro</string>
<string name="cond_in_park">Marcia in P</string>
<string name="cond_speed">Velocità</string>
<string name="cond_drive_mode">Modalità di guida</string>
<string name="cond_regen">Rigenerazione</string>
<string name="cond_energy_saving">Risparmio energetico</string>
<string name="cond_seat_heat_l">Riscaldamento sedile sinistro</string>
<string name="cond_seat_heat_r">Riscaldamento sedile destro</string>
<string name="cond_steering_heat">Riscaldamento volante</string>
<string name="cond_media_volume">Volume multimediale</string>
<string name="cond_brightness">Luminosità schermo</string>
<string name="cond_aeb">Frenata d\'emergenza (AEB)</string>
<string name="cond_aeb_mode">Modalità AEB</string>
<string name="cond_aeb_sensitivity">Sensibilità AEB</string>
<string name="cond_elk_mode">Modalità ELK</string>
<string name="cond_elk_sensitivity">Sensibilità ELK</string>
<string name="cond_acc_tja">Modalità ACC / TJA</string>
<string name="cond_limiter">Limitatore di velocità</string>
<string name="cond_tsr">Riconoscimento segnali (TSR)</string>
<string name="cond_overspeed">Allarme velocità</string>
<string name="cond_speed_limit_tone">Tono limite di velocità</string>
<string name="cond_sound_warning">Avviso sonoro ADAS</string>
<string name="cond_ac">Aria condizionata accesa</string>
<string name="cond_hvac_auto">Clima AUTO acceso</string>
<string name="cond_recirc">Ricircolo aria attivo</string>
<string name="cond_fan_speed">Velocità ventola</string>
<string name="cond_temperature_set">Temperatura impostata</string>
<string name="cond_window_open">Un finestrino è aperto</string>
<string name="act_apply_profile">Applica un profilo</string>
<string name="act_show_profile_picker">Chiedi un profilo</string>
<string name="act_drive_mode">Modalità di guida</string>
<string name="act_regen">Rigenerazione</string>
<string name="act_one_pedal">Guida a un pedale</string>
<string name="act_energy_saving">Risparmio energetico</string>
<string name="act_seat_heat_l">Riscaldamento sedile sinistro</string>
<string name="act_seat_heat_r">Riscaldamento sedile destro</string>
<string name="act_steering_heat">Riscaldamento volante</string>
<string name="act_brightness">Luminosità schermo</string>
<string name="act_media_volume">Volume multimediale</string>
<string name="act_balance">Bilanciamento sinistra / destra</string>
<string name="act_fader">Dissolvenza anteriore / posteriore</string>
<string name="act_tone">Tono</string>
<string name="act_bose">Profilo audio Bose</string>
<string name="act_3d">Effetto 3D</string>
<string name="act_speed_volume">Volume adattivo alla velocità</string>
<string name="act_aeb">Frenata d\'emergenza (AEB)</string>
<string name="act_aeb_mode">Modalità AEB</string>
<string name="act_aeb_sensitivity">Sensibilità AEB</string>
<string name="act_elk_mode">Modalità ELK</string>
<string name="act_elk_sensitivity">Sensibilità ELK</string>
<string name="act_acc_tja">Modalità ACC / TJA</string>
<string name="act_limiter">Limitatore di velocità</string>
<string name="act_tsr">Riconoscimento segnali (TSR)</string>
<string name="act_overspeed">Allarme velocità</string>
<string name="act_speed_limit_tone">Tono limite di velocità</string>
<string name="act_sound_warning">Avviso sonoro ADAS</string>
<string name="act_las_sound">Avviso sonoro cambio corsia</string>
<string name="act_las_vibration">Vibrazione volante cambio corsia</string>
<string name="act_launch_app">Avvia un\'app</string>
<string name="act_notify">Mostra una notifica</string>
<string name="act_speak">Pronuncia un messaggio</string>
<string name="group_energy">Energia</string>
<string name="unit_metre">m</string>
<string name="cond_location">Vicino a un luogo</string>
<string name="cond_physical_button">Pulsanti fisici</string>
<string name="cond_battery">Livello batteria</string>
<string name="cond_charging">In carica</string>
<string name="cond_charge_limit">Limite di carica</string>
<string name="cond_climate_on">Climatizzatore acceso</string>
<string name="act_climate_power">Climatizzatore on/off</string>
<string name="act_cabin_temp">Temperatura impostata</string>
<string name="act_ac">Aria condizionata</string>
<string name="act_climate_auto">Climatizzatore AUTO</string>
<string name="act_recirc">Ricircolo dell’aria</string>
<string name="act_fan_level">Velocità ventola</string>
<string name="act_front_defrost">Sbrinamento parabrezza</string>
<string name="act_rear_defrost">Sbrinamento lunotto</string>
<string name="act_charge_limit">Limite di carica</string>
<string name="act_charging_enabled">Consenti la carica</string>
<string name="act_charge_schedule">Carica programmata</string>
<string name="act_charge_window">Finestra di carica</string>
<string name="act_battery_preheat">Preriscaldamento batteria</string>
<string name="act_play_radio">Accendi la radio</string>
<string name="act_tune_radio">Banda e stazione radio</string>
<string name="act_radio_next_station">Stazione radio successiva</string>
<string name="act_radio_prev_station">Stazione radio precedente</string>
<string name="act_pause_radio">Silenzia la radio</string>
<string name="act_radio_play_pause">Radio: riproduci/pausa</string>
<string name="act_open_radio_screen">Apri la schermata radio</string>
<string name="radio_band_am">AM</string>
<string name="radio_band_fm">FM</string>
<string name="radio_band_dab">DAB</string>
<string name="window_close">Chiuso</string>
<string name="window_open">Aperto</string>
<string name="value_radio_hint">es. 103.5 o AM 1080</string>
<string name="act_navigate">Naviga verso</string>
<string name="act_ask_confirm">Chiedere conferma</string>
<string name="act_ask_confirm_hint">es. aprire i finestrini?</string>
<string name="act_call">Chiama</string>
<string name="act_call_contact">Chiama un contatto</string>
<string name="cond_window_position">Apertura finestrini</string>
<string name="cond_doors_locked">Porte bloccate</string>
<string name="act_windows">Tutti i finestrini</string>
<string name="act_door_lock">Blocco porte</string>
<string name="act_delay">Attendi</string>
<string name="unit_second">s</string>
<string name="cond_charging_status">Stato di ricarica</string>
<string name="cond_charge_schedule">Ricarica programmata attiva</string>
<string name="cond_charge_window_start">La ricarica inizia alle</string>
<string name="cond_charge_window_stop">La ricarica termina alle</string>
<string name="cond_battery_preheat">Preriscaldamento batteria attivo</string>
<string name="cond_passenger_temp">Temperatura passeggero</string>
<string name="cond_econ">Modalità ECON attiva</string>
<string name="cond_front_defrost">Sbrinatore parabrezza attivo</string>
<string name="cond_rear_defrost">Sbrinatore lunotto attivo</string>
<string name="cond_front_door_open">Porta anteriore aperta</string>
<string name="act_passenger_temp">Temperatura passeggero</string>
<string name="act_econ">Modalità ECON</string>
<string name="charging_unplugged">Scollegato</string>
<string name="charging_ac">In ricarica (CA)</string>
<string name="charging_dc">In ricarica (CC)</string>
<string name="charging_plugged_idle">Collegato, non in ricarica</string>
<string name="charging_done">Ricarica completata</string>
<string name="charging_fault">Guasto di ricarica</string>
<string name="cond_media_playing">Riproduzione in corso</string>
<string name="cond_radio_playing">Radio accesa</string>
<string name="cond_wifi_ssid">Rete Wi-Fi</string>
<string name="cond_wifi_ssid_hint">es. Casa</string>
<string name="cond_in_call">Chiamata in corso</string>
<string name="cond_drive_duration">Durata del viaggio</string>
<string name="cond_random_chance">Probabilità casuale</string>
<string name="unit_minute">min</string>
<string name="act_enable_rule">Attiva una regola</string>
<string name="act_disable_rule">Disattiva una regola</string>
<string name="act_media_control">Controllo multimediale</string>
<string name="media_play_pause">Riproduci / pausa</string>
<string name="media_next">Brano successivo</string>
<string name="media_previous">Brano precedente</string>
<string name="act_set_bluetooth">Bluetooth</string>
<string name="act_set_wifi">Wi-Fi</string>
<string name="unit_km">km</string>
<string name="cond_range">Autonomia residua</string>
<string name="cond_window_driver">Apertura finestrino guidatore</string>
<string name="cond_window_passenger">Apertura finestrino passeggero</string>
<string name="cond_window_rear_left">Apertura finestrino posteriore sinistro</string>
<string name="cond_window_rear_right">Apertura finestrino posteriore destro</string>
<string name="act_window_driver">Finestrino guidatore</string>
<string name="act_window_passenger">Finestrino passeggero</string>
<string name="act_window_rear_left">Finestrino posteriore sinistro</string>
<string name="act_window_rear_right">Finestrino posteriore destro</string>
<string name="cond_odometer">Contachilometri</string>
<string name="cond_weather">Meteo</string>
<string name="weather_clear">Sereno</string>
<string name="weather_cloudy">Nuvoloso</string>
<string name="weather_rain">Pioggia</string>
<string name="weather_snow">Neve</string>
<string name="weather_storm">Temporale</string>
<string name="weather_fog">Nebbia</string>
<string name="weather_wind">Vento</string>
<string name="act_esc">Controllo di stabilità (ESC)</string>
<string name="act_drowsiness">Allerta sonnolenza</string>
<string name="act_drowsiness_sensitivity">Sensibilità dell\'allerta sonnolenza</string>
<string name="act_adjust_media_volume">Volume media, a passi</string>
<string name="cond_data_today">Dati consumati oggi</string>
<string name="cond_data_month">Dati consumati questo mese</string>
<string name="unit_megabyte">MB</string>
</resources>