As many of you know, the Google Earth (GE) image overlay for vector maps was officially "turned off" for Audi vehicles with GE client software in December 2020. Then, in late March 2021, various users reported that the GE image overlay started working again, without warning, though the official word from Audi was that the Google Earth service was no longer supported.
Fast forward to late December 2021 and we find that the GE image overlay service continues to work (mostly) in some MMI3G+ systems (like ours with 3G data from AT&T) but not in others.
In the hopes of teasing out why GE hangs on some (many?) MMI 3G+ systems, I put together a set of MMI SD card scripts to (1) capture message output from the QNX gemmi_final process to plain-text log files, (2) retrieve these log files from the MMI HDD to the SD card, and (3) restore the original GEMMI startup script and archive & delete the gemmi_final log files from the MMI HDD.
Inspection of the QNX process listing from pidin shows that the gemmi_final process is launched by shell script /mnt/nav/gemmi/run_gemmi.sh, which is itself a background process called by shell script /usr/bin/run_gemm.sh; this latter shell script is always executed by system process srv-starter-QNX when the MMI system is started. To capture output from the gemmi_final process, I added output redirection to the gemmi_final command line in new shell script /mnt/nav/gemmi/run_gemmi.sh-logger. I also enabled (1) output of ROME events (?) and (2) the connection status overlay from the gemmi_final command line arguments in this script.
More on gemmi_final command line arguments here:
Output of gemmi_final messages from startup to shutdown for our A4q looks like this:
Given that GE works properly in our A4q, the log file is somewhat interesting, but doesn't given any obvious clues as to why GE hangs for other 3G+ clients.
Here's where the community might offer some collective insights.
The first of my SD card scripts (gemmi4.zip) is here:
drive.google.com
This script will look for the custom /mnt/nav/gemmi/run_gemmi.sh-logger file; if the script finds the file, no changes are made. If the script doesn't find the custom logger file, it renames the original run_gemmi.sh to run_gemmi.sh-k9426, copies the run_gemmi.sh-logger script to /mnt/nav/gemmi, and creates a (hard) link from run_gemmi.sh-logger to run_gemmi.sh. After the SD card script finishes and the SD card is removed, the MMI system must be restarted to use the new run_gemmi.sh-logger script.
The second SD card script (gemmi5.zip) is here:
drive.google.com
This script retrieves information from the MMI system: (1) it captures the QNX process listing to the script log file run-TIMESTAMP.log; (2) the script copies any gemmi_final log files to the var folder of the SD card; and (3) copies the GoogleEarthPlus.conf file to the var folder of the SD card.
We're interested in seeing output captured in the gemmi_final log files in cases where the GE overlay tries to start but hangs.
The third SD card script (gemmi6.zip) is here:
drive.google.com
This script restores the original /mnt/nav/gemmi/run_gemmi.sh shell script and moves (copies then deletes) any gemmi_final log files to the var folder of the SD card to archive. The MMI system must be restarted to use the original run_gemmi.sh shell script.
Of course, none of this will matter much when AT&T turns off its 3G data network in the next couple of months (but it's still worth investigating in case an alternate data solution becomes available, IMHO). --g
Fast forward to late December 2021 and we find that the GE image overlay service continues to work (mostly) in some MMI3G+ systems (like ours with 3G data from AT&T) but not in others.
In the hopes of teasing out why GE hangs on some (many?) MMI 3G+ systems, I put together a set of MMI SD card scripts to (1) capture message output from the QNX gemmi_final process to plain-text log files, (2) retrieve these log files from the MMI HDD to the SD card, and (3) restore the original GEMMI startup script and archive & delete the gemmi_final log files from the MMI HDD.
Inspection of the QNX process listing from pidin shows that the gemmi_final process is launched by shell script /mnt/nav/gemmi/run_gemmi.sh, which is itself a background process called by shell script /usr/bin/run_gemm.sh; this latter shell script is always executed by system process srv-starter-QNX when the MMI system is started. To capture output from the gemmi_final process, I added output redirection to the gemmi_final command line in new shell script /mnt/nav/gemmi/run_gemmi.sh-logger. I also enabled (1) output of ROME events (?) and (2) the connection status overlay from the gemmi_final command line arguments in this script.
More on gemmi_final command line arguments here:
MMI3GP Google Earth Command Line Arguments and Configuration File
The following command-line arguments were teased out of the QNX binary gemmi_final from the K0942_6 MMI3GP software update using strings(1) on a Linux system; arguments used in the run_gemmi.sh script are noted: -alternatebackgroundprocess Turn on/off workaround for alternate route...
www.audizine.com
Output of gemmi_final messages from startup to shutdown for our A4q looks like this:
Code:
CURL VERSION: libcurl/7.26.0 zlib/1.2.3 c-ares/1.7.3
|Information| PID:462926-TID:1 File: gemmi_final.cc; Function: main; Line: 624;
MSG: --------< Starting GEMMI Google Earth >--------
|Information| PID:462926-TID:1 File: gemmi_final.cc; Function: main; Line: 626;
MSG: g_gemmiVersion:0x08001900 8.0.25
|Information| PID:462926-TID:1 File: gemmi_final.cc; Function: main; Line: 627;
MSG: ===============================================
Running /mnt/nav/gemmi//mnt/nav/gemmi/gemmi_final, built on Feb 17 2015 at 19:14:43
[AROMA]: No socket on port 4711 start using resmgr ...
***************************************
** Communication library for GEMMI **
** Version: REL_2.1.4 (trunk) **
** Comment: Tested and verified with **
** MMI3GPlus_DSI_2011_10_10 **
** (using resmgr) **
***************************************
GEMMI: Waiting for ROME client to start up...
GEMMI: ROME client ready.
GEMMI: Sending startup sequence...
GEMMI: Startup sequence sent.
***************************************
*** ***
*** Google Earth on the MMI - GEMMI ***
*** With Street View ***
*** release build ***
*** ***
*** 8.0.25 ***
*** ***
***************************************
gemmi_final: Setting road width scale factor to 0.011600.
gemmi_final: Setting initial prefetch to 1.
gemmi_final: enabling ROME event printouts.
gemmi_final: Setting poi threshold speed to 50 km/h.
gemmi_final: Setting LOD mode to 12.
gemmi_final: Setting roadnamescale to 0.850000
gemmi_final: Setting roadnamecolor to ffd0ffff
gemmi_final: Disabling frame stats console printout.
gemmi_final: Setting min sleep time to 10.0000ms.
gemmi_final: Setting max frame rate to 12.0Hz.
gemmi_final: Setting max GE memory usage to 55MB.
gemmi_final: Setting target GE memory usage to 40MB.
gemmi_final: Setting max ping RTT to 2000.0 milliseconds.
gemmi_final: Successfully set traffic region to 0.
gemmi_final: Setting Street View Texel Density: 2.000000
gemmi_final: Connection status overlay enabled.
GEMMI: Get Hydra Client Instance
HYDRAGOOGLECLIENT_VERSION HydraGoogleClient v5.0.3
HYDRAGOOGLECLIENT_DATE 2011-07-20
Starting thread CPAttributeupdateThread
ConnectAttach = 1073741831
Starting thread CPTimeoutThread
CPTimeoutThread::run --- wait
Starting thread HydraGoogleProxyImplThread
CSPHydraGoogleProxyImpl::componentConnected
GEMMI: Setting All HYDRA Notifications: car, container, layer, RGA, ON/OFF
delte oMsgList.Data 101868ac size 0 8
INFO: Using OpenGL Context.
Created Google Earth Module version 5.2.0.6394, API version 0.9.0
INFO: EGL already initialized -- using pbuffer mode
INFO: EGL Version String: 1.3
INFO: EGL Vendor String: NVIDIA
INFO: EGL Extensions String: EGL_create_pbuffer_from_client_buffer EGL_KHR_bind_client_buffer EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_gl_texture_2D_image
EGL_KHR_gl_texture_cubemap_image EGL_KHR_vg_parent_image EGL_NV_nvma_image EGL_NV_client_api_nvma EGL_NV_system_time EGL_NV_nullwindow
/mnt/img-cache/gemmi/temp/svtn*: No such file or directory
Setting lookat to absolute
Max video mem set to 13 MB
frame 0: OnBeginLogin()
Starting to log in
On logged In online = 0
We are offline. NOT_LOGGED_ IN set
frame 28: OnEndLogin()
Max video mem set to 13 MB
Finished attempted (failed) log in, took 3.055644s
Earth is ready to draw on frame 21
frame 33: OnLayersReady()
onEvent::MsgSetLayerVisibilityRequest 3 layers visible
Offline. View good, sending RENDERER_RECOMMENDED to show the Google Earth map
onEvent::MsgSetLanguageRequest en_US
onEvent::MsgSetConnectionInformationRequest state is now 255, 2
hmiMessage::SCI - SetConnectionInformation: 255
onEvent::MsgSetMetricSystemRequest 3
onEvent::MsgSetConnectionInformationRequest state is now 2, 2
onEvent::MsgSetDayViewRequest
onEvent::MsgShowTMCMessagesRequest 1
onEvent::MsgSetViewTypeRequest 3
unexpected view type 3 defaulting to 3D
onEvent::MsgSetCarPositionRequest 400 341
onEvent::MsgSetOrientationRequest 0
onEvent::MsgSetModeRequest 1
onEvent::MsgSetZoomLevelRequest 2
onEvent::MsgViewSetVisibleRequest 0/1
onEvent::MsgViewFreezeRequest 0
hmiMessage::SCI - SetConnectionInformation: GPRS
Network up on frame 614
onEvent::MsgSetZoomLevelRequest 3
...
onEvent::MsgSetZoomLevelRequest 2
onEvent::MsgViewSetVisibleRequest 0/0
onEvent::MsgViewFreezeRequest 1
onEvent::MsgViewFreezeRequest 0
onEvent::MsgSetConnectionInformationRequest state is now 1, 2
hmiMessage::SCI - SetConnectionInformation: CONNECTING
onEvent::MsgSetConnectionInformationRequest state is now 2, 2
hmiMessage::SCI - SetConnectionInformation: GPRS
STARTING SHUTDOWN PROCESS
Shutdown Earth 1
...
Shutdown Earth 11
Before Stop Ref = 531
starting to log out
onEvent::MsgSetConnectionInformationRequest state is now 0, 2
Here's where the community might offer some collective insights.
The first of my SD card scripts (gemmi4.zip) is here:
gemmi4.zip

This script will look for the custom /mnt/nav/gemmi/run_gemmi.sh-logger file; if the script finds the file, no changes are made. If the script doesn't find the custom logger file, it renames the original run_gemmi.sh to run_gemmi.sh-k9426, copies the run_gemmi.sh-logger script to /mnt/nav/gemmi, and creates a (hard) link from run_gemmi.sh-logger to run_gemmi.sh. After the SD card script finishes and the SD card is removed, the MMI system must be restarted to use the new run_gemmi.sh-logger script.
The second SD card script (gemmi5.zip) is here:
gemmi5.zip

This script retrieves information from the MMI system: (1) it captures the QNX process listing to the script log file run-TIMESTAMP.log; (2) the script copies any gemmi_final log files to the var folder of the SD card; and (3) copies the GoogleEarthPlus.conf file to the var folder of the SD card.
We're interested in seeing output captured in the gemmi_final log files in cases where the GE overlay tries to start but hangs.
The third SD card script (gemmi6.zip) is here:
gemmi6.zip

This script restores the original /mnt/nav/gemmi/run_gemmi.sh shell script and moves (copies then deletes) any gemmi_final log files to the var folder of the SD card to archive. The MMI system must be restarted to use the original run_gemmi.sh shell script.
Of course, none of this will matter much when AT&T turns off its 3G data network in the next couple of months (but it's still worth investigating in case an alternate data solution becomes available, IMHO). --g