SysCfg

From freemyipod.org
Jump to: navigation, search

"SysCfg" is the system configuration sector of an iPod. It carries unique per-device information such as the serial number, as well as determining which region a device was sold in, the model number, etc. On the iPod nano 3rd generation and the iPod Classic, it is stored in the first section of the NOR.

WARNING: Messing with SysCfg can result in a device that can not be restored in iTunes, and may not boot! You MUST keep backups!

Structure

The header of the SysCfg always begins with a 'SCfg' tag in a 24 byte header. Some of the header values are unknown.

struct SysCfgHeader {
  uint32_t magic; // always 'SCfg'
  uint32_t size;
  uint32_t unknown1; // 0x00000200 on iPod classic
  uint32_t version; // maybe? 0x00010001 on iPod classic
  uint32_t unknown2; // 0x00000000 on iPod classic
  uint32_t num_entries;
}; // 0x18

Each entry in the SysCfg consists of a 32-bit tag value (in little-endian) and up to 16 (0x10) bytes of data. The way the data is encoded is dependent on the tag value.

struct SysCfgEntry {
  uint32_t tag;
  uint8_t data[0x10];
};

Tags

Tag Meaning Data type
SrNm Serial Number ASCII characters
Mdo# Model Number ASCII characters
FwId Firmware ID Unknown
HwId Hardware ID Unknown
Regn Sales Region Unknown
HwVr Hardware Version 4 16-bit shorts
SwVr Software Version - that the device shipped with? ASCII characters
MLBN Logic Board Serial Number ASCII characters
Codc Unknown Unknown

Example Values

iPod classic (6th generation), 80GB, Black

Tag Value Notes
SrNm 8K823xxxYMV Redacted device identifier
Mdo# MB147
FwId 0x01000000 0x13622A6C 0x000A2700 Interpreted as 3 32-bit LE integers
HwId 0x82021685 Interpreted as 1 32-bit LE integer
Regn 0x0001 0x0002 0x0025 0x0001 Sold in UK. Interpreted as 4 16-bit LE shorts
HwVr 0x0013.0x0000.0x0000.0x0000 Reversed order
SwVr 1.0
MLBN BR8604P11007
Codc SB Interpreted as ASCII characters

iTunes restores this device to firmware 1.1.2

Behaviours

  • WTF for 0x1223 / S5L8702 devices uses HwVr to determine which USB PID to use.

References