COMBO HMI ENGINEERING MENU in Audi MHI2

From MIB-Helper.com Wiki
Jump to navigation Jump to search

By looking at the LSD.JXE and digging inside the key combos, it seams that there's a HMI hidden menu in Audi, Porsche, and Bentley builds.

What's the key combination for HMI_EM?

Keycode ID for it is 26, and it's called KEY_COMBO_HMI_EM. Here's part of the code responsible for triggering the menu:

private void triggerComboKeyAction(int n, int n2) {
 int n3 = this.getComboKeyCombination(n, n2);
 if (n3 == 8) {
  if (!this.framework.isPBuild()) {
   this.kbdListener.triggerHmiKeyPressedEvent(26, this.key1TerminalID);
  }
 }
}

What does it mean? Allow me to fill in couple variables with specific values:

private void triggerComboKeyAction(3, 11) { //this is triggered by key TEL (3) and SW_NE (11)
 int n3 = this.getComboKeyCombination(3, 11); // this will return n3 = 8
 if (n3 == 8) {
  if (!this.framework.isPBuild()) { //this checks if the build is NOT flagged as production release
   this.kbdListener.triggerHmiKeyPressedEvent(26, this.key1TerminalID); //this triggers the HMI_EM (26) keycode
  }
 }
}

SW_NE is the upper-right software button. Sadly it is not present in Audi A3 8V facelift.

How to mark release as not production build?

Let's check how the isPBuild() function looks like.

public boolean isPBuild() {
 return this.getVersionInfo().isProductionVersion();
}

...and let's look for the isProductionVersion() function.

public boolean isProductionVersion() {
 return Boolean.getBoolean("IS_PRODUCTION_MODE");
}

This looks like one of the VMOPTIONS flag. So let's modify the run_lsd.sh script by editing this part and setting it to false:

## Mark as production version which disables some developer features
VMOPTIONS="$VMOPTIONS -DIS_PRODUCTION_MODE=false"