Calibration: Difference between revisions
No edit summary  | 
				Masagrator (talk | contribs) No edit summary  | 
				||
| (28 intermediate revisions by 6 users not shown) | |||
| Line 1: | Line 1: | ||
During [[Factory_Setup|factory setup]], the Switch goes through calibration and the generated data from this process is written to two [[Flash_Filesystem|NAND user partitions]] ('''PRODINFO''' and '''PRODINFOF''').  | During [[Factory_Setup|factory setup]], the Switch goes through calibration and the generated data from this process is written to two [[Flash_Filesystem|NAND user partitions]] ('''PRODINFO''' and '''PRODINFOF''').  | ||
= CalibrationBinary =  | |||
This is "nn::cal::CalibrationBinary".  | |||
This is a raw binary blob containing the main calibration data, which ranges from hardware IDs to system keys.  | |||
{| class="wikitable" border="1"  | {| class="wikitable" border="1"  | ||
| Line 12: | Line 10: | ||
!  Offset  | !  Offset  | ||
!  Size  | !  Size  | ||
!  Description  | !  Description  | ||
|-  | |-  | ||
|    | |  0x0  | ||
|    | |  0x4  | ||
|  MagicNumber ("CAL0")  | |||
|  "CAL0"   | |||
|-  | |-  | ||
|    | |  0x4  | ||
|    | |  0x4  | ||
|    | |  Version  | ||
|-  | |-  | ||
|    | |  0x8  | ||
|    | |  0x4  | ||
|    | |  BodySize (size of calibration data starting at offset 0x40)  | ||
|-  | |-  | ||
|    | |  0xC  | ||
|    | |  0x2  | ||
|    | |  Model  | ||
|-  | |-  | ||
|    | |  0xE  | ||
|    | |  0x2  | ||
|    | |  UpdateCount (increases each time calibration data is installed)  | ||
|-  | |-  | ||
|  0x20  | |  0x20  | ||
|    | |  0x20  | ||
|  SHA256 hash calculated over calibration data  | |  BodyHash (SHA256 hash calculated over calibration data)  | ||
|-  | |-  | ||
|    | |  0x40  | ||
|    | |  0x1E  | ||
|    | |  [[Settings_services#ConfigurationId1|ConfigurationId1]]  | ||
|   | |||
|-  | |-  | ||
|    | |  0x60  | ||
|  0x20  | |  0x20  | ||
|    | |  Reserved  | ||
|-  | |-  | ||
|    | |  0x80  | ||
|    | |  0x4  | ||
|    | |  WlanCountryCodesNum  | ||
|-  | |-  | ||
|    | |  0x84  | ||
|    | |  0x4  | ||
|    | |  WlanCountryCodesLastIndex  | ||
|-  | |-  | ||
|    | |  0x88  | ||
|  0x180  | |  0x180  | ||
|    | |  WlanCountryCodes  | ||
|-  | |-  | ||
|    | |  0x210  | ||
|    | |  0x6  | ||
|    | |  [[Settings_services#MacAddress|WlanMacAddress]]  | ||
|   | |||
|-  | |-  | ||
|    | |  0x220  | ||
|    | |  0x6  | ||
|    | |  [[Settings_services#BdAddress|BdAddress]]  | ||
|   | |||
|-  | |-  | ||
|    | |  0x230  | ||
|    | |  0x6  | ||
|  AccelerometerOffset  | |||
|     | |||
|-  | |-  | ||
|    | |  0x238  | ||
|    | |  0x6  | ||
|  AccelerometerScale  | |||
|     | |||
|-  | |-  | ||
|    | |  0x240  | ||
|    | |  0x6  | ||
|  GyroscopeOffset  | |||
|     | |||
|-  | |-  | ||
|    | |  0x248  | ||
|    | |  0x6  | ||
|  GyroscopeScale  | |||
|     | |||
|-  | |-  | ||
|    | |  0x250  | ||
|  0x18  | |  0x18  | ||
|    | |  [[Settings_services#SerialNumber|SerialNumber]]  | ||
|   | |||
|-  | |-  | ||
|    | |  0x270  | ||
|  0x30  | |  0x30  | ||
|    | |  EccP256DeviceKey (unused)  | ||
|-  | |-  | ||
|    | |  0x2B0  | ||
|  0x180  | |  0x180  | ||
|    | |  EccP256DeviceCertificate (unused)  | ||
|-  | |-  | ||
|    | |  0x440  | ||
|  0x30  | |  0x30  | ||
|    | |  EccB233DeviceKey (unused)  | ||
|-  | |-  | ||
|    | |  0x480  | ||
|  0x180  | |  0x180  | ||
|    | |  EccB233DeviceCertificate  | ||
|-  | |-  | ||
|    | |  0x610  | ||
|  0x30  | |  0x30  | ||
|    | |  EccP256ETicketKey (unused)  | ||
|-  | |-  | ||
|    | |  0x650  | ||
|  0x180  | |  0x180  | ||
|    | |  EccP256ETicketCertificate (unused)  | ||
|-  | |-  | ||
|    | |  0x7E0  | ||
|  0x30  | |  0x30  | ||
|    | |  EccB233ETicketKey (unused)  | ||
|-  | |-  | ||
|    | |  0x820  | ||
|  0x180  | |  0x180  | ||
|    | |  EccB233ETicketCertificate (unused)  | ||
|-  | |-  | ||
|    | |  0x9B0  | ||
|  0x110  | |  0x110  | ||
|    | |  SslKey (unused)  | ||
|-  | |-  | ||
|    | |  0xAD0  | ||
|    | |  0x4  | ||
|    | |  SslCertificateSize  | ||
|-  | |-  | ||
|    | |  0xAE0  | ||
|  0x800  | |  0x800  | ||
|    | |  SslCertificate (only SslCertificateSize bytes are used)  | ||
|-  | |-  | ||
|  0x12E0  | |  0x12E0  | ||
|  0x20  | |  0x20  | ||
|    | |  SslCertificateHash (SHA256 over the SSL certificate)  | ||
|-  | |-  | ||
|  0x1300  | |  0x1300  | ||
|  0x1000  | |  0x1000  | ||
|    | |  RandomNumber  | ||
|-  | |-  | ||
|  0x2300  | |  0x2300  | ||
|  0x20  | |  0x20  | ||
|    | |  RandomNumberHash (SHA256 over the random data block)  | ||
|-  | |-  | ||
|  0x2320  | |  0x2320  | ||
|  0x110  | |  0x110  | ||
|    | |  GameCardKey (unused)  | ||
|-  | |-  | ||
|  0x2440  | |  0x2440  | ||
|  0x400  | |  0x400  | ||
|    | |  GameCardCertificate  | ||
|-  | |-  | ||
|  0x2840  | |  0x2840  | ||
|  0x20  | |  0x20  | ||
|    | |  GameCardCertificateHash (SHA256 over the GameCard certificate)  | ||
|-  | |-  | ||
|  0x2860  | |  0x2860  | ||
|  0x220  | |  0x220  | ||
|    | |  Rsa2048ETicketKey (unused)  | ||
|-  | |-  | ||
|  0x2A90  | |  0x2A90  | ||
|  0x240  | |  0x240  | ||
|    | |  Rsa2048ETicketCertificate  | ||
|-  | |-  | ||
|  0x2CE0  | |  0x2CE0  | ||
|  0x18  | |  0x18  | ||
|    | |  BatteryLot  | ||
|-  | |-  | ||
|  0x2D00  | |  0x2D00  | ||
|  0x800  | |  0x800  | ||
|    | |  [[#SpeakerCalibrationValue|SpeakerCalibrationValue]]  | ||
|   | |||
|-  | |-  | ||
|  0x3510  | |  0x3510  | ||
|    | |  0x4  | ||
|    | |  [[Settings_services#RegionCode|RegionCode]]  | ||
|   | |||
|-  | |-  | ||
|  0x3520  | |  0x3520  | ||
|  0x50  | |  0x50  | ||
|    | |  AmiiboKey  | ||
|-  | |-  | ||
|  0x3580  | |  0x3580  | ||
|  0x14  | |  0x14  | ||
|    | |  AmiiboEcqvCertificate  | ||
|-  | |-  | ||
|  0x35A0  | |  0x35A0  | ||
|  0x70  | |  0x70  | ||
|    | |  AmiiboEcdsaCertificate  | ||
|-  | |-  | ||
|  0x3620  | |  0x3620  | ||
|  0x40  | |  0x40  | ||
|    | |  AmiiboEcqvBlsKey  | ||
|-  | |-  | ||
|  0x3670  | |  0x3670  | ||
|  0x20  | |  0x20  | ||
|    | |  AmiiboEcqvBlsCertificate  | ||
|-  | |-  | ||
|  0x36A0  | |  0x36A0  | ||
|  0x90  | |  0x90  | ||
|    | |  AmiiboEcqvBlsRootCertificate  | ||
|-  | |-  | ||
|  0x3740  | |  0x3740  | ||
|    | |  0x4  | ||
|    | |  [[#ProductModel|ProductModel]]  | ||
|   | |||
|-  | |-  | ||
|  0x3750  | |  0x3750  | ||
|    | |  0x6  | ||
|    | |  [[#ColorVariation|ColorVariation]]  | ||
|   | |||
|-  | |-  | ||
|  0x3760  | |  0x3760  | ||
|    | |  0xC  | ||
|  LcdBacklightBrightnessMapping  | |||
|     | |||
|-  | |-  | ||
|  0x3770  | |  0x3770  | ||
|  0x50  | |  0x50  | ||
|    | |  ExtendedEccB233DeviceKey  | ||
|-  | |-  | ||
|  0x37D0  | |  0x37D0  | ||
|  0x50  | |  0x50  | ||
|    | |  ExtendedEccP256ETicketKey (unused)  | ||
|-  | |-  | ||
|  0x3830  | |  0x3830  | ||
|  0x50  | |  0x50  | ||
|    | |  ExtendedEccB233ETicketKey (unused)  | ||
|-  | |-  | ||
|  0x3890  | |  0x3890  | ||
|  0x240  | |  0x240  | ||
|    | |  ExtendedRsa2048ETicketKey  | ||
|-  | |-  | ||
|  0x3AE0  | |  0x3AE0  | ||
|  0x130  | |  0x130  | ||
|    | |  ExtendedSslKey  | ||
|-  | |-  | ||
|  0x3C20  | |  0x3C20  | ||
|  0x130  | |  0x130  | ||
|    | |  ExtendedGameCardKey  | ||
|-  | |-  | ||
|  0x3D60  | |  0x3D60  | ||
|    | |  0x4  | ||
|    | |  [[#LcdVendorId|LcdVendorId]]  | ||
|   | |||
|-  | |-  | ||
|  0x3D70  | |  0x3D70  | ||
|  0x240  | |  0x240  | ||
|  [5.0.0+]   | |  [5.0.0+] ExtendedRsa2048DeviceKey  | ||
|-  | |-  | ||
|  0x3FC0  | |  0x3FC0  | ||
|  0x240  | |  0x240  | ||
|  [5.0.0+]   | |  [5.0.0+] Rsa2048DeviceCertificate  | ||
|-  | |-  | ||
|  0x4210  | |  0x4210  | ||
|    | |  0x1  | ||
|  [5.0.0+]   | |  [5.0.0+] [[#UsbTypeCPowerSourceCircuit|UsbTypeCPowerSourceCircuitVersion]]  | ||
|     | |-  | ||
|  0x4220  | |||
|  0x4  | |||
|  [9.0.0+] [[#HousingColor|HousingSubColor]]  | |||
|-  | |||
|  0x4230  | |||
|  0x4  | |||
|  [9.0.0+] [[#HousingColor|HousingBezelColor]]  | |||
|-  | |||
|  0x4240  | |||
|  0x4  | |||
|  [9.0.0+] [[#HousingColor|HousingMainColor1]]  | |||
|-  | |||
|  0x4250  | |||
|  0x4  | |||
|  [9.0.0+] [[#HousingColor|HousingMainColor2]]  | |||
|-  | |||
|  0x4260  | |||
|  0x4  | |||
|  [9.0.0+] [[#HousingColor|HousingMainColor3]]  | |||
|-  | |||
|  0x4270  | |||
|  0x1  | |||
|  [9.0.0+] [[#AnalogStickModuleType|AnalogStickModuleTypeL]]  | |||
|-  | |||
|  0x4280  | |||
|  0x12  | |||
|  [9.0.0+] [[#AnalogStickModelParameter|AnalogStickModelParameterL]]  | |||
|-  | |||
|  0x42A0  | |||
|  0x9  | |||
|  [9.0.0+] [[#AnalogStickFactoryCalibration|AnalogStickFactoryCalibrationL]]  | |||
|-  | |||
|  0x42B0  | |||
|  0x1  | |||
|  [9.0.0+] [[#AnalogStickModuleType|AnalogStickModuleTypeR]]  | |||
|-  | |||
|  0x42C0  | |||
|  0x12  | |||
|  [9.0.0+] [[#AnalogStickModelParameter|AnalogStickModelParameterR]]  | |||
|-  | |||
|  0x42E0  | |||
|  0x9  | |||
|  [9.0.0+] [[#AnalogStickFactoryCalibration|AnalogStickFactoryCalibrationR]]  | |||
|-  | |||
|  0x42F0  | |||
|  0x1  | |||
|  [9.0.0+] [[#ConsoleSixAxisSensorModuleType|ConsoleSixAxisSensorModuleType]]  | |||
|-  | |||
|  0x4300  | |||
|  0x6  | |||
|  [9.0.0+] [[#ConsoleSixAxisSensorHorizontalOffset|ConsoleSixAxisSensorHorizontalOffset]]  | |||
|-  | |-  | ||
|  0x4310  | |  0x4310  | ||
|    | |  0x1  | ||
|  [6.0.0+]   | |  [6.0.0+] [[#BatteryVersion|BatteryVersion]]  | ||
|     | |-  | ||
|  0x4320  | |||
|  0x1  | |||
|  [10.0.0+] [[#TouchIcVendorId|TouchIcVendorId]]  | |||
|-  | |||
|  0x4330  | |||
|  0x4  | |||
|  [9.0.0+] [[#ColorModel|ColorModel]]  | |||
|-  | |||
|  0x4340  | |||
|  0x1  | |||
|  [10.0.0+] [[#ConsoleSixAxisSensorMountType|ConsoleSixAxisSensorMountType]]  | |||
|}  | |||
== SpeakerCalibrationValue ==  | |||
This is "nn::cal::SpeakerCalibrationValue".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Offset || Size || Description  | |||
|-  | |||
| 0x0 || 0x2 || Version  | |||
|-  | |||
| 0x2 || 0x22 || Reserved  | |||
|-  | |||
| 0x24 || 0x2 || SpeakerHpf2A1  | |||
|-  | |||
| 0x26 || 0x2 || SpeakerHpf2A2  | |||
|-  | |||
| 0x28 || 0x2 || SpeakerHpf2H0  | |||
|-  | |||
| 0x2A || 0x2 || SpeakerEqInputVolume  | |||
|-  | |||
| 0x2C || 0x2 || SpeakerEqOutputVolume  | |||
|-  | |||
| 0x2E || 0x2 || SpeakerEqCtrl1  | |||
|-  | |||
| 0x30 || 0x2 || SpeakerEqCtrl2  | |||
|-  | |||
| 0x32 || 0x2 || SpeakerDrcAgcCtrl2  | |||
|-  | |||
| 0x34 || 0x2 || SpeakerDrcAgcCtrl3  | |||
|-  | |||
| 0x36 || 0x2 || SpeakerDrcAgcCtrl1  | |||
|-  | |||
| 0x38 || 0x2 || SpeakerAnalogVolume  | |||
|-  | |||
| 0x3A || 0x2 || HeadphoneAnalogVolume  | |||
|-  | |||
| 0x3C || 0x2 || SpeakerDigitalVolumeMin  | |||
|-  | |||
| 0x3E || 0x2 || SpeakerDigitalVolumeMax  | |||
|-  | |||
| 0x40 || 0x2 || HeadphoneDigitalVolumeMin  | |||
|-  | |||
| 0x42 || 0x2 || HeadphoneDigitalVolumeMax  | |||
|-  | |||
| 0x44 || 0x2 || MicFixedGain  | |||
|-  | |||
| 0x46 || 0x2 || MicVariableVolumeMin  | |||
|-  | |||
| 0x48 || 0x2 || MicVariableVolumeMax  | |||
|-  | |||
| 0x4A || 0x7B6 || Reserved  | |||
|}  | |||
== ProductModel ==  | |||
This is "nn::cal::ProductModel".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| 0 || Invalid  | |||
|-  | |||
| 1 || Nx  | |||
|-  | |||
| 2 || Copper  | |||
|-  | |||
| 3 || Iowa  | |||
|-  | |||
| 4 || Hoag  | |||
|-  | |||
| 5 || Calcio  | |||
|-  | |||
| 6 || Aula  | |||
|}  | |||
== ColorVariation ==  | |||
This is "nn::cal::ColorVariation".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| 0 || Default  | |||
|-  | |||
| 1 ||   | |||
|-  | |||
| 2 ||   | |||
|-  | |||
| 3 ||   | |||
|-  | |||
| 4 ||   | |||
|}  | |||
== LcdVendorId ==  | |||
This is "nn::cal::LcdVendorId".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Offset || Size || Description  | |||
|-  | |||
| 0x0 || 0x1 || [[#Vendor|Vendor]]  | |||
|-  | |||
| 0x1 || 0x1 || Model  | |||
|-  | |||
| 0x2 || 0x1 || [[#Board|Board]]  | |||
|-  | |||
| 0x3 || 0x1 || Reserved  | |||
|}  | |||
=== Vendor ===  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| 0x10 || JDI  | |||
|-  | |||
| 0x20 || InnoLux  | |||
|-  | |||
| 0x30 || AUO  | |||
|-  | |||
| 0x40 || Sharp  | |||
|-  | |||
| 0x50 || Samsung  | |||
|}  | |||
=== Board ===  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| 0x9 || Icosa (JDI SI display)  | |||
|-  | |||
| 0xF || Icosa/Iowa  | |||
|-  | |||
| 0x10 || Hoag  | |||
|-  | |||
| 0x20 || Aula  | |||
|-  | |-  | ||
| 0x26 || Icosa (JDI LTPS display)  | |||
|}  | |||
== UsbTypeCPowerSourceCircuit ==  | |||
This is "nn::cal::UsbTypeCPowerSourceCircuit".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| 0 ||    | |||
|-  | |||
| 1 ||    | |||
|}  | |||
== HousingColor ==  | |||
This is "nn::cal::HousingColor".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Offset || Size || Description  | |||
|-  | |||
| 0x0 || 0x1 || R  | |||
|-  | |||
| 0x1 || 0x1 || G  | |||
|-  | |||
| 0x2 || 0x1 || B  | |||
|-  | |||
| 0x3 || 0x1 || A  | |||
|}  | |||
== AnalogStickModuleType ==  | |||
This is "nn::cal::AnalogStickModuleType".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| 0x23 || H1 (Hosiden)  | |||
|-  | |||
| 0x24 ||   | |||
|-  | |||
| 0x25 || H5 (Hosiden)  | |||
|-  | |||
| 0x41 || F1 (FIT)  | |||
|}  | |||
== AnalogStickModelParameter ==  | |||
This is "nn::cal::AnalogStickModelParameter". Same as [[Joy-Con#AnalogStickModelValue|AnalogStickModelValue]].  | |||
== AnalogStickFactoryCalibration ==  | |||
This is "nn::cal::AnalogStickFactoryCalibration". Same as [[Joy-Con#AnalogStickCalibrationValue|AnalogStickCalibrationValue]].  | |||
== ConsoleSixAxisSensorModuleType ==  | |||
This is "nn::cal::ConsoleSixAxisSensorModuleType".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| -1 || Invalid  | |||
|-  | |||
| 0 || None  | |||
|-  | |||
| 1 || Lsm6ds3h  | |||
|-  | |||
| 2 || Bmi160  | |||
|-  | |||
| 3 || Icm20600  | |||
|-  | |||
| 4 || Lsm6ds3trc  | |||
|-  | |||
| 5 || Icm40607  | |||
|-  | |||
| 6 || Icm42607p  | |||
|-  | |||
| 7 || Lsm6dsv  | |||
|}  | |||
== ConsoleSixAxisSensorHorizontalOffset ==  | |||
This is "nn::cal::ConsoleSixAxisSensorHorizontalOffset". Same as [[Joy-Con#SixAxisSensorModelValue|SixAxisSensorModelValue]].  | |||
== BatteryVersion ==  | |||
This is "nn::cal::BatteryVersion".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| 0 || HAC-003  | |||
|-  | |||
| 1 ||   | |||
|-  | |||
| 2 || HDH-003  | |||
|}  | |||
== TouchIcVendorId ==  | |||
This is "nn::cal::TouchIcVendorId".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| 0 || FTM4CD60DA1BE  | |||
|-  | |||
| 1 || FTM4CD50TA1BE  | |||
|}  | |||
== ColorModel ==  | |||
This is "nn::cal::ColorModel".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| 0 ||   | |||
|}  | |||
== ConsoleSixAxisSensorMountType ==  | |||
This is "nn::cal::ConsoleSixAxisSensorMountType".  | |||
{| class="wikitable" border="1"  | |||
|-  | |||
! Value  | |||
! Description  | |||
|-  | |||
| 0 ||   | |||
|-  | |||
| 1 ||   | |||
|}  | |}  | ||
| Line 350: | Line 628: | ||
   return(crc);  |    return(crc);  | ||
  }  |   }  | ||
= CalibrationFile =  | |||
This is "nn::cal::CalibrationFile".  | |||
This is a FAT12 compliant filesystem mainly used to keep calibration logs and other assorted files.  | |||
 ├── Certifications  | |||
 │   └── WirelessCertification.png  | |||
 └── ptd  | |||
     ├── DeviceIdWithEmsBit.dat  | |||
     ├── Ecid.dat  | |||
     ├── prodCode.dat  | |||
     └── log  | |||
         ├── Process_asm1.log  | |||
         ├── Process_board1.log  | |||
         ├── TestFlagLine.log  | |||
         ├── TestFlagQc.log  | |||
         ├── AGING  | |||
         │   └── Sequence.log  | |||
         ├── BOARD_TEST  | |||
         │   └── Sequence.log  | |||
         ├── BOARD_WIRELESS  | |||
         │   └── Sequence.log  | |||
         ├── FINAL_CHECK  | |||
         │   └── Sequence.log  | |||
         ├── LCD_AND_KEY  | |||
         │   └── Sequence.log  | |||
         └── USB_AND_HP  | |||
             └── Sequence.log  | |||
== DeviceIdWithEmsBit ==  | |||
Contains a 0x10-byte uppercase hex string, identical to the DeviceId in the [[Settings_services|DeviceCert]].  | |||