PPC services: Difference between revisions

(26 intermediate revisions by 4 users not shown)
Line 1: Line 1:
APM is utilized for setting system performance profiles including clocks for CPU, GPU, and memory.
PPC is used for setting system performance profiles including clocks for CPU, GPU, and memory.


== apm ==
[9.0.0+] The PPC system module is now stubbed and all its services were moved into [[PTM_services|PTM]].
 
= apm =
This is "nn::apm::IManager".
This is "nn::apm::IManager".
This was moved to [[Applet_Manager_services|AM]] with [8.0.0+] and is now a shim for [[#apm:am|apm:am]].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name || Notes
! Cmd || Name
|-
|-
| 0 || OpenSession || Returns an [[#ISession]].
| 0 || [[#OpenSession]]
|-
|-
| 1 || GetPerformanceMode ||  
| 1 || GetPerformanceMode
|-
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]
|}
|}


== apm:p ==
== OpenSession ==
Returns an [[#ISession]].
 
== IsCpuOverclockEnabled ==
No input, returns an output u8 bool.
 
= apm:p =
This is "nn::apm::IManagerPrivileged".
This is "nn::apm::IManagerPrivileged".
This service no longer exists in [8.0.0+].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name || Notes
! Cmd || Name
|-
|-
| 0 || OpenSession || Returns an [[#ISession]].
| 0 || OpenSession
|}
|}


== apm:sys ==
== OpenSession ==
Returns an [[#ISession]].
 
= apm:am =
This is "nn::apm::IManager".
 
This was added with [8.0.0+] and is the same as the old [[#apm|apm]] service.
 
= apm:sys =
This is "nn::apm::ISystemManager".
This is "nn::apm::ISystemManager".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name || Notes
! 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]].
 
== 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.
 
= fgm, fgm:0, fgm:9 =
This is "nn::fgm::sf::ISession".
 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
|-
| 0 || RequestPerformanceMode ||
| 0 || Initialize
|}
 
== IRequest ==
This is "nn::fgm::sf::IRequest".
 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
|-
| 1 || GetPerformanceEvent || Returns an [[#ISession]].
| 0 || Initialize
|-
|-
| 2 || GetThrottlingState ||  
| 1 || Set
|-
|-
| 3 || GetLastThrottlingState ||  
| 2 || Get
|-
|-
| 4 || ClearLastThrottlingState ||  
| 3 || Cancel
|}
|}


== ISession ==
= fgm:dbg =
This is "nn::fgm::sf::IDebugger".
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name || Notes
! Cmd || Name
|-
| 0 || Initialize
|-
| 1 || Read
|-
| 2 || Cancel
|}
 
= CpuBoostMode =
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || Disabled.
|-
|-
| 0 || SetPerformanceConfiguration || Takes u32 PerformanceMode and u32 PerformanceConfiguration.
| 1 || Boost CPU. Additionally, throttle GPU to minimum.
Use [[#PerformanceConfiguration|performance configurations]] 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C.
|-
|-
| 1 || GetPerformanceConfiguration  || Takes u32 PerformanceMode, returns output u32 PerformanceConfiguration.
| 2 || Conserve power. Only throttle GPU to minimum.
Use [[#PerformanceConfiguration|performance configurations]] 0x9222000B and 0x9222000C.
|}
|}


=== PerformanceMode ===
= PerformanceMode =
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Value || Name
! Value || Description
|-
| -1 || Invalid
|-
|-
| 0 || Handheld
| 0 || Normal
|-
|-
| 1 || Docked
| 1 || Boost
|}
|}


=== PerformanceConfiguration ===
= PerformanceConfiguration =
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Value || CPU clock || GPU clock || Memory clock
! Value || Description || CPU clock (MHz) || GPU clock (MHz) || Memory clock (MHz)
|-
|-
| 0x00010000 || 1020 || 384 || 1600
| 0x00000000 || Invalid || 0 || 0 || 0
|-
|-
| 0x00010001 || 1020 || 768 || 1600
| 0x00010000 || Cpu1020MhzGpu384Mhz || 1020.0 || 384.0 || 1600.0
|-
|-
| 0x00010002 || 1224 || 691.2 || 1600
| 0x00010001 || Cpu1020MhzGpu768Mhz || 1020.0 || 768.0 || 1600.0
|-
|-
| 0x00020000 || 1020 || 230.4 || 1600
| 0x00010002 || Cpu1224MhzGpu691Mhz || 1224.0 || 691.2 || 1600.0
|-
|-
| 0x00020001 || 1020 || 307.2 || 1600
| 0x00020000 || Cpu1020MhzGpu230Mhz|| 1020.0 || 230.4 || 1600.0
|-
|-
| 0x00020002 || 1224|| 230.4 || 1600
| 0x00020001 || Cpu1020MhzGpu307Mhz || 1020.0 || 307.2 || 1600.0
|-
|-
| 0x00020003 || 1020 || 307 || 1331.2
| 0x00020002 || Cpu1224MhzGpu230Mhz || 1224.0 || 230.4 || 1600.0
|-
|-
| 0x00020004 || 1020 || 384 || 1331.2
| 0x00020003 || Cpu1020MhzGpu307MhzEmc1331Mhz || 1020.0 || 307.2 || 1331.2
|-
|-
| 0x00020005 || 1020 || 307.2 || 1065.6
| 0x00020004 || Cpu1020MhzGpu384MhzEmc1331Mhz || 1020.0 || 384.0 || 1331.2
|-
|-
| 0x00020006 || 1020 || 384 || 1065.6
| 0x00020005 || Cpu1020MhzGpu307MhzEmc1065Mhz || 1020.0 || 307.2 || 1065.6
|-
|-
| 0x92220007 || 1020 || 460.8 || 1600
| 0x00020006 || Cpu1020MhzGpu384MhzEmc1065Mhz || 1020.0 || 384.0 || 1065.6
|-
|-
| 0x92220008 || 1020 || 460.8 || 1331.2
| 0x92220007 || Cpu1020MhzGpu460MhzEmc1600Mhz || 1020.0 || 460.8 || 1600.0
|-
| 0x92220008 || Cpu1020MhzGpu460MhzEmc1331Mhz || 1020.0 || 460.8 || 1331.2
|-
| [7.0.0+] 0x92220009 || Cpu1785MhzGpu76MhzEmc1600Mhz || 1785.0 || 76.8 || 1600.0
|-
| [7.0.0+] 0x9222000A || Cpu1785MhzGpu76MhzEmc1331Mhz || 1785.0 || 76.8 || 1331.2
|-
| [7.0.0+] 0x9222000B || Cpu1020MhzGpu76MhzEmc1600Mhz || 1020.0 || 76.8 || 1600.0
|-
| [7.0.0+] 0x9222000C || Cpu1020MhzGpu76MhzEmc1331Mhz || 1020.0 || 76.8 || 1331.2
|}
|}
Clocks are all in MHz.


Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 do not seem to be available at all (dependent on apm settings?).
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.
Some of these require apm:p.


== Settings ==
= Settings =
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Key || Size || Notes
! Key || Size || Notes
|-
|-
| battery_draining_enabled|| 1 || ?
| 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": ?.
|-
|-
| performance_mode_policy|| strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (devkit only).
| sdev_cpu_overclock_enabled || 1 || SDEV only. Used to allow access to 1224MHz CPU mode.
|-
|-
| sdev_cpu_overclock_enabled || 1 || Not used as of 3.0. May have been used to allow access to 1224MHz CPU mode?
| sdev_throttling_additional_delay_us || 4 || SDEV only.
|-
|-
| sdev_throttling_additional_delay_us || 4 || ?
| sdev_throttling_additional_delay_enabled || 1 || SDEV only.
|-
|-
| sdev_throttling_additional_delay_enabled || 1 || ?
| sleep_mode || strlen || "default": ?, "pseudo": ?.
|-
|-
| throttling_for_smpd_enabled || 1 || Not used as of 3.0.
| throttling_for_smpd_enabled || 1 || Not used as of 3.0.