Difference between revisions of "PTM services"
(→psm) |
|||
Line 7: | Line 7: | ||
|- | |- | ||
| 0 || OpenController | | 0 || OpenController | ||
− | |||
|} | |} | ||
Line 27: | Line 26: | ||
| 4 || GetRotationRate | | 4 || GetRotationRate | ||
|- | |- | ||
− | | [1.0.0-6.2.0] | + | | 5 || [1.0.0-6.2.0] EnableFan |
|- | |- | ||
− | | | + | | 6 || [1.0.0-6.2.0] DisableFan |
− | |||
− | | [1.0.0-6.2.0] | ||
|- | |- | ||
+ | | 7 || [1.0.0-6.2.0] GetActualRotationSpeedLevel | ||
|} | |} | ||
Line 81: | Line 79: | ||
|- | |- | ||
| 18 || [3.0.0+] GetBatteryChargeCalibratedEvent | | 18 || [3.0.0+] GetBatteryChargeCalibratedEvent | ||
− | |||
|} | |} | ||
Line 197: | Line 194: | ||
|- | |- | ||
| 9 || [5.0.0+] | | 9 || [5.0.0+] | ||
− | |||
|} | |} | ||
Line 216: | Line 212: | ||
|- | |- | ||
| 4 || [8.0.0+] ? (Takes a total of 4-bytes of input, returns an [[#IUnknown0]]) | | 4 || [8.0.0+] ? (Takes a total of 4-bytes of input, returns an [[#IUnknown0]]) | ||
− | |||
|} | |} | ||
Line 245: | Line 240: | ||
|- | |- | ||
| 1 || ReadCurrentPower | | 1 || ReadCurrentPower | ||
+ | |} | ||
+ | |||
+ | = apm:am = | ||
+ | This is "nn::apm::IManager". | ||
+ | |||
+ | This was added with [8.0.0+] and replaces the old [[PPC_services#apm|apm]] service. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 0 || [[#OpenSession]] | ||
+ | |- | ||
+ | | 1 || GetPerformanceMode | ||
+ | |- | ||
+ | | 6 || [7.0.0+] [[#IsCpuOverclockEnabled]] | ||
+ | |} | ||
+ | |||
+ | == OpenSession == | ||
+ | Returns an [[#ISession]]. | ||
+ | |||
+ | == IsCpuOverclockEnabled == | ||
+ | No input, returns an output u8 bool. | ||
+ | |||
+ | = apm:sys = | ||
+ | This is "nn::apm::ISystemManager". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 0 || RequestPerformanceMode | ||
+ | |- | ||
+ | | 1 || GetPerformanceEvent | ||
+ | |- | ||
+ | | 2 || GetThrottlingState | ||
+ | |- | ||
+ | | 3 || GetLastThrottlingState | ||
+ | |- | ||
+ | | 4 || ClearLastThrottlingState | ||
+ | |- | ||
+ | | 5 || [5.0.0+] LoadAndApplySettings | ||
+ | |- | ||
+ | | 6 || [7.0.0+] [[#SetCpuBoostMode]] | ||
+ | |- | ||
+ | | 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]] | ||
+ | |} | ||
+ | |||
+ | == GetPerformanceEvent == | ||
+ | Returns an [[#ISession]]. | ||
+ | |||
+ | == SetCpuBoostMode == | ||
+ | Takes an u32 [[#CpuBoostMode]]. | ||
+ | |||
+ | === CpuBoostMode === | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Mode || Description | ||
+ | |- | ||
+ | | 0 || Disabled. | ||
+ | |- | ||
+ | | 1 || Use [[#PerformanceConfiguration|performance configurations]] 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C. | ||
+ | |- | ||
+ | | 2 || Use [[#PerformanceConfiguration|performance configurations]] 0x9222000B and 0x9222000C. | ||
+ | |} | ||
+ | |||
+ | == GetCurrentPerformanceConfiguration == | ||
+ | Returns the currently active [[#PerformanceConfiguration]] (default value is 0x00020003). | ||
+ | |||
+ | = ISession = | ||
+ | This is "nn::apm::ISession". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 0 || SetPerformanceConfiguration | ||
+ | |- | ||
+ | | 1 || GetPerformanceConfiguration | ||
+ | |- | ||
+ | | 2 || [8.0.0+] [[#SetCpuOverclockEnabled]] | ||
+ | |} | ||
+ | |||
+ | == SetPerformanceConfiguration == | ||
+ | Takes an u32 [[#PerformanceMode]] and an u32 [[#PerformanceConfiguration]]. | ||
+ | |||
+ | == GetPerformanceConfiguration == | ||
+ | Takes an u32 [[#PerformanceMode]] and returns an output u32 [[#PerformanceConfiguration]]. | ||
+ | |||
+ | == SetCpuOverclockEnabled == | ||
+ | Takes an input u8 bool, no output. | ||
+ | |||
+ | == PerformanceMode == | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value || Name | ||
+ | |- | ||
+ | | 0 || Handheld | ||
+ | |- | ||
+ | | 1 || Docked | ||
+ | |} | ||
+ | |||
+ | == PerformanceConfiguration == | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value || CPU clock || GPU clock || Memory clock | ||
+ | |- | ||
+ | | 0x00010000 || 1020 || 384 || 1600 | ||
+ | |- | ||
+ | | 0x00010001 || 1020 || 768 || 1600 | ||
+ | |- | ||
+ | | 0x00010002 || 1224 || 691.2 || 1600 | ||
+ | |- | ||
+ | | 0x00020000 || 1020 || 230.4 || 1600 | ||
+ | |- | ||
+ | | 0x00020001 || 1020 || 307.2 || 1600 | ||
+ | |- | ||
+ | | 0x00020002 || 1224 || 230.4 || 1600 | ||
+ | |- | ||
+ | | 0x00020003 || 1020 || 307 || 1331.2 | ||
+ | |- | ||
+ | | 0x00020004 || 1020 || 384 || 1331.2 | ||
+ | |- | ||
+ | | 0x00020005 || 1020 || 307.2 || 1065.6 | ||
+ | |- | ||
+ | | 0x00020006 || 1020 || 384 || 1065.6 | ||
+ | |- | ||
+ | | 0x92220007 || 1020 || 460.8 || 1600 | ||
+ | |- | ||
+ | | 0x92220008 || 1020 || 460.8 || 1331.2 | ||
+ | |- | ||
+ | | [7.0.0+] 0x92220009 || 1785 || 768 || 1600 | ||
+ | |- | ||
+ | | [7.0.0+] 0x9222000A || 1785 || 768 || 1331.2 | ||
+ | |- | ||
+ | | [7.0.0+] 0x9222000B || 1020 || 768 || 1600 | ||
+ | |- | ||
+ | | [7.0.0+] 0x9222000C || 1020 || 768 || 1331.2 | ||
+ | |} | ||
+ | |||
+ | Clocks are all in MHz. | ||
+ | |||
+ | Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units. | ||
+ | |||
+ | Some of these require apm:p. | ||
+ | |||
+ | = fgm, fgm:0, fgm:9 = | ||
+ | This is "nn::fgm::sf::ISession". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 0 || Initialize | ||
+ | |} | ||
+ | |||
+ | == IRequest == | ||
+ | This is "nn::fgm::sf::IRequest". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 0 || Initialize | ||
+ | |- | ||
+ | | 1 || Set | ||
+ | |- | ||
+ | | 2 || Get | ||
+ | |- | ||
+ | | 3 || Cancel | ||
+ | |} | ||
+ | |||
+ | = fgm:dbg = | ||
+ | This is "nn::fgm::sf::IDebugger". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 0 || Initialize | ||
+ | |- | ||
+ | | 1 || Read | ||
+ | |- | ||
+ | | 2 || Cancel | ||
+ | |} | ||
+ | |||
+ | = Settings = | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Key || Size || Notes | ||
+ | |- | ||
+ | | background_download_stress_testing_storage || strlen || "sdcard", "builtin", "system". | ||
+ | |- | ||
+ | | battery_draining_enabled || 1 || ? | ||
+ | |- | ||
+ | | fs_access_log_mode || strlen || "log", "sdcard", "log+sdcard", "off". | ||
+ | |- | ||
+ | | fs_speed_emulation_mode || strlen || "faster", "slower", "random", "off". | ||
+ | |- | ||
+ | | host_romfs_redirection_target || strlen || "builtin", "off". | ||
+ | |- | ||
+ | | idle_time_detect_mode || strlen || "on", "off". | ||
+ | |- | ||
+ | | initial_tick_value || strlen || "7days", "14days", "30days", "90days", "hex": ?. | ||
+ | |- | ||
+ | | memory_mode || strlen || "auto", "4GB", "6GB". | ||
+ | |- | ||
+ | | needs_update_vulnerability_policy || strlen || "default": ?, "force_true": ?, "force_false": ?. | ||
+ | |- | ||
+ | | operation_mode_policy || strlen || "auto": ?, "handheld", "console". | ||
+ | |- | ||
+ | | performance_mode_policy || strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (SDEV only). | ||
+ | |- | ||
+ | | screenshot_target || strlen || "screenshot": ?, "physical": ?. | ||
+ | |- | ||
+ | | sdev_cpu_overclock_enabled || 1 || SDEV only. Used to allow access to 1224MHz CPU mode. | ||
+ | |- | ||
+ | | sdev_throttling_additional_delay_us || 4 || SDEV only. | ||
+ | |- | ||
+ | | sdev_throttling_additional_delay_enabled || 1 || SDEV only. | ||
+ | |- | ||
+ | | sleep_mode || strlen || "default": ?, "pseudo": ?. | ||
+ | |- | ||
+ | | throttling_for_smpd_enabled || 1 || Not used as of 3.0. | ||
+ | |- | ||
+ | | throttling_for_undock_enabled || 1 || Not used as of 3.0. | ||
|} | |} | ||
[[Category:Services]] | [[Category:Services]] |
Revision as of 18:29, 10 September 2019
fan
This is "nn::fan::detail::IManager".
Cmd | Name |
---|---|
0 | OpenController |
IController
This is "nn::fan::detail::IController".
Cmd | Name |
---|---|
0 | SetRotationSpeedLevel |
1 | SetRotationSpeedLevelByDiff |
2 | GetRotationSpeedLevel |
3 | SetRotationRate |
4 | GetRotationRate |
5 | [1.0.0-6.2.0] EnableFan |
6 | [1.0.0-6.2.0] DisableFan |
7 | [1.0.0-6.2.0] GetActualRotationSpeedLevel |
[7.0.0+] SetRotationSpeedLevelByDiff/SetRotationRate no longer takes any input. GetRotationRate no longer returns output. These were presumably replaced with new cmds?
psm
This is "nn::psm::IPsmServer".
Cmd | Name |
---|---|
0 | #GetBatteryChargePercentage |
1 | #GetChargerType |
2 | #EnableBatteryCharging |
3 | #DisableBatteryCharging |
4 | #IsBatteryChargingEnabled |
5 | #AcquireControllerPowerSupply |
6 | #ReleaseControllerPowerSupply |
7 | #OpenSession |
8 | #EnableEnoughPowerChargeEmulation |
9 | #DisableEnoughPowerChargeEmulation |
10 | #EnableFastBatteryCharging |
11 | #DisableFastBatteryCharging |
12 | #GetBatteryVoltageState |
13 | #GetRawBatteryChargePercentage |
14 | #IsEnoughPowerSupplied |
15 | #GetBatteryAgePercentage |
16 | #GetBatteryChargeInfoEvent |
17 | #GetBatteryChargeInfoFields |
18 | [3.0.0+] GetBatteryChargeCalibratedEvent |
GetBatteryChargePercentage
No input, returns an output u32.
GetChargerType
No input, returns an output u32.
EnableBatteryCharging
No input/output.
DisableBatteryCharging
No input/output.
IsBatteryChargingEnabled
No input, returns an output u8.
AcquireControllerPowerSupply
No input/output.
ReleaseControllerPowerSupply
No input/output.
OpenSession
No input, returns an output #IPsmSession.
EnableEnoughPowerChargeEmulation
No input/output.
DisableEnoughPowerChargeEmulation
No input/output.
EnableFastBatteryCharging
No input/output.
DisableFastBatteryCharging
No input/output.
GetBatteryVoltageState
No input, returns an output u32.
GetRawBatteryChargePercentage
No input, returns an output u64.
IsEnoughPowerSupplied
No input, returns an output u8.
GetBatteryAgePercentage
No input, returns an output u64.
GetBatteryChargeInfoEvent
No input, returns an output event.
GetBatteryChargeInfoFields
No input, returns an output 0x40-byte struct.
IPsmSession
This is "nn::psm::IPsmSession".
Cmd | Name |
---|---|
0 | #BindStateChangeEvent |
1 | #UnbindStateChangeEvent |
2 | #SetChargerTypeChangeEventEnabled |
3 | #SetPowerSupplyChangeEventEnabled |
4 | #SetBatteryVoltageStateChangeEventEnabled |
BindStateChangeEvent
No input, returns an output event with autoclear disabled.
UnbindStateChangeEvent
No input/output.
SetChargerTypeChangeEventEnabled
Takes an input u8 bool, no output.
SetPowerSupplyChangeEventEnabled
Takes an input u8 bool, no output.
SetBatteryVoltageStateChangeEventEnabled
Takes an input u8 bool, no output.
tc
This is "nn::tc::IManager".
Cmd | Name |
---|---|
0 | SetOperatingMode |
1 | GetThermalEvent |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | [5.0.0+] |
ts
This is "nn::ts::server::IMeasurementServer".
Cmd | Name |
---|---|
0 | |
1 | |
2 | |
3 | |
4 | [8.0.0+] ? (Takes a total of 4-bytes of input, returns an #IUnknown0) |
IUnknown0
Added with [8.0.0+].
Cmd | Name |
---|---|
0 | |
1 | |
2 | |
3 |
pcm
This is "nn::pcm::IManager".
Cmd | Name |
---|---|
0 | IsSupported |
1 | ReadCurrentPower |
apm:am
This is "nn::apm::IManager".
This was added with [8.0.0+] and replaces the old apm service.
Cmd | Name |
---|---|
0 | #OpenSession |
1 | GetPerformanceMode |
6 | [7.0.0+] #IsCpuOverclockEnabled |
OpenSession
Returns an #ISession.
IsCpuOverclockEnabled
No input, returns an output u8 bool.
apm:sys
This is "nn::apm::ISystemManager".
Cmd | Name |
---|---|
0 | RequestPerformanceMode |
1 | GetPerformanceEvent |
2 | GetThrottlingState |
3 | GetLastThrottlingState |
4 | ClearLastThrottlingState |
5 | [5.0.0+] LoadAndApplySettings |
6 | [7.0.0+] #SetCpuBoostMode |
7 | [7.0.0+] #GetCurrentPerformanceConfiguration |
GetPerformanceEvent
Returns an #ISession.
SetCpuBoostMode
Takes an u32 #CpuBoostMode.
CpuBoostMode
Mode | Description |
---|---|
0 | Disabled. |
1 | Use performance configurations 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C. |
2 | Use performance configurations 0x9222000B and 0x9222000C. |
GetCurrentPerformanceConfiguration
Returns the currently active #PerformanceConfiguration (default value is 0x00020003).
ISession
This is "nn::apm::ISession".
Cmd | Name |
---|---|
0 | SetPerformanceConfiguration |
1 | GetPerformanceConfiguration |
2 | [8.0.0+] #SetCpuOverclockEnabled |
SetPerformanceConfiguration
Takes an u32 #PerformanceMode and an u32 #PerformanceConfiguration.
GetPerformanceConfiguration
Takes an u32 #PerformanceMode and returns an output u32 #PerformanceConfiguration.
SetCpuOverclockEnabled
Takes an input u8 bool, no output.
PerformanceMode
Value | Name |
---|---|
0 | Handheld |
1 | Docked |
PerformanceConfiguration
Value | CPU clock | GPU clock | Memory clock |
---|---|---|---|
0x00010000 | 1020 | 384 | 1600 |
0x00010001 | 1020 | 768 | 1600 |
0x00010002 | 1224 | 691.2 | 1600 |
0x00020000 | 1020 | 230.4 | 1600 |
0x00020001 | 1020 | 307.2 | 1600 |
0x00020002 | 1224 | 230.4 | 1600 |
0x00020003 | 1020 | 307 | 1331.2 |
0x00020004 | 1020 | 384 | 1331.2 |
0x00020005 | 1020 | 307.2 | 1065.6 |
0x00020006 | 1020 | 384 | 1065.6 |
0x92220007 | 1020 | 460.8 | 1600 |
0x92220008 | 1020 | 460.8 | 1331.2 |
[7.0.0+] 0x92220009 | 1785 | 768 | 1600 |
[7.0.0+] 0x9222000A | 1785 | 768 | 1331.2 |
[7.0.0+] 0x9222000B | 1020 | 768 | 1600 |
[7.0.0+] 0x9222000C | 1020 | 768 | 1331.2 |
Clocks are all in MHz.
Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units.
Some of these require apm:p.
fgm, fgm:0, fgm:9
This is "nn::fgm::sf::ISession".
Cmd | Name |
---|---|
0 | Initialize |
IRequest
This is "nn::fgm::sf::IRequest".
Cmd | Name |
---|---|
0 | Initialize |
1 | Set |
2 | Get |
3 | Cancel |
fgm:dbg
This is "nn::fgm::sf::IDebugger".
Cmd | Name |
---|---|
0 | Initialize |
1 | Read |
2 | Cancel |
Settings
Key | Size | Notes |
---|---|---|
background_download_stress_testing_storage | strlen | "sdcard", "builtin", "system". |
battery_draining_enabled | 1 | ? |
fs_access_log_mode | strlen | "log", "sdcard", "log+sdcard", "off". |
fs_speed_emulation_mode | strlen | "faster", "slower", "random", "off". |
host_romfs_redirection_target | strlen | "builtin", "off". |
idle_time_detect_mode | strlen | "on", "off". |
initial_tick_value | strlen | "7days", "14days", "30days", "90days", "hex": ?. |
memory_mode | strlen | "auto", "4GB", "6GB". |
needs_update_vulnerability_policy | strlen | "default": ?, "force_true": ?, "force_false": ?. |
operation_mode_policy | strlen | "auto": ?, "handheld", "console". |
performance_mode_policy | strlen | "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (SDEV only). |
screenshot_target | strlen | "screenshot": ?, "physical": ?. |
sdev_cpu_overclock_enabled | 1 | SDEV only. Used to allow access to 1224MHz CPU mode. |
sdev_throttling_additional_delay_us | 4 | SDEV only. |
sdev_throttling_additional_delay_enabled | 1 | SDEV only. |
sleep_mode | strlen | "default": ?, "pseudo": ?. |
throttling_for_smpd_enabled | 1 | Not used as of 3.0. |
throttling_for_undock_enabled | 1 | Not used as of 3.0. |