Skip to content

Stock Firmware Bugs ScreenTune Patches

Some Mazda Connect annoyances aren’t your car wearing out — they’re bugs that shipped in the factory code and have stayed there through every firmware version. They affect every Gen 6 vehicle regardless of modifications. Because ScreenTune patches the same files Mazda ships, it’s in a position to fix a few of them. Here’s the one most owners actually feel.

Websocket message ordering (GUI framework)

Section titled “Websocket message ordering (GUI framework)”

Affected firmware: all Gen 6 MZD Connect versions, v55 through v74.

Symptoms: stale screens after switching apps, missed transitions when a phone call comes in, or the UI briefly showing the wrong view after you dismiss a popup. Tap an audio source and the screen flickers but doesn’t fully change, so you tap again. It shows up most during rapid interaction — flipping between audio sources, taking a call mid-menu, clearing an alert.

Root cause: two functions in the GUI framework’s websocket layer, _isStack and _delStack in Websockets.js, are written as standalone JavaScript functions but called as object methods via this._isStack(). They were meant to be prototype methods and were never attached to the Websockets prototype. Every call throws a TypeError and silently fails.

Those functions are part of the message reordering system. When the MMUI (the main UI controller) sends commands to the GUI over an internal websocket, messages can arrive out of order. The reordering system queues them and replays them in sequence. With _isStack broken:

  • After a focus stack update, any queued screen transition for the same sequence is never delivered. The GUI updates focus but drops the matching visual transition.
  • After a context change (switching apps), queued focus and transition messages are never flushed. The GUI switches context but the screen doesn’t update to match.

The error fires on every boot — 225 times per boot cycle in our logs. Each occurrence is a dropped message that should have triggered a screen update.

What ScreenTune changes: the two standalone functions become proper prototype methods on the Websockets object. Nothing else is touched. The fix is two lines:

function _isStack( → Websockets.prototype._isStack = function(
function _delStack( → Websockets.prototype._delStack = function(

Risk: minimal. Both functions already reference this._waitMsgArray internally, so they were always meant to run with this bound to the Websockets instance. The fix makes them work as designed. Without it, they throw on every call and do nothing.

This patch fixes a software defect in the UI layer. It does not address hardware faults — a failing touch digitizer (ghost touch), a CMU that black-screens and reboots, or a dying 12V battery are separate problems with separate causes. If your screen issue is physical, the firmware fix won’t reach it.