.lge.upgrade.xml structure - galaxy4public/hkmcavn-tools GitHub Wiki
The .lge.upgrade.xml
file is responsible for describing the corresponding firmware and the way it is supposed to be applied. The file is encrypted and signed with an RSA signature. Usually, the file is very terse and includes a bare minimum of information, for example the followin is a decrypted version of the file from 2022 KIA Sportage update:
<?xml version="1.0" encoding="utf-8"?>
<wideavn>
<upgrade-mode>developer</upgrade-mode>
<build-date>2022-12-23</build-date>
<version>5W.XXX.S5W_L.001.001.221223</version>
<car-variant>aeev_aehev_aephev_bc3_bc3n_bdpe_ckpe22my_ckpe_cn7_cn7n_cvev_deev_de22myev_de22myhev_depbvev_depbvhev_depbvphev_dehev_dephev_de22myphev_dn8_dn822my_ikpe_ka4_ka422my_lx2_lx2pe_mq4_mq422my_mq4hev_mq422myhev_mq4phev_mq422myphev_neev_nq5_nx4_osev_ospeev_ospen_ospe_pdpe_pdpen_sg2ev_sg2hev_sg2phev_sp2_sp221my_sp2pe_sp222my_tm_tmhev_us4_yb22my_ybpe</car-variant>
<partition>newpartition3rd</partition>
<newfirmware>newfirmwarestructure</newfirmware>
<firmware version="" src="/HU/images/mango-vr_fixed.tar.gz">vrfix</firmware>
<firmware version="" src="/HU/firmware/modem">modem</firmware>
<firmware version="0.7.8.11077" src="/HU/firmware/dab">dab</firmware>
<firmware version="6.09.32.04" src="/HU/firmware/gps">gps</firmware>
<firmware version="2.1f" src="/HU/firmware/frontkey/nx4" vehicle="nx4">jf</firmware>
<firmware version="170912" src="/HU/firmware/micom">micom</firmware>
</wideavn>
However, there is many more entries that are recognised by AppUpgrade
. Below is the list of the currently known entries as of Feb 2023:
Tag | Attribute | Sample | Description |
---|---|---|---|
lhavn |
<lhavn>...</lhavn> |
A configuration container for the premium vehicle models | |
wideavn |
<wideavn>...</wideavn> |
A configuration container for the standard vehicle models | |
amp |
This element should not have any values to be recognised | ||
version |
specifies the version of the external S/PDIF Amplifier | ||
build-date |
<build-date>2022-12-23</build-date> |
the date the update was assembled | |
car-variant |
<car-variant>nq5_nx4_...</car-variant> |
alphabetically sorted, _ -separated list of the supported car variants |
|
essentials |
most likely a legacy, unused element that was formerly holding a SHA1 checksum over some essential files | ||
firmware |
<firmware version="6.09.32.04" src="/HU/firmware/gps">gps</firmware> |
defines an included firmware object designated by the value | |
lcdtype |
describes LCD type as seen in /sys/lge_touch/name on the unit) |
||
method |
if target supports delta updates and this is an entry for "modem", then it defines the upgrade method for the modem firmware (only delta is recognised with anything else being considered full ) |
||
src |
specifies absolute path from the directory the .lge.upgrade.xml file is located in |
||
variant |
specifies a variant (for this to work the /HU/images/variantMatch directory should be present) |
||
vehicle |
specifies a vehicle this firmware object is for (never observed in the wild, but seems that recognised values are amp , ccp , rrc , vess , and jf ) |
||
version |
describes the version of the included firmware object (it is a free form string, but depending on the object comparison functions may differ) | ||
imagefiletype |
never encountered in the wild, but seems to define the default image time, e.g. tar.gz or tar
|
||
map-version |
specifies the version of the included map data set (this is most likely unused, since the manifest file is used for the map version) | ||
navi-version |
specifies the version of the included navigational software (same as with map-version , it is most likely unused) |
||
newfirmware |
<newfirmware>newfirmwarestructure</newfirmware> |
the presence of this element tells AppUpgrade to use the new directory structure when handling the update (i.e. use /upgrade/HU/firmware/sbin instead of /upgrade/sbin for storing and executing binaries |
|
partition |
<partition>newpartition3rd</partition> |
||
password |
most likely a legacy, no longer used element to authenticate the upgrade-mode user to the unit (whoever come up with that logic should be fired on the spot, to be honest) |
||
version |
<version>5W.XXX.S5W_L.001.001.221223</version> |
the version of the described firmware package, the value encodes <CarType>.XXX.<Platform>.ddd.ddd.YYMMDD where <CarType> can be 5W or SK3 and <Platform> can be P5 (premium), S5W_L (standard, Linux) or S5W_A (standard, Android) |
|
require |
optional attribute to specify the required installed version | ||
compare |
optional attribute to define the comparison mode (accepted values are same , upper , lower , and diff ) |
||
updatespeed |
the value of this element defines whether download speed should be limited (a number) or not (unlimited ) |
||
upgrade-key |
most likely unused, but this is sha1(ImageSizeAsString + value(essential) + value(build-date)) used to validate the integrity |
||
upgrade-mode |
<upgrade-mode>developer</upgrade-mode> |
defines the mode to be used with the upgrade (can be one of user , developer , xmode , or navigation ) |
|
upgrade-method |
if target supports delta updates, this element defines the upgrade method (can be full or delta ) |
The following values for lcdtype
are supported:
Value | Description |
---|---|
mip4_ts |
|
siw_ts |
|
atmel_mxt |
|
focal_ts |
For the <firmware>...</firmware>
element the following values are recognised:
Name | Description |
---|---|
bt |
Bluetooth Module |
ccp |
|
rrc |
|
dab |
Digital Audio Broadcasting Module |
fpga |
|
inic |
|
tdmb |
|
micom |
MICOM |
modem |
LTE Modem |
gps |
GPS |
xm |
Sirius XM Module |
hdradio |
|
bios |
|
lcd |
Front LCD panel |
rear_right_lcd |
Rear Right LCD panel |
rear_left_lcd |
Rear Left LCD panel |
abl |
Apollo Lake Bootloader |
amp |
External S/PDIF Amplifier |
jf |
|
emmc |
eMMC firmware |
vrfix |
Voice Recognition |
navi |
Navigational Software |
vess |
|
touch |
|
adp |
|
mkbd |
|
sml |