Difference between revisions of "PTM services"
(→pcm) |
|||
Line 420: | Line 420: | ||
Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units. | Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units. | ||
− | = fgm, fgm:0, fgm:9 = | + | = fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9 = |
− | + | These are "nn::fgm::sf::ISession". | |
+ | |||
+ | Each service represents a different priority from 0 to 9. The "fgm" service represents priority 8 (default). | ||
+ | |||
+ | [2.0.0+] Only "fgm", "fgm:0" and "fgm:9" are now valid. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 427: | Line 431: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 0 || Initialize | + | | 0 || [[#Initialize]] |
|} | |} | ||
+ | |||
+ | == Initialize == | ||
+ | No input. Returns an [[#IRequest]]. | ||
== IRequest == | == IRequest == | ||
Line 437: | Line 444: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 0 || Initialize | + | | 0 || [[#Initialize_2|Initialize]] |
|- | |- | ||
− | | 1 || Set | + | | 1 || [[#Set|Set]] |
|- | |- | ||
− | | 2 || Get | + | | 2 || [[#Get|Get]] |
|- | |- | ||
− | | 3 || Cancel | + | | 3 || [[#Cancel|Cancel]] |
|} | |} | ||
+ | |||
+ | === Initialize === | ||
+ | Takes a PID-descriptor, an [[#Module]] and an u64. Returns an Event handle with EventClearMode 0. | ||
+ | |||
+ | === Set === | ||
+ | Takes 2 u32s '''ClockMinRate''' and '''ClockMaxRate'''. No output. | ||
+ | |||
+ | === Get === | ||
+ | No input. Returns an u32 '''ClockRate'''. | ||
+ | |||
+ | === Cancel === | ||
+ | No input/output. | ||
= fgm:dbg = | = fgm:dbg = | ||
Line 458: | Line 477: | ||
|- | |- | ||
| 2 || Cancel | | 2 || Cancel | ||
+ | |} | ||
+ | |||
+ | = Module = | ||
+ | This is "nn::fgm::Module". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Name || Block | ||
+ | |- | ||
+ | | 0 || CPU | ||
+ | |- | ||
+ | | 1 || GPU | ||
+ | |- | ||
+ | | 2 || EMC | ||
+ | |- | ||
+ | | 3 || SCLK | ||
+ | |- | ||
+ | | 4 || MSELECT | ||
+ | |- | ||
+ | | 5 || NVDEC | ||
+ | |- | ||
+ | | 6 || NVENC | ||
+ | |- | ||
+ | | 7 || NVJPG | ||
|} | |} | ||
Revision as of 20:27, 23 March 2020
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 | IsActionAllowed |
3 | EnableVirtualTemperature |
4 | DisableVirtualTemperature |
5 | SetVirtualTemperature |
6 | EnableFanControl |
7 | DisableFanControl |
8 | IsFanControlEnabled |
9 | [5.0.0+] GetSkinTemperatureMilliC |
ts
This is "nn::ts::server::IMeasurementServer".
Cmd | Name |
---|---|
0 | #GetTemperatureRange |
1 | #GetTemperature |
2 | #SetMeasurementMode |
3 | #GetTemperatureMilliC |
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 |
GetTemperatureRange
Takes an u8 #Location and returns an s32 minimum temperature + s32 maximum temperature.
The returned temperature values are in Celsius.
GetTemperature
Takes an u8 #Location and returns an output s32.
The output is the temperature in Celsius.
SetMeasurementMode
Takes an u8 #Location and an u8 MeasurementMode, no output.
GetTemperatureMilliC
Takes an u8 #Location and returns an output s32.
The output is the temperature in MilliC.
Location
Value | Name |
---|---|
0 | Internal |
1 | External |
pcm
This is "nn::pcm::IManager".
[4.0.0+] This service was moved to nvdbgsvc and is only available to SDEV units.
Cmd | Name |
---|---|
0 | IsSupported |
1 | ReadCurrentPower |
2 | [4.0.0+] IsServiceEnabled |
3 | [4.0.0+] ReadCurrentVoltage |
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 | Boost CPU. Additionally, throttle GPU to minimum.
Use performance configurations 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C. |
2 | Conserve power. Only throttle GPU to minimum.
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 | Normal |
1 | Boost |
PerformanceConfiguration
Value | CPU clock | GPU clock | Memory clock |
---|---|---|---|
0x00010000 | 1020.0 | 384.0 | 1600.0 |
0x00010001 | 1020.0 | 768.0 | 1600.0 |
0x00010002 | 1224.0 | 691.2 | 1600.0 |
0x00020000 | 1020.0 | 230.4 | 1600.0 |
0x00020001 | 1020.0 | 307.2 | 1600.0 |
0x00020002 | 1224.0 | 230.4 | 1600.0 |
0x00020003 | 1020.0 | 307.2 | 1331.2 |
0x00020004 | 1020.0 | 384.0 | 1331.2 |
0x00020005 | 1020.0 | 307.2 | 1065.6 |
0x00020006 | 1020.0 | 384.0 | 1065.6 |
0x92220007 | 1020.0 | 460.8 | 1600.0 |
0x92220008 | 1020.0 | 460.8 | 1331.2 |
[7.0.0+] 0x92220009 | 1785.0 | 76.8 | 1600.0 |
[7.0.0+] 0x9222000A | 1785.0 | 76.8 | 1331.2 |
[7.0.0+] 0x9222000B | 1020.0 | 76.8 | 1600.0 |
[7.0.0+] 0x9222000C | 1020.0 | 76.8 | 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.
fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9
These are "nn::fgm::sf::ISession".
Each service represents a different priority from 0 to 9. The "fgm" service represents priority 8 (default).
[2.0.0+] Only "fgm", "fgm:0" and "fgm:9" are now valid.
Cmd | Name |
---|---|
0 | #Initialize |
Initialize
No input. Returns an #IRequest.
IRequest
This is "nn::fgm::sf::IRequest".
Cmd | Name |
---|---|
0 | Initialize |
1 | Set |
2 | Get |
3 | Cancel |
Initialize
Takes a PID-descriptor, an #Module and an u64. Returns an Event handle with EventClearMode 0.
Set
Takes 2 u32s ClockMinRate and ClockMaxRate. No output.
Get
No input. Returns an u32 ClockRate.
Cancel
No input/output.
fgm:dbg
This is "nn::fgm::sf::IDebugger".
Cmd | Name |
---|---|
0 | Initialize |
1 | Read |
2 | Cancel |
Module
This is "nn::fgm::Module".
Name | Block |
---|---|
0 | CPU |
1 | GPU |
2 | EMC |
3 | SCLK |
4 | MSELECT |
5 | NVDEC |
6 | NVENC |
7 | NVJPG |
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. |