MG4Control
v2.6.7 Android Automotive · MG4 Electric (SAIC)

MG4Control Advanced settings for the MG4 Electric

The community app that brings your MG4's driving, safety and comfort settings together on the head unit, with profiles, shortcuts on the car's physical buttons (steering wheel, front panel…) and automations.

7 languages 6 firmwares: SWI133 · SWI132 · SWI68 · SWI69 · SWI131 · SWI165 GPL v3 licence

Explore the app

Click a feature: the mockup shows the matching screen and flashes the element in question. The mockup itself is fully clickable, and the virtual vehicle (button at the bottom right) simulates speed, temperature, Bluetooth, doors and the steering-wheel buttons.

This mockup is a simulation built for the website. The app installed in the car may look slightly different (sizes, fonts, spacing, firmware-specific details), and the values shown are examples.

MG4Control · interactive mockup
↔ Swipe the mockup to see the whole screen. Esc to leave full screen · virtual vehicle at the bottom right 📱 Turn your phone sideways to see the whole screen.
Dashboard

Driving

Drive mode and regeneration, one tap away.

Drive mode

ECO, NORMAL, SPORT, SNOW or CUSTOM, with one colour per mode.

Learn more

The active mode lights up green for ECO, amber for SPORT and blue for the others. The state is re-read from the vehicle each time the screen shows. If the vehicle is not ready yet, the app retries every 3 s.

A rail tab whose page has no content on your firmware is simply hidden. Pick UNKNOWN above the mockup to watch it disappear.

Regeneration

Six levels, from Off to One Pedal, sent to the vehicle straight away.

Learn more

Off, Low, Medium, High, Adaptive and One Pedal. In SNOW, no level can be changed (not even One Pedal) and the Energy saving button is greyed out: both modes are mutually exclusive. The UI reflects these rules instead of letting you send a command the car would reject.

Energy saving

While it's on, only One Pedal remains available for regeneration.

Learn more

Toggle button under CUSTOM. Try it in the mockup: turn it on, then try changing the regeneration.

Custom modeNew · 2.6.7

In CUSTOM, a card sets power, steering and pedal.

Learn more

The card appears as soon as the car is in CUSTOM, even if set from the stock screen: Power (Eco / Normal / Sport), Steering and Pedal (Comfort / Normal / Sport). A row the vehicle doesn't report disappears.

Dashboard

Safety and ADAS

Driver aids, adapted to each firmware. Switch firmware above the mockup to watch the cards change.

ADAS selector

Off, manual or automatic limiter, ACC, and ICA or TJA depending on firmware.

Learn more

ICA on SWI133 and SWI132, TJA on SWI68, 69, 131 and 165. On “VSM” firmwares the limiter and ACC/TJA are two independent systems: the single selector enforces exclusivity, picking one turns the other off.

Traffic signs and sound alerts

Traffic sign recognition everywhere, plus speed alerts on SWI133 and SWI132.

Learn more

On SWI133/SWI132: overspeed alert and speed-limit change alert, greyed out and forced OFF when TSR is off, then restored when it's back on. Elsewhere: a single audible warning.

Forward collision (AEB)

On/off, alert only or with automatic braking, and sensitivity.

Learn more

Alert or Alert + auto braking mode, Low / Standard / High sensitivity. Mode buttons are greyed out while the system is off.

Lane keeping

Alert, assist or emergency keeping, with adjustable sensitivity.

Learn more

Turning the assist back on restores the last mode used. On SWI132: no emergency keeping, but two extra switches, audible warning and vibration.

ESC and drowsiness

ON / OFF buttons confirmed by re-reading the vehicle state.

Learn more

The buttons express an intent, then the app re-reads the state 700 ms later and that reading decides which one lights up. Unreadable state = no button lit, rather than a guessed state. In a profile, ESC and drowsiness are only written if that profile configures them.

Drowsiness sensitivity

Low, Standard or High, also adjustable from a physical-button shortcut.

Turning ESC off also turns the forward collision system off: the vehicle enforces it. Both return to ON at every start-up.

Dashboard

Comfort and climate

Seats, wheel and climate in one place. These settings are never blocked by the speed lock.

Heated seats and wheel

Wheel On/Off and seats on 3 levels, on equipped trims.

Learn more

The card only shows on equipped trims: SWI69 and SWI131 (Standard/SE versions) as well as SWI132 don't display it.

Setpoint and fan

Two sliders whose bounds are read from the vehicle.

Learn more

Bounds vary between firmwares. While dragging, a single write is sent at the end, then the app re-reads the state 700 ms later. It never moves a slider under your finger.

Controls and recirculation

Power, A/C, AUTO and recirculation, kept in sync with the stock screen.

Learn more

While the screen is shown, the app follows changes made on the stock screen every 2 s. An unreadable state greys the button out rather than lying.

Air directionNew · 2.6.7

Face, feet and windshield combine, and the rear window has its own button.

Learn more

Replaces the defrost buttons. The last lit button can't be switched off: the air has to come out somewhere. Each press starts from the state read from the car.

Top bar

Profiles

A profile applies a set of settings all at once: in one tap, from a button in the car, or automatically at start-up depending on the connected phone or the temperature.

Try:

Profile list

Up to 5 profiles, with a summary, a default profile and instant apply.

Learn more

Each card shows the name, a summary (mode · regeneration · ADAS) and the DEFAULT badge, with Apply now, Edit, Set default and Delete (with confirmation).

Full-screen editor

The dashboard's three tabs, in a dedicated editor.

Learn more

The profile name and “default profile” stay visible at the top. Cancel / Save at the bottom; a name is required.

A profile never forces the unexpected: settings added over time (ESC, drowsiness, heating…) count as “not configured” in older profiles and are not written. So an old profile never disables ESC by omission.

Heating “apply” switch

Unchecked, the profile leaves the seat or wheel as it is instead of turning it off.

Learn more

Handy for a “motorway” profile that shouldn't switch off a seat already on.

Bluetooth pairing

At start-up, if the paired phone is connected, its profile applies.

Learn more

The app checks the connected phones when the infotainment starts and every time the car switches to READY. Connecting a phone mid-trip applies nothing: its profile will apply at the next switch to READY. In the virtual vehicle, connect “Pixel 8” then simulate a start-up: the “Motorway” profile gets applied.

Climate in the profileNew · 2.6.7

Optional block: power, A/C, setpoint, fan, recirculation and air direction.

Learn more

In the Comfort tab, unchecked by default (older profiles leave climate alone). Setpoint from 15 to 33 °C, fan from 1 to 11, and “Unchanged” to leave a setting alone. Climate off: nothing else is written. In AUTO, the fan speed isn't applied. At start-up, if the last applied profile carries this block, its climate settings win: the temperature A/C automation doesn't apply.

Custom mode in the profileNew · 2.6.7

A profile in CUSTOM also stores power, steering and pedal.

Learn more

They are only written when the profile's mode is CUSTOM. A profile saved before this feature writes nothing until it is reopened and saved.

Backup in the car

Profiles are copied to the car and can be restored after a reinstall.

Learn more

File MG4Control/mg4_profiles_backup.json in the vehicle's storage. On reinstall, if the app has no profile, a popup offers to restore them.

Which profile at start-up?

When the infotainment starts and every time the car switches to READY, MG4Control picks a single profile following this precedence. Tick the situations to see which one wins.

1Recent manual choice (picker popup, app, API)
2Outside-temperature automation
3Profile tied to the connected Bluetooth device (several: restricted picker, the 1st after 8 s)
4Default profile

Floating window

Profile picker and brightness

Assigned to a physical button (steering wheel, front panel…), this window pops up over any app: switch profile or brightness without leaving navigation.

Brightness in one move

Night, Medium, Day and a thick slider, easy to hit while driving.

Learn more

Presets at 15%, 50% and 100%. 5% floor: the screen can never be switched off by mistake.

Profile picker popup

All your profiles as big buttons: a tap applies the profile and closes the popup.

Learn more

That manual choice takes priority at the next ignition. The picker shows whatever the speed (it's also used for brightness); it's the write that gets filtered by the speed lock.

Auto close

The window closes by itself after 8 s, with Power the car off and Open MG4Control at the bottom.

Bluetooth conflict

Several paired phones connected at start-up? The picker only shows their profiles.

Learn more

Without a choice before the countdown ends, the first one is applied.

Joystick navigationNew · 2.6.7

The steering wheel's right joystick moves through the window, the centre confirms.

Learn more

Needs the accessibility service. Focus ring with no wrap-around at the edges; left/right on the slider adjust brightness in 5% steps. The joystick then changes neither volume nor track. Try it with ▲▼◀▶● in the virtual vehicle.

Top bar

★ button shortcuts

The steering wheel's two ★ buttons trigger the action of your choice, out of more than 35.

Try:

Classic ★ shortcuts

Left ★ and right ★, each with a single and a long press.

Learn more

They rely on the signal broadcast by the vehicle: if the stock launcher already uses that button, it keeps priority (e.g. 360° camera on single press). Disable the shortcut on the launcher side then.

Comfort and safety actions re-read the vehicle state on every press: an unreadable state means doing nothing, nothing is ever written blind.

Settings on demand

One Pedal, ADAS and regeneration cycle get their page as soon as the action is assigned.

Learn more

One Pedal fallback regen: the level restored on the second press (High by default). ADAS alternation: the two modes the button toggles between (ACC ↔ Off by default).

Regeneration cycleNew · 2.6.7

Compose the order of levels a button steps through, One Pedal included.

Learn more

Tap the modes in the wanted order, tap again to remove, then Save (at least two modes). A global setting, for every button. Without it: Low → Medium → High → Adaptive, as before.

See every available action
CategoryActions (filtered by firmware)
DrivingOne Pedal (toggles with the fallback level) · Custom Regeneration Cycle · Energy saving
Windows New · 2.6.7Open all windows · Close all windows
SafetyESC · Drowsiness · Drowsiness: sensitivity · Collision system (mode alternation) · ADAS (alternation) · Traffic signs (TSR) · Overspeed alert · Speed-limit change alert · Sound
ComfortLeft / right heated seat (cycle) · Heated wheel · Climate ON/OFF · Climate: temperature ± · Climate: fan ± · Front / rear defrost · Recirculation (cycle) · Brightness ± (10% steps)
MediaPlay / Pause · Next track · Previous track · Volume + · Volume −
App and vehicleApply a profile · Profile picker (popup) · Open MG4Control · Launch an app · Power the car off
Shortcuts

Advanced shortcuts: any key

Almost every physical button in the car, not just the steering wheel: steering-wheel keys, front-panel keys below the screen… as a short, long or double press. Created in three steps: key, press type, action.

Path:

Accessibility service

Enabled once in Android. At rest, it consumes no key.

Learn more

Through it, MG4Control sees the key before the launcher and can consume it. The “Enable accessibility” button opens Android's service list and disappears once access is granted.

Record a key

Tap “Record a key” then the wanted button.

Learn more

Any button whose press reaches the screen can be used. Its name and code show up (left ★ 17, right ★ 286, joystick 297 to 301…); a button with no known name shows its code (“Key 123”) and still works. Tapping the record button again cancels; the wait also times out on its own.

Shortcut list

Grouped by button and press type, with a confirmation before replacing an action.

Learn more

“All profiles” first in each group (display order is resolution order). Edit changes the action and the profile. The confirmation names the action about to be replaced.

Profile-scoped shortcutsNew · 2.6.7

One button does a different thing depending on the current profile.

Learn more

Example: under Motorway, right ★ toggles One Pedal; under Winter, it sets the heated seat. Each shortcut carries a profile (“All profiles” by default).

The profile that counts is the last applied profile, however it was applied: at start-up, over Bluetooth, by the temperature automation or by hand. MG4Control remembers it even after a restart. Changing a setting by hand on the dashboard, however, doesn't change that profile. The virtual vehicle shows the current profile.

On press, that profile's shortcut comes first, otherwise the “All profiles” one. A key is only intercepted if it carries an action for that profile.

Presses without a shortcut keptNew · 2.6.7

A press without a shortcut keeps the button's original function.

Learn more

The press is returned to the system. Assigning the Home button's double press therefore leaves its single press returning to the launcher. The only cost: a 0.3 s delay on a key carrying a double press. In Garage mode, every key is released.

Press lab: short, long or double?

Hold a button: the long press fires at 500 ms, key still held. On a key that also carries a double press, the short press waits another 300 ms. Create an advanced shortcut first to see the difference.

Top bar

Temperature-based automations

Two automations evaluated at start-up, based on the outside temperature.

Try:

Profile by temperature

Above or below a threshold, a profile applies, directly or after confirmation.

Learn more

Threshold from 0 to 60 °C, inclusive. YES / NO popup for 8 s: NO or timeout falls back to the Bluetooth or default profile. Unreadable temperature or deleted profile: the automation is skipped.

Climate by temperature

Two rules, hot and cold, switch the climate on with your settings at start-up.

Learn more

By default: above 28 °C → 20 °C, below 5 °C → 24 °C. Each rule: threshold (−20 to 60 °C), setpoint (15 to 33 °C), fan (1 to 10), defrosters, auto mode and forced recirculation. If both match, “hot” wins. If the last applied profile carries its own climate settings, those win.

AutomationNew · 2.6.7

Power windows

Every window closed or opened in one tap from the screen, and closed automatically when you leave the car. On all six firmwares.

Try:

Close all, open all

Every window in one tap, from the screen or a physical button.

Learn more

The driver's window runs its native automatic travel. The other three, which have no sensor, get the command for the travel time. Close all and Open all are also available as physical-button shortcuts and in the external API. Started from the screen, movement stops if you leave the tab.

Travel time

Windows without a sensor move for an adjustable time: 5 s by default, from 2 to 10 s.

Learn more

Only the driver's window reports its position. For the other three, the app can't tell when the window reaches its end stop: it sends the command for this long. Too short and the window stays ajar, and a tired rear window may need a little more. Five seconds is the value winclose uses on the MG4.

Close when leaving the car

Every window closes when you get out, after an adjustable delay.

Learn more

Car in P and closing armed (speed reached, 20 km/h by default, and/or car on for 5 min). When leaving READY (driver door opened or car switched off), closing after 0 to 30 s (5 s by default), with an optional beep. Going back to READY cancels. Windows without a sensor close for the travel time.

Per-window calibration (advanced)

Optionally, a wizard times each window for a more accurate travel time than the general one.

Learn more

The 4-step wizard times a full descent and ascent (between 0.8 and 15 s), then that window uses its own times. Turning the option off goes back to the general travel time without erasing the measurements. The app can't see the door switches: a travel always lasts the measured time, whatever the window's starting position.

Travels commanded by the app have no anti-pinch protection, except on the driver's window. Keep everyone clear of the windows during a closing, especially an automatic one. Window control builds on winclose (Skittle6938).

Top barNew · 2.6.7

Statistics

Trips, charging and cost. Off by default; everything stays in the car, nothing is sent anywhere.

General

Summary over 30 days or all history: distance, consumption, energy and cost.

Learn more

kWh price for slow and fast charging, currency, usable capacity (62 kWh by default), retention (30 days to 1 year) and “Delete all”. A period's consumption is computed on totals, and a trip's cost follows the average price of energy actually charged. The mockup's data are examples.

Trips

Each trip with its duration, distance, consumption and energy breakdown.

Learn more

A trip runs from one ignition to the next. The breakdown separates motor, climate, accessories, regenerative braking, battery and temperature. On a very short trip, consumption shows as “≈”: the counters only publish tenths of a kWh.

Charging

Energy charged, cost and AC / DC sessions, even while the head unit was off.

Learn more

An overnight charge is reconstructed on wake-up; you can complete it (plug type, times) to get the average power, and fix the tariff of a session.

Top bar

Volume when leaving the car

No more blasting music as you step out of the car.

Try:

Volume dropNew · 2.6.7

Media volume drops to the chosen level when you get out, now on all six firmwares.

Learn more

On SWI133 and SWI132, which report their doors, the trigger stays a front door opening. Elsewhere it's leaving READY in P (driver door opened or car switched off). The slider is capped to the real maximum volume read from the car. Selected firmware: .

Doors and restore

Pick the trigger doors, and get the previous volume back when closing.

Learn more

Left, right or both, handy to react to the driver's door only. Without readable doors (other than SWI133/132), this choice disappears and the restore happens when going back to READY.

Top bar

App settings

Four tabs, everything applies on tap. Change the app language in the mockup: labels come from the real translations.

Try:

Languages

Seven languages, asked on the very first launch and changeable later.

Learn more

Français, English, Deutsch, Español, Português, Italiano and Türkçe.

Interface and text sizeNew · 2.6.7

Start screen, Auto / Dark / Light theme and Standard, Large or Extra-large text.

Learn more

In Auto, the app follows the MG launcher's day/night mode. Text size (+12.5% or +25%) applies to the whole app, popups included, and Turkish joins the languages. Try it in the mockup.

Advanced settings

Garage mode, external API, beta channel, vehicle power-off and speed lock.

Learn more

Info

Updates, About, detected firmware, data usage and diagnostics.

Learn more
  • Check for updates, Clean APK (old downloaded files).
  • About: version, exact firmware, GitHub / GitLab QR codes, thanks.
  • Data usage: today, this week, this month, last 30 days.
  • Diagnostic, revealed by tapping the logo 5 times: a report to copy or download for bug reports.

Unrecognised firmware

A warning shows, then you can force a compatibility mode.

Learn more

The warning shows the raw detected version and offers Close the app or Continue. The chips in Settings → Info then become tappable; the choice is saved and survives restarts.

Advanced settingsNew · 2.6.7

Garage mode

One switch puts MG4Control fully to sleep, without erasing anything. Designed for leaving the car at a workshop.

Try:

What's suspended

Shortcuts, start-up profile, automations, external API and update alerts.

Learn more
  • Physical buttons get their original function back (classic and advanced shortcuts).
  • No profile at start-up (Bluetooth included), no temperature automation.
  • Nothing triggers when leaving: no volume drop, no window closing.
  • Third-party commands refused, no update alert on screen.

What still works

Opening the app and applying a profile by hand. Switching back off restores everything as it was.

Learn more

While it's on, the persistent notification says MG4Control is asleep, so a forgotten mode doesn't look like a failure. Anyone who had unchecked the old “automatic application” switch is carried over with Garage mode on.

Safeguards

Speed lock and power-off

The lock applies to everything that writes to the vehicle: the app, profiles, shortcuts and the external API.

Try:

Speed lock

Above the chosen speed, driving settings are refused with a message.

Learn more
  • Off by default: no limit applies until it's enabled.
  • Allowed up to the chosen speed, inclusive.
  • Unreadable speed = refusal (fail closed).
  • Comfort (seats, wheel, climate) is never affected.

Power the car off, screen on

Powers the vehicle down while keeping music and navigation, lever in P only.

Learn more

Mirrors the MG launcher's “Vehicle Power → Off”. Available in Settings, the profile picker and shortcuts. The app checks the lever before the confirmation, then again when sending. Deliberately left out of the external API.

Decision simulator

Replica of VehicleWriteGate.decide() for a driving setting.

Settings · Info

Built-in updates

The app checks GitHub for new releases (GitLab as fallback) and installs the APK after checking it.

Try:

Alert on the vehicle screenNew · 2.6.7

A message announces the new release without opening the app, never while driving.

Learn more

Install update opens the usual dialog, Skip this version stops offering it, Stop telling me turns the alert off; tapping the background means “later”. Check 20 s after ignition, 6 h minimum between requests, only once per session.

Stable or beta

Stable channel by default, beta channel for pre-releases.

Learn more

The stable release then replaces the latest beta of the same number, never the other way round. “Don't remind me” skips a given version.

Safe download

The APK must come from GitHub or GitLab and carry the same signature, otherwise it's deleted.

Learn more

Without Wi-Fi, a warning reminds you about 10 MB will go through the car's mobile data. Manual install is possible: QR code to the releases, a FAT32 USB stick and the file manager. The offline variant has neither network nor automatic updates.

For power users

External API: KeyMapper, Tasker, adb

A third-party app can trigger MG4Control features and read the vehicle state. Disabled by default: while it is, every command is refused and logged.

Test console

Build a command, copy it for your car, or send it to the virtual vehicle to see how the app answers. Enable the API in the mockup's Settings first.

API reference

Direct actions (KeyMapper)

No extra needed. In KeyMapper (2.3.0+): Intent action → Broadcast receiver type → paste the string. Each send flips the state.

  • com.mg4.control.action.ONE_PEDAL
  • com.mg4.control.action.ENERGY_SAVING_TOGGLE
  • com.mg4.control.action.PROFILE_PICKER
  • com.mg4.control.action.OPEN_APP

EXECUTE (every shortcut action)

Text extra action = name of a shortcut action (REGEN_CYCLE, SEAT_HEAT_LEFT_CYCLE, WINDOWS_CLOSE_ALL…). APPLY_PROFILE needs a profile extra.

Deliberately outside the API: VEHICLE_POWER_OFF, ADAS_CYCLE, AEB_CYCLE, TSR_TOGGLE, OVERSPEED_ALARM, SPEED_LIMIT_TONE, SOUND_WARNING.

SET · keyvalueNotes
drive_modeECO NORMAL SPORT SNOW CUSTOMNot cyclable.
regenOFF LOW MEDIUM HIGH ADAPTIVE ONE_PEDAL
seat_heat_left · seat_heat_right0, 1, 2, 3Cyclable (NEXT / PREV / TOGGLE).
steering_heat0/1, false/true
profileprofile nameNot cyclable.
hvac_power · ac · hvac_auto0/1Cyclable. Setpoint and fan clamped to bounds read from the vehicle.
hvac_temp · hvac_fan°C · level
hvac_recircINNER OUTSIDE AUTO
defrost_front · defrost_rear0/1

Reading the state

content://com.mg4.control.state/state (com.mg4.control.offline.state for the offline variant) returns one row with mode, regeneration, heating, speed, outside temperature, firmware and profiles. An unreadable value is null, never 0.

Security and diagnostics

Once enabled, any installed app can send these intents. Every read is logged and the external_api_allowlist preference filters packages. The speed lock applies to the API.

adb logcat -s MG4_API

Compatibility by firmware

MG4 Electric (SAIC), MT2712 head unit, Android Automotive 9+, 1280 × 480. The highlighted column follows the firmware picked for the mockup.

FeatureSWI133SWI132SWI68SWI69SWI131SWI165
Drive mode · regeneration · energy saving✓✓✓✓✓✓
ADAS selector (5th mode)ICAICATJATJATJATJA
Traffic sign recognition (TSR)✓✓✓✓✓✓
Overspeed + speed-limit change alerts✓✓✕✕✕✕
Single audible warning✕✕✓✓✓✓
Forward collision (AEB)✓✓✓✓✓✓
Lane keeping (ELK)✓✓ no emergency, + sound/vibration✓✓✓✓
ESC · drowsiness · sensitivity✓✓✓✓✓✓
Heated seats and wheel✓✕✓✕✕✓
Climate (setpoint, fan, modes)✓✓✓✓✓✓
Screen brightness✓✓✓✓✓✓
Volume drop when leaving (Audio) New · 2.6.7✓ doors✓ doors✓ READY✓ READY✓ READY✓ READY
Custom mode (power, steering, pedal) New · 2.6.7✓✓✓✓✓✓
Air direction New · 2.6.7✓✓✓✓✓✓
Power windows New · 2.6.7✓✓✓✓✓✓
Statistics · Garage mode · text size New · 2.6.7✓✓✓✓✓✓
Power the vehicle off (screen on)✓✓✓✓✓✓
Profiles · shortcuts · automations · API✓✓✓✓✓✓

SWI133, SWI68, SWI165 use the older SAIC SDK, SWI69, SWI131, SWI132 the “A9” family. MG4Control uses several paths (Android Automotive Car API, direct binder, firmware ADAS services) and falls back automatically if one fails.

Installation

Every release ships two variants: Online (standard use, automatic updates) and Offline 🔒 (no network access). Install just one.

  1. Download the APK from the GitHub releases. Already installed? Update from the app (Settings → Info).
  2. Copy it to a FAT32-formatted USB stick.
  3. Plug the stick into the MG4 and open the file manager (access to the AAOS settings).
  4. Install the APK, open MG4Control and pick your language.

Build it yourself

Android Studio Hedgehog (2023.1)+, JDK 17+, SDK API 34.

./gradlew assembleOnlineDebug
# app/build/outputs/apk/online/debug/

The app runs with the system identity (android.uid.system): it must be signed with the ROM key.

MG4Control is an independent community project, not affiliated with, endorsed or supported by MG Motor, SAIC Motor or any of their subsidiaries. Use it entirely at your own risk: incorrect settings may change the vehicle's behaviour. Proceed with caution.