Changes

Jump to navigation Jump to search
no edit summary
Line 13: Line 13:  
|-
 
|-
 
| 21 || [[#ActivateMouse]]
 
| 21 || [[#ActivateMouse]]
 +
|-
 +
| 26 || [16.0.0+] ActivateDebugMouse
 
|-
 
|-
 
| 31 || [[#ActivateKeyboard]]
 
| 31 || [[#ActivateKeyboard]]
Line 93: Line 95:  
|-
 
|-
 
| 91 || [[#ActivateGesture]]
 
| 91 || [[#ActivateGesture]]
 +
|-
 +
| 92 || [18.0.0+]
 
|-
 
|-
 
| 100 || [[#SetSupportedNpadStyleSet]]
 
| 100 || [[#SetSupportedNpadStyleSet]]
Line 171: Line 175:  
|-
 
|-
 
| 212 || [11.0.0+] [[#SendVibrationValueInBool]]
 
| 212 || [11.0.0+] [[#SendVibrationValueInBool]]
 +
|-
 +
| 213 || [17.0.0+] SendVibrationValueInMode
 +
|-
 +
| 214 || [17.0.0+] SendVibrationValuesInMode
 
|-
 
|-
 
| 300 || [3.0.0+] [[#ActivateConsoleSixAxisSensor]]
 
| 300 || [3.0.0+] [[#ActivateConsoleSixAxisSensor]]
Line 193: Line 201:  
|-
 
|-
 
| 310 || [6.0.0+] [[#ResetSevenSixAxisSensorTimestamp]]
 
| 310 || [6.0.0+] [[#ResetSevenSixAxisSensorTimestamp]]
 +
|-
 +
| 311 || [17.0.0+] ForceActivateConsoleSixAxisSensor
 +
|-
 +
| 312 || [17.0.0+] ForceDeactivateConsoleSixAxisSensor
 
|-
 
|-
 
| 400 || [3.0.0+] [[#IsUsbFullKeyControllerEnabled]]
 
| 400 || [3.0.0+] [[#IsUsbFullKeyControllerEnabled]]
Line 279: Line 291:  
|-
 
|-
 
| 1003 || [9.0.0+] [[#IsFirmwareUpdateNeededForNotification]]
 
| 1003 || [9.0.0+] [[#IsFirmwareUpdateNeededForNotification]]
 +
|-
 +
| 1004 || [17.0.0+] SetTouchScreenResolution
 
|-
 
|-
 
| 2000 || [10.0.0+] [[#ActivateDigitizer]]
 
| 2000 || [10.0.0+] [[#ActivateDigitizer]]
Line 1,023: Line 1,037:  
|-
 
|-
 
| 17 || [13.0.0+] IsTouchScreenManaged
 
| 17 || [13.0.0+] IsTouchScreenManaged
 +
|-
 +
| 18 || [18.0.0+]
 
|-
 
|-
 
| 20 || [[#DeactivateMouse]]
 
| 20 || [[#DeactivateMouse]]
Line 1,029: Line 1,045:  
|-
 
|-
 
| 22 || [[#UnsetMouseAutoPilotState]]
 
| 22 || [[#UnsetMouseAutoPilotState]]
 +
|-
 +
| 25 || [16.0.0+] SetDebugMouseAutoPilotState
 +
|-
 +
| 26 || [16.0.0+] UnsetDebugMouseAutoPilotState
 
|-
 
|-
 
| 30 || [[#DeactivateKeyboard]]
 
| 30 || [[#DeactivateKeyboard]]
Line 1,133: Line 1,153:  
|-
 
|-
 
| 216 || [6.0.0+] SetAllKuinaDevicesToFirmwareUpdateMode
 
| 216 || [6.0.0+] SetAllKuinaDevicesToFirmwareUpdateMode
 +
|-
 +
| 217 || [17.0.0+] StartFirmwareUpdateFromImageSet
 
|-
 
|-
 
| 221 || [3.0.0+] [[#UpdateControllerColor]]
 
| 221 || [3.0.0+] [[#UpdateControllerColor]]
Line 1,227: Line 1,249:  
|-
 
|-
 
| 350 || [5.0.0+] [[#AddRegisteredDevice]]
 
| 350 || [5.0.0+] [[#AddRegisteredDevice]]
 +
|-
 +
| 351 || [17.0.0+] GetRegisteredDevicesCountDebug
 +
|-
 +
| 352 || [17.0.0+] DeleteRegisteredDevicesDebug
 
|-
 
|-
 
| 400 || [6.0.0+] DisableExternalMcuOnNxDevice
 
| 400 || [6.0.0+] DisableExternalMcuOnNxDevice
Line 1,249: Line 1,275:  
|-
 
|-
 
| 600 || [10.0.0+] ConvertPadState
 
| 600 || [10.0.0+] ConvertPadState
 +
|-
 +
| 601 || [18.0.0+] [[#IsButtonConfigSupported]]
 +
|-
 +
| 602 || [18.0.0+] [[#IsButtonConfigEmbeddedSupported]]
 +
|-
 +
| 603 || [18.0.0+] [[#DeleteButtonConfig]]
 +
|-
 +
| 604 || [18.0.0+] [[#DeleteButtonConfigEmbedded]]
 +
|-
 +
| 605 || [18.0.0+] [[#SetButtonConfigEnabled]]
 +
|-
 +
| 606 || [18.0.0+] [[#SetButtonConfigEmbeddedEnabled]]
 +
|-
 +
| 607 || [18.0.0+] [[#IsButtonConfigEnabled]]
 +
|-
 +
| 608 || [18.0.0+] [[#IsButtonConfigEmbeddedEnabled]]
 +
|-
 +
| 609 || [18.0.0+] [[#SetButtonConfigEmbedded]]
 +
|-
 +
| 610 || [18.0.0+] [[#SetButtonConfigFull]]
 +
|-
 +
| 611 || [18.0.0+] [[#SetButtonConfigLeft]]
 +
|-
 +
| 612 || [18.0.0+] [[#SetButtonConfigRight]]
 +
|-
 +
| 613 || [18.0.0+] [[#GetButtonConfigEmbedded]]
 +
|-
 +
| 614 || [18.0.0+] [[#GetButtonConfigFull]]
 +
|-
 +
| 615 || [18.0.0+] [[#GetButtonConfigLeft]]
 +
|-
 +
| 616 || [18.0.0+] [[#GetButtonConfigRight]]
 
|-
 
|-
 
| 650 || [12.0.0+] AddButtonPlayData
 
| 650 || [12.0.0+] AddButtonPlayData
Line 1,261: Line 1,319:  
|-
 
|-
 
| 2002 || [10.0.0+] UnsetDigitizerAutoPilotState
 
| 2002 || [10.0.0+] UnsetDigitizerAutoPilotState
 +
|-
 +
| 3000 || [16.0.0+] ReloadFirmwareDebugSettings
 
|}
 
|}
   Line 1,352: Line 1,412:     
[9.0.0+] Now takes a total of 8-bytes of input, returns a total of 0x18-bytes of output.
 
[9.0.0+] Now takes a total of 8-bytes of input, returns a total of 0x18-bytes of output.
 +
 +
[18.0.0+] Now takes a total of 8-bytes of input, returns a total of 0x20-bytes of output.
    
== GetSixAxisSensorDriverStates ==
 
== GetSixAxisSensorDriverStates ==
Line 1,673: Line 1,735:  
|-
 
|-
 
| 812 || [8.0.0+] GetConsoleUniqueSixAxisSensorHandle
 
| 812 || [8.0.0+] GetConsoleUniqueSixAxisSensorHandle
 +
|-
 +
| 813 || [18.0.0+]
 
|-
 
|-
 
| 821 || StartAnalogStickManualCalibration
 
| 821 || StartAnalogStickManualCalibration
Line 1,746: Line 1,810:  
| 1120 || [6.0.0+] SetFirmwareHotfixUpdateSkipEnabled
 
| 1120 || [6.0.0+] SetFirmwareHotfixUpdateSkipEnabled
 
|-
 
|-
| 1130 || [6.0.0+] InitializeUsbFirmwareUpdate
+
| 1130 || [6.0.0-15.0.1] InitializeUsbFirmwareUpdate
 
|-
 
|-
 
| 1131 || [6.0.0+] FinalizeUsbFirmwareUpdate
 
| 1131 || [6.0.0+] FinalizeUsbFirmwareUpdate
Line 1,774: Line 1,838:  
| 1157 || [10.0.0+] [[#CancelConnectionTrigger]]
 
| 1157 || [10.0.0+] [[#CancelConnectionTrigger]]
 
|-
 
|-
| 1200 || [10.0.0+] [[#IsButtonConfigSupported]]
+
| 1200 || [10.0.0-17.0.1] [[#IsButtonConfigSupported]]
 
|-
 
|-
| 1201 || [11.0.0+] [[#IsButtonConfigEmbeddedSupported]] ([10.0.0-10.2.0] [[#DeleteButtonConfig]])
+
| 1201 || [11.0.0-17.0.1] [[#IsButtonConfigEmbeddedSupported]] ([10.0.0-10.2.0] [[#DeleteButtonConfig]])
 
|-
 
|-
| 1202 || [11.0.0+] [[#DeleteButtonConfig]] ([10.0.0-10.2.0] [[#SetButtonConfigEnabled]])
+
| 1202 || [11.0.0-17.0.1] [[#DeleteButtonConfig]] ([10.0.0-10.2.0] [[#SetButtonConfigEnabled]])
 
|-
 
|-
| 1203 || [11.0.0+] [[#DeleteButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#IsButtonConfigEnabled]])
+
| 1203 || [11.0.0-17.0.1] [[#DeleteButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#IsButtonConfigEnabled]])
 
|-
 
|-
| 1204 || [11.0.0+] [[#SetButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigEmbedded]])
+
| 1204 || [11.0.0-17.0.1] [[#SetButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigEmbedded]])
 
|-
 
|-
| 1205 || [11.0.0+] [[#SetButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigFull]])
+
| 1205 || [11.0.0-17.0.1] [[#SetButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigFull]])
 
|-
 
|-
| 1206 || [11.0.0+] [[#IsButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigLeft]])
+
| 1206 || [11.0.0-17.0.1] [[#IsButtonConfigEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigLeft]])
 
|-
 
|-
| 1207 || [11.0.0+] [[#IsButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigRight]])
+
| 1207 || [11.0.0-17.0.1] [[#IsButtonConfigEmbeddedEnabled]] ([10.0.0-10.2.0] [[#SetButtonConfigRight]])
 
|-
 
|-
| 1208 || [11.0.0+] [[#SetButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#GetButtonConfigEmbedded]])
+
| 1208 || [11.0.0-17.0.1] [[#SetButtonConfigEmbedded]] ([10.0.0-10.2.0] [[#GetButtonConfigEmbedded]])
 
|-
 
|-
| 1209 || [11.0.0+] [[#SetButtonConfigFull]] ([10.0.0-10.2.0] [[#GetButtonConfigFull]])
+
| 1209 || [11.0.0-17.0.1] [[#SetButtonConfigFull]] ([10.0.0-10.2.0] [[#GetButtonConfigFull]])
 
|-
 
|-
 
| 1210 || [10.0.0-10.2.0] [[#GetButtonConfigLeft]]
 
| 1210 || [10.0.0-10.2.0] [[#GetButtonConfigLeft]]
 
|-
 
|-
| 1211 || [11.0.0+] [[#SetButtonConfigRight]] ([10.0.0-10.2.0] [[#GetButtonConfigRight]])
+
| 1211 || [11.0.0-17.0.1] [[#SetButtonConfigRight]] ([10.0.0-10.2.0] [[#GetButtonConfigRight]])
 
|-
 
|-
| 1212 || [11.0.0+] [[#GetButtonConfigEmbedded]]
+
| 1212 || [11.0.0-17.0.1] [[#GetButtonConfigEmbedded]]
 
|-
 
|-
| 1213 || [11.0.0+] [[#GetButtonConfigFull]]
+
| 1213 || [11.0.0-17.0.1] [[#GetButtonConfigFull]]
 
|-
 
|-
| 1214 || [11.0.0+] [[#GetButtonConfigLeft]]
+
| 1214 || [11.0.0-17.0.1] [[#GetButtonConfigLeft]]
 
|-
 
|-
| 1215 || [11.0.0+] [[#GetButtonConfigRight]]
+
| 1215 || [11.0.0-17.0.1] [[#GetButtonConfigRight]]
 
|-
 
|-
 
| 1250 || [10.0.0+] [[#IsCustomButtonConfigSupported]]
 
| 1250 || [10.0.0+] [[#IsCustomButtonConfigSupported]]
Line 1,890: Line 1,954:  
| 1291 || [11.0.0+] [[#SetButtonConfigStorageRight]]
 
| 1291 || [11.0.0+] [[#SetButtonConfigStorageRight]]
 
|-
 
|-
| 12010 || [11.0.0+] [[#SetButtonConfigLeft]]
+
| 1308 || [18.0.0+]
 +
|-
 +
| 1309 || [18.0.0+]
 +
|-
 +
| 1320 || [17.0.0+] WakeTouchScreenUp
 +
|-
 +
| 1321 || [17.0.0+] PutTouchScreenToSleep
 +
|-
 +
| 12010 || [11.0.0-17.0.1] [[#SetButtonConfigLeft]]
 
|}
 
|}
   Line 2,052: Line 2,124:     
It first ensures the touch screen IC's chip id is one of the following:
 
It first ensures the touch screen IC's chip id is one of the following:
  0x7036 - STMicroelectronics FingerTipS FT9CJ/FT9CF
+
  0x7036 - Ftm4cd60d (STMicroelectronics FingerTipS FT9CJ/FT9CF)
  0x4036 - ?
+
  0x4036 - Fst2ba61ya1
    
Then constructs the final firmware version as follows:
 
Then constructs the final firmware version as follows:
Line 3,336: Line 3,408:  
| 0x1C
 
| 0x1C
 
| [5.0.0+] [[#ConsoleSixAxisSensorSharedMemoryFormat|ConsoleSixAxisSensor]]
 
| [5.0.0+] [[#ConsoleSixAxisSensorSharedMemoryFormat|ConsoleSixAxisSensor]]
 +
|-
 +
| 0x3DC00
 +
| 0x400
 +
| [16.0.0+] [[#MouseSharedMemoryFormat|DebugMouse]]
 
|}
 
|}
   Line 7,269: Line 7,345:  
| "MY" || [[#DeviceTypeInternal|DeviceType]] 4 and [[#DeviceTypeInternal|DeviceType]] 5
 
| "MY" || [[#DeviceTypeInternal|DeviceType]] 4 and [[#DeviceTypeInternal|DeviceType]] 5
 
|-
 
|-
| "LC" || [[#DeviceTypeInternal|DeviceType]] 6 and [[#DeviceTypeInternal|DeviceType]] 30
+
| "LC" || "Tarragon" ([[#DeviceTypeInternal|DeviceType]] 6) and [[#DeviceTypeInternal|DeviceType]] 30
 
|-
 
|-
 
| "HL" || Famicom left controller
 
| "HL" || Famicom left controller
Line 7,465: Line 7,541:  
| 2 || Rail
 
| 2 || Rail
 
|-
 
|-
| 3 || USB
+
| 3 || Usb
 
|-
 
|-
 
| 4 || Embedded
 
| 4 || Embedded
Line 7,711: Line 7,787:  
| 5 || JoyRight || RightController || ||
 
| 5 || JoyRight || RightController || ||
 
|-
 
|-
| 6 || FullKey || FullKeyController || ||
+
| 6 || FullKey || FullKeyController || || "Tarragon" controller
 
|-
 
|-
 
| 7 || LarkHvcLeft, HandheldLarkHvcLeft || LeftController || LarkHvc1, HandheldLarkHvc1Only, HandheldLarkHvc1JoyConRight, HandheldLarkHvc1LarkHvc2, HandheldLarkHvc1LarkNesRight, HandheldNone || Famicom left controller
 
| 7 || LarkHvcLeft, HandheldLarkHvcLeft || LeftController || LarkHvc1, HandheldLarkHvc1Only, HandheldLarkHvc1JoyConRight, HandheldLarkHvc1LarkHvc2, HandheldLarkHvc1LarkNesRight, HandheldNone || Famicom left controller
Line 7,762: Line 7,838:  
|}
 
|}
   −
= NpadPowerInfo =
+
= VidPidDefinition =
This is "nn::hid::system::NpadPowerInfo".
+
This is "nn::hidtypes::VidPidDefinition".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 7,772: Line 7,848:  
|-
 
|-
 
| 0x0
 
| 0x0
| 0x1
+
| 0x2
| IsPowered
+
| Vid
 
|-
 
|-
| 0x1
+
| 0x2
| 0x1
+
| 0x2
| IsCharging
+
| PidRangeMax
 
|-
 
|-
 +
| 0x4
 
| 0x2
 
| 0x2
 +
| PidRangeMin
 +
|-
 
| 0x6
 
| 0x6
 +
| 0x1
 +
| [[#DeviceTypeInternal|DeviceType]]
 +
|-
 +
| 0x7
 +
| 0x1
 
| Reserved
 
| Reserved
|-
  −
| 0x8
  −
| 0x6
  −
| [[#BatteryLevel|BatteryLevel]]
   
|}
 
|}
   −
= BatteryLevel =
+
= VidPidDefinitions =
This is "nn::hid::system::NpadBatteryLevel". This is a 4 byte value.
+
This is "nn::hidtypes::detail::VidPidDefinitions". This is a list of [[#VidPidDefinition|VidPidDefinition]] objects maintained by the hid-sysmodule.
   −
= ConsoleSixAxisSensorHandle =
+
{| class="wikitable" border="1"
 +
|-
 +
! Vid || PidRangeMax || PidRangeMin || [[#DeviceTypeInternal|DeviceType]]
 +
|-
 +
| 0x57E || 0x2006 || 0x2006 || 2
 +
|-
 +
| 0x57E || 0x2007 || 0x2007 || 1
 +
|-
 +
| 0x57E || 0x2009 || 0x2009 || 3
 +
|-
 +
| 0x57E || 0x200F || 0x200F || 24
 +
|-
 +
| 0x57E || 0x200E || 0x200E || 23
 +
|-
 +
| 0x57E || 0x2008 || 0x2008 || 25
 +
|-
 +
| 0x57E || 0x2017 || 0x2017 || 11
 +
|-
 +
| 0x57E || 0x2018 || 0x2018 || 26
 +
|-
 +
| 0x57E || 0x2019 || 0x2019 || 22
 +
|-
 +
| 0x57E || 0x201A || 0x201A || 27
 +
|-
 +
| 0x57E || 0x201E || 0x201E || 28
 +
|-
 +
| 0x57E || 0x201F || 0x201F || 29
 +
|-
 +
| 0x57E || 0x337 || 0x337 || 13
 +
|-
 +
| 0x57E || 0x300E || 0x300E || [17.0.0+] 18
 +
|-
 +
| 0x57E || 0x300D || 0x300D || [17.0.0+] 14
 +
|-
 +
| 0xF0D || 0x92 || 0x92 || 15
 +
|-
 +
| 0xF0D || 0xAB || 0xAA || 15
 +
|-
 +
| 0xF0D || 0xC1 || 0xC1 || 15
 +
|-
 +
| 0xF0D || 0xFF || 0xF0 || 15
 +
|-
 +
| 0xF0D || 0x22F || 0x200 || 15
 +
|-
 +
| 0xE6F || 0x193 || 0x180 || 15
 +
|-
 +
| 0x20D6 || 0xA719 || 0xA710 || 15
 +
|-
 +
| 0x20D6 || 0xA729 || 0xA720 || 15
 +
|-
 +
| 0x33DD || 0xB || 0x1 || 15
 +
|}
 +
 
 +
= NpadPowerInfo =
 +
This is "nn::hid::system::NpadPowerInfo".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| IsPowered
 +
|-
 +
| 0x1
 +
| 0x1
 +
| IsCharging
 +
|-
 +
| 0x2
 +
| 0x6
 +
| Reserved
 +
|-
 +
| 0x8
 +
| 0x4
 +
| [[#BatteryLevel|BatteryLevel]]
 +
|}
 +
 
 +
= BatteryLevel =
 +
This is "nn::hid::system::NpadBatteryLevel". This is a 4 byte value.
 +
 
 +
= ConsoleSixAxisSensorHandle =
 
This is "nn::hid::ConsoleSixAxisSensorHandle". This is a 4-byte struct with 4-byte alignment.
 
This is "nn::hid::ConsoleSixAxisSensorHandle". This is a 4-byte struct with 4-byte alignment.
   Line 8,759: Line 8,921:  
| 2 || Rail
 
| 2 || Rail
 
|-
 
|-
| 3 || USB
+
| 3 || Usb
 
|-
 
|-
 
| 4 || Embedded
 
| 4 || Embedded
Line 8,938: Line 9,100:  
|-
 
|-
 
| 2
 
| 2
| HasLeftSixAxisSensor
+
| HasLeftJoySixAxisSensor
 
|-
 
|-
 
| 3
 
| 3
| HasRightSixAxisSensor
+
| HasRightJoySixAxisSensor
 
|-
 
|-
 
| 4
 
| 4
| HasExternalSixAxisSensor
+
| HasFullKeySixAxisSensor
 
|-
 
|-
 
| 5
 
| 5
Line 8,968: Line 9,130:  
|-
 
|-
 
| 12
 
| 12
| HasPalmaIc
+
| IsPalma
 
|-
 
|-
 
| 13
 
| 13
Line 8,983: Line 9,145:  
|-
 
|-
 
| 17
 
| 17
| HasLeftRightBattery
+
| HasLeftJoyRightJoyBattery
 
|-
 
|-
 
| 18
 
| 18
| HasStandardBattery
+
| HasFullKeyBattery
 
|-
 
|-
 
| 19
 
| 19
| HasBattery
+
| IsDisconnectControllerIfBatteryNone
 
|-
 
|-
 
| 20
 
| 20
| HasMainColor
+
| HasControllerColor
 
|-
 
|-
 
| 21
 
| 21
| HasSubColor
+
| HasGripColor
 
|-
 
|-
 
| 22
 
| 22
Line 9,016: Line 9,178:  
|-
 
|-
 
| 28
 
| 28
| IsEmbeddedController
+
| IsButtonConfigEmbeddedSupported
 
|-
 
|-
 
| 29
 
| 29
| IsFullController
+
| IsButtonConfigFullSupported
 
|-
 
|-
 
| 30
 
| 30
| IsLeftController
+
| IsButtonConfigLeftSupported
 
|-
 
|-
 
| 31
 
| 31
| IsRightController
+
| IsButtonConfigRightSupported
 
|-
 
|-
 
| 32
 
| 32
Line 9,037: Line 9,199:  
|-
 
|-
 
| 35
 
| 35
| NormalizeAnalogStickWithInnerCross
+
| IsNormalizeAnalogStickWithInnerCross
 
|}
 
|}
   Line 9,078: Line 9,240:  
|}
 
|}
   −
= UnmaskFeatureDescriptorType =
+
= DeviceDescriptionList =
This is "nn::hid::server::UnmaskFeatureDescriptorType".
+
This is "nn::hidtypes::detail::DeviceDescriptionList". This is a list of [[#DeviceDescriptorType|DeviceDescriptorType]] objects maintained by the hid-sysmodule.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset || Size || Description
+
! [[#DeviceTypeInternal|DeviceType]] || [[#FeatureType|FeatureType]] || [[#DigitalButton|DigitalButton]] || [[#AssignmentStyle|AssignmentStyle]] || [[#Color|DeviceColor]]
 
|-
 
|-
| 0x0 || 0x1 || [[#DeviceTypeInternal|DeviceType]]
+
| 1 || 0x18BDBE44A || 0x18F0406AF || 0x24 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
 +
|-
 +
| 2 || 0x14CDB8225 || 0x6F8F950 || 0x12 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
 +
|-
 +
| 3 || 0x72BBDA073 || 0xFFCFFFF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| 4 || 0x108000025 || 0x6F8F950 || 0x2 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
 +
|-
 +
| 5 || 0x10800004A || 0x18F0406AF || 0x4 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
 +
|-
 +
| 6 || 0x108800013 || 0xFFCFFFF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| 7 || 0x108CA0000 || 0x2008FCC3 || 0x11 || 0xFF322891, 0xFFFFFFFF, 0x00000000, 0x00000000
 +
|-
 +
| 8 || 0x108CA0800 || 0x4F0C3 || 0x21 || 0xFF322891, 0xFFFFFFFF, 0x00000000, 0x00000000
 +
|-
 +
| 9 || 0x108CA0000 || 0x2008FCC3 || 0x11 || 0xFFD9D7D7, 0xFFFFFFFF, 0x00000000, 0x00000000
 +
|-
 +
| 10 || 0x108CA0000 || 0x4FCC3 || 0x21 || 0xFFD9D7D7, 0xFFFFFFFF, 0x00000000, 0x00000000
 +
|-
 +
| 11 || 0x700CC0000 || 0xFFCF || 0x0 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| 12 || 0x841011 || 0x10000010 || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| 13 || 0x83 || 0xFF0F6CF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| 14 || 0x1 || 0xF8F950 || 0x10 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
 +
|-
 +
| 15 || 0x3 || 0xFFCFFFF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| 16 || 0x3 || 0xFFCFFFF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| 17 || 0x1001A013 || 0xFFCFFFF || 0x8 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| 18 || 0x2 || 0xF0406AF || 0x20 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
 +
|-
 +
| 19 || 0x1088DA073 || 0xFFCF3FF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| 20 || 0x108CA0025 || 0x6F8F150 || 0x12 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
 +
|-
 +
| 21 || 0x108CA604A || 0x18F0402AF || 0x24 || 0xFF828282, 0xFF0F0F0F, 0x00000000, 0x00000000
 +
|-
 +
| [12.0.0+] 22 || 0xF00CC8101 || 0x1E1FCF6C3 || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| [12.0.0+] 23 || 0x100000000 || 0x0 || 0x0 || 0x00000000, 0x00000000, 0x00000000, 0x00000000
 +
|-
 +
| [13.0.0+] 28 || 0x700CC0000 || 0xCF6CF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|-
 +
| [14.0.0+] 30 || 0x108800003 || 0xFFCFFFF || 0x1 || 0xFF2D2D2D, 0xFFE6E6E6, 0xFF464646, 0xFF464646
 +
|}
 +
 
 +
= UnmaskFeatureDescriptorType =
 +
This is "nn::hid::server::UnmaskFeatureDescriptorType".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x1 || [[#DeviceTypeInternal|DeviceType]]
 
|-
 
|-
 
| 0x1 || 0x1 || [[#InterfaceType|InterfaceType]]
 
| 0x1 || 0x1 || [[#InterfaceType|InterfaceType]]
Line 9,092: Line 9,312:  
|-
 
|-
 
| 0x8 || 0x8 || [[#FeatureType|FeatureType]]
 
| 0x8 || 0x8 || [[#FeatureType|FeatureType]]
 +
|}
 +
 +
= UnmaskFeatureDescriptorList =
 +
This is "nn::hid::server::UnmaskFeatureDescriptorList". This is a list of [[#UnmaskFeatureDescriptorType|UnmaskFeatureDescriptorType]] objects maintained by the hid-sysmodule.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! [[#DeviceTypeInternal|DeviceType]] || [[#InterfaceType|InterfaceType]] || [[#FeatureType|FeatureType]]
 +
|-
 +
| 3 || 3 || 0x2000
 +
|-
 +
| 2 || 2 || 0x200
 +
|-
 +
| 1 || 2 || 0x400
 +
|-
 +
| 19 || 3 || 0x2000
 +
|-
 +
| 2 || 3 || 0x200
 +
|-
 +
| 1 || 3 || 0x6400
 
|}
 
|}
   Line 9,810: Line 10,050:  
The following devices are used via hidbus:
 
The following devices are used via hidbus:
 
* [[Ring-Con]]
 
* [[Ring-Con]]
 +
** [[#BusType|BusType]] is 0 (LeftJoyRail) or 1 (RightJoyRail).
 +
** [[#GetExternalDeviceId|DeviceId]] is 0x20 ("Ronde").
 
* Famicom right controller (with microphone)
 
* Famicom right controller (with microphone)
** [[#BusType]] is 2, ExternalDeviceId is 0x21. SendAndReceive is not used. EnableJoyPollingReceiveMode is used where the input buffer is an u32 with value 0, [[#JoyPollingMode]] = 2. GetJoyPollingReceivedData is used to get the output data.
+
** [[#BusType|BusType]] is 2 (InternalBus).
* Used by Starlink: Battle For Atlas.
+
** [[#GetExternalDeviceId|DeviceId]] is 0x21 ("LarkMic").
** [[#BusType]] is 1, ExternalDeviceId is 0x28. EnableJoyPollingReceiveMode is used where the input buffer is an u16 with value 0x09, [[#JoyPollingMode]] = 0. SendAndReceive is called from 1 func. GetJoyPollingReceivedData is used to determine whether to call the same func which calls SendAndReceive, which is only done if <code>out_size==0x4 && data[0]==0x09 && (data[1] & 1 == 1)</code>.
+
** SendAndReceive is not used. EnableJoyPollingReceiveMode is used where the input buffer is an u32 with value 0, [[#JoyPollingMode]] = 2. GetJoyPollingReceivedData is used to get the output data.
 +
* "Starlink: Battle For Atlas" controller mount
 +
** [[#BusType|BusType]] is 1 (RightJoyRail).
 +
** [[#GetExternalDeviceId|DeviceId]] is 0x28 ("Flight").
 +
** EnableJoyPollingReceiveMode is used where the input buffer is an u16 with value 0x09, [[#JoyPollingMode]] = 0. SendAndReceive is called from 1 func. GetJoyPollingReceivedData is used to determine whether to call the same func which calls SendAndReceive, which is only done if <code>out_size==0x4 && data[0]==0x09 && (data[1] & 1 == 1)</code>.
    
= RomFS =
 
= RomFS =
Line 9,835: Line 10,081:  
[10.0.0+] The RomFs for hid-sysmodule was removed. The data which used to be in RomFs was moved into title [[Title_list|0100000000000822]].
 
[10.0.0+] The RomFs for hid-sysmodule was removed. The data which used to be in RomFs was moved into title [[Title_list|0100000000000822]].
   −
= Firmware update =
+
= Firmware Update =
 
HID-sysmodule mounts the contents of title [[Title_list|0100000000000822]] as "systemData" or the contents of title [[Title_list|010000000000B22B]] as "systemDataD". Both titles contain the same files, but [[Title_list|0100000000000822]] is used on retail units while [[Title_list|010000000000B22B]] is used for development.
 
HID-sysmodule mounts the contents of title [[Title_list|0100000000000822]] as "systemData" or the contents of title [[Title_list|010000000000B22B]] as "systemDataD". Both titles contain the same files, but [[Title_list|0100000000000822]] is used on retail units while [[Title_list|010000000000B22B]] is used for development.
    
These titles contain the following files:
 
These titles contain the following files:
* '''ExpectVersionInfo.csv''' - List in the format "[device],[type],[version]" where "device" can be "JoyLeft", "JoyRight", "FullKey", "Palma" or "Handheld", "type" can be "BT", "MCU", "USB" or "SioH" and "version" is the hexadecimal representation of the firmware file's version.
+
* '''ExpectVersionInfo.csv'''
* '''FirmwareInfo.csv''' - List in the format "[device],[type],[version],[file]" where "device", "type" and "version" should match the values from "ExpectVersionInfo" and "file" is the name of the firmware file.
+
** List in the format "[device],[type],[version]" where "device" can be "JoyLeft", "JoyRight", "FullKey", "Palma" or "Handheld", "type" can be "BT", "MCU", "USB" or "SioH" and "version" is the hexadecimal representation of the firmware file's version.
* '''ukyosakyo_ep2_ota.bin''' - Left/Right Joy-Con BT firmware.
+
* '''FirmwareInfo.csv'''
* '''raizo_ep2_ota.bin''' - Pro Controller BT firmware.
+
** List in the format "[device],[type],[version],[file]" where "device", "type" and "version" should match the values from "ExpectVersionInfo" and "file" is the name of the firmware file.
* '''tera_ota.bin''' - Right Joy-Con MCU firmware.  
+
* '''ukyosakyo_ep2_ota.bin'''
* '''tera_ota_iap.bin''' - Right Joy-Con MCU (IAP profile) firmware.
+
** Left/Right Joy-Con BT firmware.
* '''tera_fullkey_ota.bin''' - Pro Controller MCU firmware.
+
* '''raizo_ep2_ota.bin'''
* '''tera_fullkey_ota_iap.bin''' - Pro Controller MCU (IAP profile) firmware.
+
** Pro Controller BT firmware.
* [6.0.0+] '''ProController.dfu''' - Pro Controller USB firmware.
+
* '''tera_ota.bin'''
* [6.1.0+] '''PalmaFw.bin''' - Poké Ball Plus BT firmware.
+
** Right Joy-Con MCU firmware.  
* [9.0.0+] '''ExpectVersionInfo-platform.hoag.csv''' - Same as "ExpectVersionInfo.csv" but for the Switch Lite platform.
+
* '''tera_ota_iap.bin'''
* [9.0.0+] '''FirmwareInfo-platform.hoag.csv''' - Same as "FirmwareInfo.csv" but for the Switch Lite platform.
+
** Right Joy-Con MCU (IAP profile) firmware.
* [9.0.0+] '''sioh.bin''' - Switch Lite Joy-Con firmware.  
+
* '''tera_fullkey_ota.bin'''
* [9.0.0+] '''sioh_iap.bin''' - Switch Lite Joy-Con (IAP profile) firmware.
+
** Pro Controller MCU firmware.
* [10.0.0+] '''FTS_00120100.fts256''' - Touch Screen controller firmware in FTS256 format.
+
* '''tera_fullkey_ota_iap.bin'''
* [10.0.0+] '''FTS_32000001.fts256''' - Touch Screen controller firmware in FTS256 format for panel vendor "Nissha".
+
** Pro Controller MCU (IAP profile) firmware.
* [10.0.0+] '''FTS_32000102.fts256''' - Touch Screen controller firmware in FTS256 format for panel vendor "GIS".
+
* [6.0.0+] '''ProController.dfu'''
* [10.0.0+] '''FTS_32000302.fts256''' - Touch Screen controller firmware in FTS256 format for panel vendor "Nissha_Hoag".
+
** Pro Controller USB firmware.
* [10.0.0+] '''FTS_32000402.fts256''' - Touch Screen controller firmware in FTS256 format for panel vendor "GIS_Hoag".
+
* [6.1.0+] '''PalmaFw.bin'''
* [10.0.0+] '''TouchScreenConfiguration.csv''' - List in the format "[gpio],[gpio],[gpio],[config],[config]" where "gpio" can be "0" or "1" and "config" is an integer number.
+
** Poké Ball Plus BT firmware.
* [10.0.0+] '''TouchScreenFirmwareInfo.csv''' - List in the format "[driver],[gpio],[gpio],[gpio],[version],[file]" where "driver" can be "FTM" or "FST2", "gpio" can be "0" or "1", "version" is the hexadecimal representation of the firmware file's version and "file" is the name of the firmware file.
+
* [8.1.1+] '''ExpectVersionInfo-platform.hoag.csv'''
* [13.0.0+] '''FTS_33000510.fts256''' - Touch Screen controller firmware in FTS256 format for panel vendor "Samsung".
+
** Same as "ExpectVersionInfo.csv" but for the Switch Lite platform.
* [13.0.0] '''FTS_98000004.ftb''' - Touch Screen controller firmware in FTB format.
+
* [8.1.1+] '''FirmwareInfo-platform.hoag.csv'''
* [13.1.0-13.2.1] '''FTS_50000001.ftb''' - Touch Screen controller firmware in FTB format for panel vendor "Nissha".
+
** Same as "FirmwareInfo.csv" but for the Switch Lite platform.
* [14.0.0+] '''FTS_50000002.ftb''' - Touch Screen controller firmware in FTB format for panel vendor "Nissha".
+
* [8.1.1+] '''sioh.bin'''
 +
** Switch Lite Joy-Con firmware.  
 +
* [8.1.1+] '''sioh_iap.bin'''
 +
** Switch Lite Joy-Con (IAP profile) firmware.
 +
* [10.0.0+] '''FTS_00120100.fts256'''
 +
** Touch Screen controller firmware in FTS256 format.
 +
* [10.0.0+] '''FTS_32000001.fts256'''
 +
** Touch Screen controller firmware in FTS256 format for panel vendor "Nissha".
 +
* [10.0.0+] '''FTS_32000102.fts256'''
 +
** Touch Screen controller firmware in FTS256 format for panel vendor "GIS".
 +
* [10.0.0+] '''FTS_32000302.fts256'''
 +
** Touch Screen controller firmware in FTS256 format for panel vendor "Nissha_Hoag".
 +
* [10.0.0+] '''FTS_32000402.fts256'''
 +
** Touch Screen controller firmware in FTS256 format for panel vendor "GIS_Hoag".
 +
* [10.0.0+] '''TouchScreenConfiguration.csv'''
 +
** List in the format "[gpio],[gpio],[gpio],[config],[config]" where "gpio" can be "0" or "1" and "config" is an integer number.
 +
* [10.0.0+] '''TouchScreenFirmwareInfo.csv'''
 +
** List in the format "[driver],[gpio],[gpio],[gpio],[version],[file]" where "driver" can be "FTM" or "FST2", "gpio" can be "0" or "1", "version" is the hexadecimal representation of the firmware file's version and "file" is the name of the firmware file.
 +
* [13.0.0+] '''FTS_33000510.fts256'''
 +
** Touch Screen controller firmware in FTS256 format for panel vendor "Samsung_Aula".
 +
* [13.0.0] '''FTS_98000004.ftb'''
 +
** Touch Screen controller firmware in FTB format.
 +
* [13.1.0-13.2.1] '''FTS_50000001.ftb'''
 +
** Touch Screen controller firmware in FTB format for panel vendor "Nissha".
 +
* [14.0.0+] '''FTS_50000002.ftb'''
 +
** Touch Screen controller firmware in FTB format for panel vendor "Nissha".
 +
 
 +
== Versions ==
 +
=== Ukyosakyo ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! SystemVersion
 +
! FirmwareVersion
 +
|-
 +
| [1.0.0+]
 +
| 0348
 +
|-
 +
| [5.0.0+]
 +
| 0389
 +
|-
 +
| [6.0.0+]
 +
| 038B
 +
|-
 +
| [7.0.0+]
 +
| 03A6
 +
|-
 +
| [8.0.0+]
 +
| 03B5
 +
|-
 +
| [9.0.0+]
 +
| 0400
 +
|-
 +
| [10.0.0+]
 +
| 0406
 +
|-
 +
| [11.0.0+]
 +
| 0407
 +
|-
 +
| [12.1.0+]
 +
| 0410
 +
|-
 +
| [13.0.0+]
 +
| 0417
 +
|-
 +
| [14.0.0+]
 +
| 0419
 +
|}
 +
 
 +
=== Raizo ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! SystemVersion
 +
! FirmwareVersion
 +
|-
 +
| [1.0.0+]
 +
| 0348
 +
|-
 +
| [15.0.0+]
 +
| 0421
 +
|}
 +
 
 +
=== Tera ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! SystemVersion
 +
! FirmwareVersion
 +
|-
 +
| [1.0.0+]
 +
| 030B
 +
|-
 +
| [4.0.0+]
 +
| 0412
 +
|-
 +
| [5.0.0+]
 +
| 0518
 +
|-
 +
| [6.0.0+]
 +
| 061A
 +
|-
 +
| [8.0.0+]
 +
| 081B
 +
|}
 +
 
 +
=== TeraFullKey ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! SystemVersion
 +
! FirmwareVersion
 +
|-
 +
| [1.0.0+]
 +
| 0305
 +
|}
 +
 
 +
=== ProController ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! SystemVersion
 +
! FirmwareVersion
 +
|-
 +
| -
 +
| 010A0200
 +
|-
 +
| [6.0.0+]
 +
| 01100210
 +
|}
 +
 
 +
=== Palma ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! SystemVersion
 +
! FirmwareVersion
 +
|-
 +
| -
 +
| 1100
 +
|-
 +
| [6.1.0+]
 +
| 1200
 +
|}
 +
 
 +
=== SioH ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! SystemVersion
 +
! FirmwareVersion
 +
|-
 +
| -
 +
| 000D
 +
|-
 +
| [8.1.1+]
 +
| 0200
 +
|-
 +
| [10.0.0+]
 +
| 0301
 +
|-
 +
| [11.0.0+]
 +
| 0304
 +
|}
    
[[Category:Services]]
 
[[Category:Services]]

Navigation menu