More Mazda 6 diggings.. Audio

buttons-36036_960_720If you read my previous post on the subject, you are aware of the neat possibilities of the Mazda Infotainment system on 2015+ vehicles.  I’ve been pretty busy with other things to dig too deeply unfortunately but I did get a chance to dig a little deeper into the audio UI code.

As I mentioned this is all a web app that’s running on an embedded Opera browser. So anyone handy with Javascript should be able to get themselves into all sorts of trouble.

Jason commented about how he’d like to look more into the Audio controls, which makes a tons of sense to address first because I’m pretty sure all of us use the audio player more than anything else in the vehicle.

More details

I looked in the gui/apps/ folder to see what was there. A few things of interest:

  • usbaudioApp – Handles talking to your USB stick, playing and indexing the audio files there.
  • btaudio – Bluetooth audio obviously.
  • audiosettings – This is Jason’s interest I assume.
  • amradio – take a guess
  • fmradio – yep. am’s best buddy.
  • cd – maybe a silver disk type thing.
  • pandora – music service
  • satradio – satellite radio controls if you have installed.
  • stitcher – stitcher’s app. (uhg.. could be so much better.)
  • aharadio – the aha app
  • dvd – DVD? huh? This deserves more investigation.

There are a few other apps that peaked my interest as well, but that’s another post probably. Let’s look at the audiosettings App.

Most of the app folders seem to consist of a js/ folder, a css/ folder and maybe an images/ folder. Makes sense for a web app. I dug into the JS folder which had just a single audiosettingsApp.js file. Here’s the header:

 Copyright 2012 by Johnson Controls

 Filename: audiosettingsApp.js

 Project: JCI-IHU
 Language: EN
 Author: aalangs
 Date: 25-July-2012

 Description: IHU GUI Audiosettings App

 v0.1 (31-Jul-2012) New message handlers have been added to handle
                    AudioSettingsStatus and VolumeSettingsStatus - aalangs
 v0.2 (02-Aug-2012) New message handlers have been removed to handle
                    AudioSettingsStatus and VolumeSettingsStatus
                    Control title is updated as per the payload data - aalangs
 v0.3 (07-Aug-2012) AudioSettingsStatus and VolumeSettingsStatus are updated
                    in audio title instead of control title - aalangs
 v0.4 (03-Sep-2012) Merged to match the SCR framework related changes - aalangs
 v0.5 (12-Sep-2012) Merged ump control changes as per SCR - SCR00098475 - aalangs
 v0.6 (24-Sep-2012) Generated English dictionary using dictionary compiler.
                    Closed GENERAL COMMENTS ACROSS APPS given by Arun - arsu
 v0.7 (01-Oct-2012) Updated with sliders & toggle button as per latest doc - arsu
 v0.8 (03-Oct-2012) Review comments closed by Petar - arsu
 v0.9 (12-Oct-2012) AutoVolume Range is changed to 0 to 7 - arsu
 v1.0 (30-Oct-2012) Updated to close SCR SW00100965 as per notes from Douglas
                    & Chris - aalangs, arsu
 v1.1 (31-Oct-2012) Added upadte from Alexander for hiding HUD tab - aalangs
 v1.2 (06-Nov-2012) Updated to - support removing the menu optons if
                    Bose unavalable or not & removed diagnostic
                    Activation - aalangs
 v1.3 (08-Nov-2012) Added support for App Name in Status Bar - aalangs
 v1.4 (15-Nov-2012) Added volume display patch on Status Bar - aalangs
 v1.5 (20-Nov-2012) Updated to match new common design - aalangs
 v1.6 (26-Nov-2012) Updated to use slider methods as per new ListCtrl design - aalangs
 v1.7 (13-Dec-2012) Updated as per new UI spec changes - aalangs
 v1.8 (07-Jan-2013) Updated to use List2Ctrl - text truncation - aalangs
                    Removed VolumeTab - aalangs
 v1.9 (29-Jan-2013) Added support to remove auto volume when bose is detected
                    - amanthma
 v1.10(29-Jan-2013) Removed check for finalAdjustment in _listMainSlideCallback
                    - amanthma
 v1.10(08-Feb-2013) Added left button style as Go Back - amanthma
 v1.11(27-Feb-2013) Added context validity checks & helper functions - aalangs
 v1.12(21-Mar-2013) Volume requirement change SBN implementation - aalangs
 v1.13(10-Apr-2013) Clock Settings moved to Clock Tab - amanthma
 v1.14(12-Apr-2013) Support removal of HUD tab using shared data - aalangs
 v1.15(19-Apr-2013) Update gui audiosettings app to use string ids of common
                    dictionary - 3.80 (latest) - aalangs
 v1.16(13-May-2013) Support removal of HUD tab using shared data corrections - aalangs
 v1.17(13-May-2013) Implement Global GoBack - aalangs
 v1.18(15-May-2013) Correction added to HUDStatus check - aalangs
 v1.19(22-May-2013) Convert Amplifier Volume to String when sending to sbnctrl - aalangs
 v1.20(31-May-2013) use registered and trademark symbols for Bose features - aalangs
 v1.21(05-June-2013) GUI App must specify tabsGroup - aalangs
 v1.22(07-June-2013) Use string ids for left and right labels instead of just strings - aalangs
 v1.23(17-June-2013) Max Volume on the GUI is set to 63 instead of 64 for SBNs - aalangs
 v1.24(18-June-2013) GUI_AUDIOSETTINGS Truncation Ideation Updates - aalangs
 v1.25(08-July-2013) Changed the list item style for Fade and Balance to pivot - aalangs
 v1.25(22-July-2013) Updated toggle API for styleOnOff - aalangs
 v1.26(26-July-2013) Updated to show tick marks on sliders - aalangs
 v1.27(26-July-2013) Updated to include missing conditions for Beep etc - aalangs
 v1.28(30-June-2014) Updated to include J03K Bose Configuration


Looking further you see a typical Javascript prototyped object class. No jQuery here folks, this is real javascript. I’ve been working with Dojo so much I had to think about what a prototype was again. Sad. Anyway..

Sum it up..

There’s lots of code to setup the interface. Nothing too exciting there, but I noticed there seems to be support for two audio systems, the factory standard (which is what I have) and the Bose audio system. Not a lot different between the two, notably a ‘audioPilotValue’ variable for the Bose system, which I have no idea what that is. Also Bose seems to support an ‘audioCenterPoint’ function, which I can’t really play with either.

When you change the controls in the UI, the javascript sends commands to  framework.sendEventToMmui() which I assume is the interface to the hardware. Unfortunately it seems all the magic happens there. This application just is an interface for the UI to that. Boring.

More later..



Like or share:

1 comment on “More Mazda 6 diggings.. AudioAdd yours →

  1. I was able to download pretty much the whole system from / to my PC, and found some random stuff, but no “jackpot”.

    /etc/asound.conf has some settings (there are LHD and RHD files that are symlinked depending on driving position)

    /usr/share/audio_management has some lua files that call into XSE stuff (I think this is XS Embedded which Mentor Graphics bought in 2014).

    There are some files in jci/dsp/*.xml. The J* in the filename seems to represent the car’s locale/version but the settings seem related to Bluetooth only (there are what appear to be some equalizer settings in the J*.xml files).

    So far, haven’t been able to find any exposed frequency shaping settings.
    Is there any way to reverse engineer the shared libraries to see what the code is doing?

    There is a person who called out his own (full) name in the comments of one of these files; I am tempted to ask him for more information.

Leave a Reply

Your email address will not be published. Required fields are marked *