SysCfg
"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!
Contents
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 |
Mod# | 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 |
Mod# | 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.