Difference between revisions of "PTM services"

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 383: Line 383:
  
 
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.
 
Some of these require apm:p.
 
  
 
= fgm, fgm:0, fgm:9 =
 
= fgm, fgm:0, fgm:9 =

Revision as of 18:32, 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.

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.