SettingsStorage

From AVIC Hacking
Jump to navigation Jump to search

Settings[edit | edit source]

DataManager[edit | edit source]

A lot of runtime settings live in the DataManager framework. These are stored in SQLite databases on the /extdata Partition.

These are not writen from the Java layer, but via JNI (libdatamanager_jni.so) and some libraries written in C++ (libdatamgr{service,sqlitedb,testmode}.so)

On an Appradio4 for example, these exist:

BTPresetInfo.db
OtherInfo.db
PlayResumeInfo.db
SettingInfo.db
SXILogoInfo.db
TagDataInfo.db

For each of the databases, a bakDATABASE and a DATABASE-journal exist (where DATABASE is e.g. OtherInfo.db).

The schema of these tables is:

CREATE TABLE datamgrtb (id TEXT primary key not null, value BLOB, crc INTEGER);

We know thus far:

  • The table name is always datamgrtb
  • id is of the format x##y#z#tags#name (more on this later)
  • crc is a plain old CRC32 of the data in blob

Entry format[edit | edit source]

x is a number. It corresponds to the file where the setting is stored:

File x Number
BTPresetInfo.db 3
OtherInfo.db 6
PlayResumeInfo.db 1
SettingInfo.db 2
SXILogoInfo.db 5*
TagDataInfo.db 4*

*: Inferred from order of strings in DataManager binary

y and z are also numbers. We've seen 1 and 2 used.

The tags may be multiple strings (separated by a #) which give the system an indication of what to do with the setting. The following have been observed:

Tag Meaning
A Delete this value on restart. (Mnemonic: "When car's ACC key position is turned off")
B Delete this value on re-init. (Mnemonic: "When car's Battery is turned off")
P Delete this value on "Power Off" (unclear what this means).
FAL
FBT
FS
FT

Known Settings[edit | edit source]

Setting Value Meaning
6##1#1#A#B#FAL#MODESMARTPHONECONFIRM 0x01 User has confirmed the Smartphone Warning

... please help by completing this list with what you find

Properties[edit | edit source]

Some Android properties influence the run-time behaviour of AVIC units. Most notably:

Setting Value Meaning
build.type user Don't show HDCP settings in Developer Debug menu (set in build.prop)
sys.pioneer.misc.navi_pl_cation sys.pioneer.navi_pl_on Don't show navi prompt
sys.pioneer.navi_pl_off Show navi prompt (?)
sys.catch.modelinfo AVN, (and then maybe more) Whether to start HomeActivityNavi or HomeActivityAVH
sys.modelinfo J, (and then maybe more) If it's a Japan model (and needs to show the Caution screen as 4sec interstitial)

NOR[edit | edit source]

Some device specific setting live in /dev/mtd/mtd1