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.
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.
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.
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.
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.
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.
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.
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.
★ button shortcuts
The steering wheel's two ★ buttons trigger the action of your choice, out of more than 35.
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
| Category | Actions (filtered by firmware) |
|---|---|
| Driving | One Pedal (toggles with the fallback level) · Custom Regeneration Cycle · Energy saving |
| Windows New · 2.6.7 | Open all windows · Close all windows |
| Safety | ESC · Drowsiness · Drowsiness: sensitivity · Collision system (mode alternation) · ADAS (alternation) · Traffic signs (TSR) · Overspeed alert · Speed-limit change alert · Sound |
| Comfort | Left / right heated seat (cycle) · Heated wheel · Climate ON/OFF · Climate: temperature ± · Climate: fan ± · Front / rear defrost · Recirculation (cycle) · Brightness ± (10% steps) |
| Media | Play / Pause · Next track · Previous track · Volume + · Volume − |
| App and vehicle | Apply a profile · Profile picker (popup) · Open MG4Control · Launch an app · Power the car off |
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.
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.
Temperature-based automations
Two automations evaluated at start-up, based on the outside temperature.
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.
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.
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).
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.
Volume when leaving the car
No more blasting music as you step out of the car.
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.
App settings
Four tabs, everything applies on tap. Change the app language in the mockup: labels come from the real translations.
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
- Garage mode, replacing the old automatic-application switch.
- External API, with explicit confirmation when enabling.
- Update check at launch, alert on the vehicle screen and beta channel.
- Power the vehicle off while keeping the screen on, and speed lock (0 to 250 km/h).
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.
Garage mode
One switch puts MG4Control fully to sleep, without erasing anything. Designed for leaving the car at a workshop.
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.
Speed lock and power-off
The lock applies to everything that writes to the vehicle: the app, profiles, shortcuts and the external API.
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.
Built-in updates
The app checks GitHub for new releases (GitLab as fallback) and installs the APK after checking it.
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.
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.
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_PEDALcom.mg4.control.action.ENERGY_SAVING_TOGGLEcom.mg4.control.action.PROFILE_PICKERcom.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 · key | value | Notes |
|---|---|---|
drive_mode | ECO NORMAL SPORT SNOW CUSTOM | Not cyclable. |
regen | OFF LOW MEDIUM HIGH ADAPTIVE ONE_PEDAL | |
seat_heat_left · seat_heat_right | 0, 1, 2, 3 | Cyclable (NEXT / PREV / TOGGLE). |
steering_heat | 0/1, false/true | |
profile | profile name | Not cyclable. |
hvac_power · ac · hvac_auto | 0/1 | Cyclable. Setpoint and fan clamped to bounds read from the vehicle. |
hvac_temp · hvac_fan | °C · level | |
hvac_recirc | INNER OUTSIDE AUTO | |
defrost_front · defrost_rear | 0/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.
| Feature | SWI133 | SWI132 | SWI68 | SWI69 | SWI131 | SWI165 |
|---|---|---|---|---|---|---|
| Drive mode · regeneration · energy saving | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ADAS selector (5th mode) | ICA | ICA | TJA | TJA | TJA | TJA |
| 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.
- Download the APK from the GitHub releases. Already installed? Update from the app (Settings → Info).
- Copy it to a FAT32-formatted USB stick.
- Plug the stick into the MG4 and open the file manager (access to the AAOS settings).
- 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.