PTM services
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 double.
IsEnoughPowerSupplied
No input, returns an output bool.
GetBatteryAgePercentage
No input, returns an output double.
GetBatteryChargeInfoEvent
No input, returns an output Event handle.
GetBatteryChargeInfoFields
No input, returns an output 0x40-byte struct:
Offset | Size | Description |
---|---|---|
0x00 | 0x4 | u32. Input (Sink) current limit in mA |
0x04 | 0x4 | u32. Output (Source/Vbus/OTG) current limit in mA |
0x08 | 0x4 | u32. Battery charging current limit in mA |
0x0C | 0x4 | u32. Battery charging voltage limit in mV |
0x10 | 0x4 | enum, same as power-role? Always 1 except when OTG where it becomes 2 |
0x14 | 0x4 | Possibly a bit field |
0x18 | 0x4 | u32. Charging limits state based on battery temperature |
0x1C | 0x4 | u32. Battery Temperature (milli C) |
0x20 | 0x4 | u32. Capacity now per cent-mille (i.e. 100% = 100000 pcm) |
0x24 | 0x4 | u32. Voltage avg in mV |
0x28 | 0x4 | u32. Battery age (capacity full / capacity design) per cent-mille (i.e. 100% = 100000 pcm) |
0x2C | 0x4 | enum. Power role (0: Unknown, 1: Sink, 2: Source) |
0x30 | 0x4 | enum. #Charger_Type |
0x34 | 0x4 | u32. Charger voltage limit in mV |
0x38 | 0x4 | u32. Charger current limit in mA |
0x3C | 0x4 | Bit field (bit0: potentially no hub, bit8: Joy-con charging, bit12: OTG) |
Charger Type
Value | Name |
---|---|
0 | Unknown |
1 | PD |
2 | Type-C 1.5A |
3 | Type-C 3.0A |
4 | DCP |
5 | CDP |
6 | SDP |
7 | Apple 500mA |
8 | Apple 1000mA |
9 | Apple 2000mA |
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 | [1.0.0-10.2.0] GetThermalEvent |
2 | IsActionAllowed |
3 | EnableVirtualTemperature |
4 | DisableVirtualTemperature |
5 | SetVirtualTemperature |
6 | EnableFanControl |
7 | DisableFanControl |
8 | IsFanControlEnabled |
9 | [5.0.0+] GetSkinTemperatureMilliC |
10 | [11.0.0+] |
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 | |
4 | [10.0.0+] |
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, a #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 |
lbl
This is "nn::lbl::detail::ILblController". This was moved from lbl with [10.0.0+]. With [11.0.0+] this was moved into vi.
Cmd | Name |
---|---|
0 | SaveCurrentSetting |
1 | LoadCurrentSetting |
2 | SetCurrentBrightnessSetting |
3 | GetCurrentBrightnessSetting |
4 | ApplyCurrentBrightnessSettingToBacklight |
5 | GetBrightnessSettingAppliedToBacklight |
6 | SwitchBacklightOn |
7 | SwitchBacklightOff |
8 | GetBacklightSwitchStatus |
9 | EnableDimming |
10 | DisableDimming |
11 | IsDimmingEnabled |
12 | EnableAutoBrightnessControl |
13 | DisableAutoBrightnessControl |
14 | IsAutoBrightnessControlEnabled |
15 | SetAmbientLightSensorValue |
16 | #GetAmbientLightSensorValue |
17 | SetBrightnessReflectionDelayLevel |
18 | GetBrightnessReflectionDelayLevel |
19 | SetCurrentBrightnessMapping |
20 | GetCurrentBrightnessMapping |
21 | SetCurrentAmbientLightSensorMapping |
22 | GetCurrentAmbientLightSensorMapping |
23 | [3.0.0+] IsAmbientLightSensorAvailable |
24 | [3.0.0+] SetCurrentBrightnessSettingForVrMode |
25 | [3.0.0+] GetCurrentBrightnessSettingForVrMode |
26 | [3.0.0+] #EnableVrMode |
27 | [3.0.0+] #DisableVrMode |
28 | [3.0.0+] #IsVrModeEnabled |
29 | [7.0.0+] IsAutoBrightnessControlSupported |
Ambient Light Sensor Notes
The BH1730 outputs 2 values. Visible light and IR light. This is then calculated through an algorithm that checks for Gain, Measurement time, filter qualities and ouputs lux (max correct measurement of 100K lux). The default values are Gain 64x and ITIME of 38 (256 - 218). This allows for a max lux value of 17972 lux when visible light value is maximum and IR light is 0. When both of them are on their limit, the output is 1192 lux. The sensor is fully configurable.
GetAmbientLightSensorValue
No input. Before 5.x, outputs lux in float. (5.0.0+) Returns an output struct:
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | bOverLimit. (u32) Equals to 1 if visible or IR light data is over 65534. |
0x4 | 0x4 | fLux. (float) Value in lux from the ambient light sensor. |
Note: if bOverLimit=1 and the default ALS configuration is used, the measurement of fLux should not be considered and the actual max value depends on the type of light. Ranges from 12.5K - 17.5K.
GetCurrentBrightnessSetting
No input. Returns an output u32 int of the current backlight level.
GetBrightnessSettingAppliedToBacklight
No input. Returns an output u32 int of the backlight level computed from the ambient light sensor.
IsAutoBrightnessControlEnabled
No input. Returns an output u8 bool indicating whether auto brightness is enabled.
EnableVrMode
No input/output. Used by AM_services#SetVrModeEnabled.
Sets a global state field to 0x1.
DisableVrMode
No input/output. Used by AM_services#SetVrModeEnabled.
Sets the global state field used by #EnableVrMode to 0x0.
IsVrModeEnabled
No input. Returns an output u8 bool set by the above commands.
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. |