Open jilleb opened 1 year ago
cannot test it now but latest version should produce something as this:
i keep receiving following error message
root@mmx:/mnt/app/root> on -f mmx /net/mmx/mnt/app/eso/bin/apps/pc i:1304:211 [PersistenceClient::getIntResult] error: result == DOES_NOT_EXIST
-1
root@mmx:/mnt/app/root>
other than that it is working :-)
maybe following data can be also loaded from some persistence channels? (maneuvr, destination dist)
In the car right now, going through the green menu to see what other live data is displayed there.
Dead reckoning has Speed and Heading Map position has height Road attributes has current street, distance to next move, exit name, Heading
In the past I wrote a persistence address scanner, that would go over a range of addresses to see whats there. I never used it while driving, or navigating/playing audio in Android Auto, so maybe there's more useful info there.
If only we could get the exlap data from the console... Then we would have whatever data we want! Transmission temperature would be the most interesting.
Can you specify which script it is using? Also please specify full path where you find this so i can try to replicate at my car.
Yes, I'm in the office now so I can check the .esd files to see where they get their data. I'll get you a list of persistence addresses for these data elements in about an hour.
The following elements are found in the green engineering menus (esd files), which all represent persistence coding addresses we can call with the pc command:
(format I used here is: <label>: <type> per <partition> <address>
)
speed: int per 0x01c500e6 108 heading: int per 0x01c500e6 109 angular velocity (deg/sec): int per 0x01c500e6 101
road attributes: 0x01c500e6 111 this contains the following data elements (name, type, size):
map position: 0x01c500e6 110 this contains the following data elements (name, type, size):
About the AndroidSensors, address 1304 210 holds the update frequency.. If it's 0, the data isn't refreshed. So I think we need to set:
on -f mmx /net/mmx/mnt/app/eso/bin/apps/pc i:1304:210 1
And then the ones you tested above that lead to a -1 could possibly work?
Hopefully, then the Android sensor data will provide some information.
I need to check the other addresses in this 1304 range to see what else is there, while I'm playing music in Android and/or navigating in Maps/Waze.
During a persistence scan in 2020, I found the following addresses to be valid within this partition:
And then there are some other data elements related to media, although I haven't checked them yet: PSD Artist: String per 1 0x00012021 PSD Title: String per 1 0x00012020
And these could be useful for a proof of concept: WLAN name: Blob per 28836065 40 WLAN password: Blob per 28836065 39 TMC message: Blob per 29688038 210 GPS coordinates: Blob per 29688038 504
I got data from these.
To get the data it's always like this:
on -f mmx /net/mmx/mnt/app/eso/bin/apps/pc b:28836065:40
where b = blob, s = string, i=integer
I'll search some more elements. Edit, more data elements:
Driving state: String 0x01be00df 501 Think blue score: int 0x01be00df 502 Vehicle Acceleration: int 0x01be00df 503 And some experimental ones in the same area I didn't validate: Vehicle speed: int 0x01be00df 504 Car in reverse (boolean): int 0x01be00df 505 Car driving (boolean): int 0x01be00df 506 Engine: String 0x01be00df 507 2nd Engine: String 0x01be00df 508 Gear type: String 0x01be00df 509
Did some more research, unfortunately i don't have access to the MIB2 at work, because that would make life easier. There's a developer script, rdActivateSDIS.sh:
#!/bin/sh
. "/scripts/commonConfigExchange.sh"
setup_mmx()
{
${MOUNT} -uw "/mnt/system"
${MV} "${MMX_CFG_DIR}/rdiserver.json" "${MMX_CFG_DIR}/rdiserver_exlap.json"
${MV} "${MMX_CFG_DIR}/rdiserver_full.json" "${MMX_CFG_DIR}/rdiserver.json"
${MOUNT} -ur "/mnt/system"
${SYNC}
slay rdiserver
}
if [ -e "${MMX_CFG_DIR}/rdiserver_full.json" ] ; then
setup_mmx
${ECHO} "Done."
else
${ECHO} "Target is already configured for sdis communication."
fi
no idea what this does, but the contents of rdi_server_exlap.json is as follows:
{
"baselibname" : "exlap_plugin",
"path" : "/eso/bin/apps/",
"ignore_plugin_errors" : true,
"supervision" : {
"queue_error_level" : 200,
"queue_warning_level" : 150,
"queue_stay_time_ms" :1000,
"update_cycle_ms" : 4000
},
"datastorage" : {
# location where to store the files
"location" : "/tmp/",
# maximum filesize for one file in kilobyte
"max_file_size_in_kb" : 2000
},
"connectivity" : {
"add_dlink" : false,
"add_local" : true,
"bind_retry_count" : 100,
"bind_retry_sleep_time" : 100,
"listener" : [
{
"name" : "uap0",
"type" : "wlan"
},
{
"name" : "ncm0",
"type" : "usb"
},
{
"name" : "mlan0",
"type" : "wlan"
}
]
}
}
Looks like it can write exlap data to /tmp, next to having it avialable on the local network.
on -f mmx /net/mmx/mnt/app/eso/bin/apps/pc b:28836065:40
this is working well for me but address 1304 there is nothing :-) EDIT: ok found something
EDIT: you been right first you need to write to update on -f mmx /net/mmx/mnt/app/eso/bin/apps/pc i:1304:210 1
GREAT SUCCESS!!! after enabling of this field i now have this
road attributes: 0x01c500e6 111 && map position: 0x01c500e6 110 are for integrated navigation :-/ so that is no use for AA integration
if we can only somehow find out this maneuvr position somewhere in the memory then it will be posible to render "next move" with proper arrow, distance and everything 😢
Awesome!!!
Let's scan some more partitions and addresses to see what's there. There is a Car partition
problem is if you need to write something somewhere before those data are visible...
but based on android auto data i can make it auto-enable and auto-disable so when there is no android auto running VC will return to normal in-car navigation map :-) it will be so awesome
also in case that we cannot use on -f mmx to read data from some part of memory we can still try to read GAL process memory from python (something like trainer for games) and get the data that way
maybe we can also take next turn from GAL logs there should be following line inside log which contains
Sounds like a good idea!!
now the question is where is the log file :-) and can we point it to /tmp folder to not kill internal memory? also how to set up GAL_trace logging level?
parsing log in python should be quite easy task
maybe this? and where is the resulting file stored?
If I remember it correctly, the file is written to a specific debug console, when you're connected to a specific port on the device.
Check this script out, it can get info from persistence address (not my script)
#!/bin/sh
revision="persistance v0.1.3 (2023-05-16 by MIBonk)"
# use --help for more info
export PATH=:/proc/boot:/sbin:/bin:/usr/bin:/usr/sbin:/net/mmx/bin:/net/mmx/usr/bin:/net/mmx/usr/sbin:/net/mmx/sbin:/net/mmx/mnt/app/armle/bin:/net/mmx/mnt/app/armle/sbin:/net/mmx/mnt/app/armle/usr/bin:/net/mmx/mnt/app/armle/usr/sbin
export LD_LIBRARY_PATH=/net/mmx/mnt/app/root/lib-target:/net/mmx/mnt/eso/lib:/net/mmx/eso/lib:/net/mmx/mnt/app/usr/lib:/net/mmx/mnt/app/armle/lib:/net/mmx/mnt/app/armle/lib/dll:/net/mmx/mnt/app/armle/usr/lib
export IPL_CONFIG_DIR=/etc/eso/production
thisname="$(basename $0)"
thisdir="$(dirname $0)"
if [ -z $LOG ]; then
. $thisdir/../config/GLOBALS 1> /dev/null
fi
if [ -f $TMP/reboot.mib ]; then
echo "Reboot running..."
return 2> /dev/null
fi
if [ ! -z $2 ]; then
VALUE=$1
else
VALUE=""
fi
case $VALUE in
-r) {
trap '' 2
PART=$2
START=$3
END=$4
if [ -z $END ]; then
END=$(echo $START + 1 | $BC)
else
if [[ $END -le $START ]]; then
END=$(echo $START+1 | $BC)
else
END=$(echo $END+1 | $BC)
fi
fi
echo -ne "part-dec,part-hex,a$DDr-dec,a$DDr-hex,data,object\n"
while [ $START -lt $END ]; do
VALUEHEX=0x$(echo "obase=16; $START" | $BC)
PARTHEX=0x$(echo "obase=16; $PART" | $BC)
echo -ne "$PART,$PARTHEX,$START,$VALUEHEX,"
OBJECT=",blob"
SUBJECT="$($PERSR $PART $START -t blob 2> /dev/null)"
if [ -z "$SUBJECT" ]; then
OBJECT=",int"
SUBJECT="$($PERSR $PART $START -t int 2> /dev/null)"
if [ -z "$SUBJECT" ]; then
OBJECT=",string"
SUBJECT="$($PERSR $PART $START -t string 2> /dev/null)"
if [ -z "$SUBJECT" ]; then
SUBJECT=""
OBJECT=",error"
fi
fi
fi
echo -ne $SUBJECT
echo -ne $OBJECT
echo -ne "\n"
START=$(echo $START +1 | $BC)
done
echo -ne "\n"
trap 2
return 2> /dev/null
};;
# help or unknown parameter ------------------------------
*) {
echo ""
echo $revision
echo ""
echo "Usage: "$thisname" [OPTION] <partition> <startadress> [endadress|"
echo ""
echo "Options:"
echo " -r read data"
echo " --help show this help"
echo ""
echo "Note: Backup will only work in RCC bash!"
echo ""
echo "This program is free software; you can redistribute it and/or"
echo "modify it under the terms of the GNU General Public License"
echo "as published by the Free Software Foundation; either version 2"
echo "of the License, or (at your option) any later version."
echo ""
echo "This program is distributed in the hope that it will be useful,"
echo "but WITHOUT ANY WARRANTY; without even the implied warranty of"
echo "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
echo "See the GNU General Public License for more details."
echo ""
echo "You should have received a copy of the GNU General Public License"
echo "along with this program; if not, write to the Free Software Foundation,"
echo "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA."
echo ""
};;
esac
exit 0
Small addition to this, while I'm chatting with a friend about this... When retrofitting the MIB3 to a car that previously had a MIB2, the same cluster will all of a sudden display media info for Carplay and Android Auto, as well as CP/AA navigation instructions... So the cluster/AID is ready to receive the right data and display them in the right way... but on what channel... that's a mystery to me.
yes i seen that too before :-) i would expect that it is using the same channel as telephony or radio data
That would be BAP or CAN
if we can just find some example how to send one of those messages i think we can try to guess what AA message should look like :-)
Forget about earlier script, I found one of my old ones
#!/bin/sh
export LD_LIBRARY_PATH=/mnt/app/root/lib-target:/eso/lib:/mnt/app/usr/lib:/mnt/app/armle/lib:/mnt/app/armle/lib/dll:/mnt/app/armle/usr/lib
export IPL_CONFIG_DIR=/etc/eso/production
#info
DESCRIPTION="This script will get info from a lot of persistence addresses and puts it out to sda0"
#optional inputs:
# $1: partition
# $2: start address
# $3: max address to be scanned
#Firmware/unit info:
VERSION="$(cat /net/rcc/dev/shmem/version.txt | grep "Current train" | sed 's/Current train = //g' | sed -e 's|["'\'']||g' | sed 's/\r//')"
FAZIT=$(cat /tmp/fazit-id);
echo "---------------------------"
echo "$DESCRIPTION"
echo "FAZIT of this unit: $FAZIT"
echo "Firmware version: $VERSION"
echo "---------------------------"
sleep .5
#Is there any SD-card inserted?
if [ -d /net/mmx/fs/sda0 ]; then
echo SDA0 found
VOLUME=/net/mmx/fs/sda0
elif [ -d /net/mmx/fs/sdb0 ] ; then
echo SDB0 found
VOLUME=/net/mmx/fs/sdb0
else
echo No SD-cards found.
exit 1
fi
#sleep .5
echo Mounting SD-card at $VOLUME.
mount -uw $VOLUME
sleep .5
echo Creating Dump folder on $VOLUME
DUMPFOLDER=$VOLUME/DUMP/$VERSION/$FAZIT/Persistence/
mkdir -p $DUMPFOLDER
IDFILE=$DUMPFOLDER/id.txt
PARTITIONFILE=$DUMPFOLDER/partition.txt
NOW=$(date)
if [ "$3" != "" ]; then
MAXSCAN=$3;
else
MAXSCAN=100000000;
fi
echo "Scanning partition $PARTITION"
if [ "$2" != "" ]; then
ADDRESS=$2;
echo "Starting at $ADDRESS"
else
if test -f "$IDFILE"; then
echo "$IDFILE found"
#read last known address from id-file
read ADDRESS < $IDFILE
echo "Continuing at $ADDRESS"
else
echo "It looks like this is the first time scanning, starting at 0"
ADDRESS=0
fi
fi
if [ "$1" != "" ]; then
PARTITION=$1;
echo $PARTITION > $PARTITIONFILE
else
if read PARTITION < $PARTITIONFILE ; then #this if for session continuation
echo "Reading last used partition from SD"
else
exit 1
fi
fi
#sleep .5
#starting loop
while [ $ADDRESS -le $MAXSCAN ]
do
#echo "-----------------"
echo "Scanning $PARTITION:$ADDRESS"
#first check if ths address even exists or causes a time-out.
PERSISTENCEDATA="$(on -f mmx on -f mmx /net/mmx/mnt/app/eso/bin/dumb_persistence_reader $PARTITION $ADDRESS 2>&1)"
if [[ "$PERSISTENCEDATA" == *"PERS_STATUS_TIMEOUT"* ]] ; then
if echo $PARTITION";"$ADDRESS";TIMEOUT" >> $DUMPFOLDER/persistence.txt ; then
echo "Timeout, skipping address"
else
echo "Scan cancelled"
exit 1
fi
elif [[ "$PERSISTENCEDATA" == *" PERS_STATUS_TYPE_MISMATCH"* ]] ; then
echo "Type mismatch, trying integer"
PERSISTENCEDATAI="$(on -f mmx on -f mmx /net/mmx/mnt/app/eso/bin/dumb_persistence_reader $PARTITION $ADDRESS -t int 2>&1)"
if [[ "$PERSISTENCEDATAI" == *"PERS_STATUS_TYPE_MISMATCH"* ]] ; then
echo "Type mismatch, trying string"
PERSISTENCEDATAS="$(on -f mmx on -f mmx /net/mmx/mnt/app/eso/bin/dumb_persistence_reader $PARTITION $ADDRESS -t string 2>&1)"
if echo $PARTITION";"$ADDRESS";string;"$PERSISTENCEDATAS >> $DUMPFOLDER/persistence.txt ; then
echo "DATA FOUND:"
echo $PERSISTENCEDATAS
else
echo "!Scan cancelled"
exit 1
fi
elif [[ "$PERSISTENCEDATAI" != *"ERROR"* ]] ; then
if echo $PARTITION";"$ADDRESS";integer;"$PERSISTENCEDATAI >> $DUMPFOLDER/persistence.txt ; then
echo "DATA FOUND:"
echo $PERSISTENCEDATAI
else
echo "!Scan cancelled"
exit 1
fi
fi
elif [[ "$PERSISTENCEDATA" == *"PERS_STATUS_DOES_NOT_EXIST"* ]] ; then
:
#do nothing
else
if echo $PARTITION";"$ADDRESS";blob;"$PERSISTENCEDATA >> $DUMPFOLDER/persistence.txt ; then
echo "DATA FOUND:"
echo $PERSISTENCEDATA
else
echo ""
echo "!Scan cancelled"
exit 1
fi
fi
#only write the ID to the text once every 100 times, to speed up.
if (( $ADDRESS % 100 == 0 ))
then
if echo $ADDRESS > $IDFILE; then
echo "writing to id.txt to save scan session"
echo "Scanned $PARTITION until $ADDRESS at $NOW" > $DUMPFOLDER/scanlog.txt
else
echo ""
echo "!Scan cancelled"
exit 1
fi
fi
#increase the address with 1
ADDRESS=$(( $ADDRESS + 1 ))
done
# Make readonly again
mount -ur $VOLUME
echo "Persistence scan done"
exit 0
I did some scanning of the persistence addresses while I was on the road, navigating in Android Auto and playing music. I am not worried I need to set a value before data shows up, because the persistence addresses respond with a reply either way. So it will at least find any "yet to be activated" addresses this way.
So far I have the following results from some partitions (nothing of real use here, and I just scanned the first 2000 addresses of each partition): partition | address | type | data |
---|---|---|---|
1304 (Smartphone integration) | 50 | string | gal=1, carplay=1, mirrorlink=2, m_carlife=2 |
1304 (Smartphone integration) | 51 | string | gal=1, carplay=1, mirrorlink=1 |
1304 (Smartphone integration) | 53 | string | updateAvailable=0, major=1 |
1304 (Smartphone integration) | 54 | string | gal=1, carplay=1, mirrorlink=0 |
1304 (Smartphone integration) | 55 | string | usb=1, exlap=1 |
1304 (Smartphone integration) | 56 | string | carlifeAndroid=0, carlifeiOS=0, usb=3 |
1304 (Smartphone integration) | 57 | string | carlifeiOS=0, carlifeAndroid=0 |
1304 (Smartphone integration) | 210 | integer | 1 |
1304 (Smartphone integration) | 211 | integer | 0 |
1304 (Smartphone integration) | 212 | integer | 1 |
1304 (Smartphone integration) | 213 | integer | 387 |
1304 (Smartphone integration) | 214 | string | n/a |
1304 (Smartphone integration) | 215 | integer | 0 |
1304 (Smartphone integration) | 216 | integer | 33333 |
1304 (Smartphone integration) | 217 | integer | 11 |
1304 (Smartphone integration) | 218 | integer | 6 |
1304 (Smartphone integration) | 219 | integer | 522431337 |
1304 (Smartphone integration) | 220 | integer | 62743428 |
1304 (Smartphone integration) | 221 | integer | 20000 |
1304 (Smartphone integration) | 222 | integer | 0 |
1304 (Smartphone integration) | 223 | integer | 32378 |
1304 (Smartphone integration) | 224 | integer | 290000000 |
1304 (Smartphone integration) | 225 | integer | 0 |
1304 (Smartphone integration) | 226 | string | 555824000000 |
1501 (ONLINE) | 0 | integer | 21 |
1501 (ONLINE) | 1 | integer | 0 |
1501 (ONLINE) | 2 | integer | 20 |
1501 (ONLINE) | 3 | integer | 1 |
1501 (ONLINE) | 4 | string | Live |
1501 (ONLINE) | 5 | string | VSSZZZ5FZLR107852 |
1501 (ONLINE) | 6 | TIMEOUT | |
1501 (ONLINE) | 7 | TIMEOUT | |
1501 (ONLINE) | 8 | TIMEOUT | |
1501 (ONLINE) | 9 | TIMEOUT | |
1501 (ONLINE) | 10 | string | ; |
1501 (ONLINE) | 11 | string | ; |
1501 (ONLINE) | 12 | string | ; |
1501 (ONLINE) | 13 | integer | 1 |
1501 (ONLINE) | 14 | string | ; |
1501 (ONLINE) | 15 | string | ER-mib2high-mbbservices.audi-connect.de |
1501 (ONLINE) | 16 | string | T0MIB2 |
1501 (ONLINE) | 17 | string | ; |
1501 (ONLINE) | 18 | string | ONLINE_STATE_BLOCKED |
1501 (ONLINE) | 19 | string | MHI2_ER_SEG11_P4709 |
1501 (ONLINE) | 20 | integer | 14 |
1501 (ONLINE) | 21 | integer | 0 |
1501 (ONLINE) | 22 | integer | 13 |
1501 (ONLINE) | 23 | integer | 0 |
1501 (ONLINE) | 24 | string | live_EU |
1501 (ONLINE) | 25 | string | ; |
1501 (ONLINE) | 26 | string | MUAccess |
1501 (ONLINE) | 27 | string | ; |
1501 (ONLINE) | 28 | integer | 0 |
1501 (ONLINE) | 29 | integer | 0 |
1501 (ONLINE) | 30 | string | ; |
1501 (ONLINE) | 31 | string | ; |
1501 (ONLINE) | 32 | string | not registered yet |
1501 (ONLINE) | 33 | string | DEV_FOUND, GPS_ALLOWED, GPS_ACTIVE |
1501 (ONLINE) | 34 | string | not available |
1501 (ONLINE) | 35 | string | not available |
1501 (ONLINE) | 36 | string | not available |
1501 (ONLINE) | 37 | integer | 1 |
1501 (ONLINE) | 38 | string | Using VIN from car (persistence fallback) |
1501 (ONLINE) | 39 | string | ; |
1501 (ONLINE) | 40 | TIMEOUT | |
1501 (ONLINE) | 41 | TIMEOUT | |
1501 (ONLINE) | 42 | TIMEOUT | |
1501 (ONLINE) | 43 | TIMEOUT | |
1501 (ONLINE) | 44 | TIMEOUT | |
1501 (ONLINE) | 45 | TIMEOUT | |
2001 (Unknown partition) | 4 | blob | 00000006000000020001000000080000001144343a33413a32433a42373a31393a3746000000080000000f424c4d5f4143544956455f4d4f4445000000080000000a4243525f4d415354455200000000 |
2001 (Unknown partition) | 101 | string | 14.44.35p233 |
2001 (Unknown partition) | 1000 | blob | 000000080000000974656c6570686f6e65000000080000000b7631302e3735342e31363200000008000000024e6f0000000800000003302f350000000800000009626c7565746f6f7468000000080000000b7631302e3735342e31363200000008000000024e6f0000000800000003302f350000000800000011636f6e6e656374696f6e6d616e61676572000000080000000b7631302e3735342e31363200000008000000024e6f0000000800000003302f3500000008000000096d6573736167696e67000000080000000b7631302e3735342e31363200000008000000024e6f0000000800000003302f3500000008000000086465762d75706e70000000080000000b7631302e3735342e31363200000008000000024e6f0000000800000003302f3500000008000000076274737461636b000000080000000b7631302e3735342e31363200000008000000024e6f0000000800000003302f3500000008000000036e6164000000080000000b7631302e3735342e31363200000008000000024e6f0000000800000003302f3500000000 |
5018 (MIRRORLINK) | 200 | blob | 37424d580000000000ad000f000b010000000000000000010001 |
5021 (Car) | 1001 | blob | 0b16212c1f8b080000000000000063606058c7c0c8c0c0e00bc45240ac02c4d640ec05c416406c03c40140ec0dc4c168d80f2a1e0dc45658e491d521f33d80d8188f7a646ccbc028b09f8181f9268c0600a149a004b2000000 |
5021 (Car) | 1002 | blob | 0b16212c1f8b0800000000000000636060f8c380008140ec05a583a118c4b607623f20f606625fa81a98bc1b100740d94148e2e8d80f8def04c49120b6c3dceecf0edac6a60e17e2273becb955ea70eaa1a7c351b99d0ebf1dee385cf87ac8e1e1ddfb0e7be576397c9e74dc6181c637a0ba098edce24f1cb56cf31d6a99731c5aa47d1d9602e5776cac77d8ddaae0702d2dcde194b794c383c5d71daebe6e71d8c2c0e87063f12d87436ce71d25ffff772c5dbcd2e168d23fa0ddb20070ae50cd00010000 |
5025 (EXLAP) | 1000 | blob | 37424d58000000000014000500010100000002 |
Here's an overview of all partitions that I currenly know about: partition | NAME |
---|---|
0 | NS_REGION_CODE |
1 | HARMAN internal (AM/FM?) |
2 | HARMAN internal |
3 | HARMAN internal |
4 | HARMAN internal |
5 | HARMAN internal |
6 | HARMAN internal |
7 | HARMAN internal |
8 | HARMAN internal |
9 | HARMAN internal (Datasets, adaptations, identifications factory reset) |
10 | HARMAN internal |
11 | HARMAN internal (Audio?) |
12 | HARMAN internal (SDARS Radio) |
13 | HARMAN internal (MOST) |
14 | HARMAN internal |
15 | HARMAN internal(PictureServer) |
16 | HARMAN internal |
17 | HARMAN internal (DAB?) |
18 | HARMAN internal |
19 | HARMAN internal(GN log?) |
20 | HARMAN internal |
21 | HARMAN internal |
22 | HARMAN internal |
23 | HARMAN internal |
24 | HARMAN internal |
25 | HARMAN internal(TV) |
26 | HARMAN internal(Unified Stations) |
27 | HARMAN internal(Japan Tuner) |
28 | HARMAN internal |
29 | HARMAN internal |
30 | HARMAN internal(unit info?) |
31 | HARMAN internal(Tuner) |
32 | HARMAN internal |
33 | HARMAN internal |
34 | HARMAN internal |
35 | HARMAN internal |
36 | HARMAN internal |
37 | HARMAN internal |
257 | ota? |
262 | Resource info |
1101 | LSC |
1209 | NAV |
1210 | Navigation Persistence Manager |
1211 | Navigation Persistence Manager |
1300 | media_version_2.0 |
1301 | Media |
1303 | smartphone_integration_v0.1 |
1304 | Smartphone integration |
1500 | 1.0 |
1501 | online |
1502 | 1.0 |
1510 | sse |
1512 | ARC |
1513 | Esoposprovider |
1514 | Scale DTCP |
1517 | Operator Name |
1519 | traces |
1999 | traceserverRCC |
2000 | traceserverMMX |
2001 | Connectivity? |
2002 | mobilityhorizon |
5000 | "EARLY" |
5003 | "DAB" |
5005 | "AMFM" |
5006 | "NAVI" |
5007 | "MEDIA" |
5008 | "PHONE" |
5009 | "SPEECH" |
5010 | "DISPLAY" |
5011 | "ENTERTAINMENT_MANAGER" |
5012 | "BAP" |
5013 | "SDARS" |
5014 | "TV" |
5016 | "INTERNETBROWSER" |
5017 | "EXBOX" |
5018 | "MIRRORLINK" |
5019 | "ITUNES" |
5020 | "NAVHIGHASIA" |
5021 | "CAR" |
5022 | "ONLINE" |
5022 | DSI-unversioned |
5023 | "TRAVELLINK" |
5025 | "EXLAP" |
5026 | "SOUND" |
5026 | DSI-unversioned |
5027 | "TRAFFICMINIMAP" |
5028 | "SMARTPHONEINTEGRATION" |
5050 | DSI-unversioned |
5051 | DSI-unversioned |
5052 | DSI-unversioned |
5053 | DSI-unversioned |
5055 | DSI-unversioned |
5056 | DSI-unversioned |
5057 | DSI-unversioned |
5058 | DSI-unversioned |
6000 | DSI-unversioned |
6789 | Tegra hardware info |
6789 | DSI-unversioned |
8765 | DVD hardware info |
8765 | DSI-unversioned |
26411208 | NS_HMI_DAB |
27263191 | NS_HMI_CAR |
27853016 | NS_HMI_AUDIO |
28180695 | DIAG_COD |
28442848 | DIAG_ANP |
28836065 | Connectivity? Mirrorlink and such |
29229279 | HMI |
29425895 | NS_HMI_ENS |
29688031 | NS_HMI_IRC |
29688038 | NAV |
30802154 | Media Player |
30867691 | speech-service |
32702714 | NS_HMI_PWR |
46661922 | NS_HMI_TUNER_AMFM |
46924065 | IDENTIFIKATION |
46924066 | CU_BT |
46924067 | CU_STATIONDB |
46924068 | CU_MIRRORLINK |
46924069 | CU_USBSURFSTICK |
46924070 | CU_PERSONALPOI |
46924071 | CU_NAVCARUPDATE |
46924072 | CU_GRACENOTE |
52166966 | UP AND DOWNLOAD |
98190593 | NS_HMI_SDARS |
678364556 | ENGNS, AMI type etc. (INFO) |
1062713629 | Wifi channel? |
Finding some bigger data elements in the Smartphone integration partitions, in a format unknown to me. I'll paste it all here, maybe you have an idea.
Edit: GZIPped data! I'll dive into it.
PARTITION | ADDRESS | TYPE | DATA | PARTITION NAME |
---|---|---|---|---|
27263191 | 1 | integer | 4294967295 | NS_HMI_CAR |
27263191 | 2 | integer | 4294967295 | NS_HMI_CAR |
27263191 | 3 | integer | 4294967295 | NS_HMI_CAR |
5000 | 200 | blob | 37424d580000000047ee065400130201020600030600000000000000018c21795528000000000101000000820101000001040000000001ffffffff | "EARLY" |
5000 | 300 | blob | 00010700 | "EARLY" |
5007 | 1001 | blob | 37424d5800000000248a07ff00050000000000000000010000000000000000ffffffffffffffff | "MEDIA" |
5007 | 1004 | blob | 37424d5800000000000d0004000100000002 | "MEDIA" |
5008 | 100 | blob | 37424d58000000000f9013d100090000000000000000000000ffffffffffffffffffffffff000000020000001133433a30313a45463a31413a33313a39390000001144343a33413a32433a42373a31393a3746 | "PHONE" |
5011 | 200 | blob | 37424d580000000003820025000a000000080000000100000003000000010000000200000002000000000000000800000001 | "ENTERTAINMENT_MANAGER" |
5022 | 200 | blob | 37424d580000000000810010000f00000000000000 | "ONLINE" |
5026 | 100 | blob | 37424d5800000000004d00050003000000010000000000000000000000 | "SOUND" |
5028 | 200 | blob | 0b16212c1f8b080000000000000063606078c7c0c6c0c0206060906866669c66669c649498629e940414e304620e2066e033723230377473f1303630308e0c4396524836b13430493537494b4eb6304d4a313333b43037314a3237b730354e364d4d852a66600462aec0307343c3a02043231364335853730b4a2a199000ed441801b0336c48f2000000 | "SMARTPHONEINTEGRATION" |
5050 | 0 | blob | 37424d58000000000065000a0001000000000000000000000001000200000000020000000003 | DSI-unversioned |
5051 | 0 | blob | 0b16212c1f8b080000000000000085ce491280200c44d12083a080b3f73fa247900fa52ecde2d155240111b944c9574a0c87830d2638b851d9d486521d69046d0b75842089184919665860f5859d743255dfd22ad48de6d9a8c18005073d7808b4b517da27e47f0486f7b311d20d1a427b03f4000000 | DSI-unversioned |
5052 | 0 | blob | 0b16212c1f8b080000000000000075930972c2300c45ed244e0c6403c25a1a96b6d0ed34bdff61caf3160303333c644bb6f5252144f627a4183e52e4fcfc80df8c0d90801c146cc9136e0d46600c26b84b50819abd06ab055396333067d9612dc0052cc10aacc1066cc10bd88157d0833d386026d7efd11b27ee7d071fe00c3ec117f836513d394be515a52003ca08144ee0833450b25961d5580d68594e393b037311a4e15d82158e35d880adba5545f69953968ac28b312d494c2a3e221df2542ecfccca90da05b37fa5cc3b7bddd515ac67828d68914b1b59b8b70bdb6ddb7cae4f753899ba53dadeb9c85c03b59cf6ae6cb277a54b7a57be14a3e40eef52def5bcec993b63272a9a23936be52a3e12898aab3016fa2e77a35afb02e53a7e6f228a211abfd621ba93717ae57d6474af8e03ab41db6d2146be10e6a072676a2bf462c600ecc1812b8f5827acb761ba79e66c2ad00a3b4bb5ac5836fec126f45b84ae75de611abb93a1dc1debb1a1f98f85bf6113eb1da6e7516febc6d02b4bfe01556952f556040000 | DSI-unversioned |
5055 | 0 | blob | 0b16212c1f8b080000000000000045cec50e42311005d03edcf5e112dc2d480284ffff2e382bba38bd77a68b8610ad4314fe270ab938e5c6d1e48433aeb8e16efbf02c3a8909246d52521a19358b1cf266051463bd84322aa8a2863a1ab14f353d6fa16dd841173df431b01d62a48e3151a798616eb69096d20a6b6cccb6d8a97be9808bfac44b7da77f7cbe834a1f1b2b010000 | DSI-unversioned |
5056 | 0 | blob | 37424d580000000003a1003100010000000000000000000000010000000000010106040000000103000000020300000003030000000404000000050000000006 | DSI-unversioned |
even after ungzipping i cannot tell what it could be :-/
Me neither.. probably something that's not of use. Could even be just the saved radiostations or something like that. I'll continue the scan. It goes fairly slow.. but I forgot how much fun it is to let it scan.
smarphone integration field actually have some string inside it no idea what they mean
î 00a663f63b2ad7bb 2B071FDH3003YV c4904e74fcc85bd6618742b77853c5ee
Might be some kind of sessionkey, or identifier for the android auto session?
I'll put my MIB2 on desk in the afternoon and do some more readings. I think it's best if I throw all the persistence findings in a wiki on the toolbox repo, to prevent this place from becoming a junkjard 😄
do you know what is the cheapest MIB2 unit i can get my hands on which will still behave internally as my MIB2.5 discovery pro? If i can develop on bench i think i will be able to find out how to read DSI or exlap.
Any MIB2High unit can become a MIB2.5 Discover Pro. I've converted between various brands of MIB2 to MIB2.5. The cheapest would be to get a cheap 6 inch screen and a MIB2 and install the latest VW G11 (MIB2, non MIB2.5) software on it. MIB2.5 has, besides the bigger screen and lack of some physical buttons, the same features as the MIB2, so it'll do for desk purposes.
Scan on desk is running.. which is a lot more confortable than in the car. I don't have AA connected currently, but at least I'll get a map of "potentially interesting addresses" from this
Scanning continues today, working from home so I can keep my eye on the progress. I'm scanning each partition from 0 to 5000. Some partitions lead to timeouts all over the place.
By the way, I get some log data on the console that looks like this:
1244958437937 INFO [0x200, 0x2, 0x469c13ce] current.gui.language:=en_GB;;protocol.version:=1.2;;part.number:=565035021F;;skin.short.version:=SEAT_HIGH_SKIN_NEW_80_H-HIGH2_EU-4;;hmisoftware.version:=H29.344.66_HIGH2_EU;;software.mu.version:=1447;;vehicle.id:=0403070228;;hmisoftware.base.version:=H29.344.66-201906171929;;generic.event.count:=87;;logmessage.count:=14/0;;active.debug.probes:=[DSIEVENTS];;car.time:=946684800897;;generic.event.queue.size:=0;;logmessage.queue.size:=0/2000;;logmessage.data.size:=4KB;;time:=2000-01-01 0:00:00
I'll see if enabling more traces in the green menu will lead to more useful info.
where you get this log from ? is it /var/log or where it is stored?
It's on the MMX console, so written to stdout,
which is /dev/stdout?
yes, although I'm not sure if anything is communicated when nothing is connected to mmx or rcc console.
dsi.debuginfo.B2.67.MIB_DSI_2016_KW28-16.28.0.xml.zip
This could be useful
DSI will contain all required data now just find a way how to tap into them :-D hacking that .jar file can be good way
Driving state: String 0x01be00df 501 Think blue score: int 0x01be00df 502 Vehicle Acceleration: int 0x01be00df 503 And some experimental ones in the same area I didn't validate: Vehicle speed: int 0x01be00df 504 Car in reverse (boolean): int 0x01be00df 505 Car driving (boolean): int 0x01be00df 506 Engine: String 0x01be00df 507 2nd Engine: String 0x01be00df 508 Gear type: String 0x01be00df 509
those are not available for me (using following for example)
on -f mmx /net/mmx/mnt/app/eso/bin/apps/pc s:29229279:501
any idea how to reach those?
There are a few data elements you can grab from the persistance channels.
I know of the following:
These are used in the Android Auto Sensors green menu screen. It should be possible to grab the Exlap data as well, but I never figured out how... would be lovely to be able to send the transmission temperature to the AID, since this data element isn't available anywhere else.
You can grab them with pc