https://switchbrew.org/w/api.php?action=feedcontributions&user=Masagrator&feedformat=atom
Nintendo Switch Brew - User contributions [en]
2024-03-28T09:25:34Z
User contributions
MediaWiki 1.35.8
https://switchbrew.org/w/index.php?title=15.0.0&diff=11910
15.0.0
2022-10-11T06:34:50Z
<p>Masagrator: This is not a separate point.</p>
<hr />
<div>The Switch 15.0.0 system update was released on October 11, 2022 (UTC). This Switch update was released for the following regions: ALL, and CHN.<br />
<br />
Security flaws fixed: yes.<br />
<br />
==Change-log==<br />
[https://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/kw/nintendo%20switch%20system%20update Official] ALL change-log:<br />
* The location of the Bluetooth® Audio menu within System Settings has moved.<br />
* Screenshots can be taken using the Capture Button while in the Nintendo Switch Online application found on the Nintendo Switch HOME Menu. Video capture is not supported.<br />
* <br />
* General system stability improvements to enhance the user's experience.<br />
* <br />
<br />
==System Titles==<br />
* All sysmodules were updated, except for lbl which was previously stubbed. New sysmodule eth was added.<br />
* All SystemData were updated, except for the following: SharedFont, Dictionary, AvatarImage, Eula, ControllerIcon, ApplicationBlackList, FunctionBlackList.<br />
* The following applets were updated: qlaunch, [[Controller_Applet|controller]], dataErase, error, netConnect, [[Profile_Selector|playerSelect]], [[Internet_Browser|web-applets]], OverlayApplet, [[Album_Applet|photoViewer]].<br />
<br />
NPDM changes (see [[Services_API|here]] for service hosting changes):<br />
* bluetooth: Access to srepo:u was added.<br />
* bcat: Access to sprof:sp was removed.<br />
* nifm: Access to ethc:c, ethc:i, and various wlan:* services were removed. Access to bsd:nu, eth:nd, wlan, and wlan:nd were added.<br />
* bsdsocket: "Lowest Allowed CPU ID" was changed from 3 to 0. Access to usb:hs and the various wlan:* services were removed.<br />
* wlan: Access to srepo:u was added.<br />
* ldn: Access to psc:m and the various wlan:* services were removed. Access to the wlan service was added.<br />
* ns: Access to audctl was removed. Access to csrng and dauth:0 was added.<br />
* ssl: "Lowest Allowed CPU ID" was changed from 3 to 0.<br />
* nim: Access to ssl was replaced with ssl:s.<br />
* glue: FS permissions now has bitmask 0x0000004000000000 set.<br />
* ro: Access to csrng was added.<br />
* omm: FS permissions now has bitmask 0x0000000000100000 set.<br />
* qlaunch: Access to mnpp:sys and spbg:sp were removed.<br />
<br />
RomFs changes (besides sysver titles):<br />
* [[SSL_services|CertStore]]: "/ssl_TrustedCerts.bdf" updated<br />
* ErrorMessage: various error messages updated/added<br />
* BrowserDll:<br />
** "/browser/MediaControlsInline.css" updated<br />
** "/browser/MediaControlsInline.js" updated<br />
** "/buildinfo/buildinfo.dat" updated<br />
** "/lyt/Browse/FocusNodeFrame.arc" updated<br />
** "/message/": localization data updated<br />
** "/nro/": The various NROs located under these sub-dirs were updated.<br />
* Help:<br />
** "/legallines.htdocs/img/HDMI.png" updated<br />
** "/legallines.htdocs/index.html" updated<br />
** "/safe.htdocs/html/{dir}/", where {dir} is "JPja", "KRko", and "TWzh":<br />
*** "index.html", "page_02.html", "page_04.html": updated<br />
* UrlBlackList:<br />
** "/listCommon.txt" updated<br />
* TimeZoneBinary: updated<br />
* FirmwareDebugSettings/PlatformConfigIcosa/PlatformConfigCopper/PlatformConfigHoag/PlatformConfigIcosaMariko/PlatformConfigAula: [[System_Settings|updated]]<br />
* [[HID_services|ControllerFirmware]]: "/FirmwareInfo.csv" and "/raizo_ep2_ota.bin" updated<br />
* NgWordT: updated<br />
* Applets: Various UI/localization data updated. For web-applets, the NRR and buildinfo.dat were also updated.<br />
<br />
===BootImagePackages===<br />
All files in RomFs were updated.<br />
<br />
====Kernel====<br />
* Compiler changes:<br />
** Compiler upgrade <br />
*** [What version of clang?]<br />
*** Clang is optimizing much more aggressively in some places.<br />
*** Notably, there are many code locations now where clang doesn't actually increment the KSchedulerLock's count field, presumably because it sees it will be decremented at end of scope...<br />
**** This isn't exploitable, and it is """correct""", but it is worth noting to other reverse engineers because it is very confusing to see the count field unchanged or reloaded after function calls.<br />
** Code is now compiled with -fomit-frame-pointer.<br />
* Initialization changes:<br />
** When the thread resource limit is increased, 24 MB of virtual space is now reserved for the Kernel stack region instead of 14 MB.<br />
* In HorizonKernelMain:<br />
** DoOnEachCoreInOrder is no longer inlined, when setting up the main/interrupt threads. It is still inlined in all other places.<br />
* Multiple fixed-allocations from the system pool/resource limit were removed/revised, presumably to prevent them from unnecessarily fragmenting the pool forever.<br />
** AppletSecureMemory is now allocated statically, instead of dynamically.<br />
*** Previously, 4 MB was allocated from the system pool/resource limit during main.<br />
*** Initialize0 now reserves the 4 MB immediately after the slab heaps for this.<br />
**** DRAM layout is now like [tz reserved] [kernel] [slab heaps] [applet secure memory] [pt heap] [init pt] [memory pool partitions].<br />
**** The virtual memory region type is 0x62; the physical memory region type is 0xC200018E.<br />
** The KPageBuffer slab heap is no longer dynamically allocated from KMemoryManager.<br />
*** Previously, the required number of pages were allocated from the system pool/resource limit to setup the heap *immediately* after KMemoryManager was initialized.<br />
*** Now, it is set up during Kernel::InitializeResourceManagers, after setting up the page manager.<br />
**** InitializeKPageBufferSlabHeap now takes heap and page manager as arguments; the slab heap's members are randomly allocated pages from the page manager.<br />
***** This effectively randomizes the page buffer slabheap's page locations, where previously they were a contiguous range somewhere in the system pool.<br />
***** To facilitate this, the page manager now has an Allocate(count) member function in addition to the previous single-page Allocate().<br />
****** To facilitate this, the page manager now tracks the bitmap ends in addition to the bitmap starts, to enable a linear walk of the lowest bitmap layer.<br />
*** This has an important knock-on effect: TLS pages are allocated from the page buffer slab, and correspondingly are no longer heap pages.<br />
**** Correspondingly, KMemoryState_ThreadLocal no longer has the FlagReferenceCounted (0x400000) bit set.<br />
**** However, removing this bit naively breaks IPC, which previously checked FlagReferenceCounted before copying to/from the message buffer.<br />
**** Now, FlagReferenceCounted is checked if and only if the message buffer is a UserBuffer. If it is not, a new flag "FlagLinearMapped" (0x4000000) is checked.<br />
***** This bit is set only on memory types guaranteed to be accessible via the kernel's linear mapping of non-kernel dram (physical ranges with memory region flag 0x80000000).<br />
***** This new flag is set on all memory states other than Free, Io, Static, Inaccessible, Kernel, Coverage.<br />
* Two new SVCs were added for a new "InsecureMemory" concept.<br />
** Svc 0x90 is Result MapInsecureMemory(uintptr_t address, size_t size);<br />
*** This allocates the requested size memory from a pool partition/resource limit, and map it with a new memory state ("KMemoryState_Insecure") at the user-specified address.<br />
**** The resource limit/pool partition are gotten via new KSystemControl functions ("KSystemControl::GetInsecureMemoryResourceLimit", "KSystemControl::GetInsecureMemoryPool").<br />
***** On NX board, these are the system resource limit, and Pool_SystemNonSecure respectively.<br />
**** The specified address/size must be within the alias code region.<br />
**** KMemoryState_Insecure has value 0x5583817.<br />
***** This is type 0x17 with flags CanUseNonDeviceIpc, CanUseNonSecureIpc, Mapped, CanDeviceMap, CanAlignedDeviceMap, ReferenceCounted, CanChangeAttribute, LinearMapped.<br />
** Svc 0x91 is Result UnmapInsecureMemory(uintptr_t address, size_t size);<br />
*** This unmaps/deallocates/releases memory previously mapped with MapInsecureMemory.<br />
* More changes to SvcMapDeviceAddressSpace(ByForce/Aligned).<br />
** The argument which was previously a memory permission ("device_perm") is now an encoded u32 ("option").<br />
*** The low 16 bits of this are the device permission.<br />
*** The upper 16 bits of this are an enum (only defined values are 0 and 1).<br />
** If the enum-arg is not 0 or 1, svc::ResultInvalidEnumValue() is now returned.<br />
** If the enum-arg is 1 and the specified memory is IO, svc::ResultInvalidCombination is returned.<br />
* Partial support was added for the KPageBuffer size being different from the hardware page size.<br />
** There are now two globals, g_PageBufferSize = 0x1000, g_PageBufferCount = 0.<br />
** The KPageBuffer slab heap is initialized with g_PageBufferCount blocks of g_PageBufferSize.<br />
*** if g_PageBufferSize is 0x1000, g_PageBufferCount has the number of required TLS pages added to it (# processes + # threads + (# processes + #threads) / 8).<br />
** KDynamicPageManager::Initialize now takes in an alignment argument for the page buffer size.<br />
*** KSecureSystemResource always passes 0x1000.<br />
** It is possible this is full support but ifdef'd, but on NX board at least all places which allocate/free to the heap panic if g_PageBufferSize != 0x1000...<br />
* The page table heap now receives all but 64 of the available pages; prior to this, it was all but 70.<br />
* KSessionRequest's additional mappings (when sending an IPC request with more than 8 buffers) are now slab-allocated, rather than using KPageBuffers.<br />
** This slab has a count of 40; object size is 0x4A0 (exactly the maximum required size).<br />
** 13.0.0+ Dynamic expansion is supported.<br />
* Scoped setting/clearing of the 14.0.0 exception flag for cache operations has changed.<br />
** Previously, |= on set, &= ~ on clear. Now, the flag is orr'd in only if it is not already set, and cleared only if it was newly set.<br />
** This adds support for recursively setting these flags via a scoped setter, although there are no places in kernel where it is possible for this to occur.<br />
** This applies to cpu::InvalidateDataCache, cpu::StoreDataCache, cpu::FlushDataCache<br />
* The IsInUsermodeExceptionHandler exception flag management was changed:<br />
** This is now cleared by RestoreContext (same place it clears other flags) rather than ClearExceptionSvcPermissions. It is still set by SetExceptionSvcPermissions.<br />
* Changes in and surrounding page table logic:<br />
** Devices can now theoretically (but not on the NX board) be given access to memory mapped as Io.<br />
*** Why one would want to do this is unclear.<br />
*** KMemoryState_Io now supports the CanAlignedDeviceMap and CanDeviceMap flags.<br />
*** KPageTableBase::GetContiguousMemoryRangeWithState no longer checks that the passed memory address is heap.<br />
*** KPageTableBase::OpenMemoryRangeForMapDeviceAddressSpace no longer checks passes KMemoryState_FlagReferenceCounted.<br />
*** KPageTableBase::LockForMapDeviceAddressSpace takes two new arguments, an output bool * to write whether the state was io, and a bool for whether to check KMemoryState_FlagReferenceCounted.<br />
**** The bool is always passed on true on NX board, preventing this feature from being actually used.<br />
*** KPageTableBase::LockForUnmapDeviceAddressSpace now takes a bool argument for whether to check KMemoryState_FlagReferenceCounted<br />
**** The bool is always passed on true on NX board, preventing this feature from being actually used.<br />
** Pages mapped via MapIoRegion now have KMemoryAttribute_Locked instead of KMemoryAttribute_None.<br />
** Changes were made with respect to the way MapPhysicalMemory/UnmapPhysicalMemory are implemented:<br />
*** KMemoryManager::AllocatePageGroupForProcess no longer calls KPageGroup::Open on the returned page group (essentially reverting the change in 11.0.0).<br />
**** Other KMemoryManager::Allocate* functions still call KPageGroup::Open.<br />
*** KPageTableBase::MapPhysicalMemory now calls a new KPageTable::Operate operation ("MapFirst"), which behaves the same as Map but calls KernelPanic() if the mapped pages have a non-zero reference count.<br />
**** This enforces that MapPhysicalMemory is the first place the pages being mapped have been allocated/opened.<br />
*** KPageTableBase::UnmapPhysicalMemory now calls a new KPageTable::Operate operation ("SeparatePages"), which performs page separation on the requested range.<br />
**** SeparatePages is identical to the separation done at the prologue of ChangePermissions; practically, this just enforces that the pages exist.<br />
*** KPageTableBase::UnmapPhysicalMemory now calls KernelPanic if the unmapping operation fails (since it is guaranteed to succeed by the success of SeparatePages).<br />
**** Logic which previously existed for re-mapping on failure has been removed.<br />
** New Kernel Objects ("KSystemResource", "KSecureSystemResource").<br />
*** Type ID = 0x4600, KSystemResource : public KAutoObject, KSecureSystemResource : public KSystemResource<br />
*** KSystemResource just stores pointers to the three kinds of dynamic resource managers required by processes/page tables.<br />
*** KSecureSystemResource stores the pointed-to objects for these as members.<br />
**** Previously, these were just KProcess members; they are no longer KProcess members and instead live in the KSecureSystemResource object.<br />
*** The slab heap for KSecureSystemResource has capacity = KProcess slab heap.<br />
*** When a process is created with system resource size > 0, it now creates a KSecureSystemResource (which manages allocation with KSystemControl).<br />
**** All actual underlying logic is the same, this just abstracts the KSystemControl/secure memory interaction out of KProcess.<br />
* KInterruptEventTask was removed and no longer exists.<br />
** KInterruptEvent now inherits from KInterruptTask directly.<br />
** There is no longer a global task table; KInterruptManager is expected to return ResultBusy if an interrupt is already bound (it already did this).<br />
** KInterruptEvent::Finalize now unbinds the interrupt directly, and then calls KDpcManager::Request() with a no-op KDpcTask.<br />
*** In practice, this unbinds the interrupt, and then creates an ordering to guarantee all cores will see the interrupt as unbound before continuing.<br />
*** Trivia: this is the first use of KDpcManager::Request on non-debug kernels.<br />
* Minor changes to KHandleTable:<br />
** KHandleTable::KHandleTable now initializes the table_size, max_count, and next_id fields to zero, previously they were uninitialized until Initialize was called.<br />
** KHandleTable::Initialize now instantiates a KScopedDisableDispatch while setting up the table.<br />
<br />
<br />
===[[HID_services|hid]]===<br />
Besides the various IPC changes, an infoleak vuln was [[Switch_System_Flaws|fixed]].<br />
<br />
=== IPC Interface Changes ===<br />
* The following new interfaces were removed:<br />
** nn::eth::sf::IEthInterface<br />
** nn::eth::sf::IEthInterfaceGroup<br />
** nn::socket::sf::IClient<br />
** nn::wlan::detail::IDetectManager<br />
** nn::wlan::detail::IInfraManager<br />
** nn::wlan::detail::ILocalGetActionFrame<br />
** nn::wlan::detail::ILocalGetFrame<br />
** nn::wlan::detail::ILocalManager<br />
** nn::wlan::detail::ISocketGetFrame<br />
** nn::wlan::detail::ISocketManager<br />
* The following new interfaces were added:<br />
** nn::anif::detail::ISfAssignedNetworkInterfaceService<br />
** nn::anif::detail::ISfDriverService<br />
** nn::anif::detail::ISfDriverServiceCreator<br />
** nn::anif::detail::ISfNetworkInterfaceService<br />
** nn::anif::detail::ISfUserService<br />
** nn::anif::detail::ISfUserServiceCreator<br />
** nn::pl::detail::IPlatformServiceManager<br />
** nn::prepo::detail::ipc::IAsyncContext<br />
** nn::socket::sf::IClient_MC<br />
** nn::srepo::detail::ipc::IAsyncContext<br />
** nn::ssl::sf::ISslContextForSystem<br />
** nn::ssl::sf::ISslServiceForSystem<br />
** nn::wlan::detail::IGeneralServiceCreator<br />
** nn::wlan::detail::IPrivateServiceCreator<br />
** nn::wlan::detail::IPrivateWirelessCommunicationService<br />
** nn::wlan::detail::IWirelessCommunicationService<br />
* The following interfaces were changed:<br />
** nn::account::baas::IAdministrator<br />
*** Added command 143 - inbytes: 0, outbytes: 16<br />
*** Added command 160 - inbytes: 0, outbytes: 0<br />
** nn::account::baas::IManagerForSystemService<br />
*** Added command 143 - inbytes: 0, outbytes: 16<br />
*** Added command 160 - inbytes: 0, outbytes: 0<br />
** nn::am::service::IAppletCommonFunctions<br />
*** Added command 90 - inbytes: 16, outbytes: 0, outinterfaces: ['nn::am::service::IStorageChannel']<br />
*** Added command 91 - inbytes: 16, outbytes: 0, outinterfaces: ['nn::am::service::IStorageChannel']<br />
*** Added command 100 - inbytes: 4, outbytes: 0<br />
** nn::am::service::IDebugFunctions<br />
*** Added command 50 - inbytes: 16, outbytes: 0<br />
*** Added command 200 - buffers: [5], inbytes: 8, outbytes: 0, outinterfaces: ['nn::am::service::IAllSystemAppletProxiesService'], pid: True<br />
** nn::am::service::ILibraryAppletProxy<br />
*** Added command 22 - inbytes: 0, outbytes: 0, outinterfaces: ['nn::am::service::IHomeMenuFunctions']<br />
*** Added command 23 - inbytes: 0, outbytes: 0, outinterfaces: ['nn::am::service::IGlobalStateController']<br />
** nn::am::service::IOverlayAppletProxy<br />
*** Added command 23 - inbytes: 0, outbytes: 0, outinterfaces: ['nn::am::service::IGlobalStateController']<br />
** nn::arp::detail::IWriter<br />
*** Added command 3 - inbytes: 8, outbytes: 0, outinterfaces: ['nn::arp::detail::IUpdater']<br />
** nn::audio::detail::IAudioRenderer<br />
*** Added command 12 - inbytes: 4, outbytes: 0<br />
*** Added command 13 - inbytes: 0, outbytes: 4<br />
** nn::audioctrl::detail::IAudioController<br />
*** Removed command 26 - inbytes: 1, outbytes: 0<br />
*** Removed command 35 - inbytes: 8, outbytes: 0<br />
*** Removed command 36 - inbytes: 0, outbytes: 8<br />
*** Removed command 37 - inbytes: 1, outbytes: 0<br />
*** Removed command 38 - inbytes: 0, outbytes: 1<br />
*** Removed command 39 - inbytes: 0, outbytes: 1<br />
*** Changed command 40 - buffers: [26] -> [22] (final state: buffers: [22], inbytes: 0, outbytes: 0)<br />
*** Added command 41 - inbytes: 8, outbytes: 0<br />
*** Added command 42 - inbytes: 8, outbytes: 0<br />
*** Added command 50000 - inbytes: 4, outbytes: 0<br />
** nn::bluetooth::IBluetoothDriver<br />
*** Added command 101 - inbytes: 0, outbytes: 0<br />
*** Added command 102 - inbytes: 0, outbytes: 0<br />
*** Added command 155 - inbytes: 6, outbytes: 1<br />
** nn::btm::IBtm<br />
*** Added command 112 - inbytes: 7, outbytes: 0<br />
*** Added command 113 - inbytes: 6, outbytes: 1<br />
*** Added command 116 - inbytes: 7, outbytes: 0<br />
*** Added command 117 - inbytes: 6, outbytes: 1<br />
** nn::btm::IBtmDebug<br />
*** Added command 14 - inbytes: 8, outbytes: 0<br />
*** Added command 15 - inbytes: 0, outbytes: 0<br />
*** Added command 16 - inbytes: 0, outbytes: 0<br />
*** Added command 17 - inbytes: 0, outbytes: 0<br />
** nn::capsrv::sf::IAlbumAccessorService<br />
*** Added command 110 - buffers: [6, 5], inbytes: 16, outbytes: 8<br />
** nn::clkrst::IClkrstManager<br />
*** Added command 6 - inbytes: 0, outbytes: 0<br />
** nn::dauth::detail::IService<br />
*** Added command 1000 - inbytes: 0, outbytes: 0, outhandles: [1]<br />
*** Added command 9000 - buffers: [5, 5], inbytes: 0, outbytes: 0<br />
*** Added command 9010 - inbytes: 0, outbytes: 0<br />
** nn::es::IActiveRightsContext<br />
*** Removed command 5 - buffers: [5], inbytes: 0, outbytes: 0<br />
*** Added command 216 - inbytes: 0, outbytes: 0, outhandles: [1]<br />
** nn::es::IETicketService<br />
*** Added command 1022 - inbytes: 0, outbytes: 0, outinterfaces: ['nn::es::IActiveRightsContext']<br />
** nn::fssrv::sf::IFileSystem<br />
*** Added command 16 - inbytes: 0, outbytes: 192<br />
** nn::fssrv::sf::IFileSystemProxy<br />
*** Added command 207 - inbytes: 16, outbytes: 0, outinterfaces: ['nn::fssrv::sf::IFileSystem']<br />
*** Added command 1400 - inbytes: 1, outbytes: 0<br />
** nn::grcsrv::IGrcService<br />
*** Changed command 1 - inbytes: 72 -> 32 (final state: inbytes: 32, inhandles: [1], outbytes: 0, outinterfaces: ['nn::grcsrv::IContinuousRecorder'])<br />
** nn::hid::IHidDebugServer<br />
*** Added command 137 - inbytes: 16, outbytes: 0, pid: True<br />
** nn::hid::IHidServer<br />
*** Added command 3000 - buffers: [26], inbytes: 0, outbytes: 0<br />
*** Added command 3001 - buffers: [25], inbytes: 0, outbytes: 0<br />
*** Added command 3002 - inbytes: 0, outbytes: 0<br />
*** Added command 3003 - inbytes: 0, outbytes: 56<br />
*** Added command 3004 - inbytes: 56, outbytes: 0<br />
*** Added command 3005 - inbytes: 0, outbytes: 0<br />
*** Added command 3006 - buffers: [26], inbytes: 4, outbytes: 0<br />
*** Added command 3007 - buffers: [25], inbytes: 4, outbytes: 0<br />
*** Added command 3008 - inbytes: 4, outbytes: 0<br />
*** Added command 3009 - inbytes: 4, outbytes: 64<br />
*** Added command 3010 - inbytes: 68, outbytes: 0<br />
*** Added command 3011 - inbytes: 4, outbytes: 0<br />
** nn::hid::IHidSystemServer<br />
*** Added command 32 - inbytes: 48, outbytes: 0, pid: True<br />
*** Added command 33 - inbytes: 0, outbytes: 0<br />
*** Added command 1135 - inbytes: 8, outbytes: 0, pid: True<br />
** nn::lr::IAddOnContentLocationResolver<br />
*** Added command 5 - buffers: [22, 22], inbytes: 8, outbytes: 0<br />
*** Added command 6 - buffers: [21], inbytes: 16, outbytes: 0<br />
*** Added command 7 - buffers: [21, 21], inbytes: 16, outbytes: 0<br />
** nn::lr::ILocationResolver<br />
*** Added command 20 - inbytes: 0, outbytes: 0<br />
** nn::lr::ILocationResolverManager<br />
*** Added command 4 - buffers: [5], inbytes: 0, outbytes: 0<br />
** nn::mnpp::detail::ipc::IServiceForSystem<br />
*** Added command 300 - inbytes: 0, outbytes: 1<br />
*** Added command 400 - inbytes: 0, outbytes: 1<br />
** nn::ncm::IContentMetaDatabase<br />
*** Added command 23 - inbytes: 16, outbytes: 1<br />
*** Added command 24 - inbytes: 24, outbytes: 24<br />
*** Added command 25 - inbytes: 24, outbytes: 24<br />
** nn::ndrm::low::detail::INdrmLowAdminInterface<br />
*** Changed command 3 - inbytes: 8 -> 24 (final state: buffers: [5], inbytes: 24, outbytes: 0)<br />
*** Added command 40 - buffers: [6], inbytes: 8, outbytes: 4<br />
*** Added command 42 - buffers: [6], inbytes: 16, outbytes: 4<br />
*** Added command 43 - buffers: [6], inbytes: 16, outbytes: 4<br />
*** Added command 44 - buffers: [6], inbytes: 16, outbytes: 4<br />
** nn::nim::detail::INetworkInstallManager<br />
*** Removed command 91 - buffers: [5], inbytes: 16, outbytes: 0, outhandles: [1], outinterfaces: ['nn::nim::detail::IAsyncResult']<br />
*** Added command 138 - buffers: [5], inbytes: 8, outbytes: 0, outhandles: [1], outinterfaces: ['nn::nim::detail::IAsyncResult']<br />
*** Added command 139 - inbytes: 0, outbytes: 0<br />
*** Added command 140 - inbytes: 0, outbytes: 0<br />
*** Added command 141 - inbytes: 0, outbytes: 1<br />
** nn::nim::detail::IShopServiceManager<br />
*** Added command 102 - inbytes: 0, outbytes: 0, outhandles: [1], outinterfaces: ['nn::nim::detail::IAsyncValue']<br />
*** Added command 103 - inbytes: 0, outbytes: 32<br />
*** Added command 104 - inbytes: 0, outbytes: 0, outhandles: [1], outinterfaces: ['nn::nim::detail::IAsyncValue']<br />
*** Added command 105 - inbytes: 0, outbytes: 0, outhandles: [1], outinterfaces: ['nn::nim::detail::IAsyncResult']<br />
*** Added command 106 - inbytes: 0, outbytes: 0, outhandles: [1], outinterfaces: ['nn::nim::detail::IAsyncResult']<br />
*** Added command 501 - inbytes: 16, outbytes: 0, outhandles: [1], outinterfaces: ['nn::nim::detail::IAsyncResult']<br />
** nn::ns::detail::IApplicationManagerInterface<br />
*** Added command 90 - inbytes: 8, outbytes: 0<br />
*** Changed command 607 - inbytes: 16 -> 8 (final state: buffers: [6], inbytes: 8, outbytes: 4)<br />
*** Added command 909 - inbytes: 8, outbytes: 0<br />
*** Added command 2357 - inbytes: 0, outbytes: 0<br />
*** Added command 2358 - inbytes: 0, outbytes: 0<br />
*** Added command 2359 - inbytes: 0, outbytes: 1<br />
*** Added command 2516 - inbytes: 16, outbytes: 0<br />
** nn::pdm::detail::IQueryService<br />
*** Removed command 7 - buffers: [6, 5], inbytes: 0, outbytes: 4<br />
*** Removed command 13 - buffers: [6, 5], inbytes: 0, outbytes: 4<br />
*** Removed command 14 - buffers: [6], inbytes: 24, outbytes: 4<br />
*** Removed command 15 - inbytes: 0, outbytes: 0, outhandles: [1]<br />
*** Removed command 16 - buffers: [6, 5], inbytes: 16, outbytes: 4<br />
** nn::prepo::detail::ipc::IPrepoService<br />
*** Added command 10500 - buffers: [9], inbytes: 40, inhandles: [1], outbytes: 0, outinterfaces: ['nn::prepo::detail::ipc::IAsyncContext'], pid: True<br />
** nn::settings::ISystemSettingsServer<br />
*** Added command 119 - inbytes: 1, outbytes: 3<br />
** nn::srepo::detail::ipc::ISrepoService<br />
*** Added command 10300 - buffers: [9], inbytes: 40, inhandles: [1], outbytes: 0, outinterfaces: ['nn::srepo::detail::ipc::IAsyncContext']<br />
*** Added command 20600 - inbytes: 20, outbytes: 0<br />
** nn::usb::ds::IDsEndpoint<br />
*** Removed command 8 - inbytes: 8, inhandles: [1], outbytes: 0<br />
*** Removed command 9 - inbytes: 16, outbytes: 4<br />
** nn::usb::ds::IDsInterface<br />
*** Added command 12 - inbytes: 8, inhandles: [1], outbytes: 0<br />
** nn::visrv::sf::IManagerDisplayService<br />
*** Changed command 8293 - inbytes: 16 -> 40 (final state: buffers: [6], inbytes: 40, outbytes: 8)<br />
<br />
==See Also==<br />
System update report(s):<br />
* [https://yls8.mtheall.com/ninupdates/reports.php?date=2022-10-11_00-15-06&sys=hac]<br />
<br />
<br />
{{NavboxVersions}}<br />
<br />
[[Category:System versions]]</div>
Masagrator
https://switchbrew.org/w/index.php?title=Error_codes&diff=11642
Error codes
2022-04-02T10:49:57Z
<p>Masagrator: Add 0x27C error code that is returned by nn::account::EnsureNetworkServiceAccountAvailable(nn::account::UserHandle const&) in nnSDK if there is no connection available/Airplane mode is enabled.</p>
<hr />
<div>= Structure =<br />
These have been redesigned from the 3DS so that they fit within a Aarch64 MOV instruction immediate most of the time (without requiring the additional MOVK).<br />
<br />
{| class=wikitable<br />
! Bits || Field<br />
|-<br />
| 8-0 || Module<br />
|-<br />
| 21-9 || Description<br />
|}<br />
<br />
When a fatal-error is received the error code is outputted using the following formatter:<br />
%04d-%04d<br />
<br />
.. where the first code is <code>2000 + Module</code>, and the other being <code>Description</code>. Bits >=22 from the error-code are unused when displaying fatal-errors, since the Description ends with bit21.<br />
<br />
= Result Errors =<br />
General errors used by system modules and applications.<br />
<br />
== Modules ==<br />
{| class=wikitable<br />
! Value || Name<br />
|-<br />
| 1 || Svc<br />
|-<br />
| 2 || Fs<br />
|-<br />
| 3 || Os<br />
|-<br />
| 4 || Htcs<br />
|-<br />
| 5 || Ncm<br />
|-<br />
| 6 || Dd<br />
|-<br />
| 7 || Osdbg<br />
|-<br />
| 8 || Lr<br />
|-<br />
| 9 || Ldr<br />
|-<br />
| 10 || Sf<br />
|-<br />
| 11 || Sf_Hipc<br />
|-<br />
| 12 || Tma<br />
|-<br />
| 13 || <br />
|-<br />
| 14 || <br />
|-<br />
| 15 || Pm<br />
|-<br />
| 16 || Ns<br />
|-<br />
| 17 || Bsdsockets<br />
|-<br />
| 18 || Htc<br />
|-<br />
| 19 || Tsc<br />
|-<br />
| 20 || Kvdb<br />
|-<br />
| 21 || Sm<br />
|-<br />
| 22 || Ro<br />
|-<br />
| 23 || Gc<br />
|-<br />
| 24 || Sdmmc<br />
|-<br />
| 25 || Ovln<br />
|-<br />
| 26 || Spl<br />
|-<br />
| 27 || Socket<br />
|-<br />
| 28 || <br />
|-<br />
| 29 || Htclow<br />
|-<br />
| 30 || Ddsf<br />
|-<br />
| 31 || Htcfs<br />
|-<br />
| 32 || Async<br />
|-<br />
| 33 || Util<br />
|-<br />
| 34 || <br />
|-<br />
| 35 || Tipc<br />
|-<br />
| 100 || Eth<br />
|-<br />
| 101 || I2c<br />
|-<br />
| 102 || Gpio<br />
|-<br />
| 103 || Uart<br />
|-<br />
| 104 || Cpad<br />
|-<br />
| 105 || Settings<br />
|-<br />
| 106 || Ftm<br />
|-<br />
| 107 || Wlan<br />
|-<br />
| 108 || Xcd<br />
|-<br />
| 109 || Tmp451<br />
|-<br />
| 110 || Nifm<br />
|-<br />
| 111 || Codec<br />
|-<br />
| 112 || Lsm6ds3<br />
|-<br />
| 113 || Bluetooth<br />
|-<br />
| 114 || Vi<br />
|-<br />
| 115 || Nfp<br />
|-<br />
| 116 || Time<br />
|-<br />
| 117 || Fgm<br />
|-<br />
| 118 || Oe<br />
|-<br />
| 119 || Bh1730fvc<br />
|-<br />
| 120 || Pcie<br />
|-<br />
| 121 || Friends<br />
|-<br />
| 122 || Bcat<br />
|-<br />
| 123 || Ssl<br />
|-<br />
| 124 || Account<br />
|-<br />
| 125 || News<br />
|-<br />
| 126 || Mii<br />
|-<br />
| 127 || Nfc<br />
|-<br />
| 128 || Am<br />
|-<br />
| 129 || Prepo<br />
|-<br />
| 130 || Ahid<br />
|-<br />
| 131 || Applet<br />
|-<br />
| 132 || Ae<br />
|-<br />
| 133 || Pcv<br />
|-<br />
| 134 || Usb_Pd<br />
|-<br />
| 135 || Bpc<br />
|-<br />
| 136 || Psm<br />
|-<br />
| 137 || Nim<br />
|-<br />
| 138 || Psc<br />
|-<br />
| 139 || Tc<br />
|-<br />
| 140 || Usb<br />
|-<br />
| 141 || Nsd<br />
|-<br />
| 142 || Pctl<br />
|-<br />
| 143 || Btm<br />
|-<br />
| 144 || La<br />
|-<br />
| 145 || Es<br />
|-<br />
| 146 || Ngc<br />
|-<br />
| 147 || Erpt<br />
|-<br />
| 148 || Apm<br />
|-<br />
| 149 || Cec<br />
|-<br />
| 150 || Profiler<br />
|-<br />
| 151 || Eupld<br />
|-<br />
| 152 || Lidbe<br />
|-<br />
| 153 || Audio<br />
|-<br />
| 154 || Npns<br />
|-<br />
| 155 || Http<br />
|-<br />
| 156 || Idle<br />
|-<br />
| 157 || Arp<br />
|-<br />
| 158 || Updater<br />
|-<br />
| 159 || Swkbd<br />
|-<br />
| 160 || Netdiag<br />
|-<br />
| 161 || Nfc_Mifare<br />
|-<br />
| 162 || Err<br />
|-<br />
| 163 || Fatal<br />
|-<br />
| 164 || Ec<br />
|-<br />
| 165 || Spsm<br />
|-<br />
| 166 || Aoc<br />
|-<br />
| 167 || Bgtc<br />
|-<br />
| 168 || Creport<br />
|-<br />
| 169 || Sasbus<br />
|-<br />
| 170 || Pl<br />
|-<br />
| 171 || <br />
|-<br />
| 172 || <br />
|-<br />
| 173 || Lbl<br />
|-<br />
| 174 || <br />
|-<br />
| 175 || Jit<br />
|-<br />
| 176 || Hdcp<br />
|-<br />
| 177 || Omm<br />
|-<br />
| 178 || Pdm<br />
|-<br />
| 179 || Olsc<br />
|-<br />
| 180 || Srepo<br />
|-<br />
| 181 || Dauth<br />
|-<br />
| 182 || Stdfu<br />
|-<br />
| 183 || Dbg<br />
|-<br />
| 184 || <br />
|-<br />
| 185 || <br />
|-<br />
| 186 || <br />
|-<br />
| 187 || Spi<br />
|-<br />
| 188 || <br />
|-<br />
| 189 || Pwm<br />
|-<br />
| 190 || <br />
|-<br />
| 191 || Rtc<br />
|-<br />
| 192 || Regulator<br />
|-<br />
| 193 || Led<br />
|-<br />
| 194 || <br />
|-<br />
| 195 || <br />
|-<br />
| 196 || <br />
|-<br />
| 197 || Clkrst<br />
|-<br />
| 198 || Powctl<br />
|-<br />
| 199 || <br />
|-<br />
| 200 || <br />
|-<br />
| 201 || Audio_Old<br />
|-<br />
| 202 || Hid<br />
|-<br />
| 203 || Ldn<br />
|-<br />
| 204 || Cs<br />
|-<br />
| 205 || Irsensor<br />
|-<br />
| 206 || Capsrv<br />
|-<br />
| 207 || <br />
|-<br />
| 208 || Manu<br />
|-<br />
| 209 || Atk<br />
|-<br />
| 210 || Web<br />
|-<br />
| 211 || Lcs<br />
|-<br />
| 212 || Grc<br />
|-<br />
| 213 || Repair<br />
|-<br />
| 214 || Album<br />
|-<br />
| 215 || Rid<br />
|-<br />
| 216 || Migration<br />
|-<br />
| 217 || Migration_Idc<br />
|-<br />
| 218 || Hidbus<br />
|-<br />
| 219 || Ens<br />
|-<br />
| 220 || <br />
|-<br />
| 221 || <br />
|-<br />
| 222 || <br />
|-<br />
| 223 || Websocket<br />
|-<br />
| 224 || <br />
|-<br />
| 225 || <br />
|-<br />
| 226 || <br />
|-<br />
| 227 || Capmtp<br />
|-<br />
| 228 || Pgl<br />
|-<br />
| 229 || Notification<br />
|-<br />
| 230 || Ins<br />
|-<br />
| 231 || Lp2p<br />
|-<br />
| 232 || Rcd<br />
|-<br />
| 233 || <br />
|-<br />
| 234 || <br />
|-<br />
| 235 || Prc<br />
|-<br />
| 236 || <br />
|-<br />
| 237 || <br />
|-<br />
| 238 || Ectx<br />
|-<br />
| 239 || Mnpp<br />
|-<br />
| 240 || <br />
|-<br />
| 241 || <br />
|-<br />
| 242 || <br />
|-<br />
| 243 || <br />
|-<br />
| 244 || Dp2hdmi<br />
|-<br />
| 245 || <br />
|-<br />
| 246 || Sprofile<br />
|-<br />
| 247 || <br />
|-<br />
| 248 || <br />
|-<br />
| 249 || <br />
|-<br />
| 250 || Ndrm<br />
|-<br />
| 300 || <br />
|-<br />
| 301 || <br />
|-<br />
| 302 || <br />
|-<br />
| 303 || <br />
|-<br />
| 304 || <br />
|-<br />
| 305 || <br />
|-<br />
| 306 || <br />
|-<br />
| 307 || <br />
|-<br />
| 308 || <br />
|-<br />
| 309 || <br />
|-<br />
| 310 || <br />
|-<br />
| 311 || <br />
|-<br />
| 312 || <br />
|-<br />
| 313 || <br />
|-<br />
| 314 || <br />
|-<br />
| 315 || <br />
|-<br />
| 316 || <br />
|-<br />
| 317 || <br />
|-<br />
| 318 || <br />
|-<br />
| 319 || <br />
|-<br />
| 320 || <br />
|-<br />
| 321 || <br />
|-<br />
| 499 || Tspm<br />
|-<br />
| 500 || Devmenu<br />
|}<br />
<br />
== Error codes ==<br />
{| class=wikitable<br />
! Value || Module || Description || Notes<br />
|-<br />
| 0x0E01 || 1 || 7 || Session count exceeded<br />
|-<br />
| 0x1C01 || 1 || 14 || Invalid kernel capability descriptor<br />
|-<br />
| 0x4201 || 1 || 33 || Not Implemented<br />
|-<br />
| 0x7601 || 1 || 59 || Thread terminated/termination requested<br />
|-<br />
| 0x8C01 || 1 || 70 || No more debug events<br />
|-<br />
| 0xCA01 || 1 || 101 || Invalid size<br />
|-<br />
| 0xCC01 || 1 || 102 || Invalid address<br />
|-<br />
| 0xCE01 || 1 || 103 || Resource exhaustion<br />
|-<br />
| 0xD001 || 1 || 104 || Memory exhaustion<br />
|-<br />
| 0xD201 || 1 || 105 || Handle-table exhaustion<br />
|-<br />
| 0xD401 || 1 || 106 || Invalid memory state / invalid memory permissions.<br />
|-<br />
| 0xD801 || 1 || 108 || Invalid memory permissions.<br />
|-<br />
| 0xDC01 || 1 || 110 || Invalid memory range<br />
|-<br />
| 0xE001 || 1 || 112 || Invalid thread priority.<br />
|-<br />
| 0xE201 || 1 || 113 || Invalid processor id.<br />
|-<br />
| 0xE401 || 1 || 114 || Invalid handle.<br />
|-<br />
| 0xE601 || 1 || 115 || Invalid pointer/Syscall copy from user failed.<br />
|-<br />
| 0xE801 || 1 || 116 || Invalid combination<br />
|-<br />
| 0xEA01 || 1 || 117 || Time out. Also when you give 0 handles to svcWaitSynchronizationN.<br />
|-<br />
| 0xEC01 || 1 || 118 || Operation canceled<br />
|-<br />
| 0xEE01 || 1 || 119 || Out of range<br />
|-<br />
| 0xF001 || 1 || 120 || Invalid enum<br />
|-<br />
| 0xF201 || 1 || 121 || No such entry<br />
|-<br />
| 0xF401 || 1 || 122 || Irq/DeviceAddressSpace/{...} already registered<br />
|-<br />
| 0xF601 || 1 || 123 || Port remote dead<br />
|-<br />
| 0xF801 || 1 || 124 || [Usermode] Unhandled interrupt/exception<br />
|-<br />
| 0xFA01 || 1 || 125 || Invalid state<br />
|-<br />
| 0xFC01 || 1 || 126 || Reserved value<br />
|-<br />
| 0xFE01 || 1 || 127 || Invalid hardware breakpoint<br />
|-<br />
| 0x10001 || 1 || 128 || [Usermode] Fatal exception<br />
|-<br />
| 0x10201 || 1 || 129 || Last thread didn't belong to your process<br />
|-<br />
| 0x10601 || 1 || 131 || Port closed<br />
|-<br />
| 0x10801 || 1 || 132 || Resource limit exceeded<br />
|-<br />
| 0x20801 || 1 || 260 || Command buffer too small<br />
|-<br />
| 0x40A01 || 1 || 517 || Invalid process ID.<br />
|-<br />
| 0x40C01 || 1 || 518 || Invalid thread ID.<br />
|-<br />
| 0x40E01 || 1 || 519 || Invalid thread ID (used in svcGetDebugThreadParam).<br />
|-<br />
| 0x41001 || 1 || 520 || Process not being debugged<br />
|-<br />
| 0x202 || 2 || 1 || Path does not exist.<br />
|-<br />
| 0x402 || 2 || 2 || Path already exists.<br />
|-<br />
| 0xE02 || 2 || 7 || Resource already in use (file already opened, savedata filesystem already mounted).<br />
|-<br />
| 0x4602 || 2 || 35 || Not enough free space for BIS Calibration partition.<br />
|-<br />
| 0x4802 || 2 || 36 || Not enough free space for BIS Safe partition.<br />
|-<br />
| 0x4A02 || 2 || 37 || Not enough free space for BIS User partition.<br />
|-<br />
| 0x4C02 || 2 || 38 || Not enough free space for BIS System partition.<br />
|-<br />
| 0x4E02 || 2 || 39 || Not enough free space on SD card.<br />
|-<br />
| 0x6402 || 2 || 50 || NCA is older than version 3, or NCA SDK version is older than 0.11.0.0<br />
|-<br />
| 0x7802 || 2 || 60 || Specified mount name already exists.<br />
|-<br />
| 0x7D202 || 2 || 1001 || Process does not have RomFs <br />
|-<br />
| 0x7D402 || 2 || 1002 || Title-id not found / savedata not found.<br />
|-<br />
| 0xFA202 || 2 || 2001 || SD card not inserted<br />
|-<br />
| 0x13B002 || 2 || 2520 || Gamecard not inserted<br />
|-<br />
| 0x13B402 || 2 || 2522 || Attempted process an AsicHandler command in initial mode<br />
|-<br />
| 0x13D802 || 2 || 2540 || Attempted to read from the secure gamecard partition in normal mode<br />
|-<br />
| 0x13DA02 || 2 || 2541 || Attempted to read from the normal gamecard partition in secure mode<br />
|-<br />
| 0x13DC02 || 2 || 2542 || Attempted a read that spanned both the normal and secure gamecard partitions<br />
|-<br />
| 0x13E002 || 2 || 2544 || Gamecard initial data hash doesn't match the initial data hash in the card header<br />
|-<br />
| 0x13E202 || 2 || 2545 || Gamecard initial data reserved area is not all zeros<br />
|-<br />
| 0x13E402 || 2 || 2546 || Gamecard certificate kek index doesn't match card header kek index<br />
|-<br />
| 0x13EE02 || 2 || 2551 || Unable to read card header on gamecard init<br />
|-<br />
| 0x140A02 || 2 || 2565 || Encountered SDMMC error in write operation<br />
|-<br />
| 0x145002 || 2 || 2600 || Attempted to switch lotus state machine to secure mode from a mode other than normal<br />
|-<br />
| 0x145202 || 2 || 2601 || Attempted to switch lotus state machine to normal mode from a mode other than initial<br />
|-<br />
| 0x145402 || 2 || 2602 || Attempted to switch lotus state machine to write mode from a mode other than normal<br />
|-<br />
| 0x149402 || 2 || 2634 || Error processing lotus command SetUserAsicFirmware<br />
|-<br />
| 0x149A02 || 2 || 2637 || Error processing lotus command GetAsicCert<br />
|-<br />
| 0x14A002 || 2 || 2640 || Error processing lotus command SetEmmcEmbeddedSocCertificate<br />
|-<br />
| 0x14AA02 || 2 || 2645 || Error processing lotus command GetAsicEncryptedMessage<br />
|-<br />
| 0x14AC02 || 2 || 2646 || Error processing lotus command SetLibraryEncryptedMessage<br />
|-<br />
| 0x14B602 || 2 || 2651 || Error processing lotus command GetAsicAuthenticationData<br />
|-<br />
| 0x14B802 || 2 || 2652 || Error processing lotus command SetAsicAuthenticationDataHash<br />
|-<br />
| 0x14BA02 || 2 || 2653 || Error processing lotus command SetLibraryAuthenticationData<br />
|-<br />
| 0x14BC02 || 2 || 2654 || Error processing lotus command GetLibraryAuthenticationDataHash<br />
|-<br />
| 0x14C202 || 2 || 2657 || Error processing lotus command ExchangeRandomValuesInSecureMode<br />
|-<br />
| 0x14D802 || 2 || 2668 || Error calling nn::gc::detail::GcCrypto::GenerateRandomBytes<br />
|-<br />
| 0x14DE02 || 2 || 2671 || Error processing lotus command ReadAsicRegister<br />
|-<br />
| 0x14E002 || 2 || 2672 || Error processing lotus command GetGameCardIdSet<br />
|-<br />
| 0x14E402 || 2 || 2674 || Error processing lotus command GetCardHeader<br />
|-<br />
| 0x14E802 || 2 || 2676 || Error processing lotus command GetCardKeyArea<br />
|-<br />
| 0x14EA02 || 2 || 2677 || Error processing lotus command ChangeDebugMode<br />
|-<br />
| 0x14EC02 || 2 || 2678 || Error processing lotus command GetRmaInformation<br />
|-<br />
| 0x150802 || 2 || 2692 || Tried sending lotus card command Refresh when not in secure mode<br />
|-<br />
| 0x150A02 || 2 || 2693 || Tried sending lotus card command when not in correct mode<br />
|-<br />
| 0x155602 || 2 || 2731 || Error processing lotus card command ReadId1<br />
|-<br />
| 0x155802 || 2 || 2732 || Error processing lotus card command ReadId2<br />
|-<br />
| 0x155A02 || 2 || 2733 || Error processing lotus card command ReadId3<br />
|-<br />
| 0x155E02 || 2 || 2735 || Error processing lotus card command ReadPage<br />
|-<br />
| 0x156202 || 2 || 2737 || Error processing lotus card command WritePage<br />
|-<br />
| 0x156402 || 2 || 2738 || Error processing lotus card command Refresh<br />
|-<br />
| 0x156C02 || 2 || 2742 || Error processing lotus card command ReadCrc<br />
|-<br />
| 0x156E02 || 2 || 2743 || Error processing lotus card command Erase or UnlockForceErase<br />
|-<br />
| 0x157002 || 2 || 2744 || Error processing lotus card command ReadDevParam<br />
|-<br />
| 0x157202 || 2 || 2745 || Error processing lotus card command WriteDevParam<br />
|-<br />
| 0x16B002 || 2 || 2904 || Id2Normal did not match the value in the buffer returned by ChangeDebugMode<br />
|-<br />
| 0x16B202 || 2 || 2905 || Id1Normal did not match Id1Writer when switching gamecard to write mode<br />
|-<br />
| 0x16B402 || 2 || 2906 || Id2Normal did not match Id2Writer when switching gamecard to write mode<br />
|-<br />
| 0x171402 || 2 || 2954 || Invalid gamecard handle.<br />
|-<br />
| 0x172002 || 2 || 2960 || Invalid gamecard handle when opening normal gamecard partition<br />
|-<br />
| 0x172202 || 2 || 2961 || Invalid gamecard handle when opening secure gamecard partition<br />
|-<br />
| 0x177202 || 2 || 3001 || Unimplemented behavior<br />
|-<br />
| 0x177602 || 2 || 3003 || File/Directory already exists.<br />
|-<br />
| 0x190202 || 2 || 3201 || Memory allocation failure related to FAT filesystem code<br />
|-<br />
| 0x190602 || 2 || 3203 || Memory allocation failure related to FAT filesystem code<br />
|-<br />
| 0x190802 || 2 || 3204 || Memory allocation failure related to FAT filesystem code<br />
|-<br />
| 0x190A02 || 2 || 3205 || Memory allocation failure related to FAT filesystem code<br />
|-<br />
| 0x190C02 || 2 || 3206 || Memory allocation failure related to FAT filesystem code<br />
|-<br />
| 0x191002 || 2 || 3208 || Memory allocation failure related to FAT filesystem code<br />
|-<br />
| 0x195802 || 2 || 3244 || Allocation failure related to SD cards<br />
|-<br />
| 0x196002 || 2 || 3248 || Out of memory<br />
|-<br />
| 0x196202 || 2 || 3249 || Out of memory<br />
|-<br />
| 0x1A3E02 || 2 || 3359 || Out of memory<br />
|-<br />
| 0x1A4002 || 2 || 3360 || Out of memory<br />
|-<br />
| 0x1A4A02 || 2 || 3365 || Out of memory<br />
|-<br />
| 0x21BC02 || 2 || 4318 || Invalid save data filesystem magic (valid magic is SAVE in ASCII)<br />
|-<br />
| 0x234202 || 2 || 4513 || Error reading ACID section in NPDM<br />
|-<br />
| 0x234402 || 2 || 4514 || Invalid NPDM ACID section size<br />
|-<br />
| 0x234602 || 2 || 4515 || Last byte of the ACID modulus is zero<br />
|-<br />
| 0x234802 || 2 || 4516 || Invalid ACID fixed key signature<br />
|-<br />
| 0x234A02 || 2 || 4517 || Invalid NCA magic<br />
|-<br />
| 0x234C02 || 2 || 4518 || Invalid NCA header fixed key signature<br />
|-<br />
| 0x234E02 || 2 || 4519 || Invalid NCA header ACID signature<br />
|-<br />
| 0x235002 || 2 || 4520 || Invalid NCA header section hash<br />
|-<br />
| 0x235202 || 2 || 4521 || Invalid NCA Key index<br />
|-<br />
| 0x235602 || 2 || 4523 || Invalid encryption type<br />
|-<br />
| 0x235802 || 2 || 4524 || Redirection BKTR table size is negative<br />
|-<br />
| 0x235A02 || 2 || 4525 || Encryption BKTR table size is negative<br />
|-<br />
| 0x235C02 || 2 || 4526 || Redirection BKTR table end offset is past the Encryption BKTR table start offset<br />
|-<br />
| 0x235E02 || 2 || 4527 || NCA-path used with the wrong titleID.<br />
|-<br />
| 0x236002 || 2 || 4528 || NCA header value is out of range<br />
|-<br />
| 0x236202 || 2 || 4529 || NCA FS header value is out of range<br />
|-<br />
| 0x236802 || 2 || 4532 || PartitionFS hash block size is not a power of 2<br />
|-<br />
| 0x236A02 || 2 || 4533 || PartitionFS hash "always_2" field is not 2<br />
|-<br />
| 0x236C02 || 2 || 4534 || PartitionFS hash table is too small for main data<br />
|-<br />
| 0x236E02 || 2 || 4535 || Invalid PartitionFS block hash<br />
|-<br />
| 0x244402 || 2 || 4642 || Invalid Partition file hashed region bounds<br />
|-<br />
| 0x244602 || 2 || 4643 || Invalid Partition FS hash<br />
|-<br />
| 0x244802 || 2 || 4644 || Invalid PFS0 magic<br />
|-<br />
| 0x244A02 || 2 || 4645 || Invalid HFS0 magic<br />
|-<br />
| 0x244C02 || 2 || 4646 || Invalid name offset for Partition FS file entry<br />
|-<br />
| 0x244E02 || 2 || 4647 || Calculated Partition FS header size changed between 2 consecutive reads<br />
|-<br />
| 0x249802 || 2 || 4684 || Invalid FAT file number.<br />
|-<br />
| 0x249C02 || 2 || 4686 || Invalid FAT format for BIS User partition.<br />
|-<br />
| 0x249E02 || 2 || 4687 || Invalid FAT format for BIS System partition.<br />
|-<br />
| 0x24A002 || 2 || 4688 || Invalid FAT format for BIS Safe partition.<br />
|-<br />
| 0x24A202 || 2 || 4689 || Invalid FAT format for BIS Calibration partition.<br />
|-<br />
| 0x250E02 || 2 || 4743 || [[NAX0|Corrupted]] NAX0 header.<br />
|-<br />
| 0x251002 || 2 || 4744 || Invalid [[NAX0]] magicnum.<br />
|-<br />
| 0x280202 || 2 || 5121 || Invalid FAT size<br />
|-<br />
| 0x280402 || 2 || 5122 || Invalid FAT BPB (BIOS Parameter Block)<br />
|-<br />
| 0x280602 || 2 || 5123 || Invalid FAT parameter<br />
|-<br />
| 0x280802 || 2 || 5124 || Invalid FAT sector<br />
|-<br />
| 0x280A02 || 2 || 5125 || Invalid FAT sector<br />
|-<br />
| 0x280C02 || 2 || 5126 || Invalid FAT sector<br />
|-<br />
| 0x280E02 || 2 || 5127 || Invalid FAT sector<br />
|-<br />
| 0x296A02 || 2 || 5301 || Mountpoint not found<br />
|-<br />
| 0x2EE202 || 2 || 6001 || Invalid input<br />
|-<br />
| 0x2EE602 || 2 || 6003 || Path too long<br />
|-<br />
| 0x2EE802 || 2 || 6004 || Invalid character.<br />
|-<br />
| 0x2EEA02 || 2 || 6005 || Invalid directory path.<br />
|-<br />
| 0x2EEC02 || 2 || 6006 || Unable to retrieve directory from path<br />
|-<br />
| 0x2F5A02 || 2 || 6061 || Offset outside storage<br />
|-<br />
| 0x313802 || 2 || 6300 || Operation not supported<br />
|-<br />
| 0x313A02 || 2 || 6301 || A specified filesystem has no MultiCommitTarget when doing a multi-filesystem commit<br />
|-<br />
| 0x313C02 || 2 || 6302 || Attempted to resize a nn::fs::SubStorage or BufferedStorage that is marked as non-resizable<br />
|-<br />
| 0x313E02 || 2 || 6303 || Attempted to resize a nn::fs::SubStorage or BufferedStorage when the SubStorage ends before the base storage<br />
|-<br />
| 0x314002 || 2 || 6304 || Attempted to call nn::fs::MemoryStorage::SetSize<br />
|-<br />
| 0x314202 || 2 || 6305 || Invalid Operation ID in nn::fs::MemoryStorage::OperateRange<br />
|-<br />
| 0x314402 || 2 || 6306 || Invalid Operation ID in nn::fs::FileStorage::OperateRange<br />
|-<br />
| 0x314602 || 2 || 6307 || Invalid Operation ID in nn::fs::FileHandleStorage::OperateRange<br />
|-<br />
| 0x314802 || 2 || 6308 || Invalid Operation ID in nn::fssystem::SwitchStorage::OperateRange<br />
|-<br />
| 0x314A02 || 2 || 6309 || Invalid Operation ID in nn::fs::detail::StorageServiceObjectAdapter::OperateRange<br />
|-<br />
| 0x314C02 || 2 || 6310 || Attempted to call nn::fssystem::AesCtrCounterExtendedStorage::Write<br />
|-<br />
| 0x314E02 || 2 || 6311 || Attempted to call nn::fssystem::AesCtrCounterExtendedStorage::SetSize<br />
|-<br />
| 0x315002 || 2 || 6312 || Invalid Operation ID in nn::fssystem::AesCtrCounterExtendedStorage::OperateRange<br />
|-<br />
| 0x315202 || 2 || 6313 || Attempted to call nn::fssystem::AesCtrStorageExternal::Write<br />
|-<br />
| 0x315402 || 2 || 6314 || Attempted to call nn::fssystem::AesCtrStorageExternal::SetSize<br />
|-<br />
| 0x315602 || 2 || 6315 || Attempted to call nn::fssystem::AesCtrStorage::SetSize<br />
|-<br />
| 0x315802 || 2 || 6316 || Attempted to call nn::fssystem::save::HierarchicalIntegrityVerificationStorage::SetSize<br />
|-<br />
| 0x315A02 || 2 || 6317 || Attempted to call nn::fssystem::save::HierarchicalIntegrityVerificationStorage::OperateRange<br />
|-<br />
| 0x315C02 || 2 || 6318 || Attempted to call nn::fssystem::save::IntegrityVerificationStorage::SetSize<br />
|-<br />
| 0x315E02 || 2 || 6319 || Attempted to invalidate the cache of a RomFs IVFC storage in nn::fssystem::save::IntegrityVerificationStorage::OperateRange<br />
|-<br />
| 0x316002 || 2 || 6320 || Invalid Operation ID in nn::fssystem::save::IntegrityVerificationStorage::OperateRange <br />
|-<br />
| 0x316202 || 2 || 6321 || Attempted to call nn::fssystem::save::BlockCacheBufferedStorage::SetSize<br />
|-<br />
| 0x316402 || 2 || 6322 || Attempted to invalidate the cache of something other than a savedata IVFC storage in nn::fssystem::save::BlockCacheBufferedStorage::OperateRange<br />
|-<br />
| 0x316602 || 2 || 6323 || Invalid Operation ID in nn::fssystem::save::BlockCacheBufferedStorage::OperateRange<br />
|-<br />
| 0x316802 || 2 || 6324 || Attempted to call nn::fssystem::IndirectStorage::Write<br />
|-<br />
| 0x316A02 || 2 || 6325 || Attempted to call nn::fssystem::IndirectStorage::SetSize<br />
|-<br />
| 0x316C02 || 2 || 6326 || Invalid Operation ID in nn::fssystem::IndirectStorage::OperateRange<br />
|-<br />
| 0x316E02 || 2 || 6327 || Attempted to call nn::fssystem::SparseStorage::ZeroStorage::Write<br />
|-<br />
| 0x317002 || 2 || 6328 || Attempted to call nn::fssystem::SparseStorage::ZeroStorage::SetSize<br />
|-<br />
| 0x317202 || 2 || 6329 || Attempted to call nn::fssystem::HierarchicalSha256Storage::SetSize<br />
|-<br />
| 0x317402 || 2 || 6330 || Attempted to call nn::fssystem::ReadOnlyBlockCacheStorage::Write<br />
|-<br />
| 0x317602 || 2 || 6331 || Attempted to call nn::fssystem::ReadOnlyBlockCacheStorage::SetSize<br />
|-<br />
| 0x317802 || 2 || 6332 || Attempted to call nn::fssystem::IntegrityRomFsStorage::SetSize<br />
|-<br />
| 0x317A02 || 2 || 6333 || Attempted to call nn::fssystem::save::DuplexStorage::SetSize<br />
|-<br />
| 0x317C02 || 2 || 6334 || Invalid Operation ID in nn::fssystem::save::DuplexStorage::OperateRange<br />
|-<br />
| 0x317E02 || 2 || 6335 || Attempted to call nn::fssystem::save::HierarchicalDuplexStorage::SetSize<br />
|-<br />
| 0x318002 || 2 || 6336 || Attempted to call nn::fssystem::save::RemapStorage::GetSize<br />
|-<br />
| 0x318202 || 2 || 6337 || Attempted to call nn::fssystem::save::RemapStorage::SetSize<br />
|-<br />
| 0x318402 || 2 || 6338 || Invalid Operation ID in nn::fssystem::save::RemapStorage::OperateRange<br />
|-<br />
| 0x318602 || 2 || 6339 || Attempted to call nn::fssystem::save::IntegritySaveDataStorage::SetSize<br />
|-<br />
| 0x318802 || 2 || 6340 || Invalid Operation ID in nn::fssystem::save::IntegritySaveDataStorage::OperateRange<br />
|-<br />
| 0x318A02 || 2 || 6341 || Attempted to call nn::fssystem::save::JournalIntegritySaveDataStorage::SetSize<br />
|-<br />
| 0x318C02 || 2 || 6342 || Invalid Operation ID in nn::fssystem::save::JournalIntegritySaveDataStorage::OperateRange<br />
|-<br />
| 0x318E02 || 2 || 6343 || Attempted to call nn::fssystem::save::JournalStorage::GetSize<br />
|-<br />
| 0x319002 || 2 || 6344 || Attempted to call nn::fssystem::save::JournalStorage::SetSize<br />
|-<br />
| 0x319202 || 2 || 6345 || Invalid Operation ID in nn::fssystem::save::JournalStorage::OperateRange<br />
|-<br />
| 0x319402 || 2 || 6346 || Attempted to call nn::fssystem::save::UnionStorage::SetSize<br />
|-<br />
| 0x319602 || 2 || 6347 || Attempted to call nn::fssystem::dbm::AllocationTableStorage::SetSize<br />
|-<br />
| 0x319802 || 2 || 6348 || Attempted to call nn::fssrv::fscreator::WriteOnlyGameCardStorage::Read<br />
|-<br />
| 0x319A02 || 2 || 6349 || Attempted to call nn::fssrv::fscreator::WriteOnlyGameCardStorage::SetSize<br />
|-<br />
| 0x319C02 || 2 || 6350 || Attempted to call nn::fssrv::fscreator::ReadOnlyGameCardStorage::Write<br />
|-<br />
| 0x319E02 || 2 || 6351 || Attempted to call nn::fssrv::fscreator::ReadOnlyGameCardStorage::SetSize<br />
|-<br />
| 0x31A002 || 2 || 6352 || Invalid Operation ID in nn::fssrv::fscreator::ReadOnlyGameCardStorage::OperateRange<br />
|-<br />
| 0x31A202 || 2 || 6353 || Attempted to call SdStorage::SetSize<br />
|-<br />
| 0x31A402 || 2 || 6354 || Invalid Operation ID in SdStorage::OperateRange<br />
|-<br />
| 0x31A602 || 2 || 6355 || Invalid Operation ID in nn::fat::FatFile::DoOperateRange<br />
|-<br />
| 0x31A802 || 2 || 6356 || Invalid Operation ID in nn::fssystem::StorageFile::DoOperateRange<br />
|-<br />
| 0x31AA02 || 2 || 6357 || Attempted to call nn::fssystem::ConcatenationFile::SetSize<br />
|-<br />
| 0x31AC02 || 2 || 6358 || Attempted to call nn::fssystem::ConcatenationFile::OperateRange<br />
|-<br />
| 0x31AE02 || 2 || 6359 || Invalid Query ID in nn::fssystem::ConcatenationFileSystem::DoQueryEntry<br />
|-<br />
| 0x31B002 || 2 || 6360 || Invalid Operation ID in nn::fssystem::ConcatenationFile::DoOperateRange<br />
|-<br />
| 0x31B202 || 2 || 6361 || Attempted to call nn::fssystem::ZeroBitmapFile::SetSize<br />
|-<br />
| 0x31B402 || 2 || 6362 || Invalid Operation ID in nn::fs::detail::FileServiceObjectAdapter::DoOperateRange<br />
|-<br />
| 0x31B602 || 2 || 6363 || Invalid Operation ID in nn::fssystem::AesXtsFile::DoOperateRange<br />
|-<br />
| 0x31B802 || 2 || 6364 || Attempted to modify a nn::fs::RomFsFileSystem<br />
|-<br />
| 0x31BA02 || 2 || 6365 || Attempted to call nn::fs::RomFsFileSystem::DoCommitProvisionally<br />
|-<br />
| 0x31BC02 || 2 || 6366 || Attempted to query the space in a nn::fs::RomFsFileSystem<br />
|-<br />
| 0x31BE02 || 2 || 6367 || Attempted to modify a nn::fssystem::RomFsFile<br />
|-<br />
| 0x31C002 || 2 || 6368 || Invalid Operation ID in nn::fssystem::RomFsFile::DoOperateRange<br />
|-<br />
| 0x31C202 || 2 || 6369 || Attempted to modify a nn::fs::ReadOnlyFileSystemTemplate<br />
|-<br />
| 0x31C402 || 2 || 6370 || Attempted to call nn::fs::ReadOnlyFileSystemTemplate::DoCommitProvisionally<br />
|-<br />
| 0x31C602 || 2 || 6371 || Attempted to query the space in a nn::fs::ReadOnlyFileSystemTemplate<br />
|-<br />
| 0x31C802 || 2 || 6372 || Attempted to modify a nn::fs::ReadOnlyFileSystemFile<br />
|-<br />
| 0x31CA02 || 2 || 6373 || Invalid Operation ID in nn::fs::ReadOnlyFileSystemFile::DoOperateRange<br />
|-<br />
| 0x31CC02 || 2 || 6374 || Attempted to modify a nn::fssystem::PartitionFileSystemCore<br />
|-<br />
| 0x31CE02 || 2 || 6375 || Attempted to call nn::fssystem::PartitionFileSystemCore::DoCommitProvisionally<br />
|-<br />
| 0x31D002 || 2 || 6376 || Attempted to call nn::fssystem::PartitionFileSystemCore::PartitionFile::DoSetSize<br />
|-<br />
| 0x31D202 || 2 || 6377 || Invalid Operation ID in nn::fssystem::PartitionFileSystemCore::PartitionFile::DoOperateRange<br />
|-<br />
| 0x31D402 || 2 || 6378 || Invalid Operation ID in nn::fssystem::TmFileSystemFile::DoOperateRange<br />
|-<br />
| 0x31D602 || 2 || 6379 || Attempted to call unsupported functions in nn::fssrv::fscreator::SaveDataInternalStorageFileSystem, nn::fssrv::detail::SaveDataInternalStorageAccessor::PaddingFile or nn::fssystem::save::detail::SaveDataExtraDataInternalStorageFile<br />
|-<br />
| 0x31DC02 || 2 || 6382 || Attempted to call nn::fssystem::ApplicationTemporaryFileSystem::DoCommitProvisionally<br />
|-<br />
| 0x31DE02 || 2 || 6383 || Attempted to call nn::fssystem::SaveDataFileSystem::DoCommitProvisionally<br />
|-<br />
| 0x31E002 || 2 || 6384 || Attempted to call nn::fssystem::DirectorySaveDataFileSystem::DoCommitProvisionally<br />
|-<br />
| 0x31E202 || 2 || 6385 || Attempted to call nn::fssystem::ZeroBitmapHashStorageFile::Write<br />
|-<br />
| 0x31E402 || 2 || 6386 || Attempted to call nn::fssystem::ZeroBitmapHashStorageFile::SetSize<br />
|-<br />
| 0x320002 || 2 || 6400 || Permission denied<br />
|-<br />
| 0x326602 || 2 || 6451 || Missing titlekey(?) required to mount content<br />
|-<br />
| 0x326E02 || 2 || 6455 || File not closed<br />
|-<br />
| 0x327002 || 2 || 6456 || Directory not closed<br />
|-<br />
| 0x327202 || 2 || 6457 || Writable file not closed when committing<br />
|-<br />
| 0x327402 || 2 || 6458 || FS allocators already registered<br />
|-<br />
| 0x327602 || 2 || 6459 || FS allocators already used<br />
|-<br />
| 0x327A02 || 2 || 6461 || FS allocator alignment violation<br />
|-<br />
| 0x339402 || 2 || 6602 || File not found.<br />
|-<br />
| 0x339602 || 2 || 6603 || Directory not found.<br />
|-<br />
| 0x346C02 || 2 || 6710 || Multi-commit limit reached<br />
|-<br />
| 0x35F202 || 2 || 6905 || Mount name not found in table.<br />
|-<br />
| 0x3DBC02 || 2 || 7902 || RomFs table: Entry not found in dictionary<br />
|-<br />
| 0x3DBE02 || 2 || 7903 || RomFs table: File not found<br />
|-<br />
| 0x3DC002 || 2 || 7904 || RomFs table: Directory not found<br />
|-<br />
| 0x3DC402 || 2 || 7906 || RomFs table: Entry already exists when trying to add a new entry<br />
|-<br />
| 0x3DC602 || 2 || 7907 || RomFs table: Insufficient space to add new entry<br />
|-<br />
| 0x3DC802 || 2 || 7908 || RomFs table: Unable to add new directory<br />
|-<br />
| 0x3DCA02 || 2 || 7909 || RomFs table: Unable to add new file<br />
|-<br />
| 0x3DCC02 || 2 || 7910 || RomFs directory has no more child directories/files when iterating<br />
|-<br />
| 0x3DD402 || 2 || 7914 || RomFs table: Path is file, not directory<br />
|-<br />
| 0x803 || 3 || 4 || OS busy<br />
|-<br />
| 0xE03 || 3 || 7 || Invalid parameter<br />
|-<br />
| 0x1003 || 3 || 8 || Out of memory<br />
|-<br />
| 0x1203 || 3 || 9 || Out of resources<br />
|-<br />
| 0x3EA03 || 3 || 501 || Invalid handle<br />
|-<br />
| 0x3EE03 || 3 || 503 || Invalid memory mirror<br />
|-<br />
| 0x7FE03 || 3 || 1023 || TLS slot is not allocated<br />
|-<br />
| 0xA05 || 5 || 5 || [[Content_Manager_services|NcaID]] not found. Returned when attempting to mount titles which exist that aren't *8XX titles, the same way *8XX titles are mounted.<br />
|-<br />
| 0xE05 || 5 || 7 || TitleId not found<br />
|-<br />
| 0x1805 || 5 || 12 || Invalid StorageId<br />
|-<br />
| 0xDC05 || 5 || 110 || Gamecard not inserted<br />
|-<br />
| 0x17C05 || 5 || 190 || Gamecard not initialized<br />
|-<br />
| 0x1F405 || 5 || 250 || Sdcard not inserted<br />
|-<br />
| 0x20805 || 5 || 260 || Storage not mounted<br />
|-<br />
| 0x806 || 6 || 4 || Converted from error 0xD401<br />
|-<br />
| 0x1006 || 6 || 8 || Converted from error 0xE401<br />
|-<br />
| 0x408 || 8 || 2 || Program location entry not found<br />
|-<br />
| 0x608 || 8 || 3 || Invalid context for control location<br />
|-<br />
| 0x808 || 8 || 4 || Storage not found<br />
|-<br />
| 0xA08 || 8 || 5 || Access denied<br />
|-<br />
| 0xC08 || 8 || 6 || Offline manual HTML location entry not found<br />
|-<br />
| 0xE08 || 8 || 7 || Title is not registered<br />
|-<br />
| 0x1008 || 8 || 8 || Control location entry for host not found<br />
|-<br />
| 0x1208 || 8 || 9 || Legal info HTML location entry not found<br />
|-<br />
| 0x1408 || 8 || 10 || Program location for debug entry not found<br />
|-<br />
| 0x209 || 9 || 1 || Args too long.<br />
|-<br />
| 0x409 || 9 || 2 || Maximum processes loaded.<br />
|-<br />
| 0x609 || 9 || 3 || NPDM too big.<br />
|-<br />
| 0x809 || 9 || 4 || Invalid NPDM.<br />
|-<br />
| 0xA09 || 9 || 5 || Invalid NSO.<br />
|-<br />
| 0xC09 || 9 || 6 || Invalid Path.<br />
|-<br />
| 0xE09 || 9 || 7 || Already registered.<br />
|-<br />
| 0x1009 || 9 || 8 || Title not found.<br />
|-<br />
| 0x1209 || 9 || 9 || Title-id in ACI0 doesn't match range in ACID.<br />
|-<br />
| 0x1409 || 9 || 10 || Invalid version in NPDM.<br />
|-<br />
| 0x6609 || 9 || 51 || Insufficient address space.<br />
|-<br />
| 0x6809 || 9 || 52 || Insufficient NRO.<br />
|-<br />
| 0x6A09 || 9 || 53 || Invalid NRR<br />
|-<br />
| 0x6C09 || 9 || 54 || Invalid signature<br />
|-<br />
| 0x6E09 || 9 || 55 || Insufficient NRO registrations.<br />
|-<br />
| 0x7009 || 9 || 56 || Insufficient NRR registrations.<br />
|-<br />
| 0x7209 || 9 || 57 || NRO Already loaded.<br />
|-<br />
| 0xA209 || 9 || 81 || Unaligned NRR address<br />
|-<br />
| 0xA409 || 9 || 82 || Bad NRR size<br />
|-<br />
| 0xA809 || 9 || 84 || NRR Not Loaded.<br />
|-<br />
| 0xAA09 || 9 || 85 || Bad NRR address<br />
|-<br />
| 0xAE09 || 9 || 87 || Bad initialization<br />
|-<br />
| 0xC809 || 9 || 100 || Unknown ACI0 descriptor<br />
|-<br />
| 0xCE09 || 9 || 103 || ACID/ACI0 don't match for descriptor "KernelFlags"<br />
|-<br />
| 0xD009 || 9 || 104 || ACID/ACI0 don't match for descriptor "SyscallMask"<br />
|-<br />
| 0xD409 || 9 || 106 || ACID/ACI0 don't match for descriptor "MapIoOrNormalRange"<br />
|-<br />
| 0xD609 || 9 || 107 || ACID/ACI0 don't match for descriptor "MapNormalPage"<br />
|-<br />
| 0xDE09 || 9 || 111 || ACID/ACI0 don't match for descriptor "InterruptPair"<br />
|-<br />
| 0xE209 || 9 || 113 || ACID/ACI0 don't match for descriptor "ApplicationType"<br />
|-<br />
| 0xE409 || 9 || 114 || ACID/ACI0 don't match for descriptor "KernelReleaseVersion"<br />
|-<br />
| 0xE609 || 9 || 115 || ACID/ACI0 don't match for descriptor "HandleTableSize"<br />
|-<br />
| 0xE809 || 9 || 116 || ACID/ACI0 don't match for descriptor "DebugFlags"<br />
|-<br />
| 0x1940A || 10 || 202 || Invalid CMIF header size.<br />
|-<br />
| 0x1A60A || 10 || 211 || Invalid CMIF input header.<br />
|-<br />
| 0x1A80A || 10 || 212 || Invalid CMIF output header.<br />
|-<br />
| 0x1BA0A || 10 || 221 || Invalid method dispatch ID.<br />
|-<br />
| 0x1D60A || 10 || 235 || Invalid in object count.<br />
|-<br />
| 0x1D80A || 10 || 236 || Invalid out object count.<br />
|-<br />
| 0x25A0A || 10 || 301 || Out of domain entries.<br />
|-<br />
| 0x20B || 11 || 1 || Unsupported operation<br />
|-<br />
| 0xCC0B || 11 || 102 || Out of server session memory<br />
|-<br />
| 0x11A0B || 11 || 141 || Went past maximum during marshalling.<br />
|-<br />
| 0x1900B || 11 || 200 || Session doesn't support domains.<br />
|-<br />
| 0x25A0B || 11 || 301 || Remote process is dead.<br />
|-<br />
| 0x3240B || 11 || 402 || Data/buffer length(s) too large for IPC buffer.<br />
|-<br />
| 0x3260B || 11 || 403 || Unknown request type<br />
|-<br />
| 0x3480B || 11 || 420 || Number(s) of buffers/handles/PIDs passed differ from what method expects.<br />
|-<br />
| 0x3D60B || 11 || 491 || IPC Query 1 failed.<br />
|-<br />
| 0x20F || 15 || 1 || Pid not found<br />
|-<br />
| 0x60F || 15 || 3 || Process has no pending events<br />
|-<br />
| 0xA0F || 15 || 5 || Application already running<br />
|-<br />
| 0x410 || 16 || 2 || Title-id not found<br />
|-<br />
| 0xF010 || 16 || 120 || Sysupdate not required<br />
|-<br />
| 0x1F610 || 16 || 251 || Unexpected StorageId<br />
|-<br />
| 0x2A810 || 16 || 340 || [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[#Network_Interface_services#GetClientId|GetClientId]] returned false.<br />
|-<br />
| 0x64210 || 16 || 801 || [[NS_Services#SystemDeliveryInfo|SystemDeliveryInfo]] system_delivery_protocol_version is less than the system-setting.<br />
|-<br />
| 0x64410 || 16 || 802 || [[NS_Services#SystemDeliveryInfo|SystemDeliveryInfo]] system_delivery_protocol_version is larger than the system-setting.<br />
|-<br />
| 0x74610 || 16 || 931 || Invalid [[NS_Services#SystemDeliveryInfo|SystemDeliveryInfo]] HMAC / invalid Meta Id.<br />
|-<br />
| 0x6F810 || 16 || 892 || Unknown state ref-count is zero.<br />
|-<br />
| 0x215 || 21 || 1 || Out of processes<br />
|-<br />
| 0x415 || 21 || 2 || Not initialized.<br />
|-<br />
| 0x615 || 21 || 3 || Max sessions<br />
|-<br />
| 0x815 || 21 || 4 || Service already registered<br />
|-<br />
| 0xA15 || 21 || 5 || Out of services<br />
|-<br />
| 0xC15 || 21 || 6 || Invalid name (all zeroes)<br />
|-<br />
| 0xE15 || 21 || 7 || Service not registered<br />
|-<br />
| 0x1015 || 21 || 8 || Permission denied<br />
|-<br />
| 0x1215 || 21 || 9 || Service Access Control too big.<br />
|-<br />
| 0x416 || 22 || 2 || Address space is full<br />
|-<br />
| 0x616 || 22 || 3 || NRO already loaded<br />
|-<br />
| 0x816 || 22 || 4 || Invalid NRO header values<br />
|-<br />
| 0xC16 || 22 || 6 || Bad NRR magic<br />
|-<br />
| 0x1016 || 22 || 8 || Reached max NRR count<br />
|-<br />
| 0x1216 || 22 || 9 || Unable to verify NRO hash or NRR signature<br />
|-<br />
| 0x80216 || 22 || 1025 || Address not page-aligned<br />
|-<br />
| 0x80416 || 22 || 1026 || Incorrect NRO size<br />
|-<br />
| 0x80816 || 22 || 1028 || NRO not loaded<br />
|-<br />
| 0x80A16 || 22 || 1029 || NRR not loaded<br />
|-<br />
| 0x80C16 || 22 || 1030 || Already initialized<br />
|-<br />
| 0x80E16 || 22 || 1031 || Not initialized<br />
|-<br />
| 0x21A || 26 || 1 || SMC is not implemented<br />
|-<br />
| 0x41A || 26 || 2 || SMC argument is invalid<br />
|-<br />
| 0x61A || 26 || 3 || SMC is currently in progress/secmon is busy<br />
|-<br />
| 0x81A || 26 || 4 || Secmon not currently performing async operation<br />
|-<br />
| 0xA1A || 26 || 5 || Invalid SMC async callback key<br />
|-<br />
| 0xC1A || 26 || 6 || SMC is blacklisted during current boot<br />
|-<br />
| 0xC81A || 26 || 100 || Invalid (buffer) size<br />
|-<br />
| 0xCA1A || 26 || 101 || Unknown SMC error<br />
|-<br />
| 0xCA1A || 26 || 101 || Decryption failure<br />
|-<br />
| 0xD01A || 26 || 104 || No AES keyslots available<br />
|-<br />
| 0xD21A || 26 || 105 || Invalid AES keyslot<br />
|-<br />
| 0xD41A || 26 || 106 || BootReason already set<br />
|-<br />
| 0xD61A || 26 || 107 || BootReason not set<br />
|-<br />
| 0xD81A || 26 || 108 || Invalid argument<br />
|-<br />
| 0x1423 || 35 || 10 || Invalid command ID received by tipc processor.<br />
|-<br />
| 0x1E23 || 35 || 15 || Invalid message format received by tipc processor.<br />
|-<br />
| 0xC823 || 35 || 100 || tipc request was deferred for future processing (internal to the processor, never returned externally).<br />
|-<br />
| 0xCA23 || 35 || 101 || tipc object was closed (via close command 0xF, internal, never returned externally). <br />
|-<br />
| 0x35B || 347 || 1 || Failed to init SM.<br />
|-<br />
| 0x55B || 347 || 2 || Failed to init FS.<br />
|-<br />
| 0x75B || 347 || 3 || Failed to open NRO file. May also happen when SD card isn't inserted / SD mounting failed earlier.<br />
|-<br />
| 0x95B || 347 || 4 || Failed to read NRO header.<br />
|-<br />
| 0xB5B || 347 || 5 || Invalid NRO magic.<br />
|-<br />
| 0xD5B || 347 || 6 || Invalid NRO segments.<br />
|-<br />
| 0xF5B || 347 || 7 || Failed to read NRO.<br />
|-<br />
| 0x135B || 347 || 9 || Failed to allocate heap.<br />
|-<br />
| 0x255B || 347 || 18 || Failed to map code-binary memory.<br />
|-<br />
| 0x275B || 347 || 19 || Failed to map code memory (.text).<br />
|-<br />
| 0x295B || 347 || 20 || Failed to map code memory (.rodata).<br />
|-<br />
| 0x2B5B || 347 || 21 || Failed to map code memory (.data+.bss).<br />
|-<br />
| 0x315B || 347 || 24 || Failed to unmap code memory (.text).<br />
|-<br />
| 0x335B || 347 || 25 || Failed to unmap code memory (.rodata).<br />
|-<br />
| 0x355B || 347 || 26 || Failed to unmap code memory (.data+.bss).<br />
|-<br />
| 0x19269 || 105 || 201 || Null settings name<br />
|-<br />
| 0x19469 || 105 || 202 || Null settings key<br />
|-<br />
| 0x19669 || 105 || 203 || Null settings value<br />
|-<br />
| 0x19A69 || 105 || 205 || Null settings value buffer<br />
|-<br />
| 0x1A069 || 105 || 208 || Null setting value size buffer<br />
|-<br />
| 0x1A269 || 105 || 209 || Null debug mode flag buffer<br />
|-<br />
| 0x1BA69 || 105 || 221 || Setting group name has zero length<br />
|-<br />
| 0x1BC69 || 105 || 222 || Empty settings item key<br />
|-<br />
| 0x1E269 || 105 || 241 || Setting group name is too long (64 character limit?)<br />
|-<br />
| 0x1E469 || 105 || 242 || Setting name is too long (64 character limit?)<br />
|-<br />
| 0x20A69 || 105 || 261 || Setting group name ends with '.' or contains invalid characters (allowed: [a-z0-9_\-.])<br />
|-<br />
| 0x20C69 || 105 || 262 || Setting name ends with '.' or contains invalid characters (allowed: [a-z0-9_\-.])<br />
|-<br />
| 0x4DA69 || 105 || 621 || Null language code buffer<br />
|-<br />
| 0x4E269 || 105 || 625 || Language out of valid range<br />
|-<br />
| 0x4EE69 || 105 || 631 || Null network settings buffer<br />
|-<br />
| 0x4F069 || 105 || 632 || Null network settings output count buffer<br />
|-<br />
| 0x50269 || 105 || 641 || Null backlight settings buffer<br />
|-<br />
| 0x51669 || 105 || 651 || Null Bluetooth device setting buffer<br />
|-<br />
| 0x51869 || 105 || 652 || Null Bluetooth device setting output count buffer<br />
|-<br />
| 0x51A69 || 105 || 653 || Null Bluetooth enable flag buffer<br />
|-<br />
| 0x51C69 || 105 || 654 || Null Bluetooth AFH enable flag buffer<br />
|-<br />
| 0x51E69 || 105 || 655 || Null Bluetooth boost enable flag buffer<br />
|-<br />
| 0x52069 || 105 || 656 || Null BLE pairing settings buffer<br />
|-<br />
| 0x52269 || 105 || 657 || Null BLE pairing settings entry count buffer<br />
|-<br />
| 0x52A69 || 105 || 661 || Null external steady clock source ID buffer<br />
|-<br />
| 0x52C69 || 105 || 662 || Null user system clock context buffer<br />
|-<br />
| 0x52E69 || 105 || 663 || Null network system clock context buffer<br />
|-<br />
| 0x53069 || 105 || 664 || Null user system clock automatic correction enabled flag buffer<br />
|-<br />
| 0x53269 || 105 || 665 || Null shutdown RTC value buffer<br />
|-<br />
| 0x53469 || 105 || 666 || Null external steady clock internal offset buffer<br />
|-<br />
| 0x53E69 || 105 || 671 || Null account settings buffer<br />
|-<br />
| 0x55269 || 105 || 681 || Null audio volume buffer<br />
|-<br />
| 0x55669 || 105 || 683 || Null ForceMuteOnHeadphoneRemoved buffer<br />
|-<br />
| 0x55869 || 105 || 684 || Null headphone volume warning count buffer<br />
|-<br />
| 0x55E69 || 105 || 687 || Invalid audio output mode<br />
|-<br />
| 0x56069 || 105 || 688 || Null headphone volume update flag buffer<br />
|-<br />
| 0x56669 || 105 || 691 || Null console information upload flag buffer<br />
|-<br />
| 0x57A69 || 105 || 701 || Null automatic application download flag buffer<br />
|-<br />
| 0x57C69 || 105 || 702 || Null notification settings buffer<br />
|-<br />
| 0x57E69 || 105 || 703 || Null account notification settings entry count buffer<br />
|-<br />
| 0x58069 || 105 || 704 || Null account notification settings buffer<br />
|-<br />
| 0x58E69 || 105 || 711 || Null vibration master volume buffer<br />
|-<br />
| 0x59069 || 105 || 712 || Null NX controller settings buffer<br />
|-<br />
| 0x59269 || 105 || 713 || Null NX controller settings entry count buffer<br />
|-<br />
| 0x59469 || 105 || 714 || Null USB full key enable flag buffer<br />
|-<br />
| 0x5A269 || 105 || 721 || Null TV settings buffer<br />
|-<br />
| 0x5A469 || 105 || 722 || Null EDID buffer<br />
|-<br />
| 0x5B669 || 105 || 731 || Null data deletion settings buffer<br />
|-<br />
| 0x5CA69 || 105 || 741 || Null initial system applet program ID buffer<br />
|-<br />
| 0x5CC69 || 105 || 742 || Null overlay disp program ID buffer<br />
|-<br />
| 0x5CE69 || 105 || 743 || Null IsInRepairProcess buffer<br />
|-<br />
| 0x5D069 || 105 || 744 || Null RequiresRunRepairTimeReviser buffer<br />
|-<br />
| 0x5DE69 || 105 || 751 || Null device timezone location name buffer<br />
|-<br />
| 0x5F269 || 105 || 761 || Null primary album storage buffer<br />
|-<br />
| 0x60669 || 105 || 771 || Null USB 3.0 enable flag buffer<br />
|-<br />
| 0x60869 || 105 || 772 || Null USB Type-C power source circuit version buffer<br />
|-<br />
| 0x61A69 || 105 || 781 || Null battery lot buffer<br />
|-<br />
| 0x62E69 || 105 || 791 || Null serial number buffer<br />
|-<br />
| 0x64269 || 105 || 801 || Null lock screen flag buffer<br />
|-<br />
| 0x64669 || 105 || 803 || Null color set ID buffer<br />
|-<br />
| 0x64869 || 105 || 804 || Null quest flag buffer<br />
|-<br />
| 0x64A69 || 105 || 805 || Null wireless certification file size buffer<br />
|-<br />
| 0x64C69 || 105 || 806 || Null wireless certification file buffer<br />
|-<br />
| 0x64E69 || 105 || 807 || Null initial launch settings buffer<br />
|-<br />
| 0x65069 || 105 || 808 || Null device nickname buffer<br />
|-<br />
| 0x65269 || 105 || 809 || Null battery percentage flag buffer<br />
|-<br />
| 0x65469 || 105 || 810 || Null applet launch flags buffer<br />
|-<br />
| 0x7E869 || 105 || 1012 || Null wireless LAN enable flag buffer<br />
|-<br />
| 0x7FA69 || 105 || 1021 || Null product model buffer<br />
|-<br />
| 0x80E69 || 105 || 1031 || Null NFC enable flag buffer<br />
|-<br />
| 0x82269 || 105 || 1041 || Null ECI device certificate buffer<br />
|-<br />
| 0x82469 || 105 || 1042 || Null E-Ticket device certificate buffer<br />
|-<br />
| 0x83669 || 105 || 1051 || Null sleep settings buffer<br />
|-<br />
| 0x84A69 || 105 || 1061 || Null EULA version buffer<br />
|-<br />
| 0x84C69 || 105 || 1062 || Null EULA version entry count buffer<br />
|-<br />
| 0x85E69 || 105 || 1071 || Null LDN channel buffer<br />
|-<br />
| 0x87269 || 105 || 1081 || Null SSL key buffer<br />
|-<br />
| 0x87469 || 105 || 1082 || Null SSL certificate buffer<br />
|-<br />
| 0x88669 || 105 || 1091 || Null telemetry flags buffer<br />
|-<br />
| 0x89A69 || 105 || 1101 || Null Gamecard key buffer<br />
|-<br />
| 0x89C69 || 105 || 1102 || Null Gamecard certificate buffer<br />
|-<br />
| 0x8AE69 || 105 || 1111 || Null PTM battery lot buffer<br />
|-<br />
| 0x8B069 || 105 || 1112 || Null PTM fuel gauge parameter buffer<br />
|-<br />
| 0x8C269 || 105 || 1121 || Null ECI device key buffer<br />
|-<br />
| 0x8C469 || 105 || 1122 || Null E-Ticket device key buffer<br />
|-<br />
| 0x8D669 || 105 || 1131 || Null speaker parameter buffer<br />
|-<br />
| 0x8EA69 || 105 || 1141 || Null firmware version buffer<br />
|-<br />
| 0x8EC69 || 105 || 1142 || Null firmware version digest buffer<br />
|-<br />
| 0x8EE69 || 105 || 1143 || Null rebootless system update version buffer<br />
|-<br />
| 0x8FE69 || 105 || 1151 || Null Mii author ID buffer<br />
|-<br />
| 0x91269 || 105 || 1161 || Null fatal flags buffer<br />
|-<br />
| 0x92669 || 105 || 1171 || Null auto update enable flag buffer<br />
|-<br />
| 0x93A69 || 105 || 1181 || Null external RTC reset flag buffer<br />
|-<br />
| 0x94E69 || 105 || 1191 || Null push notification activity mode buffer<br />
|-<br />
| 0x96269 || 105 || 1201 || Null service discovery control setting buffer<br />
|-<br />
| 0x97669 || 105 || 1211 || Null error report share permission buffer<br />
|-<br />
| 0x98A69 || 105 || 1221 || Null LCD vendor ID buffer<br />
|-<br />
| 0x99E69 || 105 || 1231 || Null console SixAxis sensor acceleration bias buffer<br />
|-<br />
| 0x9A069 || 105 || 1232 || Null console SixAxis sensor angular velocity bias buffer<br />
|-<br />
| 0x9A269 || 105 || 1233 || Null console SixAxis sensor acceleration gain buffer<br />
|-<br />
| 0x9A469 || 105 || 1234 || Null console SixAxis sensor angular velocity gain buffer<br />
|-<br />
| 0x9A669 || 105 || 1235 || Null console SixAxis sensor angular velocity time bias buffer<br />
|-<br />
| 0x9A869 || 105 || 1236 || Null console SixAxis sensor angular acceleration buffer <br />
|-<br />
| 0x9B269 || 105 || 1241 || Null keyboard layout buffer<br />
|-<br />
| 0x9BA69 || 105 || 1245 || Invalid keyboard layout<br />
|-<br />
| 0x9C669 || 105 || 1251 || Null web inspector flag buffer<br />
|-<br />
| 0x9C869 || 105 || 1252 || Null allowed SSL hosts buffer<br />
|-<br />
| 0x9CA69 || 105 || 1253 || Null allowed SSL hosts entry count buffer<br />
|-<br />
| 0x9CC69 || 105 || 1254 || Null host FS mount point buffer<br />
|-<br />
| 0x9EE69 || 105 || 1271 || Null Amiibo key buffer<br />
|-<br />
| 0x9F069 || 105 || 1272 || Null Amiibo ECQV certificate buffer<br />
|-<br />
| 0x9F269 || 105 || 1273 || Null Amiibo ECDSA certificate buffer<br />
|-<br />
| 0x9F469 || 105 || 1274 || Null Amiibo ECQV BLS key buffer<br />
|-<br />
| 0x9F669 || 105 || 1275 || Null Amiibo ECQV BLS certificate buffer<br />
|-<br />
| 0x9F869 || 105 || 1276 || Null Amiibo ECQV BLS root certificate buffer<br />
|-<br />
| 0x272 || 114 || 1 || Generic error<br />
|-<br />
| 0xC72 || 114 || 6 || Unsupported operation<br />
|-<br />
| 0x74 || 116 || 0 || Time service not initialized<br />
|-<br />
| 0x274 || 116 || 1 || Permission denied<br />
|-<br />
| 0xCC74 || 116 || 102 || Time not set / Clock Source Id mismatch<br />
|-<br />
| 0xCE74 || 116 || 103 || Clock not initialized<br />
|-<br />
| 0x19074 || 116 || 200 || Invalid time comparison<br />
|-<br />
| 0x19274 || 116 || 201 || Signed overflow/underflow<br />
|-<br />
| 0x64274 || 116 || 801 || Memory allocation failure<br />
|-<br />
| 0x70A74 || 116 || 901 || Null pointer<br />
|-<br />
| 0x70C74 || 116 || 902 || Value out of valid range<br />
|-<br />
| 0x70E74 || 116 || 903 || TimeZoneRule conversion failed<br />
|-<br />
| 0x7BA74 || 116 || 989 || TimeZone location name not found<br />
|-<br />
| 0x7BC74 || 116 || 990 || Unimplemented functionality<br />
|-<br />
| 0xC79 || 121 || 6 || [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[#Network_Interface_services#GetClientId|GetClientId]] returned false.<br />
|-<br />
| 0x27A || 122 || 1 || Invalid argument<br />
|-<br />
| 0x47A || 122 || 2 || Object not found<br />
|-<br />
| 0x67A || 122 || 3 || Object locked/in used<br />
|-<br />
| 0x87A || 122 || 4 || Target already mounted<br />
|-<br />
| 0xA7A || 122 || 5 || Target not mounted<br />
|-<br />
| 0xC7A || 122 || 6 || Object already opened<br />
|-<br />
| 0xE7A || 122 || 7 || Object not opened<br />
|-<br />
| 0x107A || 122 || 8 || [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[#Network_Interface_services#GetClientId|GetClientId]] returned false.<br />
|-<br />
| 0xA07A || 122 || 80 || Passphrase not found<br />
|-<br />
| 0xA27A || 122 || 81 || Data verification failed<br />
|-<br />
| 0xB47A || 122 || 90 || Invalid API call<br />
|-<br />
| 0xC47A || 122 || 98 || Invalid operation<br />
|-<br />
| 0x167B || 123 || 11 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC errors: -8192 (SEC_ERROR_IO), -8191 (SEC_ERROR_LIBRARY_FAILURE), -8190 (SEC_ERROR_BAD_DATA), -8189 (SEC_ERROR_OUTPUT_LEN), -8188 (SEC_ERROR_INPUT_LEN), -8187 (SEC_ERROR_INVALID_ARGS), -8186 (SEC_ERROR_INVALID_ALGORITHM), -8184 (SEC_ERROR_INVALID_TIME), -8152 (SEC_ERROR_INVALID_KEY).<br />
<br />
Also converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] errors: -5991 (PR_IO_ERROR), -5962 (PR_BUFFER_OVERFLOW_ERROR), -5950 (PR_FILE_NOT_FOUND_ERROR), -5949 (PR_NOT_DIRECTORY_ERROR), -5946 (PR_FILESYSTEM_MOUNTED_ERROR), -5938 (PR_END_OF_FILE_ERROR).<br />
<br />
Also converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL errors: -12223 (SSL_ERROR_GENERATE_RANDOM_FAILURE), -12222 (SSL_ERROR_SIGN_HASHES_FAILURE), -12221 (SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE), -12219 (SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE), -12218 (SSL_ERROR_ENCRYPTION_FAILURE), -12217 (SSL_ERROR_DECRYPTION_FAILURE), -12216 (SSL_ERROR_SOCKET_WRITE_FAILURE), -12212 (SSL_ERROR_SYM_KEY_CONTEXT_FAILURE), -12209 (SSL_ERROR_IV_PARAM_FAILURE), -12207 (SSL_ERROR_SESSION_KEY_GEN_FAILURE), -12203 (SSL_ERROR_NO_COMPRESSION_OVERLAP), -12202 (SSL_ERROR_HANDSHAKE_NOT_COMPLETED), -12201 (SSL_ERROR_BAD_HANDSHAKE_HASH_VALUE), -12172 (SSL_ERROR_NEXT_PROTOCOL_DATA_INVALID).<br />
|-<br />
| 0x1A7B || 123 || 13 || Unrecognized error.<br />
|-<br />
| 0xCC7B || 123 || 102 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC error -8173 (SEC_ERROR_NO_MEMORY).<br />
<br />
Also converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] errors: -6000 (PR_OUT_OF_MEMORY_ERROR), -5974 (PR_INSUFFICIENT_RESOURCES_ERROR, -5971 (PR_PROC_DESC_TABLE_FULL_ERROR).<br />
|-<br />
| 0xE87B || 123 || 116 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] error -5999 (PR_BAD_DESCRIPTOR_ERROR).<br />
|-<br />
| 0x1027B || 123 || 129 || DER CRL decoding failed.<br />
|-<br />
| 0x1987B || 123 || 204 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] error -5998 (PR_WOULD_BLOCK_ERROR).<br />
|-<br />
| 0x19A7B || 123 || 205 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] error -5990 (PR_IO_TIMEOUT_ERROR).<br />
|-<br />
| 0x19C7B || 123 || 206 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] error -5935 (PR_OPERATION_ABORTED_ERROR).<br />
|-<br />
| 0x1A07B || 123 || 208 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] error -5978 (PR_NOT_CONNECTED_ERROR).<br />
|-<br />
| 0x1A27B || 123 || 209 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] error -5961 (PR_CONNECT_RESET_ERROR).<br />
|-<br />
| 0x1A47B || 123 || 210 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] error -5928 (PR_CONNECT_ABORTED_ERROR).<br />
|-<br />
| 0x1A67B || 123 || 211 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] error -5929 (PR_SOCKET_SHUTDOWN_ERROR).<br />
|-<br />
| 0x1A87B || 123 || 212 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling NSPR] error -5930 (PR_NETWORK_DOWN_ERROR).<br />
|-<br />
| 0x1AE7B || 123 || 215 || ClientPki/InternalPki was already previously imported/registered.<br />
|-<br />
| 0x1B47B || 123 || 218 || Maximum number of ServerPki objects were already imported.<br />
|-<br />
| 0x25A7B || 123 || 301 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12276 (SSL_ERROR_BAD_CERT_DOMAIN).<br />
|-<br />
| 0x25C7B || 123 || 302 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12285 (SSL_ERROR_NO_CERTIFICATE).<br />
|-<br />
| 0x25E7B || 123 || 303 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC errors: -8181 (SEC_ERROR_EXPIRED_CERTIFICATE), -8162 (SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE).<br />
|-<br />
| 0x2607B || 123 || 304 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC error -8180 (SEC_ERROR_REVOKED_CERTIFICATE).<br />
|-<br />
| 0x2627B || 123 || 305 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC error -8183 (SEC_ERROR_BAD_DER).<br />
|-<br />
| 0x2647B || 123 || 306 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC errors: -8102 (SEC_ERROR_INADEQUATE_KEY_USAGE), -8101 (SEC_ERROR_INADEQUATE_CERT_TYPE).<br />
|-<br />
| 0x2667B || 123 || 307 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC errors: -8185 (SEC_ERROR_INVALID_AVA), -8182 (SEC_ERROR_BAD_SIGNATURE), -8158 (SEC_ERROR_EXTENSION_VALUE_INVALID), -8156 (SEC_ERROR_CA_CERT_INVALID), -8151 (SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION), -8080 (SEC_ERROR_CERT_NOT_IN_NAME_SPACE).<br />
|-<br />
| 0x2687B || 123 || 308 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC errors: -8179 (SEC_ERROR_UNKNOWN_ISSUER), -8172 (SEC_ERROR_UNTRUSTED_ISSUER), -8014 (SEC_ERROR_APPLICATION_CALLBACK_ERROR).<br />
|-<br />
| 0x26A7B || 123 || 309 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC error -8171 (SEC_ERROR_UNTRUSTED_CERT).<br />
|-<br />
| 0x26C7B || 123 || 310 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL errors: -12233 (SSL_ERROR_RX_UNKNOWN_RECORD_TYPE), -12232 (SSL_ERROR_RX_UNKNOWN_HANDSHAKE), -12231 (SSL_ERROR_RX_UNKNOWN_ALERT). This is also returned by ImportClientPki when import fails.<br />
|-<br />
| 0x26E7B || 123 || 311 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL errors: -12261 (SSL_ERROR_RX_MALFORMED_HELLO_REQUEST), -12260 (SSL_ERROR_RX_MALFORMED_CLIENT_HELLO), -12259 (SSL_ERROR_RX_MALFORMED_SERVER_HELLO), -12258 (SSL_ERROR_RX_MALFORMED_CERTIFICATE), -12257 (SSL_ERROR_RX_MALFORMED_SERVER_KEY_EXCH), -12256 (SSL_ERROR_RX_MALFORMED_CERT_REQUEST), -12255 (SSL_ERROR_RX_MALFORMED_HELLO_DONE), -12254 (SSL_ERROR_RX_MALFORMED_CERT_VERIFY), -12253 (SSL_ERROR_RX_MALFORMED_CLIENT_KEY_EXCH), -12252 (SSL_ERROR_RX_MALFORMED_FINISHED), -12251 (SSL_ERROR_RX_MALFORMED_CHANGE_CIPHER), -12250 (SSL_ERROR_RX_MALFORMED_ALERT), -12249 (SSL_ERROR_RX_MALFORMED_HANDSHAKE), -12248 (SSL_ERROR_RX_MALFORMED_APPLICATION_DATA), -12166 (SSL_ERROR_RX_MALFORMED_HELLO_VERIFY_REQUEST).<br />
|-<br />
| 0x2707B || 123 || 312 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC error -8144 (SEC_ERROR_UNSUPPORTED_KEYALG).<br />
<br />
Also converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL errors: -12274 (SSL_ERROR_SSL2_DISABLED), -12247 (SSL_ERROR_RX_UNEXPECTED_HELLO_REQUEST), -12246 (SSL_ERROR_RX_UNEXPECTED_CLIENT_HELLO), -12245 (SSL_ERROR_RX_UNEXPECTED_SERVER_HELLO), -12244 (SSL_ERROR_RX_UNEXPECTED_CERTIFICATE), -12243 (SSL_ERROR_RX_UNEXPECTED_SERVER_KEY_EXCH), -12242 (SSL_ERROR_RX_UNEXPECTED_CERT_REQUEST), -12241 (SSL_ERROR_RX_UNEXPECTED_HELLO_DONE), -12240 (SSL_ERROR_RX_UNEXPECTED_CERT_VERIFY), -12239 (SSL_ERROR_RX_UNEXPECTED_CLIENT_KEY_EXCH), -12238 (SSL_ERROR_RX_UNEXPECTED_FINISHED).<br />
|-<br />
| 0x2727B || 123 || 313 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL errors: -12237 (SSL_ERROR_RX_UNEXPECTED_CHANGE_CIPHER), -12236 (SSL_ERROR_RX_UNEXPECTED_ALERT), -12235 (SSL_ERROR_RX_UNEXPECTED_HANDSHAKE), -12234 (SSL_ERROR_RX_UNEXPECTED_APPLICATION_DATA).<br />
|-<br />
| 0x2747B || 123 || 314 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12263 (SSL_ERROR_RX_RECORD_TOO_LONG).<br />
|-<br />
| 0x2767B || 123 || 315 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12165 (SSL_ERROR_RX_UNEXPECTED_HELLO_VERIFY_REQUEST).<br />
|-<br />
| 0x2787B || 123 || 316 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12163 (SSL_ERROR_RX_UNEXPECTED_CERT_STATUS).<br />
|-<br />
| 0x27A7B || 123 || 317 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12160 (SSL_ERROR_INCORRECT_SIGNATURE_ALGORITHM).<br />
|-<br />
| 0x27C7B || 123 || 318 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL errors: -12173 (SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY), -12156 (SSL_ERROR_WEAK_SERVER_CERT_KEY).<br />
|-<br />
| 0x27E7B || 123 || 319 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12273 (SSL_ERROR_BAD_MAC_READ).<br />
|-<br />
| 0x2827B || 123 || 321 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL errors: -12215 (SSL_ERROR_MD5_DIGEST_FAILURE), -12214 (SSL_ERROR_SHA_DIGEST_FAILURE), -12161 (SSL_ERROR_DIGEST_FAILURE).<br />
|-<br />
| 0x2847B || 123 || 322 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12213 (SSL_ERROR_MAC_COMPUTATION_FAILURE).<br />
|-<br />
| 0x2887B || 123 || 324 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC error -8157 (SEC_ERROR_EXTENSION_NOT_FOUND).<br />
|-<br />
| 0x28A7B || 123 || 325 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC error -8049 (SEC_ERROR_UNRECOGNIZED_OID).<br />
|-<br />
| 0x28C7B || 123 || 326 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SEC error -8032 (SEC_ERROR_POLICY_VALIDATION_FAILED).<br />
|-<br />
| 0x2947B || 123 || 330 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12177 (SSL_ERROR_DECOMPRESSION_FAILURE).<br />
|-<br />
| 0xBBA7B || 123 || 1501 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12230 (SSL_ERROR_CLOSE_NOTIFY_ALERT).<br />
|-<br />
| 0xBBC7B || 123 || 1502 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12229 (SSL_ERROR_HANDSHAKE_UNEXPECTED_ALERT).<br />
|-<br />
| 0xBBE7B || 123 || 1503 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12272 (SSL_ERROR_BAD_MAC_ALERT).<br />
|-<br />
| 0xBC07B || 123 || 1504 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12197 (SSL_ERROR_DECRYPTION_FAILED_ALERT).<br />
|-<br />
| 0xBC27B || 123 || 1505 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12196 (SSL_ERROR_RECORD_OVERFLOW_ALERT).<br />
|-<br />
| 0xBC47B || 123 || 1506 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12228 (SSL_ERROR_DECOMPRESSION_FAILURE_ALERT).<br />
|-<br />
| 0xBC67B || 123 || 1507 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12227 (SSL_ERROR_HANDSHAKE_FAILURE_ALERT).<br />
|-<br />
| 0xBCA7B || 123 || 1509 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12271 (SSL_ERROR_BAD_CERT_ALERT).<br />
|-<br />
| 0xBCC7B || 123 || 1510 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12225 (SSL_ERROR_UNSUPPORTED_CERT_ALERT).<br />
|-<br />
| 0xBCE7B || 123 || 1511 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12270 (SSL_ERROR_REVOKED_CERT_ALERT).<br />
|-<br />
| 0xBD07B || 123 || 1512 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12269 (SSL_ERROR_EXPIRED_CERT_ALERT).<br />
|-<br />
| 0xBD27B || 123 || 1513 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12224 (SSL_ERROR_CERTIFICATE_UNKNOWN_ALERT).<br />
|-<br />
| 0xBD47B || 123 || 1514 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12226 (SSL_ERROR_ILLEGAL_PARAMETER_ALERT).<br />
|-<br />
| 0xBD67B || 123 || 1515 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12195 (SSL_ERROR_UNKNOWN_CA_ALERT).<br />
|-<br />
| 0xBD87B || 123 || 1516 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12194 (SSL_ERROR_ACCESS_DENIED_ALERT).<br />
|-<br />
| 0xBDA7B || 123 || 1517 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12193 (SSL_ERROR_DECODE_ERROR_ALERT).<br />
|-<br />
| 0xBDC7B || 123 || 1518 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12192 (SSL_ERROR_DECRYPT_ERROR_ALERT).<br />
|-<br />
| 0xBDE7B || 123 || 1519 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12191 (SSL_ERROR_EXPORT_RESTRICTION_ALERT).<br />
|-<br />
| 0xBE07B || 123 || 1520 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12190 (SSL_ERROR_PROTOCOL_VERSION_ALERT).<br />
|-<br />
| 0xBE27B || 123 || 1521 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12189 (SSL_ERROR_INSUFFICIENT_SECURITY_ALERT).<br />
|-<br />
| 0xBE47B || 123 || 1522 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12188 (SSL_ERROR_INTERNAL_ERROR_ALERT).<br />
|-<br />
| 0xBE67B || 123 || 1523 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12157 (SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT).<br />
|-<br />
| 0xBE87B || 123 || 1524 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12187 (SSL_ERROR_USER_CANCELED_ALERT).<br />
|-<br />
| 0xBEA7B || 123 || 1525 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12186 (SSL_ERROR_NO_RENEGOTIATION_ALERT).<br />
|-<br />
| 0xBEC7B || 123 || 1526 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12184 (SSL_ERROR_UNSUPPORTED_EXTENSION_ALERT).<br />
|-<br />
| 0xBEE7B || 123 || 1527 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12183 (SSL_ERROR_CERTIFICATE_UNOBTAINABLE_ALERT).<br />
|-<br />
| 0xBF07B || 123 || 1528 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12182 (SSL_ERROR_UNRECOGNIZED_NAME_ALERT).<br />
|-<br />
| 0xBF27B || 123 || 1529 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12181 (SSL_ERROR_BAD_CERT_STATUS_RESPONSE_ALERT).<br />
|-<br />
| 0xBF47B || 123 || 1530 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12180 (SSL_ERROR_BAD_CERT_HASH_VALUE_ALERT).<br />
|-<br />
| 0x27127B || 123 || 5001 || Converted from [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslerr.html NSS] SSL error -12155 (SSL_ERROR_RX_SHORT_DTLS_READ).<br />
|-<br />
| 0x271E7B || 123 || 5007 || Out-of-bounds error during error conversion.<br />
|-<br />
| 0x27C || 124 || 1 || Network service account unavailable<br />
|-<br />
| 0x287C || 124 || 20 || Argument is NULL<br />
|-<br />
| 0x2C7C || 124 || 22 || Argument is invalid<br />
|-<br />
| 0x3C7C || 124 || 30 || Bad input buffer size<br />
|-<br />
| 0x407C || 124 || 32 || Invalid input buffer<br />
|-<br />
| 0x767C || 124 || 59 || [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[#Network_Interface_services#GetClientId|GetClientId]] returned false.<br />
|-<br />
| 0x17707C || 124 || 3000 || [https://en-americas-support.nintendo.com/app/answers/detail/a_id/27166/ System Update Required]<br />
|-<br />
| 0x17727C || 124 || 3001 || [https://en-americas-support.nintendo.com/app/answers/detail/a_id/28969/ Game Update Required]<br />
|-<br />
| 0x1F4E7C || 124 || 4007 || [https://en-americas-support.nintendo.com/app/answers/detail/a_id/28046/ Account Permanent Ban]<br />
|-<br />
| 0x23387C || 124 || 4508 || [https://en-americas-support.nintendo.com/app/answers/detail/a_id/28046/ Account Permanent Ban]<br />
|-<br />
| 0x234A7C || 124 || 4517 || [https://en-americas-support.nintendo.com/app/answers/detail/a_id/43652/ Account Ban]<br />
|-<br />
| 0x24027C || 124 || 4609 || [https://en-americas-support.nintendo.com/app/answers/detail/a_id/46482/ Service Discontinued]<br />
|-<br />
| 0x27E || 126 || 1 || Invalid argument<br />
|-<br />
| 0x87E || 126 || 4 || Entry not found<br />
|-<br />
| 0xCE7E || 126 || 67 || Invalid database signature value (should be "NFDB")<br />
|-<br />
| 0xD27E || 126 || 69 || Invalid database entry count<br />
|-<br />
| 0x1987E || 126 || 204 || Development/debug-only behavior<br />
|-<br />
| 0x480 || 128 || 2 || IStorage not available.<br />
|-<br />
| 0x680 || 128 || 3 || No messages<br />
|-<br />
| 0x4680 || 128 || 35 || Error while launching applet.<br />
|-<br />
| 0x4A80 || 128 || 37 || Title-ID not found. Caused by code 0x410 when applet launch fails<br />
|-<br />
| 0x3E880 || 128 || 500 || Invalid input<br />
|-<br />
| 0x3EC80 || 128 || 502 || IStorage has already been opened by another accessor<br />
|-<br />
| 0x3EE80 || 128 || 503 || IStorage Read/Write out-of-bounds<br />
|-<br />
| 0x3F480 || 128 || 506 || Invalid parameters<br />
|-<br />
| 0x3FE80 || 128 || 511 || IStorage opened as wrong type (data opened as transfermem, transfermem opened as data)<br />
|-<br />
| 0x40080 || 128 || 512 || Unbalanced fatal section leave (returned when executing LeaveFatalSection without a preceding EnterFatalSection call)<br />
|-<br />
| 0x40C80 || 128 || 518 || Null object<br />
|-<br />
| 0x4B080 || 128 || 600 || Failed to allocate memory for IStorage<br />
|-<br />
| 0x59080 || 128 || 712 || Thread stack pool exhausted (out of memory)<br />
|-<br />
| 0x79C80 || 128 || 974 || DebugMode not enabled<br />
|-<br />
| 0x7A880 || 128 || 980 || <code>am.debug!dev_function</code> setting needs to be set / DebugMode not enabled<br />
|-<br />
| 0x7CC80 || 128 || 998 || Not implemented<br />
|-<br />
| 0xCC81 || 129 || 102 || Transmission not agreed<br />
|-<br />
| 0xD281 || 129 || 105 || Network unavailable<br />
|-<br />
| 0x7DA81 || 129 || 1005 || HTTP error: Couldnt resolve proxy<br />
|-<br />
| 0x7DC81 || 129 || 1006 || HTTP error: Couldnt resolve host<br />
|-<br />
| 0x7DE81 || 129 || 1007 || HTTP error: Couldnt connect<br />
|-<br />
| 0x7FE81 || 129 || 1023 || HTTP error: Write error<br />
|-<br />
| 0x80481 || 129 || 1026 || HTTP error: Read error<br />
|-<br />
| 0x80681 || 129 || 1027 || HTTP error: Out of memory<br />
|-<br />
| 0x80881 || 129 || 1028 || HTTP error: Operation timedout<br />
|-<br />
| 0x81681 || 129 || 1035 || HTTP error: SSL connect error<br />
|-<br />
| 0x83681 || 129 || 1051 || HTTP error: Peer failed verification<br />
|-<br />
| 0x83881 || 129 || 1052 || HTTP error: Got nothing<br />
|-<br />
| 0x83E81 || 129 || 1055 || HTTP error: Send error<br />
|-<br />
| 0x84081 || 129 || 1056 || HTTP error: Recv error<br />
|-<br />
| 0x84481 || 129 || 1058 || HTTP error: SSL cert problem<br />
|-<br />
| 0x84681 || 129 || 1059 || HTTP error: SSL cipher<br />
|-<br />
| 0x84881 || 129 || 1060 || HTTP error: SSL CA cert<br />
|-<br />
| 0x12C081 || 129 || 2400 || Server error: Status 400<br />
|-<br />
| 0x12C281 || 129 || 2401 || Server error: Status 401<br />
|-<br />
| 0x12C681 || 129 || 2403 || Server error: Status 403<br />
|-<br />
| 0x138881 || 129 || 2500 || Server error: Status 500<br />
|-<br />
| 0x138E81 || 129 || 2503 || Server error: Status 503<br />
|-<br />
| 0x139081 || 129 || 2504 || Server error: Status 504<br />
|-<br />
| 0xA83 || 131 || 5 || Unrecognized applet ID<br />
|-<br />
| 0x485 || 133 || 2 || Invalid DVFS table ID<br />
|-<br />
| 0x685 || 133 || 3 || DVFS table ID for debug only, see [[PCV_services#Module|DVFS Table]] notes.<br />
|-<br />
| 0x885 || 133 || 4 || Invalid parameter<br />
|-<br />
| 0x1489 || 137 || 10 || Already initialized.<br />
|-<br />
| 0x3C89 || 137 || 30 || Task not found.<br />
|-<br />
| 0x5089 || 137 || 40 || Memory allocation failed / bad input.<br />
|-<br />
| 0x29489 || 137 || 330 || [[NCM_services#ContentMetaType|ContentMetaType]] doesn't match SystemUpdate.<br />
|-<br />
| 0x271289 || 137 || 5001 || One of the following socket errors occurred: ENETDOWN, ECONNRESET, EHOSTDOWN, EHOSTUNREACH, or EPIPE. Also occurs when the received size doesn't match the expected size (recvfrom() ret with [[NIM_services#Contents_Delivery|meta_size]] data receiving).<br />
|-<br />
| 0x272489 || 137 || 5010 || Socket was [[Sockets_services|shutdown()]] due to the async operation being cancelled.<br />
|-<br />
| 0x273889 || 137 || 5020 || Too many internal output entries with [[NIM_services|nim]] cmd42, system is [[NIM_services#Contents_Delivery|Internet-connected]], or an unrecognized socket error occured.<br />
|-<br />
| 0x27D889 || 137 || 5100 || Connection timeout.<br />
|-<br />
| 0x2A4489 || 137 || 5410 || Invalid [[NIM_services#Contents_Delivery|ID]].<br />
|-<br />
| 0x2A5889 || 137 || 5420 || Invalid [[NIM_services#Contents_Delivery|magicnum]]. Can also be caused by the connection being closed by the peer, since non-negative return values from recv() are ignored in this case.<br />
|-<br />
| 0x2A6C89 || 137 || 5430 || Invalid [[NIM_services#Contents_Delivery|data_size]].<br />
|-<br />
| 0x2A8089 || 137 || 5440 || The input [[NCM_services#ContentMetaKey|ContentMetaKey]] doesn't match the ContentMetaKey in state.<br />
|-<br />
| 0x2A9489 || 137 || 5450 || Invalid [[NIM_services#Contents_Delivery|meta_size]].<br />
|-<br />
| 0x36B289 || 137 || 7001 || HTTP invalid response code (>=600).<br />
|-<br />
| 0x36B489 || 137 || 7002 || HTTP invalid client response code (4xx).<br />
|-<br />
| 0x36B689 || 137 || 7003 || HTTP invalid server response code (5xx).<br />
|-<br />
| 0x36B889 || 137 || 7004 || HTTP invalid redirect response code (3xx).<br />
|-<br />
| 0x390889-0x391889 || 137 || 7300-7308 || HTTP response code 300-308.<br />
|-<br />
| 0x39D089-0x39F289 || 137 || 7400-7417 || HTTP response code 400-417.<br />
|-<br />
| 0x3A9889-0x3AAA89 || 137 || 7500-7509 || HTTP response code 500-509.<br />
|-<br />
| 0x3CF089 || 137 || 7800 || Unknown/invalid libcurl error.<br />
|-<br />
| 0x3E8289-0x3F4089 || 137 || 8001-8096 || libcurl error 1-96. Some of the libcurl errors in the error-table map to the above unknown-libcurl-error however.<br />
|-<br />
| 0x68A || 138 || 3 || Not initialized.<br />
|-<br />
| 0x668C || 140 || 51 || USB data-transfer in progress<br />
|-<br />
| 0xD48C || 140 || 106 || Invalid descriptor<br />
|-<br />
| 0x1928C || 140 || 201 || USB device not bound / interface already enabled<br />
|-<br />
| 0x1BE8E || 142 || 223 || [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[#Network_Interface_services#GetClientId|GetClientId]] returned false.<br />
|-<br />
| 0x290 || 144 || 1 || Exited Abnormally ([[Applet_Manager_services#LibraryAppletExitReason|ExitReason]] == Abormal)<br />
|-<br />
| 0x690 || 144 || 3 || Canceled ([[Applet_Manager_services#LibraryAppletExitReason|ExitReason]] == Canceled)<br />
|-<br />
| 0x890 || 144 || 4 || Rejected<br />
|-<br />
| 0xA90 || 144 || 5 || Exited Unexpectedly ([[Applet_Manager_services#LibraryAppletExitReason|ExitReason]] == Unexpected)<br />
|-<br />
| 0x293 || 147 || 1 || NotInitialized<br />
|-<br />
| 0x493 || 147 || 2 || AlreadyInitialized<br />
|-<br />
| 0x693 || 147 || 3 || OutOfArraySpace<br />
|-<br />
| 0x893 || 147 || 4 || OutOfFieldSpace<br />
|-<br />
| 0xA93 || 147 || 5 || OutOfMemory<br />
|-<br />
| 0xC93 || 147 || 6 || NotSupported<br />
|-<br />
| 0xE93 || 147 || 7 || InvalidArgument<br />
|-<br />
| 0x1093 || 147 || 8 || NotFound<br />
|-<br />
| 0x1293 || 147 || 9 || FieldCategoryMismatch<br />
|-<br />
| 0x1493 || 147 || 10 || FieldTypeMismatch<br />
|-<br />
| 0x1693 || 147 || 11 || AlreadyExists<br />
|-<br />
| 0x1893 || 147 || 12 || CorruptJournal<br />
|-<br />
| 0x1A93 || 147 || 13 || CategoryNotFound<br />
|-<br />
| 0x1C93 || 147 || 14 || RequiredContextMissing<br />
|-<br />
| 0x1E93 || 147 || 15 || RequiredFieldMissing<br />
|-<br />
| 0x2093 || 147 || 16 || FormatterError<br />
|-<br />
| 0x2293 || 147 || 17 || InvalidPowerState<br />
|-<br />
| 0x2493 || 147 || 18 || ArrayFieldTooLarge<br />
|-<br />
| 0x2693 || 147 || 19 || AlreadyOwned<br />
|-<br />
| 0x299 || 153 || 1 || Invalid audio device<br />
|-<br />
| 0x499 || 153 || 2 || Operation couldn't complete successfully<br />
|-<br />
| 0x699 || 153 || 3 || Invalid sample rate<br />
|-<br />
| 0x899 || 153 || 4 || Buffer size too small<br />
|-<br />
| 0x1099 || 153 || 8 || Too many buffers are still unreleased<br />
|-<br />
| 0x1499 || 153 || 10 || Invalid channel count<br />
|-<br />
| 0x40299 || 153 || 513 || Invalid/Unsupported operation<br />
|-<br />
| 0xC0099 || 153 || 1536 || Invalid handle<br />
|-<br />
| 0xC0899 || 153 || 1540 || Audio output was already started<br />
|-<br />
| 0x3C9D || 157 || 30 || Address is NULL<br />
|-<br />
| 0x3E9D || 157 || 31 || PID is NULL<br />
|-<br />
| 0x549D || 157 || 42 || Already bound<br />
|-<br />
| 0xCC9D || 157 || 102 || Invalid PID<br />
|-<br />
| 0x49E || 158 || 2 || BootImagePackage not found<br />
|-<br />
| 0x69E || 158 || 3 || Invalid BootImagePackage<br />
|-<br />
| 0x89E || 158 || 4 || Work buffer too small<br />
|-<br />
| 0xA9E || 158 || 5 || Work buffer not aligned<br />
|-<br />
| 0xC9E || 158 || 6 || BootImages need repair<br />
|-<br />
| 0x29F || 159 || 1 || Cancel was selected<br />
|-<br />
| 0xAA3 || 163 || 5 || System is booting up repair process without VOL+ held down.<br />
|-<br />
| 0xCA3 || 163 || 6 || System is booting up repair process that requires RepairTimeReviser but does not have special cartridge inserted.<br />
|-<br />
| 0x70A4 || 164 || 56 || [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[#Network_Interface_services#GetClientId|GetClientId]] returned false.<br />
|-<br />
| 0x4AF || 175 || 2 || Bad version returned from calling the "nnjitpluginGetVersion" symbol.<br />
|-<br />
| 0xCAAF || 175 || 101 || Input NRO/NRR are too large for the storage buffer.<br />
|-<br />
| 0x4B0AF || 175 || 600 || Symbol funcptr used by this cmd is not initialized (Control/GenerateCode).<br />
|-<br />
| 0x4B2AF || 175 || 601 || DllPlugin Not initialized, or plugin NRO has already been loaded.<br />
|-<br />
| 0x4B4AF || 175 || 602 || An error was returned from calling the symbol funcptr with the Control cmd.<br />
|-<br />
| 0xC8B2 || 178 || 100 || Invalid user ID<br />
|-<br />
| 0xCAB2 || 178 || 101 || User does not exist<br />
|-<br />
| 0x12CB2 || 178 || 150 || Service unavailable<br />
|-<br />
| 0x190B2 || 178 || 200 || File storage failure<br />
|-<br />
| 0xAB4 || 180 || 5 || Invalid event ID<br />
|-<br />
| 0x1F4EB5 || 181 || 4007 || Device authentication error: System update required<br />
|-<br />
| 0x1F50B5 || 181 || 4008 || Device authentication error: [https://en-americas-support.nintendo.com/app/answers/detail/a_id/42061/ Permanant Ban]<br />
|-<br />
| 0x1F52B5 || 181 || 4009 || Device authentication error: Internal server error<br />
|-<br />
| 0x1F54B5 || 181 || 4007 || Device authentication error: Under maintenance<br />
|-<br />
| || 181 || 4017 || Device authentication error: [https://en-americas-support.nintendo.com/app/answers/detail/a_id/43653/ Ban]<br />
|-<br />
| 0x58ACA || 202 || 709 || Npad ID is out of range.<br />
|-<br />
| 0x2032CA || 202 || 4121 || [[Settings_services#ButtonConfigSettings|ButtonConfigSettings]] IsFull flag is clear.<br />
|-<br />
| 0x28CB || 203 || 20 || The [6.0.0+] Authentication challenge failed.<br />
|-<br />
| 0x40CB || 203 || 32 || Bad State / bad state ptr.<br />
|-<br />
| 0x82CB || 203 || 65 || Failed to connect to the AccessPoint.<br />
|-<br />
| 0x84CB || 203 || 66 || Timeout occured during Authentication / while attempting to find a valid ActionFrame.<br />
|-<br />
| 0x86CB || 203 || 67 || Maximum participants reached, Station not allowed to connect, ...<br />
|-<br />
| 0xC0CB || 203 || 96 || Bad input, or not initialized.<br />
|-<br />
| 0xC2CB || 203 || 97 || Matching LocalCommunicationId not found in the user-process [[NACP_Format|control.nacp]].<br />
|-<br />
| 0xE2CB || 203 || 113 || The specified LocalCommunicationVersion is less than the AccessPoint LocalCommunicationVersion.<br />
|-<br />
| 0xE4CB || 203 || 114 || The specified LocalCommunicationVersion is larger than the AccessPoint LocalCommunicationVersion.<br />
|-<br />
| 0xF0CD || 205 || 120 || IR image data not available/ready.<br />
|-<br />
| 0x1A8CD || 205 || 212 || IR camera handle pointer is null.<br />
|-<br />
| 0x198CD || 205 || 204 || IR camera invalid handle value.<br />
|-<br />
| 0x4CE || 206 || 2 || Invalid argument.<br />
|-<br />
| 0x6CE || 206 || 3 || Out of memory.<br />
|-<br />
| 0x10CE || 206 || 8 || Out of range. Buffer needs to be aligned.<br />
|-<br />
| 0x18CE || 206 || 12 || Invalid FileId.<br />
|-<br />
| 0x1ACE || 206 || 13 || Invalid storage ID.<br />
|-<br />
| 0x1CCE || 206 || 14 || Invalid content type.<br />
|-<br />
| 0x2ACE || 206 || 21 || Failed to mount Image Directory.<br />
|-<br />
| 0x2CCE || 206 || 23 || File too big.<br />
|-<br />
| 0x30CE || 206 || 24 || Invalid file size.<br />
|-<br />
| 0x3CCE || 206 || 30 || Buffer insufficient.<br />
|-<br />
| 0xAF2CE || 206 || 1401 || Too many files already saved.<br />
|-<br />
| 0x4DA || 218 || 2 || StatusManager entry IsValid flag not set, or controller-update currently in-progress.<br />
|-<br />
| 0x6DA || 218 || 3 || Controller-update failed via the LibraryApplet.<br />
|-<br />
| 0x8DA || 218 || 4 || Invalid BusHandle.<br />
|-<br />
| 0xADA || 218 || 5 || StatusManager entry flag +0x0 not set, or device not connected.<br />
|-<br />
| 0xEDA || 218 || 7 || PollingReceivedData not available.<br />
|-<br />
| 0x10DA || 218 || 8 || StatusManager entry DeviceEnabled flag not set, or flag +0x0 not set.<br />
|-<br />
| 0x12DA || 218 || 9 || ExternalDeviceId mismatch.<br />
|-<br />
| 0x14DA || 218 || 10 || BusHandle already initialized.<br />
|-<br />
| 0x104E7 || 231 || 130 || Nullptr passed to the LocalCommunicationId [[NACP_Format|control.nacp]] validation func.<br />
|-<br />
| 0x140E7 || 231 || 160 || GroupInfo field out of range.<br />
|-<br />
| 0x142E7 || 231 || 161 || SupportedPlatform not appropriate for this operation.<br />
|-<br />
| 0x146E7 || 231 || 163 || Invalid ServiceName.<br />
|-<br />
| 0x148E7 || 231 || 164 || Must provide PresharedBinaryKey.<br />
|-<br />
| 0x1C0E7 || 231 || 224 || Requested Priority value not allowed.<br />
|-<br />
| 0x1C2E7 || 231 || 225 || Matching LocalCommunicationId not found in the user-process [[NACP_Format|control.nacp]].<br />
|-<br />
| 0x200E7 || 231 || 256 || Invalid flag.<br />
|-<br />
| 0x204E7 || 231 || 258 || Invalid SupportedPlatform.<br />
|-<br />
| 0x208E7 || 231 || 260 || Invalid StaticAesKeyIndex.<br />
|-<br />
| 0x20AE7 || 231 || 261 || MemberCountMax cannot be greater than 8.<br />
|-<br />
| 0x210E7 || 231 || 264 || GroupInfo+8F must be 0x20.<br />
|}<br />
<br />
=== FS Error codes ===<br />
The following are the error codes recognized by nn::fs::detail::LogErrorMessage found in some [[Factory Setup|factory]] titles:<br />
<br />
{| class=wikitable<br />
! Value || Description || Message<br />
|-<br />
| 0xD401 || 106 || nn::svc::ResultInvalidCurrentMemory: Error: Passed buffer is not usable for fs library. See a manual of fs library for more information.<br />
|-<br />
| 0x7802 || 60 || nn::fs::ResultMountNameAlreadyExists: Error: Specified mount name already exists.<br />
|-<br />
| 0x7D202 || 1001 || nn::fs::ResultPartitionNotFound: Error: Specified partition is not found.<br />
|-<br />
| 0x7D402 || 1002 || nn::fs::ResultTargetNotFound: Error: Specified target is not found.<br />
|-<br />
| 0xFA002 - 0x138602 || 2000 - 2499 || nn::fs::ResultSdCardAccessFailed: Error: Failed to access SD card.<br />
|-<br />
| 0x136802 - 0x176E02 || 2500 - 2999 || nn::fs::ResultGameCardAccessFailed: Error: Failed to access game card.<br />
|-<br />
| 0x177202 || 3001 || nn::fs::ResultNotImplemented: Error: Specified operation is not implemented.<br />
|-<br />
| 0x177A02 || 3005 || nn::fs::ResultOutOfRange: Error: Specified value is out of range.<br />
|-<br />
| 0x190002 - 0x1B5602 || 3200 - 3499 || nn::fs::ResultAllocationMemoryFailed: Error: Failed to allocate memory.<br />
|-<br />
| 0x1B5802 - 0x1F3E02 || 3500 - 3999 || nn::fs::ResultMmcAccessFailed: Error: Failed to access MMC.<br />
|-<br />
| 0x1F4202 - 0x219602 || 4001 - 4299 || nn::fs::ResultRomCorrupted: Error: ROM is corrupted.<br />
|-<br />
| 0x219A02 - 0x232602 || 4301 - 4499 || nn::fs::ResultSaveDataCorrupted: Error: Save data is corrupted.<br />
|-<br />
| 0x232A02 - 0x23EE02 || 4501 - 4599 || nn::fs::ResultNcaCorrupted: Error: NCA is corrupted.<br />
|-<br />
| 0x23F202 - 0x243E02 || 4601 - 4639 || nn::fs::ResultIntegrityVerificationStorageCorrupted: Error: Integrity verification failed.<br />
|-<br />
| 0x244202 - 0x246602 || 4641 - 4659 || nn::fs::ResultPartitionFileSystemCorrupted: Error: Partition FS is corrupted.<br />
|-<br />
| 0x246A02 - 0x248E02 || 4661 - 4679 || nn::fs::ResultBuiltInStorageCorrupted: Error: Built-in-storage is corrupted.<br />
|-<br />
| 0x249202 - 0x24B602 || 4681 - 4699 || nn::fs::ResultFatFileSystemCorrupted: Error: FAT FS is corrupted.<br />
|-<br />
| 0x24BA02 - 0x24DE02 || 4701 - 4719 || nn::fs::ResultHostFileSystemCorrupted: Error: HOST FS is corrupted.<br />
|-<br />
| 0x1F4002 - 0x270E02 || 4000, 4300, 4500, 4600, 4640, 4660, 4680, 4700, 4720-4999 || nn::fs::ResultDataCorrupted: Error: Data is corrupted.<br />
|-<br />
| 0x271002 - 0x2EDE02 || 5000-5999 || nn::fs::ResultUnexpected: Error: Unexpected failure occurred.<br />
|-<br />
| 0x2EE002 - 0x32C602 || 6000-6499 || nn::fs::ResultPreconditionViolation: Error: Precondition violation.<br />
|-<br />
| 0x2EE202 - 0x306E02 || 6001-6199 || nn::fs::ResultInvalidArgument: Error: Invalid argument was specified.<br />
|-<br />
| 0x2EE402 - 0x2F1A02 || 6002-6029 || nn::fs::ResultInvalidPath: Error: Invalid path was specified.<br />
|-<br />
| 0x2EE602 || 6003 || nn::fs::ResultTooLongPath: Error: Too long path was specified.<br />
|-<br />
| 0x2EE802 || 6004 || nn::fs::ResultInvalidCharacter: Error: Invalid path character was specified.<br />
|-<br />
| 0x2EEA02 || 6005 || nn::fs::ResultInvalidPathFormat: Error: Invalid path format was specified.<br />
|-<br />
| 0x2F5A02 || 6061 || nn::fs::ResultInvalidOffset: Error: Invalid offset was specified.<br />
|-<br />
| 0x2F5C02 || 6062 || nn::fs::ResultInvalidSize: Error: Invalid size was specified.<br />
|-<br />
| 0x2F5E02 || 6063 || nn::fs::ResultNullptrArgument: Error: Null pointer argument was specified.<br />
|-<br />
| 0x2F6202 || 6065 || nn::fs::ResultInvalidMountName: Error: Invalid mount name was specified.<br />
|-<br />
| 0x2F6402 || 6066 || nn::fs::ResultExtensionSizeTooLarge: Error: Extension size exceeds max value set in nmeta file.<br />
|-<br />
| 0x2F6602 || 6067 || nn::fs::ResultExtensionSizeInvalid: Error: Extension size is not a multiple of nn::fs::SaveDataExtensionUnitSize.<br />
|-<br />
| 0x307202 || 6201 || nn::fs::ResultFileExtensionWithoutOpenModeAllowAppend: Error: OpenMode_AllowAppend is required for implicit extension of file size by WriteFile().<br />
|-<br />
| 0x307002 - 0x313602 || 6200, 6202 - 6299 || nn::fs::ResultInvalidOperationForOpenMode: Error: Invalid operation for the open mode.<br />
|-<br />
| 0x313802 - 0x31FE02 || 6300-6399 || nn::fs::ResultUnsupportedOperation: Error: Unsupported operation.<br />
|-<br />
| 0x320002 - 0x326202 || 6400-6449 || nn::fs::ResultPermissionDenied: Error: Permission denied.<br />
|-<br />
| 0x327202 || 6457 || nn::fs::ResultWriteModeFileNotClosed: Error: Close files opened in write mode before committing.<br />
|-<br />
| 0x328202 || 6465 || nn::fs::ResultUserNotExist: Error: Specified user doesn't exist.<br />
|-<br />
| 0x346402 || 6706 || nn::fs::ResultMappingTableFull: Error: Enough journal space is not left.<br />
|-<br />
| 0x346A02 || 6709 || nn::fs::ResultOpenCountLimit: Error: The open count of files and directories reached the limitation.<br />
|-<br />
| 0x353602 || 6811 || nn::fs::ResultMapFull: Error: Save data extension count reached the limitation.<br />
|-<br />
| 0x35F202 || 6905 || nn::fs::ResultNotMounted: Error: Specified mount name is not found.<br />
|}<br />
<br />
= Fatal Errors =<br />
{| class=wikitable<br />
! Error || Description<br />
|-<br />
| 2162-0002<br />
| Can be triggered by running [[SVC|svcBreak]]. The svcBreak params have no effect on the value of the thrown error-code.<br />
|-<br />
| 2168-0000<br />
| Userland ARM undefined instruction exception<br />
|-<br />
| 2168-0001<br />
| Userland ARM prefetch-abort due to PC set to non-executable region<br />
|-<br />
| 2168-0002<br />
| Userland ARM data abort. Also caused by abnormal process termination via [[SVC|svcExitProcess]]. Note: directly jumping to nnMain()-retaddr from non-main-thread has the same result.<br />
|-<br />
| 2168-0003<br />
| Userland PC address not aligned to 4 bytes<br />
|-<br />
| 2168-0008<br />
| Can occur when attempting to call an svc outside the whitelist<br />
|}<br />
<br />
= Support Errors =<br />
This section is for Support Errors displayed by the error-applet, separate from the normal Result Errors.<br />
<br />
== Modules ==<br />
{| class=wikitable<br />
! Value || Name<br />
|-<br />
| 520 || Nverpt<br />
|-<br />
| 600 || <br />
|-<br />
| 601 || <br />
|-<br />
| 602 || <br />
|-<br />
| 603 || <br />
|-<br />
| 604 || <br />
|-<br />
| 605 || <br />
|-<br />
| 606 || <br />
|-<br />
| 607 || <br />
|-<br />
| 608 || <br />
|-<br />
| 609 || <br />
|-<br />
| 610 || <br />
|-<br />
| 611 || <br />
|-<br />
| 612 || <br />
|-<br />
| 613 || <br />
|-<br />
| 614 || <br />
|-<br />
| 615 || <br />
|-<br />
| 616 || <br />
|-<br />
| 617 || <br />
|-<br />
| 618 || <br />
|-<br />
| 619 || <br />
|-<br />
| 620 || <br />
|-<br />
| 621 || <br />
|-<br />
| 622 || <br />
|-<br />
| 623 || <br />
|-<br />
| 800 || [[Internet_Browser|General web-applet]]<br />
|-<br />
| 801 || <br />
|-<br />
| 802 || <br />
|-<br />
| 803 || <br />
|-<br />
| 804 || <br />
|-<br />
| 805 || <br />
|-<br />
| 806 || <br />
|-<br />
| 807 || <br />
|-<br />
| 808 || <br />
|-<br />
| 809 || [[Internet_Browser|WifiWebAuthApplet]]<br />
|-<br />
| 810 || [[Internet_Browser|Whitelisted-applet]]<br />
|-<br />
| 811 || [[Internet_Browser|ShopN]]<br />
|-<br />
| 812 || <br />
|-<br />
| 813 || <br />
|-<br />
| 814 || <br />
|-<br />
| 815 || <br />
|-<br />
| 816 || <br />
|-<br />
| 817 || <br />
|-<br />
| 818 || <br />
|-<br />
| 819 || <br />
|-<br />
| 820 || <br />
|-<br />
| 821 || <br />
|-<br />
| 899 ||<br />
|-<br />
| 999 ||<br />
|}<br />
<br />
8XX is for/includes system applets.<br />
<br />
== Error codes ==<br />
{| class=wikitable<br />
! Value || Module || Description || Notes<br />
|-<br />
| Variable<br />
| {web-applets listed above}<br />
| 2750<br />
| MP4 parsing failed.<br />
|}<br />
<br />
Normal error-codes displayed by the system also use the same format as fatal-errors.<br />
<br />
= Homebrew Errors =<br />
Custom errors used by homebrew libraries and applications.<br />
<br />
== Modules ==<br />
{| class=wikitable<br />
! Value || Name<br />
|-<br />
| 345 || libnx<br />
|-<br />
| 346 || [[Homebrew ABI]]<br />
|-<br />
| 347 || Homebrew Loader<br />
|-<br />
| 348 || libnx NVIDIA errors<br />
|-<br />
| 349 || libnx Binder errors<br />
|}</div>
Masagrator
https://switchbrew.org/w/index.php?title=PTM_services&diff=10009
PTM services
2020-10-12T13:35:10Z
<p>Masagrator: Undo GetBatteryAgePercentage and GetRawBatteryChargePercentage changes</p>
<hr />
<div>= fan =<br />
This is "nn::fan::detail::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || OpenController<br />
|}<br />
<br />
== IController ==<br />
This is "nn::fan::detail::IController".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetRotationSpeedLevel<br />
|-<br />
| 1 || SetRotationSpeedLevelByDiff<br />
|-<br />
| 2 || GetRotationSpeedLevel<br />
|-<br />
| 3 || SetRotationRate<br />
|-<br />
| 4 || GetRotationRate<br />
|-<br />
| 5 || [1.0.0-6.2.0] EnableFan<br />
|-<br />
| 6 || [1.0.0-6.2.0] DisableFan<br />
|-<br />
| 7 || [1.0.0-6.2.0] GetActualRotationSpeedLevel<br />
|}<br />
<br />
[7.0.0+] SetRotationSpeedLevelByDiff/SetRotationRate no longer takes any input. GetRotationRate no longer returns output. These were presumably replaced with new cmds?<br />
<br />
= psm =<br />
This is "nn::psm::IPsmServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetBatteryChargePercentage]]<br />
|-<br />
| 1 || [[#GetChargerType]]<br />
|-<br />
| 2 || [[#EnableBatteryCharging]]<br />
|-<br />
| 3 || [[#DisableBatteryCharging]]<br />
|-<br />
| 4 || [[#IsBatteryChargingEnabled]]<br />
|-<br />
| 5 || [[#AcquireControllerPowerSupply]]<br />
|-<br />
| 6 || [[#ReleaseControllerPowerSupply]]<br />
|-<br />
| 7 || [[#OpenSession]]<br />
|-<br />
| 8 || [[#EnableEnoughPowerChargeEmulation]]<br />
|-<br />
| 9 || [[#DisableEnoughPowerChargeEmulation]]<br />
|-<br />
| 10 || [[#EnableFastBatteryCharging]]<br />
|-<br />
| 11 || [[#DisableFastBatteryCharging]]<br />
|-<br />
| 12 || [[#GetBatteryVoltageState]]<br />
|-<br />
| 13 || [[#GetRawBatteryChargePercentage]]<br />
|-<br />
| 14 || [[#IsEnoughPowerSupplied]]<br />
|-<br />
| 15 || [[#GetBatteryAgePercentage]]<br />
|-<br />
| 16 || [[#GetBatteryChargeInfoEvent]]<br />
|-<br />
| 17 || [[#GetBatteryChargeInfoFields]]<br />
|-<br />
| 18 || [3.0.0+] GetBatteryChargeCalibratedEvent<br />
|}<br />
<br />
== GetBatteryChargePercentage ==<br />
No input, returns an output u32.<br />
<br />
== GetChargerType ==<br />
No input, returns an output u32.<br />
<br />
== EnableBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableBatteryCharging ==<br />
No input/output.<br />
<br />
== IsBatteryChargingEnabled ==<br />
No input, returns an output u8.<br />
<br />
== AcquireControllerPowerSupply ==<br />
No input/output.<br />
<br />
== ReleaseControllerPowerSupply ==<br />
No input/output.<br />
<br />
== OpenSession ==<br />
No input, returns an output [[#IPsmSession]].<br />
<br />
== EnableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== DisableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== EnableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== GetBatteryVoltageState ==<br />
No input, returns an output u32.<br />
<br />
== GetRawBatteryChargePercentage ==<br />
No input, returns an output double.<br />
<br />
== IsEnoughPowerSupplied ==<br />
No input, returns an output bool.<br />
<br />
== GetBatteryAgePercentage ==<br />
No input, returns an output double.<br />
<br />
== GetBatteryChargeInfoEvent ==<br />
No input, returns an output Event handle.<br />
<br />
== GetBatteryChargeInfoFields ==<br />
No input, returns an output 0x40-byte struct:<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x00 || 0x4 || u32. Input (Sink) current limit in mA<br />
|-<br />
| 0x04 || 0x4 || u32. Output (Source/Vbus/OTG) current limit in mA<br />
|-<br />
| 0x08 || 0x4 || u32. Battery charging current limit in mA<br />
|-<br />
| 0x0C || 0x4 || u32. Battery charging voltage limit in mV<br />
|-<br />
| 0x10 || 0x4 || enum, same as power-role? Always 1 except when OTG where it becomes 2<br />
|-<br />
| 0x14 || 0x4 || Possibly a bit field<br />
|-<br />
| 0x18 || 0x4 || u32. Charging limits state based on battery temperature<br />
|-<br />
| 0x1C || 0x4 || u32. Battery Temperature (milli C)<br />
|-<br />
| 0x20 || 0x4 || u32. Capacity now per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x24 || 0x4 || u32. Voltage avg in mV<br />
|-<br />
| 0x28 || 0x4 || u32. Battery age (capacity full / capacity design) per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x2C || 0x4 || enum. Power role (0: Unknown, 1: Sink, 2: Source)<br />
|-<br />
| 0x30 || 0x4 || enum. [[#Charger_Type]]<br />
|-<br />
| 0x34 || 0x4 || u32. Charger voltage limit in mV<br />
|-<br />
| 0x38 || 0x4 || u32. Charger current limit in mA<br />
|-<br />
| 0x3C || 0x4 || Bit field (bit0: potentially no hub, bit8: Joy-con charging, bit12: OTG)<br />
|-<br />
|}<br />
<br />
=== Charger Type ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Unknown<br />
|-<br />
| 1 || PD<br />
|-<br />
| 2 || Type-C 1.5A<br />
|-<br />
| 3 || Type-C 3.0A<br />
|-<br />
| 4 || DCP<br />
|-<br />
| 5 || CDP<br />
|-<br />
| 6 || SDP<br />
|-<br />
| 7 || Apple 500mA<br />
|-<br />
| 8 || Apple 1000mA<br />
|-<br />
| 9 || Apple 2000mA<br />
|}<br />
<br />
== IPsmSession ==<br />
This is "nn::psm::IPsmSession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#BindStateChangeEvent]]<br />
|-<br />
| 1 || [[#UnbindStateChangeEvent]]<br />
|-<br />
| 2 || [[#SetChargerTypeChangeEventEnabled]]<br />
|-<br />
| 3 || [[#SetPowerSupplyChangeEventEnabled]]<br />
|-<br />
| 4 || [[#SetBatteryVoltageStateChangeEventEnabled]]<br />
|}<br />
<br />
=== BindStateChangeEvent ===<br />
No input, returns an output event with autoclear disabled.<br />
<br />
=== UnbindStateChangeEvent ===<br />
No input/output.<br />
<br />
=== SetChargerTypeChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetPowerSupplyChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetBatteryVoltageStateChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
= tc =<br />
This is "nn::tc::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetOperatingMode<br />
|-<br />
| 1 || GetThermalEvent<br />
|-<br />
| 2 || IsActionAllowed<br />
|-<br />
| 3 || EnableVirtualTemperature<br />
|-<br />
| 4 || DisableVirtualTemperature<br />
|-<br />
| 5 || SetVirtualTemperature<br />
|-<br />
| 6 || EnableFanControl<br />
|-<br />
| 7 || DisableFanControl<br />
|-<br />
| 8 || IsFanControlEnabled<br />
|-<br />
| 9 || [5.0.0+] GetSkinTemperatureMilliC<br />
|}<br />
<br />
= ts =<br />
This is "nn::ts::server::IMeasurementServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetTemperatureRange]]<br />
|-<br />
| 1 || [[#GetTemperature]]<br />
|-<br />
| 2 || [[#SetMeasurementMode]]<br />
|-<br />
| 3 || [[#GetTemperatureMilliC]]<br />
|-<br />
| 4 || [8.0.0+] ? (Takes a total of 4-bytes of input, returns an [[#IUnknown0]])<br />
|}<br />
<br />
== IUnknown0 ==<br />
Added with [8.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || <br />
|-<br />
| 1 || <br />
|-<br />
| 2 || <br />
|-<br />
| 3 || <br />
|-<br />
| 4 || [10.0.0+]<br />
|}<br />
<br />
== GetTemperatureRange ==<br />
Takes an u8 [[#Location]] and returns an s32 minimum temperature + s32 maximum temperature.<br />
<br />
The returned temperature values are in Celsius.<br />
<br />
== GetTemperature ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in Celsius.<br />
<br />
== SetMeasurementMode ==<br />
Takes an u8 [[#Location]] and an u8 MeasurementMode, no output.<br />
<br />
== GetTemperatureMilliC ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in MilliC.<br />
<br />
== Location ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Internal<br />
|-<br />
| 1 || External<br />
|}<br />
<br />
= pcm =<br />
This is "nn::pcm::IManager".<br />
<br />
[4.0.0+] This service was moved to '''nvdbgsvc''' and is only available to SDEV units. <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || IsSupported<br />
|-<br />
| 1 || ReadCurrentPower<br />
|-<br />
| 2 || [4.0.0+] IsServiceEnabled<br />
|-<br />
| 3 || [4.0.0+] ReadCurrentVoltage<br />
|}<br />
<br />
= apm:am =<br />
This is "nn::apm::IManager".<br />
<br />
This was added with [8.0.0+] and replaces the old [[PPC_services#apm|apm]] service.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#OpenSession]]<br />
|-<br />
| 1 || GetPerformanceMode<br />
|-<br />
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]<br />
|}<br />
<br />
== OpenSession ==<br />
Returns an [[#ISession]].<br />
<br />
== IsCpuOverclockEnabled ==<br />
No input, returns an output u8 bool.<br />
<br />
= apm:sys =<br />
This is "nn::apm::ISystemManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || RequestPerformanceMode<br />
|-<br />
| 1 || GetPerformanceEvent<br />
|-<br />
| 2 || GetThrottlingState<br />
|-<br />
| 3 || GetLastThrottlingState<br />
|-<br />
| 4 || ClearLastThrottlingState<br />
|-<br />
| 5 || [5.0.0+] LoadAndApplySettings<br />
|-<br />
| 6 || [7.0.0+] [[#SetCpuBoostMode]]<br />
|-<br />
| 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]]<br />
|}<br />
<br />
== GetPerformanceEvent ==<br />
Returns an [[#ISession]].<br />
<br />
== SetCpuBoostMode ==<br />
Takes an u32 [[#CpuBoostMode]].<br />
<br />
=== CpuBoostMode ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Mode || Description<br />
|-<br />
| 0 || Disabled.<br />
|-<br />
| 1 || Boost CPU. Additionally, throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C.<br />
|-<br />
| 2 || Conserve power. Only throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x9222000B and 0x9222000C.<br />
|}<br />
<br />
== GetCurrentPerformanceConfiguration ==<br />
Returns the currently active [[#PerformanceConfiguration]] (default value is 0x00020003).<br />
<br />
= ISession =<br />
This is "nn::apm::ISession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetPerformanceConfiguration<br />
|-<br />
| 1 || GetPerformanceConfiguration<br />
|-<br />
| 2 || [8.0.0+] [[#SetCpuOverclockEnabled]]<br />
|}<br />
<br />
== SetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and an u32 [[#PerformanceConfiguration]].<br />
<br />
== GetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and returns an output u32 [[#PerformanceConfiguration]].<br />
<br />
== SetCpuOverclockEnabled ==<br />
Takes an input u8 bool, no output.<br />
<br />
== PerformanceMode ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Normal<br />
|-<br />
| 1 || Boost<br />
|}<br />
<br />
== PerformanceConfiguration ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || CPU clock || GPU clock || Memory clock<br />
|-<br />
| 0x00010000 || 1020.0 || 384.0 || 1600.0<br />
|-<br />
| 0x00010001 || 1020.0 || 768.0 || 1600.0<br />
|-<br />
| 0x00010002 || 1224.0 || 691.2 || 1600.0<br />
|-<br />
| 0x00020000 || 1020.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020001 || 1020.0 || 307.2 || 1600.0<br />
|-<br />
| 0x00020002 || 1224.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020003 || 1020.0 || 307.2 || 1331.2<br />
|-<br />
| 0x00020004 || 1020.0 || 384.0 || 1331.2<br />
|-<br />
| 0x00020005 || 1020.0 || 307.2 || 1065.6<br />
|-<br />
| 0x00020006 || 1020.0 || 384.0 || 1065.6<br />
|-<br />
| 0x92220007 || 1020.0 || 460.8 || 1600.0<br />
|-<br />
| 0x92220008 || 1020.0 || 460.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x92220009 || 1785.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000A || 1785.0 || 76.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x9222000B || 1020.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000C || 1020.0 || 76.8 || 1331.2<br />
|}<br />
<br />
Clocks are all in MHz.<br />
<br />
Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units.<br />
<br />
= fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9 =<br />
These are "nn::fgm::sf::ISession".<br />
<br />
Each service represents a different priority from 0 to 9. The "fgm" service represents priority 8 (default).<br />
<br />
[2.0.0+] Only "fgm", "fgm:0" and "fgm:9" are now valid.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize]]<br />
|}<br />
<br />
== Initialize ==<br />
No input. Returns an [[#IRequest]].<br />
<br />
== IRequest ==<br />
This is "nn::fgm::sf::IRequest".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize_2|Initialize]]<br />
|-<br />
| 1 || [[#Set|Set]]<br />
|-<br />
| 2 || [[#Get|Get]]<br />
|-<br />
| 3 || [[#Cancel|Cancel]]<br />
|}<br />
<br />
=== Initialize ===<br />
Takes a PID-descriptor, a [[#Module]] and an u64. Returns an Event handle with EventClearMode 0.<br />
<br />
=== Set ===<br />
Takes 2 u32s '''ClockMinRate''' and '''ClockMaxRate'''. No output.<br />
<br />
=== Get ===<br />
No input. Returns an u32 '''ClockRate'''.<br />
<br />
=== Cancel ===<br />
No input/output.<br />
<br />
= fgm:dbg =<br />
This is "nn::fgm::sf::IDebugger".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || Initialize<br />
|-<br />
| 1 || Read<br />
|-<br />
| 2 || Cancel<br />
|}<br />
<br />
= lbl =<br />
This is "nn::lbl::detail::ILblController". This was moved from [[Backlight_services|lbl]] with [10.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SaveCurrentSetting<br />
|-<br />
| 1 || LoadCurrentSetting<br />
|-<br />
| 2 || SetCurrentBrightnessSetting<br />
|-<br />
| 3 || GetCurrentBrightnessSetting<br />
|-<br />
| 4 || ApplyCurrentBrightnessSettingToBacklight<br />
|-<br />
| 5 || GetBrightnessSettingAppliedToBacklight<br />
|-<br />
| 6 || SwitchBacklightOn<br />
|-<br />
| 7 || SwitchBacklightOff<br />
|-<br />
| 8 || GetBacklightSwitchStatus<br />
|-<br />
| 9 || EnableDimming<br />
|-<br />
| 10 || DisableDimming<br />
|-<br />
| 11 || IsDimmingEnabled<br />
|-<br />
| 12 || EnableAutoBrightnessControl<br />
|-<br />
| 13 || DisableAutoBrightnessControl<br />
|-<br />
| 14 || IsAutoBrightnessControlEnabled<br />
|-<br />
| 15 || SetAmbientLightSensorValue<br />
|-<br />
| 16 || [[#GetAmbientLightSensorValue]]<br />
|-<br />
| 17 || SetBrightnessReflectionDelayLevel<br />
|-<br />
| 18 || GetBrightnessReflectionDelayLevel<br />
|-<br />
| 19 || SetCurrentBrightnessMapping<br />
|-<br />
| 20 || GetCurrentBrightnessMapping<br />
|-<br />
| 21 || SetCurrentAmbientLightSensorMapping<br />
|-<br />
| 22 || GetCurrentAmbientLightSensorMapping<br />
|-<br />
| 23 || [3.0.0+] IsAmbientLightSensorAvailable<br />
|-<br />
| 24 || [3.0.0+] SetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 25 || [3.0.0+] GetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 26 || [3.0.0+] [[#EnableVrMode]]<br />
|-<br />
| 27 || [3.0.0+] [[#DisableVrMode]]<br />
|-<br />
| 28 || [3.0.0+] [[#IsVrModeEnabled]]<br />
|-<br />
| 29 || [7.0.0+] IsAutoBrightnessControlSupported<br />
|}<br />
<br />
== Ambient Light Sensor Notes ==<br />
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).<br />
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.<br />
The sensor is fully configurable.<br />
<br />
== GetAmbientLightSensorValue ==<br />
No input. Before 5.x, outputs lux in float. (5.0.0+) Returns an output struct:<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x0 || 0x4 || bOverLimit. (u32) Equals to 1 if visible or IR light data is over 65534.<br />
|-<br />
| 0x4 || 0x4 || fLux. (float) Value in lux from the ambient light sensor.<br />
|}<br />
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.<br />
<br />
== GetCurrentBrightnessSetting ==<br />
No input. Returns an output u32 int of the current backlight level.<br />
<br />
== GetBrightnessSettingAppliedToBacklight ==<br />
No input. Returns an output u32 int of the backlight level computed from the ambient light sensor. <br />
<br />
== IsAutoBrightnessControlEnabled ==<br />
No input. Returns an output u8 bool indicating whether auto brightness is enabled. <br />
<br />
== EnableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets a global state field to 0x1.<br />
<br />
== DisableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets the global state field used by [[#EnableVrMode]] to 0x0.<br />
<br />
== IsVrModeEnabled ==<br />
No input. Returns an output u8 bool set by the above commands.<br />
<br />
= Module =<br />
This is "nn::fgm::Module".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Name || Block<br />
|-<br />
| 0 || CPU<br />
|-<br />
| 1 || GPU<br />
|-<br />
| 2 || EMC<br />
|-<br />
| 3 || SCLK<br />
|-<br />
| 4 || MSELECT<br />
|-<br />
| 5 || NVDEC<br />
|-<br />
| 6 || NVENC<br />
|-<br />
| 7 || NVJPG<br />
|}<br />
<br />
= Settings =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Key || Size || Notes<br />
|-<br />
| background_download_stress_testing_storage || strlen || "sdcard", "builtin", "system".<br />
|-<br />
| battery_draining_enabled || 1 || ?<br />
|-<br />
| fs_access_log_mode || strlen || "log", "sdcard", "log+sdcard", "off".<br />
|-<br />
| fs_speed_emulation_mode || strlen || "faster", "slower", "random", "off".<br />
|-<br />
| host_romfs_redirection_target || strlen || "builtin", "off".<br />
|-<br />
| idle_time_detect_mode || strlen || "on", "off".<br />
|-<br />
| initial_tick_value || strlen || "7days", "14days", "30days", "90days", "hex": ?.<br />
|-<br />
| memory_mode || strlen || "auto", "4GB", "6GB".<br />
|-<br />
| needs_update_vulnerability_policy || strlen || "default": ?, "force_true": ?, "force_false": ?.<br />
|-<br />
| operation_mode_policy || strlen || "auto": ?, "handheld", "console".<br />
|-<br />
| performance_mode_policy || strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (SDEV only).<br />
|-<br />
| screenshot_target || strlen || "screenshot": ?, "physical": ?.<br />
|-<br />
| sdev_cpu_overclock_enabled || 1 || SDEV only. Used to allow access to 1224MHz CPU mode.<br />
|-<br />
| sdev_throttling_additional_delay_us || 4 || SDEV only.<br />
|-<br />
| sdev_throttling_additional_delay_enabled || 1 || SDEV only.<br />
|-<br />
| sleep_mode || strlen || "default": ?, "pseudo": ?.<br />
|-<br />
| throttling_for_smpd_enabled || 1 || Not used as of 3.0.<br />
|-<br />
| throttling_for_undock_enabled || 1 || Not used as of 3.0.<br />
|}<br />
<br />
[[Category:Services]]</div>
Masagrator
https://switchbrew.org/w/index.php?title=PTM_services&diff=10008
PTM services
2020-10-12T13:32:35Z
<p>Masagrator: /* GetBatteryChargeInfoFields */</p>
<hr />
<div>= fan =<br />
This is "nn::fan::detail::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || OpenController<br />
|}<br />
<br />
== IController ==<br />
This is "nn::fan::detail::IController".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetRotationSpeedLevel<br />
|-<br />
| 1 || SetRotationSpeedLevelByDiff<br />
|-<br />
| 2 || GetRotationSpeedLevel<br />
|-<br />
| 3 || SetRotationRate<br />
|-<br />
| 4 || GetRotationRate<br />
|-<br />
| 5 || [1.0.0-6.2.0] EnableFan<br />
|-<br />
| 6 || [1.0.0-6.2.0] DisableFan<br />
|-<br />
| 7 || [1.0.0-6.2.0] GetActualRotationSpeedLevel<br />
|}<br />
<br />
[7.0.0+] SetRotationSpeedLevelByDiff/SetRotationRate no longer takes any input. GetRotationRate no longer returns output. These were presumably replaced with new cmds?<br />
<br />
= psm =<br />
This is "nn::psm::IPsmServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetBatteryChargePercentage]]<br />
|-<br />
| 1 || [[#GetChargerType]]<br />
|-<br />
| 2 || [[#EnableBatteryCharging]]<br />
|-<br />
| 3 || [[#DisableBatteryCharging]]<br />
|-<br />
| 4 || [[#IsBatteryChargingEnabled]]<br />
|-<br />
| 5 || [[#AcquireControllerPowerSupply]]<br />
|-<br />
| 6 || [[#ReleaseControllerPowerSupply]]<br />
|-<br />
| 7 || [[#OpenSession]]<br />
|-<br />
| 8 || [[#EnableEnoughPowerChargeEmulation]]<br />
|-<br />
| 9 || [[#DisableEnoughPowerChargeEmulation]]<br />
|-<br />
| 10 || [[#EnableFastBatteryCharging]]<br />
|-<br />
| 11 || [[#DisableFastBatteryCharging]]<br />
|-<br />
| 12 || [[#GetBatteryVoltageState]]<br />
|-<br />
| 13 || [[#GetRawBatteryChargePercentage]]<br />
|-<br />
| 14 || [[#IsEnoughPowerSupplied]]<br />
|-<br />
| 15 || [[#GetBatteryAgePercentage]]<br />
|-<br />
| 16 || [[#GetBatteryChargeInfoEvent]]<br />
|-<br />
| 17 || [[#GetBatteryChargeInfoFields]]<br />
|-<br />
| 18 || [3.0.0+] GetBatteryChargeCalibratedEvent<br />
|}<br />
<br />
== GetBatteryChargePercentage ==<br />
No input, returns an output u32.<br />
<br />
== GetChargerType ==<br />
No input, returns an output u32.<br />
<br />
== EnableBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableBatteryCharging ==<br />
No input/output.<br />
<br />
== IsBatteryChargingEnabled ==<br />
No input, returns an output u8.<br />
<br />
== AcquireControllerPowerSupply ==<br />
No input/output.<br />
<br />
== ReleaseControllerPowerSupply ==<br />
No input/output.<br />
<br />
== OpenSession ==<br />
No input, returns an output [[#IPsmSession]].<br />
<br />
== EnableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== DisableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== EnableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== GetBatteryVoltageState ==<br />
No input, returns an output u32.<br />
<br />
== GetRawBatteryChargePercentage ==<br />
No input, returns an output u32.<br />
<br />
== IsEnoughPowerSupplied ==<br />
No input, returns an output bool.<br />
<br />
== GetBatteryAgePercentage ==<br />
No input, returns an output u32.<br />
<br />
== GetBatteryChargeInfoEvent ==<br />
No input, returns an output Event handle.<br />
<br />
== GetBatteryChargeInfoFields ==<br />
No input, returns an output 0x40-byte struct:<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x00 || 0x4 || u32. Input (Sink) current limit in mA<br />
|-<br />
| 0x04 || 0x4 || u32. Output (Source/Vbus/OTG) current limit in mA<br />
|-<br />
| 0x08 || 0x4 || u32. Battery charging current limit in mA<br />
|-<br />
| 0x0C || 0x4 || u32. Battery charging voltage limit in mV<br />
|-<br />
| 0x10 || 0x4 || enum, same as power-role? Always 1 except when OTG where it becomes 2<br />
|-<br />
| 0x14 || 0x4 || Possibly a bit field<br />
|-<br />
| 0x18 || 0x4 || u32. Charging limits state based on battery temperature<br />
|-<br />
| 0x1C || 0x4 || u32. Battery Temperature (milli C)<br />
|-<br />
| 0x20 || 0x4 || u32. Capacity now per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x24 || 0x4 || u32. Voltage avg in mV<br />
|-<br />
| 0x28 || 0x4 || u32. Battery age (capacity full / capacity design) per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x2C || 0x4 || enum. Power role (0: Unknown, 1: Sink, 2: Source)<br />
|-<br />
| 0x30 || 0x4 || enum. [[#Charger_Type]]<br />
|-<br />
| 0x34 || 0x4 || u32. Charger voltage limit in mV<br />
|-<br />
| 0x38 || 0x4 || u32. Charger current limit in mA<br />
|-<br />
| 0x3C || 0x4 || Bit field (bit0: potentially no hub, bit8: Joy-con charging, bit12: OTG)<br />
|-<br />
|}<br />
<br />
=== Charger Type ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Unknown<br />
|-<br />
| 1 || PD<br />
|-<br />
| 2 || Type-C 1.5A<br />
|-<br />
| 3 || Type-C 3.0A<br />
|-<br />
| 4 || DCP<br />
|-<br />
| 5 || CDP<br />
|-<br />
| 6 || SDP<br />
|-<br />
| 7 || Apple 500mA<br />
|-<br />
| 8 || Apple 1000mA<br />
|-<br />
| 9 || Apple 2000mA<br />
|}<br />
<br />
== IPsmSession ==<br />
This is "nn::psm::IPsmSession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#BindStateChangeEvent]]<br />
|-<br />
| 1 || [[#UnbindStateChangeEvent]]<br />
|-<br />
| 2 || [[#SetChargerTypeChangeEventEnabled]]<br />
|-<br />
| 3 || [[#SetPowerSupplyChangeEventEnabled]]<br />
|-<br />
| 4 || [[#SetBatteryVoltageStateChangeEventEnabled]]<br />
|}<br />
<br />
=== BindStateChangeEvent ===<br />
No input, returns an output event with autoclear disabled.<br />
<br />
=== UnbindStateChangeEvent ===<br />
No input/output.<br />
<br />
=== SetChargerTypeChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetPowerSupplyChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetBatteryVoltageStateChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
= tc =<br />
This is "nn::tc::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetOperatingMode<br />
|-<br />
| 1 || GetThermalEvent<br />
|-<br />
| 2 || IsActionAllowed<br />
|-<br />
| 3 || EnableVirtualTemperature<br />
|-<br />
| 4 || DisableVirtualTemperature<br />
|-<br />
| 5 || SetVirtualTemperature<br />
|-<br />
| 6 || EnableFanControl<br />
|-<br />
| 7 || DisableFanControl<br />
|-<br />
| 8 || IsFanControlEnabled<br />
|-<br />
| 9 || [5.0.0+] GetSkinTemperatureMilliC<br />
|}<br />
<br />
= ts =<br />
This is "nn::ts::server::IMeasurementServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetTemperatureRange]]<br />
|-<br />
| 1 || [[#GetTemperature]]<br />
|-<br />
| 2 || [[#SetMeasurementMode]]<br />
|-<br />
| 3 || [[#GetTemperatureMilliC]]<br />
|-<br />
| 4 || [8.0.0+] ? (Takes a total of 4-bytes of input, returns an [[#IUnknown0]])<br />
|}<br />
<br />
== IUnknown0 ==<br />
Added with [8.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || <br />
|-<br />
| 1 || <br />
|-<br />
| 2 || <br />
|-<br />
| 3 || <br />
|-<br />
| 4 || [10.0.0+]<br />
|}<br />
<br />
== GetTemperatureRange ==<br />
Takes an u8 [[#Location]] and returns an s32 minimum temperature + s32 maximum temperature.<br />
<br />
The returned temperature values are in Celsius.<br />
<br />
== GetTemperature ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in Celsius.<br />
<br />
== SetMeasurementMode ==<br />
Takes an u8 [[#Location]] and an u8 MeasurementMode, no output.<br />
<br />
== GetTemperatureMilliC ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in MilliC.<br />
<br />
== Location ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Internal<br />
|-<br />
| 1 || External<br />
|}<br />
<br />
= pcm =<br />
This is "nn::pcm::IManager".<br />
<br />
[4.0.0+] This service was moved to '''nvdbgsvc''' and is only available to SDEV units. <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || IsSupported<br />
|-<br />
| 1 || ReadCurrentPower<br />
|-<br />
| 2 || [4.0.0+] IsServiceEnabled<br />
|-<br />
| 3 || [4.0.0+] ReadCurrentVoltage<br />
|}<br />
<br />
= apm:am =<br />
This is "nn::apm::IManager".<br />
<br />
This was added with [8.0.0+] and replaces the old [[PPC_services#apm|apm]] service.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#OpenSession]]<br />
|-<br />
| 1 || GetPerformanceMode<br />
|-<br />
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]<br />
|}<br />
<br />
== OpenSession ==<br />
Returns an [[#ISession]].<br />
<br />
== IsCpuOverclockEnabled ==<br />
No input, returns an output u8 bool.<br />
<br />
= apm:sys =<br />
This is "nn::apm::ISystemManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || RequestPerformanceMode<br />
|-<br />
| 1 || GetPerformanceEvent<br />
|-<br />
| 2 || GetThrottlingState<br />
|-<br />
| 3 || GetLastThrottlingState<br />
|-<br />
| 4 || ClearLastThrottlingState<br />
|-<br />
| 5 || [5.0.0+] LoadAndApplySettings<br />
|-<br />
| 6 || [7.0.0+] [[#SetCpuBoostMode]]<br />
|-<br />
| 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]]<br />
|}<br />
<br />
== GetPerformanceEvent ==<br />
Returns an [[#ISession]].<br />
<br />
== SetCpuBoostMode ==<br />
Takes an u32 [[#CpuBoostMode]].<br />
<br />
=== CpuBoostMode ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Mode || Description<br />
|-<br />
| 0 || Disabled.<br />
|-<br />
| 1 || Boost CPU. Additionally, throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C.<br />
|-<br />
| 2 || Conserve power. Only throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x9222000B and 0x9222000C.<br />
|}<br />
<br />
== GetCurrentPerformanceConfiguration ==<br />
Returns the currently active [[#PerformanceConfiguration]] (default value is 0x00020003).<br />
<br />
= ISession =<br />
This is "nn::apm::ISession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetPerformanceConfiguration<br />
|-<br />
| 1 || GetPerformanceConfiguration<br />
|-<br />
| 2 || [8.0.0+] [[#SetCpuOverclockEnabled]]<br />
|}<br />
<br />
== SetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and an u32 [[#PerformanceConfiguration]].<br />
<br />
== GetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and returns an output u32 [[#PerformanceConfiguration]].<br />
<br />
== SetCpuOverclockEnabled ==<br />
Takes an input u8 bool, no output.<br />
<br />
== PerformanceMode ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Normal<br />
|-<br />
| 1 || Boost<br />
|}<br />
<br />
== PerformanceConfiguration ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || CPU clock || GPU clock || Memory clock<br />
|-<br />
| 0x00010000 || 1020.0 || 384.0 || 1600.0<br />
|-<br />
| 0x00010001 || 1020.0 || 768.0 || 1600.0<br />
|-<br />
| 0x00010002 || 1224.0 || 691.2 || 1600.0<br />
|-<br />
| 0x00020000 || 1020.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020001 || 1020.0 || 307.2 || 1600.0<br />
|-<br />
| 0x00020002 || 1224.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020003 || 1020.0 || 307.2 || 1331.2<br />
|-<br />
| 0x00020004 || 1020.0 || 384.0 || 1331.2<br />
|-<br />
| 0x00020005 || 1020.0 || 307.2 || 1065.6<br />
|-<br />
| 0x00020006 || 1020.0 || 384.0 || 1065.6<br />
|-<br />
| 0x92220007 || 1020.0 || 460.8 || 1600.0<br />
|-<br />
| 0x92220008 || 1020.0 || 460.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x92220009 || 1785.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000A || 1785.0 || 76.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x9222000B || 1020.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000C || 1020.0 || 76.8 || 1331.2<br />
|}<br />
<br />
Clocks are all in MHz.<br />
<br />
Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units.<br />
<br />
= fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9 =<br />
These are "nn::fgm::sf::ISession".<br />
<br />
Each service represents a different priority from 0 to 9. The "fgm" service represents priority 8 (default).<br />
<br />
[2.0.0+] Only "fgm", "fgm:0" and "fgm:9" are now valid.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize]]<br />
|}<br />
<br />
== Initialize ==<br />
No input. Returns an [[#IRequest]].<br />
<br />
== IRequest ==<br />
This is "nn::fgm::sf::IRequest".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize_2|Initialize]]<br />
|-<br />
| 1 || [[#Set|Set]]<br />
|-<br />
| 2 || [[#Get|Get]]<br />
|-<br />
| 3 || [[#Cancel|Cancel]]<br />
|}<br />
<br />
=== Initialize ===<br />
Takes a PID-descriptor, a [[#Module]] and an u64. Returns an Event handle with EventClearMode 0.<br />
<br />
=== Set ===<br />
Takes 2 u32s '''ClockMinRate''' and '''ClockMaxRate'''. No output.<br />
<br />
=== Get ===<br />
No input. Returns an u32 '''ClockRate'''.<br />
<br />
=== Cancel ===<br />
No input/output.<br />
<br />
= fgm:dbg =<br />
This is "nn::fgm::sf::IDebugger".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || Initialize<br />
|-<br />
| 1 || Read<br />
|-<br />
| 2 || Cancel<br />
|}<br />
<br />
= lbl =<br />
This is "nn::lbl::detail::ILblController". This was moved from [[Backlight_services|lbl]] with [10.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SaveCurrentSetting<br />
|-<br />
| 1 || LoadCurrentSetting<br />
|-<br />
| 2 || SetCurrentBrightnessSetting<br />
|-<br />
| 3 || GetCurrentBrightnessSetting<br />
|-<br />
| 4 || ApplyCurrentBrightnessSettingToBacklight<br />
|-<br />
| 5 || GetBrightnessSettingAppliedToBacklight<br />
|-<br />
| 6 || SwitchBacklightOn<br />
|-<br />
| 7 || SwitchBacklightOff<br />
|-<br />
| 8 || GetBacklightSwitchStatus<br />
|-<br />
| 9 || EnableDimming<br />
|-<br />
| 10 || DisableDimming<br />
|-<br />
| 11 || IsDimmingEnabled<br />
|-<br />
| 12 || EnableAutoBrightnessControl<br />
|-<br />
| 13 || DisableAutoBrightnessControl<br />
|-<br />
| 14 || IsAutoBrightnessControlEnabled<br />
|-<br />
| 15 || SetAmbientLightSensorValue<br />
|-<br />
| 16 || [[#GetAmbientLightSensorValue]]<br />
|-<br />
| 17 || SetBrightnessReflectionDelayLevel<br />
|-<br />
| 18 || GetBrightnessReflectionDelayLevel<br />
|-<br />
| 19 || SetCurrentBrightnessMapping<br />
|-<br />
| 20 || GetCurrentBrightnessMapping<br />
|-<br />
| 21 || SetCurrentAmbientLightSensorMapping<br />
|-<br />
| 22 || GetCurrentAmbientLightSensorMapping<br />
|-<br />
| 23 || [3.0.0+] IsAmbientLightSensorAvailable<br />
|-<br />
| 24 || [3.0.0+] SetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 25 || [3.0.0+] GetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 26 || [3.0.0+] [[#EnableVrMode]]<br />
|-<br />
| 27 || [3.0.0+] [[#DisableVrMode]]<br />
|-<br />
| 28 || [3.0.0+] [[#IsVrModeEnabled]]<br />
|-<br />
| 29 || [7.0.0+] IsAutoBrightnessControlSupported<br />
|}<br />
<br />
== Ambient Light Sensor Notes ==<br />
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).<br />
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.<br />
The sensor is fully configurable.<br />
<br />
== GetAmbientLightSensorValue ==<br />
No input. Before 5.x, outputs lux in float. (5.0.0+) Returns an output struct:<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x0 || 0x4 || bOverLimit. (u32) Equals to 1 if visible or IR light data is over 65534.<br />
|-<br />
| 0x4 || 0x4 || fLux. (float) Value in lux from the ambient light sensor.<br />
|}<br />
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.<br />
<br />
== GetCurrentBrightnessSetting ==<br />
No input. Returns an output u32 int of the current backlight level.<br />
<br />
== GetBrightnessSettingAppliedToBacklight ==<br />
No input. Returns an output u32 int of the backlight level computed from the ambient light sensor. <br />
<br />
== IsAutoBrightnessControlEnabled ==<br />
No input. Returns an output u8 bool indicating whether auto brightness is enabled. <br />
<br />
== EnableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets a global state field to 0x1.<br />
<br />
== DisableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets the global state field used by [[#EnableVrMode]] to 0x0.<br />
<br />
== IsVrModeEnabled ==<br />
No input. Returns an output u8 bool set by the above commands.<br />
<br />
= Module =<br />
This is "nn::fgm::Module".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Name || Block<br />
|-<br />
| 0 || CPU<br />
|-<br />
| 1 || GPU<br />
|-<br />
| 2 || EMC<br />
|-<br />
| 3 || SCLK<br />
|-<br />
| 4 || MSELECT<br />
|-<br />
| 5 || NVDEC<br />
|-<br />
| 6 || NVENC<br />
|-<br />
| 7 || NVJPG<br />
|}<br />
<br />
= Settings =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Key || Size || Notes<br />
|-<br />
| background_download_stress_testing_storage || strlen || "sdcard", "builtin", "system".<br />
|-<br />
| battery_draining_enabled || 1 || ?<br />
|-<br />
| fs_access_log_mode || strlen || "log", "sdcard", "log+sdcard", "off".<br />
|-<br />
| fs_speed_emulation_mode || strlen || "faster", "slower", "random", "off".<br />
|-<br />
| host_romfs_redirection_target || strlen || "builtin", "off".<br />
|-<br />
| idle_time_detect_mode || strlen || "on", "off".<br />
|-<br />
| initial_tick_value || strlen || "7days", "14days", "30days", "90days", "hex": ?.<br />
|-<br />
| memory_mode || strlen || "auto", "4GB", "6GB".<br />
|-<br />
| needs_update_vulnerability_policy || strlen || "default": ?, "force_true": ?, "force_false": ?.<br />
|-<br />
| operation_mode_policy || strlen || "auto": ?, "handheld", "console".<br />
|-<br />
| performance_mode_policy || strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (SDEV only).<br />
|-<br />
| screenshot_target || strlen || "screenshot": ?, "physical": ?.<br />
|-<br />
| sdev_cpu_overclock_enabled || 1 || SDEV only. Used to allow access to 1224MHz CPU mode.<br />
|-<br />
| sdev_throttling_additional_delay_us || 4 || SDEV only.<br />
|-<br />
| sdev_throttling_additional_delay_enabled || 1 || SDEV only.<br />
|-<br />
| sleep_mode || strlen || "default": ?, "pseudo": ?.<br />
|-<br />
| throttling_for_smpd_enabled || 1 || Not used as of 3.0.<br />
|-<br />
| throttling_for_undock_enabled || 1 || Not used as of 3.0.<br />
|}<br />
<br />
[[Category:Services]]</div>
Masagrator
https://switchbrew.org/w/index.php?title=PTM_services&diff=10007
PTM services
2020-10-12T12:50:10Z
<p>Masagrator: /* GetBatteryAgePercentage */</p>
<hr />
<div>= fan =<br />
This is "nn::fan::detail::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || OpenController<br />
|}<br />
<br />
== IController ==<br />
This is "nn::fan::detail::IController".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetRotationSpeedLevel<br />
|-<br />
| 1 || SetRotationSpeedLevelByDiff<br />
|-<br />
| 2 || GetRotationSpeedLevel<br />
|-<br />
| 3 || SetRotationRate<br />
|-<br />
| 4 || GetRotationRate<br />
|-<br />
| 5 || [1.0.0-6.2.0] EnableFan<br />
|-<br />
| 6 || [1.0.0-6.2.0] DisableFan<br />
|-<br />
| 7 || [1.0.0-6.2.0] GetActualRotationSpeedLevel<br />
|}<br />
<br />
[7.0.0+] SetRotationSpeedLevelByDiff/SetRotationRate no longer takes any input. GetRotationRate no longer returns output. These were presumably replaced with new cmds?<br />
<br />
= psm =<br />
This is "nn::psm::IPsmServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetBatteryChargePercentage]]<br />
|-<br />
| 1 || [[#GetChargerType]]<br />
|-<br />
| 2 || [[#EnableBatteryCharging]]<br />
|-<br />
| 3 || [[#DisableBatteryCharging]]<br />
|-<br />
| 4 || [[#IsBatteryChargingEnabled]]<br />
|-<br />
| 5 || [[#AcquireControllerPowerSupply]]<br />
|-<br />
| 6 || [[#ReleaseControllerPowerSupply]]<br />
|-<br />
| 7 || [[#OpenSession]]<br />
|-<br />
| 8 || [[#EnableEnoughPowerChargeEmulation]]<br />
|-<br />
| 9 || [[#DisableEnoughPowerChargeEmulation]]<br />
|-<br />
| 10 || [[#EnableFastBatteryCharging]]<br />
|-<br />
| 11 || [[#DisableFastBatteryCharging]]<br />
|-<br />
| 12 || [[#GetBatteryVoltageState]]<br />
|-<br />
| 13 || [[#GetRawBatteryChargePercentage]]<br />
|-<br />
| 14 || [[#IsEnoughPowerSupplied]]<br />
|-<br />
| 15 || [[#GetBatteryAgePercentage]]<br />
|-<br />
| 16 || [[#GetBatteryChargeInfoEvent]]<br />
|-<br />
| 17 || [[#GetBatteryChargeInfoFields]]<br />
|-<br />
| 18 || [3.0.0+] GetBatteryChargeCalibratedEvent<br />
|}<br />
<br />
== GetBatteryChargePercentage ==<br />
No input, returns an output u32.<br />
<br />
== GetChargerType ==<br />
No input, returns an output u32.<br />
<br />
== EnableBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableBatteryCharging ==<br />
No input/output.<br />
<br />
== IsBatteryChargingEnabled ==<br />
No input, returns an output u8.<br />
<br />
== AcquireControllerPowerSupply ==<br />
No input/output.<br />
<br />
== ReleaseControllerPowerSupply ==<br />
No input/output.<br />
<br />
== OpenSession ==<br />
No input, returns an output [[#IPsmSession]].<br />
<br />
== EnableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== DisableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== EnableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== GetBatteryVoltageState ==<br />
No input, returns an output u32.<br />
<br />
== GetRawBatteryChargePercentage ==<br />
No input, returns an output u32.<br />
<br />
== IsEnoughPowerSupplied ==<br />
No input, returns an output bool.<br />
<br />
== GetBatteryAgePercentage ==<br />
No input, returns an output u32.<br />
<br />
== GetBatteryChargeInfoEvent ==<br />
No input, returns an output Event handle.<br />
<br />
== GetBatteryChargeInfoFields ==<br />
No input, returns an output 0x40-byte struct:<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x00 || 0x4 || u32. Input (Sink) current limit in mA<br />
|-<br />
| 0x04 || 0x4 || u32. Output (Source/Vbus/OTG) current limit in mA<br />
|-<br />
| 0x08 || 0x4 || u32. Battery charging current limit in mA<br />
|-<br />
| 0x0C || 0x4 || u32. Battery charging voltage limit in mV<br />
|-<br />
| 0x10 || 0x4 || enum, same as power-role? Always 1 except when OTG where it becomes 2<br />
|-<br />
| 0x14 || 0x4 || Possibly a bit field<br />
|-<br />
| 0x18 || 0x4 || u32. Charging limits state based on battery temperature<br />
|-<br />
| 0x1C || 0x4 || u32. Battery Temperature (milli C)<br />
|-<br />
| 0x20 || 0x4 || u32. Capacity now per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x24 || 0x4 || u32. Voltage now in mV<br />
|-<br />
| 0x28 || 0x4 || u32. Battery age (capacity full / capacity design) per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x2C || 0x4 || enum. Power role (0: Unknown, 1: Sink, 2: Source)<br />
|-<br />
| 0x30 || 0x4 || enum. [[#Charger_Type]]<br />
|-<br />
| 0x34 || 0x4 || u32. Charger voltage limit in mV<br />
|-<br />
| 0x38 || 0x4 || u32. Charger current limit in mA<br />
|-<br />
| 0x3C || 0x4 || Possibly bit field (bit0: potentially no hub, bit8: unknown, bit12: OTG)<br />
|-<br />
|}<br />
<br />
=== Charger Type ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Unknown<br />
|-<br />
| 1 || PD<br />
|-<br />
| 2 || Type-C 1.5A<br />
|-<br />
| 3 || Type-C 3.0A<br />
|-<br />
| 4 || DCP<br />
|-<br />
| 5 || CDP<br />
|-<br />
| 6 || SDP<br />
|-<br />
| 7 || Apple 500mA<br />
|-<br />
| 8 || Apple 1000mA<br />
|-<br />
| 9 || Apple 2000mA<br />
|}<br />
<br />
== IPsmSession ==<br />
This is "nn::psm::IPsmSession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#BindStateChangeEvent]]<br />
|-<br />
| 1 || [[#UnbindStateChangeEvent]]<br />
|-<br />
| 2 || [[#SetChargerTypeChangeEventEnabled]]<br />
|-<br />
| 3 || [[#SetPowerSupplyChangeEventEnabled]]<br />
|-<br />
| 4 || [[#SetBatteryVoltageStateChangeEventEnabled]]<br />
|}<br />
<br />
=== BindStateChangeEvent ===<br />
No input, returns an output event with autoclear disabled.<br />
<br />
=== UnbindStateChangeEvent ===<br />
No input/output.<br />
<br />
=== SetChargerTypeChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetPowerSupplyChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetBatteryVoltageStateChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
= tc =<br />
This is "nn::tc::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetOperatingMode<br />
|-<br />
| 1 || GetThermalEvent<br />
|-<br />
| 2 || IsActionAllowed<br />
|-<br />
| 3 || EnableVirtualTemperature<br />
|-<br />
| 4 || DisableVirtualTemperature<br />
|-<br />
| 5 || SetVirtualTemperature<br />
|-<br />
| 6 || EnableFanControl<br />
|-<br />
| 7 || DisableFanControl<br />
|-<br />
| 8 || IsFanControlEnabled<br />
|-<br />
| 9 || [5.0.0+] GetSkinTemperatureMilliC<br />
|}<br />
<br />
= ts =<br />
This is "nn::ts::server::IMeasurementServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetTemperatureRange]]<br />
|-<br />
| 1 || [[#GetTemperature]]<br />
|-<br />
| 2 || [[#SetMeasurementMode]]<br />
|-<br />
| 3 || [[#GetTemperatureMilliC]]<br />
|-<br />
| 4 || [8.0.0+] ? (Takes a total of 4-bytes of input, returns an [[#IUnknown0]])<br />
|}<br />
<br />
== IUnknown0 ==<br />
Added with [8.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || <br />
|-<br />
| 1 || <br />
|-<br />
| 2 || <br />
|-<br />
| 3 || <br />
|-<br />
| 4 || [10.0.0+]<br />
|}<br />
<br />
== GetTemperatureRange ==<br />
Takes an u8 [[#Location]] and returns an s32 minimum temperature + s32 maximum temperature.<br />
<br />
The returned temperature values are in Celsius.<br />
<br />
== GetTemperature ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in Celsius.<br />
<br />
== SetMeasurementMode ==<br />
Takes an u8 [[#Location]] and an u8 MeasurementMode, no output.<br />
<br />
== GetTemperatureMilliC ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in MilliC.<br />
<br />
== Location ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Internal<br />
|-<br />
| 1 || External<br />
|}<br />
<br />
= pcm =<br />
This is "nn::pcm::IManager".<br />
<br />
[4.0.0+] This service was moved to '''nvdbgsvc''' and is only available to SDEV units. <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || IsSupported<br />
|-<br />
| 1 || ReadCurrentPower<br />
|-<br />
| 2 || [4.0.0+] IsServiceEnabled<br />
|-<br />
| 3 || [4.0.0+] ReadCurrentVoltage<br />
|}<br />
<br />
= apm:am =<br />
This is "nn::apm::IManager".<br />
<br />
This was added with [8.0.0+] and replaces the old [[PPC_services#apm|apm]] service.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#OpenSession]]<br />
|-<br />
| 1 || GetPerformanceMode<br />
|-<br />
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]<br />
|}<br />
<br />
== OpenSession ==<br />
Returns an [[#ISession]].<br />
<br />
== IsCpuOverclockEnabled ==<br />
No input, returns an output u8 bool.<br />
<br />
= apm:sys =<br />
This is "nn::apm::ISystemManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || RequestPerformanceMode<br />
|-<br />
| 1 || GetPerformanceEvent<br />
|-<br />
| 2 || GetThrottlingState<br />
|-<br />
| 3 || GetLastThrottlingState<br />
|-<br />
| 4 || ClearLastThrottlingState<br />
|-<br />
| 5 || [5.0.0+] LoadAndApplySettings<br />
|-<br />
| 6 || [7.0.0+] [[#SetCpuBoostMode]]<br />
|-<br />
| 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]]<br />
|}<br />
<br />
== GetPerformanceEvent ==<br />
Returns an [[#ISession]].<br />
<br />
== SetCpuBoostMode ==<br />
Takes an u32 [[#CpuBoostMode]].<br />
<br />
=== CpuBoostMode ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Mode || Description<br />
|-<br />
| 0 || Disabled.<br />
|-<br />
| 1 || Boost CPU. Additionally, throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C.<br />
|-<br />
| 2 || Conserve power. Only throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x9222000B and 0x9222000C.<br />
|}<br />
<br />
== GetCurrentPerformanceConfiguration ==<br />
Returns the currently active [[#PerformanceConfiguration]] (default value is 0x00020003).<br />
<br />
= ISession =<br />
This is "nn::apm::ISession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetPerformanceConfiguration<br />
|-<br />
| 1 || GetPerformanceConfiguration<br />
|-<br />
| 2 || [8.0.0+] [[#SetCpuOverclockEnabled]]<br />
|}<br />
<br />
== SetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and an u32 [[#PerformanceConfiguration]].<br />
<br />
== GetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and returns an output u32 [[#PerformanceConfiguration]].<br />
<br />
== SetCpuOverclockEnabled ==<br />
Takes an input u8 bool, no output.<br />
<br />
== PerformanceMode ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Normal<br />
|-<br />
| 1 || Boost<br />
|}<br />
<br />
== PerformanceConfiguration ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || CPU clock || GPU clock || Memory clock<br />
|-<br />
| 0x00010000 || 1020.0 || 384.0 || 1600.0<br />
|-<br />
| 0x00010001 || 1020.0 || 768.0 || 1600.0<br />
|-<br />
| 0x00010002 || 1224.0 || 691.2 || 1600.0<br />
|-<br />
| 0x00020000 || 1020.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020001 || 1020.0 || 307.2 || 1600.0<br />
|-<br />
| 0x00020002 || 1224.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020003 || 1020.0 || 307.2 || 1331.2<br />
|-<br />
| 0x00020004 || 1020.0 || 384.0 || 1331.2<br />
|-<br />
| 0x00020005 || 1020.0 || 307.2 || 1065.6<br />
|-<br />
| 0x00020006 || 1020.0 || 384.0 || 1065.6<br />
|-<br />
| 0x92220007 || 1020.0 || 460.8 || 1600.0<br />
|-<br />
| 0x92220008 || 1020.0 || 460.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x92220009 || 1785.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000A || 1785.0 || 76.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x9222000B || 1020.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000C || 1020.0 || 76.8 || 1331.2<br />
|}<br />
<br />
Clocks are all in MHz.<br />
<br />
Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units.<br />
<br />
= fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9 =<br />
These are "nn::fgm::sf::ISession".<br />
<br />
Each service represents a different priority from 0 to 9. The "fgm" service represents priority 8 (default).<br />
<br />
[2.0.0+] Only "fgm", "fgm:0" and "fgm:9" are now valid.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize]]<br />
|}<br />
<br />
== Initialize ==<br />
No input. Returns an [[#IRequest]].<br />
<br />
== IRequest ==<br />
This is "nn::fgm::sf::IRequest".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize_2|Initialize]]<br />
|-<br />
| 1 || [[#Set|Set]]<br />
|-<br />
| 2 || [[#Get|Get]]<br />
|-<br />
| 3 || [[#Cancel|Cancel]]<br />
|}<br />
<br />
=== Initialize ===<br />
Takes a PID-descriptor, a [[#Module]] and an u64. Returns an Event handle with EventClearMode 0.<br />
<br />
=== Set ===<br />
Takes 2 u32s '''ClockMinRate''' and '''ClockMaxRate'''. No output.<br />
<br />
=== Get ===<br />
No input. Returns an u32 '''ClockRate'''.<br />
<br />
=== Cancel ===<br />
No input/output.<br />
<br />
= fgm:dbg =<br />
This is "nn::fgm::sf::IDebugger".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || Initialize<br />
|-<br />
| 1 || Read<br />
|-<br />
| 2 || Cancel<br />
|}<br />
<br />
= lbl =<br />
This is "nn::lbl::detail::ILblController". This was moved from [[Backlight_services|lbl]] with [10.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SaveCurrentSetting<br />
|-<br />
| 1 || LoadCurrentSetting<br />
|-<br />
| 2 || SetCurrentBrightnessSetting<br />
|-<br />
| 3 || GetCurrentBrightnessSetting<br />
|-<br />
| 4 || ApplyCurrentBrightnessSettingToBacklight<br />
|-<br />
| 5 || GetBrightnessSettingAppliedToBacklight<br />
|-<br />
| 6 || SwitchBacklightOn<br />
|-<br />
| 7 || SwitchBacklightOff<br />
|-<br />
| 8 || GetBacklightSwitchStatus<br />
|-<br />
| 9 || EnableDimming<br />
|-<br />
| 10 || DisableDimming<br />
|-<br />
| 11 || IsDimmingEnabled<br />
|-<br />
| 12 || EnableAutoBrightnessControl<br />
|-<br />
| 13 || DisableAutoBrightnessControl<br />
|-<br />
| 14 || IsAutoBrightnessControlEnabled<br />
|-<br />
| 15 || SetAmbientLightSensorValue<br />
|-<br />
| 16 || [[#GetAmbientLightSensorValue]]<br />
|-<br />
| 17 || SetBrightnessReflectionDelayLevel<br />
|-<br />
| 18 || GetBrightnessReflectionDelayLevel<br />
|-<br />
| 19 || SetCurrentBrightnessMapping<br />
|-<br />
| 20 || GetCurrentBrightnessMapping<br />
|-<br />
| 21 || SetCurrentAmbientLightSensorMapping<br />
|-<br />
| 22 || GetCurrentAmbientLightSensorMapping<br />
|-<br />
| 23 || [3.0.0+] IsAmbientLightSensorAvailable<br />
|-<br />
| 24 || [3.0.0+] SetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 25 || [3.0.0+] GetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 26 || [3.0.0+] [[#EnableVrMode]]<br />
|-<br />
| 27 || [3.0.0+] [[#DisableVrMode]]<br />
|-<br />
| 28 || [3.0.0+] [[#IsVrModeEnabled]]<br />
|-<br />
| 29 || [7.0.0+] IsAutoBrightnessControlSupported<br />
|}<br />
<br />
== Ambient Light Sensor Notes ==<br />
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).<br />
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.<br />
The sensor is fully configurable.<br />
<br />
== GetAmbientLightSensorValue ==<br />
No input. Before 5.x, outputs lux in float. (5.0.0+) Returns an output struct:<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x0 || 0x4 || bOverLimit. (u32) Equals to 1 if visible or IR light data is over 65534.<br />
|-<br />
| 0x4 || 0x4 || fLux. (float) Value in lux from the ambient light sensor.<br />
|}<br />
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.<br />
<br />
== GetCurrentBrightnessSetting ==<br />
No input. Returns an output u32 int of the current backlight level.<br />
<br />
== GetBrightnessSettingAppliedToBacklight ==<br />
No input. Returns an output u32 int of the backlight level computed from the ambient light sensor. <br />
<br />
== IsAutoBrightnessControlEnabled ==<br />
No input. Returns an output u8 bool indicating whether auto brightness is enabled. <br />
<br />
== EnableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets a global state field to 0x1.<br />
<br />
== DisableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets the global state field used by [[#EnableVrMode]] to 0x0.<br />
<br />
== IsVrModeEnabled ==<br />
No input. Returns an output u8 bool set by the above commands.<br />
<br />
= Module =<br />
This is "nn::fgm::Module".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Name || Block<br />
|-<br />
| 0 || CPU<br />
|-<br />
| 1 || GPU<br />
|-<br />
| 2 || EMC<br />
|-<br />
| 3 || SCLK<br />
|-<br />
| 4 || MSELECT<br />
|-<br />
| 5 || NVDEC<br />
|-<br />
| 6 || NVENC<br />
|-<br />
| 7 || NVJPG<br />
|}<br />
<br />
= Settings =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Key || Size || Notes<br />
|-<br />
| background_download_stress_testing_storage || strlen || "sdcard", "builtin", "system".<br />
|-<br />
| battery_draining_enabled || 1 || ?<br />
|-<br />
| fs_access_log_mode || strlen || "log", "sdcard", "log+sdcard", "off".<br />
|-<br />
| fs_speed_emulation_mode || strlen || "faster", "slower", "random", "off".<br />
|-<br />
| host_romfs_redirection_target || strlen || "builtin", "off".<br />
|-<br />
| idle_time_detect_mode || strlen || "on", "off".<br />
|-<br />
| initial_tick_value || strlen || "7days", "14days", "30days", "90days", "hex": ?.<br />
|-<br />
| memory_mode || strlen || "auto", "4GB", "6GB".<br />
|-<br />
| needs_update_vulnerability_policy || strlen || "default": ?, "force_true": ?, "force_false": ?.<br />
|-<br />
| operation_mode_policy || strlen || "auto": ?, "handheld", "console".<br />
|-<br />
| performance_mode_policy || strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (SDEV only).<br />
|-<br />
| screenshot_target || strlen || "screenshot": ?, "physical": ?.<br />
|-<br />
| sdev_cpu_overclock_enabled || 1 || SDEV only. Used to allow access to 1224MHz CPU mode.<br />
|-<br />
| sdev_throttling_additional_delay_us || 4 || SDEV only.<br />
|-<br />
| sdev_throttling_additional_delay_enabled || 1 || SDEV only.<br />
|-<br />
| sleep_mode || strlen || "default": ?, "pseudo": ?.<br />
|-<br />
| throttling_for_smpd_enabled || 1 || Not used as of 3.0.<br />
|-<br />
| throttling_for_undock_enabled || 1 || Not used as of 3.0.<br />
|}<br />
<br />
[[Category:Services]]</div>
Masagrator
https://switchbrew.org/w/index.php?title=PTM_services&diff=10006
PTM services
2020-10-12T12:49:59Z
<p>Masagrator: /* GetRawBatteryChargePercentage */</p>
<hr />
<div>= fan =<br />
This is "nn::fan::detail::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || OpenController<br />
|}<br />
<br />
== IController ==<br />
This is "nn::fan::detail::IController".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetRotationSpeedLevel<br />
|-<br />
| 1 || SetRotationSpeedLevelByDiff<br />
|-<br />
| 2 || GetRotationSpeedLevel<br />
|-<br />
| 3 || SetRotationRate<br />
|-<br />
| 4 || GetRotationRate<br />
|-<br />
| 5 || [1.0.0-6.2.0] EnableFan<br />
|-<br />
| 6 || [1.0.0-6.2.0] DisableFan<br />
|-<br />
| 7 || [1.0.0-6.2.0] GetActualRotationSpeedLevel<br />
|}<br />
<br />
[7.0.0+] SetRotationSpeedLevelByDiff/SetRotationRate no longer takes any input. GetRotationRate no longer returns output. These were presumably replaced with new cmds?<br />
<br />
= psm =<br />
This is "nn::psm::IPsmServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetBatteryChargePercentage]]<br />
|-<br />
| 1 || [[#GetChargerType]]<br />
|-<br />
| 2 || [[#EnableBatteryCharging]]<br />
|-<br />
| 3 || [[#DisableBatteryCharging]]<br />
|-<br />
| 4 || [[#IsBatteryChargingEnabled]]<br />
|-<br />
| 5 || [[#AcquireControllerPowerSupply]]<br />
|-<br />
| 6 || [[#ReleaseControllerPowerSupply]]<br />
|-<br />
| 7 || [[#OpenSession]]<br />
|-<br />
| 8 || [[#EnableEnoughPowerChargeEmulation]]<br />
|-<br />
| 9 || [[#DisableEnoughPowerChargeEmulation]]<br />
|-<br />
| 10 || [[#EnableFastBatteryCharging]]<br />
|-<br />
| 11 || [[#DisableFastBatteryCharging]]<br />
|-<br />
| 12 || [[#GetBatteryVoltageState]]<br />
|-<br />
| 13 || [[#GetRawBatteryChargePercentage]]<br />
|-<br />
| 14 || [[#IsEnoughPowerSupplied]]<br />
|-<br />
| 15 || [[#GetBatteryAgePercentage]]<br />
|-<br />
| 16 || [[#GetBatteryChargeInfoEvent]]<br />
|-<br />
| 17 || [[#GetBatteryChargeInfoFields]]<br />
|-<br />
| 18 || [3.0.0+] GetBatteryChargeCalibratedEvent<br />
|}<br />
<br />
== GetBatteryChargePercentage ==<br />
No input, returns an output u32.<br />
<br />
== GetChargerType ==<br />
No input, returns an output u32.<br />
<br />
== EnableBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableBatteryCharging ==<br />
No input/output.<br />
<br />
== IsBatteryChargingEnabled ==<br />
No input, returns an output u8.<br />
<br />
== AcquireControllerPowerSupply ==<br />
No input/output.<br />
<br />
== ReleaseControllerPowerSupply ==<br />
No input/output.<br />
<br />
== OpenSession ==<br />
No input, returns an output [[#IPsmSession]].<br />
<br />
== EnableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== DisableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== EnableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== GetBatteryVoltageState ==<br />
No input, returns an output u32.<br />
<br />
== GetRawBatteryChargePercentage ==<br />
No input, returns an output u32.<br />
<br />
== IsEnoughPowerSupplied ==<br />
No input, returns an output bool.<br />
<br />
== GetBatteryAgePercentage ==<br />
No input, returns an output double.<br />
<br />
== GetBatteryChargeInfoEvent ==<br />
No input, returns an output Event handle.<br />
<br />
== GetBatteryChargeInfoFields ==<br />
No input, returns an output 0x40-byte struct:<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x00 || 0x4 || u32. Input (Sink) current limit in mA<br />
|-<br />
| 0x04 || 0x4 || u32. Output (Source/Vbus/OTG) current limit in mA<br />
|-<br />
| 0x08 || 0x4 || u32. Battery charging current limit in mA<br />
|-<br />
| 0x0C || 0x4 || u32. Battery charging voltage limit in mV<br />
|-<br />
| 0x10 || 0x4 || enum, same as power-role? Always 1 except when OTG where it becomes 2<br />
|-<br />
| 0x14 || 0x4 || Possibly a bit field<br />
|-<br />
| 0x18 || 0x4 || u32. Charging limits state based on battery temperature<br />
|-<br />
| 0x1C || 0x4 || u32. Battery Temperature (milli C)<br />
|-<br />
| 0x20 || 0x4 || u32. Capacity now per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x24 || 0x4 || u32. Voltage now in mV<br />
|-<br />
| 0x28 || 0x4 || u32. Battery age (capacity full / capacity design) per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x2C || 0x4 || enum. Power role (0: Unknown, 1: Sink, 2: Source)<br />
|-<br />
| 0x30 || 0x4 || enum. [[#Charger_Type]]<br />
|-<br />
| 0x34 || 0x4 || u32. Charger voltage limit in mV<br />
|-<br />
| 0x38 || 0x4 || u32. Charger current limit in mA<br />
|-<br />
| 0x3C || 0x4 || Possibly bit field (bit0: potentially no hub, bit8: unknown, bit12: OTG)<br />
|-<br />
|}<br />
<br />
=== Charger Type ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Unknown<br />
|-<br />
| 1 || PD<br />
|-<br />
| 2 || Type-C 1.5A<br />
|-<br />
| 3 || Type-C 3.0A<br />
|-<br />
| 4 || DCP<br />
|-<br />
| 5 || CDP<br />
|-<br />
| 6 || SDP<br />
|-<br />
| 7 || Apple 500mA<br />
|-<br />
| 8 || Apple 1000mA<br />
|-<br />
| 9 || Apple 2000mA<br />
|}<br />
<br />
== IPsmSession ==<br />
This is "nn::psm::IPsmSession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#BindStateChangeEvent]]<br />
|-<br />
| 1 || [[#UnbindStateChangeEvent]]<br />
|-<br />
| 2 || [[#SetChargerTypeChangeEventEnabled]]<br />
|-<br />
| 3 || [[#SetPowerSupplyChangeEventEnabled]]<br />
|-<br />
| 4 || [[#SetBatteryVoltageStateChangeEventEnabled]]<br />
|}<br />
<br />
=== BindStateChangeEvent ===<br />
No input, returns an output event with autoclear disabled.<br />
<br />
=== UnbindStateChangeEvent ===<br />
No input/output.<br />
<br />
=== SetChargerTypeChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetPowerSupplyChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetBatteryVoltageStateChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
= tc =<br />
This is "nn::tc::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetOperatingMode<br />
|-<br />
| 1 || GetThermalEvent<br />
|-<br />
| 2 || IsActionAllowed<br />
|-<br />
| 3 || EnableVirtualTemperature<br />
|-<br />
| 4 || DisableVirtualTemperature<br />
|-<br />
| 5 || SetVirtualTemperature<br />
|-<br />
| 6 || EnableFanControl<br />
|-<br />
| 7 || DisableFanControl<br />
|-<br />
| 8 || IsFanControlEnabled<br />
|-<br />
| 9 || [5.0.0+] GetSkinTemperatureMilliC<br />
|}<br />
<br />
= ts =<br />
This is "nn::ts::server::IMeasurementServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetTemperatureRange]]<br />
|-<br />
| 1 || [[#GetTemperature]]<br />
|-<br />
| 2 || [[#SetMeasurementMode]]<br />
|-<br />
| 3 || [[#GetTemperatureMilliC]]<br />
|-<br />
| 4 || [8.0.0+] ? (Takes a total of 4-bytes of input, returns an [[#IUnknown0]])<br />
|}<br />
<br />
== IUnknown0 ==<br />
Added with [8.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || <br />
|-<br />
| 1 || <br />
|-<br />
| 2 || <br />
|-<br />
| 3 || <br />
|-<br />
| 4 || [10.0.0+]<br />
|}<br />
<br />
== GetTemperatureRange ==<br />
Takes an u8 [[#Location]] and returns an s32 minimum temperature + s32 maximum temperature.<br />
<br />
The returned temperature values are in Celsius.<br />
<br />
== GetTemperature ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in Celsius.<br />
<br />
== SetMeasurementMode ==<br />
Takes an u8 [[#Location]] and an u8 MeasurementMode, no output.<br />
<br />
== GetTemperatureMilliC ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in MilliC.<br />
<br />
== Location ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Internal<br />
|-<br />
| 1 || External<br />
|}<br />
<br />
= pcm =<br />
This is "nn::pcm::IManager".<br />
<br />
[4.0.0+] This service was moved to '''nvdbgsvc''' and is only available to SDEV units. <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || IsSupported<br />
|-<br />
| 1 || ReadCurrentPower<br />
|-<br />
| 2 || [4.0.0+] IsServiceEnabled<br />
|-<br />
| 3 || [4.0.0+] ReadCurrentVoltage<br />
|}<br />
<br />
= apm:am =<br />
This is "nn::apm::IManager".<br />
<br />
This was added with [8.0.0+] and replaces the old [[PPC_services#apm|apm]] service.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#OpenSession]]<br />
|-<br />
| 1 || GetPerformanceMode<br />
|-<br />
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]<br />
|}<br />
<br />
== OpenSession ==<br />
Returns an [[#ISession]].<br />
<br />
== IsCpuOverclockEnabled ==<br />
No input, returns an output u8 bool.<br />
<br />
= apm:sys =<br />
This is "nn::apm::ISystemManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || RequestPerformanceMode<br />
|-<br />
| 1 || GetPerformanceEvent<br />
|-<br />
| 2 || GetThrottlingState<br />
|-<br />
| 3 || GetLastThrottlingState<br />
|-<br />
| 4 || ClearLastThrottlingState<br />
|-<br />
| 5 || [5.0.0+] LoadAndApplySettings<br />
|-<br />
| 6 || [7.0.0+] [[#SetCpuBoostMode]]<br />
|-<br />
| 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]]<br />
|}<br />
<br />
== GetPerformanceEvent ==<br />
Returns an [[#ISession]].<br />
<br />
== SetCpuBoostMode ==<br />
Takes an u32 [[#CpuBoostMode]].<br />
<br />
=== CpuBoostMode ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Mode || Description<br />
|-<br />
| 0 || Disabled.<br />
|-<br />
| 1 || Boost CPU. Additionally, throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C.<br />
|-<br />
| 2 || Conserve power. Only throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x9222000B and 0x9222000C.<br />
|}<br />
<br />
== GetCurrentPerformanceConfiguration ==<br />
Returns the currently active [[#PerformanceConfiguration]] (default value is 0x00020003).<br />
<br />
= ISession =<br />
This is "nn::apm::ISession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetPerformanceConfiguration<br />
|-<br />
| 1 || GetPerformanceConfiguration<br />
|-<br />
| 2 || [8.0.0+] [[#SetCpuOverclockEnabled]]<br />
|}<br />
<br />
== SetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and an u32 [[#PerformanceConfiguration]].<br />
<br />
== GetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and returns an output u32 [[#PerformanceConfiguration]].<br />
<br />
== SetCpuOverclockEnabled ==<br />
Takes an input u8 bool, no output.<br />
<br />
== PerformanceMode ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Normal<br />
|-<br />
| 1 || Boost<br />
|}<br />
<br />
== PerformanceConfiguration ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || CPU clock || GPU clock || Memory clock<br />
|-<br />
| 0x00010000 || 1020.0 || 384.0 || 1600.0<br />
|-<br />
| 0x00010001 || 1020.0 || 768.0 || 1600.0<br />
|-<br />
| 0x00010002 || 1224.0 || 691.2 || 1600.0<br />
|-<br />
| 0x00020000 || 1020.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020001 || 1020.0 || 307.2 || 1600.0<br />
|-<br />
| 0x00020002 || 1224.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020003 || 1020.0 || 307.2 || 1331.2<br />
|-<br />
| 0x00020004 || 1020.0 || 384.0 || 1331.2<br />
|-<br />
| 0x00020005 || 1020.0 || 307.2 || 1065.6<br />
|-<br />
| 0x00020006 || 1020.0 || 384.0 || 1065.6<br />
|-<br />
| 0x92220007 || 1020.0 || 460.8 || 1600.0<br />
|-<br />
| 0x92220008 || 1020.0 || 460.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x92220009 || 1785.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000A || 1785.0 || 76.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x9222000B || 1020.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000C || 1020.0 || 76.8 || 1331.2<br />
|}<br />
<br />
Clocks are all in MHz.<br />
<br />
Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units.<br />
<br />
= fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9 =<br />
These are "nn::fgm::sf::ISession".<br />
<br />
Each service represents a different priority from 0 to 9. The "fgm" service represents priority 8 (default).<br />
<br />
[2.0.0+] Only "fgm", "fgm:0" and "fgm:9" are now valid.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize]]<br />
|}<br />
<br />
== Initialize ==<br />
No input. Returns an [[#IRequest]].<br />
<br />
== IRequest ==<br />
This is "nn::fgm::sf::IRequest".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize_2|Initialize]]<br />
|-<br />
| 1 || [[#Set|Set]]<br />
|-<br />
| 2 || [[#Get|Get]]<br />
|-<br />
| 3 || [[#Cancel|Cancel]]<br />
|}<br />
<br />
=== Initialize ===<br />
Takes a PID-descriptor, a [[#Module]] and an u64. Returns an Event handle with EventClearMode 0.<br />
<br />
=== Set ===<br />
Takes 2 u32s '''ClockMinRate''' and '''ClockMaxRate'''. No output.<br />
<br />
=== Get ===<br />
No input. Returns an u32 '''ClockRate'''.<br />
<br />
=== Cancel ===<br />
No input/output.<br />
<br />
= fgm:dbg =<br />
This is "nn::fgm::sf::IDebugger".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || Initialize<br />
|-<br />
| 1 || Read<br />
|-<br />
| 2 || Cancel<br />
|}<br />
<br />
= lbl =<br />
This is "nn::lbl::detail::ILblController". This was moved from [[Backlight_services|lbl]] with [10.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SaveCurrentSetting<br />
|-<br />
| 1 || LoadCurrentSetting<br />
|-<br />
| 2 || SetCurrentBrightnessSetting<br />
|-<br />
| 3 || GetCurrentBrightnessSetting<br />
|-<br />
| 4 || ApplyCurrentBrightnessSettingToBacklight<br />
|-<br />
| 5 || GetBrightnessSettingAppliedToBacklight<br />
|-<br />
| 6 || SwitchBacklightOn<br />
|-<br />
| 7 || SwitchBacklightOff<br />
|-<br />
| 8 || GetBacklightSwitchStatus<br />
|-<br />
| 9 || EnableDimming<br />
|-<br />
| 10 || DisableDimming<br />
|-<br />
| 11 || IsDimmingEnabled<br />
|-<br />
| 12 || EnableAutoBrightnessControl<br />
|-<br />
| 13 || DisableAutoBrightnessControl<br />
|-<br />
| 14 || IsAutoBrightnessControlEnabled<br />
|-<br />
| 15 || SetAmbientLightSensorValue<br />
|-<br />
| 16 || [[#GetAmbientLightSensorValue]]<br />
|-<br />
| 17 || SetBrightnessReflectionDelayLevel<br />
|-<br />
| 18 || GetBrightnessReflectionDelayLevel<br />
|-<br />
| 19 || SetCurrentBrightnessMapping<br />
|-<br />
| 20 || GetCurrentBrightnessMapping<br />
|-<br />
| 21 || SetCurrentAmbientLightSensorMapping<br />
|-<br />
| 22 || GetCurrentAmbientLightSensorMapping<br />
|-<br />
| 23 || [3.0.0+] IsAmbientLightSensorAvailable<br />
|-<br />
| 24 || [3.0.0+] SetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 25 || [3.0.0+] GetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 26 || [3.0.0+] [[#EnableVrMode]]<br />
|-<br />
| 27 || [3.0.0+] [[#DisableVrMode]]<br />
|-<br />
| 28 || [3.0.0+] [[#IsVrModeEnabled]]<br />
|-<br />
| 29 || [7.0.0+] IsAutoBrightnessControlSupported<br />
|}<br />
<br />
== Ambient Light Sensor Notes ==<br />
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).<br />
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.<br />
The sensor is fully configurable.<br />
<br />
== GetAmbientLightSensorValue ==<br />
No input. Before 5.x, outputs lux in float. (5.0.0+) Returns an output struct:<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x0 || 0x4 || bOverLimit. (u32) Equals to 1 if visible or IR light data is over 65534.<br />
|-<br />
| 0x4 || 0x4 || fLux. (float) Value in lux from the ambient light sensor.<br />
|}<br />
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.<br />
<br />
== GetCurrentBrightnessSetting ==<br />
No input. Returns an output u32 int of the current backlight level.<br />
<br />
== GetBrightnessSettingAppliedToBacklight ==<br />
No input. Returns an output u32 int of the backlight level computed from the ambient light sensor. <br />
<br />
== IsAutoBrightnessControlEnabled ==<br />
No input. Returns an output u8 bool indicating whether auto brightness is enabled. <br />
<br />
== EnableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets a global state field to 0x1.<br />
<br />
== DisableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets the global state field used by [[#EnableVrMode]] to 0x0.<br />
<br />
== IsVrModeEnabled ==<br />
No input. Returns an output u8 bool set by the above commands.<br />
<br />
= Module =<br />
This is "nn::fgm::Module".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Name || Block<br />
|-<br />
| 0 || CPU<br />
|-<br />
| 1 || GPU<br />
|-<br />
| 2 || EMC<br />
|-<br />
| 3 || SCLK<br />
|-<br />
| 4 || MSELECT<br />
|-<br />
| 5 || NVDEC<br />
|-<br />
| 6 || NVENC<br />
|-<br />
| 7 || NVJPG<br />
|}<br />
<br />
= Settings =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Key || Size || Notes<br />
|-<br />
| background_download_stress_testing_storage || strlen || "sdcard", "builtin", "system".<br />
|-<br />
| battery_draining_enabled || 1 || ?<br />
|-<br />
| fs_access_log_mode || strlen || "log", "sdcard", "log+sdcard", "off".<br />
|-<br />
| fs_speed_emulation_mode || strlen || "faster", "slower", "random", "off".<br />
|-<br />
| host_romfs_redirection_target || strlen || "builtin", "off".<br />
|-<br />
| idle_time_detect_mode || strlen || "on", "off".<br />
|-<br />
| initial_tick_value || strlen || "7days", "14days", "30days", "90days", "hex": ?.<br />
|-<br />
| memory_mode || strlen || "auto", "4GB", "6GB".<br />
|-<br />
| needs_update_vulnerability_policy || strlen || "default": ?, "force_true": ?, "force_false": ?.<br />
|-<br />
| operation_mode_policy || strlen || "auto": ?, "handheld", "console".<br />
|-<br />
| performance_mode_policy || strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (SDEV only).<br />
|-<br />
| screenshot_target || strlen || "screenshot": ?, "physical": ?.<br />
|-<br />
| sdev_cpu_overclock_enabled || 1 || SDEV only. Used to allow access to 1224MHz CPU mode.<br />
|-<br />
| sdev_throttling_additional_delay_us || 4 || SDEV only.<br />
|-<br />
| sdev_throttling_additional_delay_enabled || 1 || SDEV only.<br />
|-<br />
| sleep_mode || strlen || "default": ?, "pseudo": ?.<br />
|-<br />
| throttling_for_smpd_enabled || 1 || Not used as of 3.0.<br />
|-<br />
| throttling_for_undock_enabled || 1 || Not used as of 3.0.<br />
|}<br />
<br />
[[Category:Services]]</div>
Masagrator
https://switchbrew.org/w/index.php?title=PTM_services&diff=10004
PTM services
2020-10-10T18:42:50Z
<p>Masagrator: Fixed BatteryChargeInfoFields by CTCaer advice.</p>
<hr />
<div>= fan =<br />
This is "nn::fan::detail::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || OpenController<br />
|}<br />
<br />
== IController ==<br />
This is "nn::fan::detail::IController".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetRotationSpeedLevel<br />
|-<br />
| 1 || SetRotationSpeedLevelByDiff<br />
|-<br />
| 2 || GetRotationSpeedLevel<br />
|-<br />
| 3 || SetRotationRate<br />
|-<br />
| 4 || GetRotationRate<br />
|-<br />
| 5 || [1.0.0-6.2.0] EnableFan<br />
|-<br />
| 6 || [1.0.0-6.2.0] DisableFan<br />
|-<br />
| 7 || [1.0.0-6.2.0] GetActualRotationSpeedLevel<br />
|}<br />
<br />
[7.0.0+] SetRotationSpeedLevelByDiff/SetRotationRate no longer takes any input. GetRotationRate no longer returns output. These were presumably replaced with new cmds?<br />
<br />
= psm =<br />
This is "nn::psm::IPsmServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetBatteryChargePercentage]]<br />
|-<br />
| 1 || [[#GetChargerType]]<br />
|-<br />
| 2 || [[#EnableBatteryCharging]]<br />
|-<br />
| 3 || [[#DisableBatteryCharging]]<br />
|-<br />
| 4 || [[#IsBatteryChargingEnabled]]<br />
|-<br />
| 5 || [[#AcquireControllerPowerSupply]]<br />
|-<br />
| 6 || [[#ReleaseControllerPowerSupply]]<br />
|-<br />
| 7 || [[#OpenSession]]<br />
|-<br />
| 8 || [[#EnableEnoughPowerChargeEmulation]]<br />
|-<br />
| 9 || [[#DisableEnoughPowerChargeEmulation]]<br />
|-<br />
| 10 || [[#EnableFastBatteryCharging]]<br />
|-<br />
| 11 || [[#DisableFastBatteryCharging]]<br />
|-<br />
| 12 || [[#GetBatteryVoltageState]]<br />
|-<br />
| 13 || [[#GetRawBatteryChargePercentage]]<br />
|-<br />
| 14 || [[#IsEnoughPowerSupplied]]<br />
|-<br />
| 15 || [[#GetBatteryAgePercentage]]<br />
|-<br />
| 16 || [[#GetBatteryChargeInfoEvent]]<br />
|-<br />
| 17 || [[#GetBatteryChargeInfoFields]]<br />
|-<br />
| 18 || [3.0.0+] GetBatteryChargeCalibratedEvent<br />
|}<br />
<br />
== GetBatteryChargePercentage ==<br />
No input, returns an output u32.<br />
<br />
== GetChargerType ==<br />
No input, returns an output u32.<br />
<br />
== EnableBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableBatteryCharging ==<br />
No input/output.<br />
<br />
== IsBatteryChargingEnabled ==<br />
No input, returns an output u8.<br />
<br />
== AcquireControllerPowerSupply ==<br />
No input/output.<br />
<br />
== ReleaseControllerPowerSupply ==<br />
No input/output.<br />
<br />
== OpenSession ==<br />
No input, returns an output [[#IPsmSession]].<br />
<br />
== EnableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== DisableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== EnableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== GetBatteryVoltageState ==<br />
No input, returns an output u32.<br />
<br />
== GetRawBatteryChargePercentage ==<br />
No input, returns an output double.<br />
<br />
== IsEnoughPowerSupplied ==<br />
No input, returns an output bool.<br />
<br />
== GetBatteryAgePercentage ==<br />
No input, returns an output double.<br />
<br />
== GetBatteryChargeInfoEvent ==<br />
No input, returns an output Event handle.<br />
<br />
== GetBatteryChargeInfoFields ==<br />
No input, returns an output 0x40-byte struct:<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x00 || 0x4 || u32. Input current limit in mA<br />
|-<br />
| 0x04 || 0x4 || Possibly a limit in mA<br />
|-<br />
| 0x08 || 0x4 || u32. Fast charge current limit in mA<br />
|-<br />
| 0x0C || 0x4 || u32. Charge voltage limit in mV<br />
|-<br />
| 0x10 || 0x4 || Possibly an emum<br />
|-<br />
| 0x14 || 0x4 || Possibly a set a flags<br />
|-<br />
| 0x18 || 0x4 || Possibly an enum<br />
|-<br />
| 0x1C || 0x4 || Unknown<br />
|-<br />
| 0x20 || 0x4 || u32. Raw battery charge per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x24 || 0x4 || u32. Voltage now in mV<br />
|-<br />
| 0x28 || 0x4 || u32. Battery age per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x2C || 0x4 || Boolean? Receiving voltage?<br />
|-<br />
| 0x30 || 0x4 || Possibly an enum related to charging<br />
|-<br />
| 0x34 || 0x4 || u32. Charger voltage limit in mV<br />
|-<br />
| 0x38 || 0x4 || u32. Charger current limit in mA<br />
|-<br />
| 0x3C || 0x4 || Possibly a set a flags (potentially 0x100 for charging, 0x1 for undocked)<br />
|-<br />
|}<br />
<br />
== IPsmSession ==<br />
This is "nn::psm::IPsmSession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#BindStateChangeEvent]]<br />
|-<br />
| 1 || [[#UnbindStateChangeEvent]]<br />
|-<br />
| 2 || [[#SetChargerTypeChangeEventEnabled]]<br />
|-<br />
| 3 || [[#SetPowerSupplyChangeEventEnabled]]<br />
|-<br />
| 4 || [[#SetBatteryVoltageStateChangeEventEnabled]]<br />
|}<br />
<br />
=== BindStateChangeEvent ===<br />
No input, returns an output event with autoclear disabled.<br />
<br />
=== UnbindStateChangeEvent ===<br />
No input/output.<br />
<br />
=== SetChargerTypeChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetPowerSupplyChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetBatteryVoltageStateChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
= tc =<br />
This is "nn::tc::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetOperatingMode<br />
|-<br />
| 1 || GetThermalEvent<br />
|-<br />
| 2 || IsActionAllowed<br />
|-<br />
| 3 || EnableVirtualTemperature<br />
|-<br />
| 4 || DisableVirtualTemperature<br />
|-<br />
| 5 || SetVirtualTemperature<br />
|-<br />
| 6 || EnableFanControl<br />
|-<br />
| 7 || DisableFanControl<br />
|-<br />
| 8 || IsFanControlEnabled<br />
|-<br />
| 9 || [5.0.0+] GetSkinTemperatureMilliC<br />
|}<br />
<br />
= ts =<br />
This is "nn::ts::server::IMeasurementServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetTemperatureRange]]<br />
|-<br />
| 1 || [[#GetTemperature]]<br />
|-<br />
| 2 || [[#SetMeasurementMode]]<br />
|-<br />
| 3 || [[#GetTemperatureMilliC]]<br />
|-<br />
| 4 || [8.0.0+] ? (Takes a total of 4-bytes of input, returns an [[#IUnknown0]])<br />
|}<br />
<br />
== IUnknown0 ==<br />
Added with [8.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || <br />
|-<br />
| 1 || <br />
|-<br />
| 2 || <br />
|-<br />
| 3 || <br />
|-<br />
| 4 || [10.0.0+]<br />
|}<br />
<br />
== GetTemperatureRange ==<br />
Takes an u8 [[#Location]] and returns an s32 minimum temperature + s32 maximum temperature.<br />
<br />
The returned temperature values are in Celsius.<br />
<br />
== GetTemperature ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in Celsius.<br />
<br />
== SetMeasurementMode ==<br />
Takes an u8 [[#Location]] and an u8 MeasurementMode, no output.<br />
<br />
== GetTemperatureMilliC ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in MilliC.<br />
<br />
== Location ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Internal<br />
|-<br />
| 1 || External<br />
|}<br />
<br />
= pcm =<br />
This is "nn::pcm::IManager".<br />
<br />
[4.0.0+] This service was moved to '''nvdbgsvc''' and is only available to SDEV units. <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || IsSupported<br />
|-<br />
| 1 || ReadCurrentPower<br />
|-<br />
| 2 || [4.0.0+] IsServiceEnabled<br />
|-<br />
| 3 || [4.0.0+] ReadCurrentVoltage<br />
|}<br />
<br />
= apm:am =<br />
This is "nn::apm::IManager".<br />
<br />
This was added with [8.0.0+] and replaces the old [[PPC_services#apm|apm]] service.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#OpenSession]]<br />
|-<br />
| 1 || GetPerformanceMode<br />
|-<br />
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]<br />
|}<br />
<br />
== OpenSession ==<br />
Returns an [[#ISession]].<br />
<br />
== IsCpuOverclockEnabled ==<br />
No input, returns an output u8 bool.<br />
<br />
= apm:sys =<br />
This is "nn::apm::ISystemManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || RequestPerformanceMode<br />
|-<br />
| 1 || GetPerformanceEvent<br />
|-<br />
| 2 || GetThrottlingState<br />
|-<br />
| 3 || GetLastThrottlingState<br />
|-<br />
| 4 || ClearLastThrottlingState<br />
|-<br />
| 5 || [5.0.0+] LoadAndApplySettings<br />
|-<br />
| 6 || [7.0.0+] [[#SetCpuBoostMode]]<br />
|-<br />
| 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]]<br />
|}<br />
<br />
== GetPerformanceEvent ==<br />
Returns an [[#ISession]].<br />
<br />
== SetCpuBoostMode ==<br />
Takes an u32 [[#CpuBoostMode]].<br />
<br />
=== CpuBoostMode ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Mode || Description<br />
|-<br />
| 0 || Disabled.<br />
|-<br />
| 1 || Boost CPU. Additionally, throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C.<br />
|-<br />
| 2 || Conserve power. Only throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x9222000B and 0x9222000C.<br />
|}<br />
<br />
== GetCurrentPerformanceConfiguration ==<br />
Returns the currently active [[#PerformanceConfiguration]] (default value is 0x00020003).<br />
<br />
= ISession =<br />
This is "nn::apm::ISession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetPerformanceConfiguration<br />
|-<br />
| 1 || GetPerformanceConfiguration<br />
|-<br />
| 2 || [8.0.0+] [[#SetCpuOverclockEnabled]]<br />
|}<br />
<br />
== SetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and an u32 [[#PerformanceConfiguration]].<br />
<br />
== GetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and returns an output u32 [[#PerformanceConfiguration]].<br />
<br />
== SetCpuOverclockEnabled ==<br />
Takes an input u8 bool, no output.<br />
<br />
== PerformanceMode ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Normal<br />
|-<br />
| 1 || Boost<br />
|}<br />
<br />
== PerformanceConfiguration ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || CPU clock || GPU clock || Memory clock<br />
|-<br />
| 0x00010000 || 1020.0 || 384.0 || 1600.0<br />
|-<br />
| 0x00010001 || 1020.0 || 768.0 || 1600.0<br />
|-<br />
| 0x00010002 || 1224.0 || 691.2 || 1600.0<br />
|-<br />
| 0x00020000 || 1020.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020001 || 1020.0 || 307.2 || 1600.0<br />
|-<br />
| 0x00020002 || 1224.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020003 || 1020.0 || 307.2 || 1331.2<br />
|-<br />
| 0x00020004 || 1020.0 || 384.0 || 1331.2<br />
|-<br />
| 0x00020005 || 1020.0 || 307.2 || 1065.6<br />
|-<br />
| 0x00020006 || 1020.0 || 384.0 || 1065.6<br />
|-<br />
| 0x92220007 || 1020.0 || 460.8 || 1600.0<br />
|-<br />
| 0x92220008 || 1020.0 || 460.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x92220009 || 1785.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000A || 1785.0 || 76.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x9222000B || 1020.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000C || 1020.0 || 76.8 || 1331.2<br />
|}<br />
<br />
Clocks are all in MHz.<br />
<br />
Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units.<br />
<br />
= fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9 =<br />
These are "nn::fgm::sf::ISession".<br />
<br />
Each service represents a different priority from 0 to 9. The "fgm" service represents priority 8 (default).<br />
<br />
[2.0.0+] Only "fgm", "fgm:0" and "fgm:9" are now valid.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize]]<br />
|}<br />
<br />
== Initialize ==<br />
No input. Returns an [[#IRequest]].<br />
<br />
== IRequest ==<br />
This is "nn::fgm::sf::IRequest".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize_2|Initialize]]<br />
|-<br />
| 1 || [[#Set|Set]]<br />
|-<br />
| 2 || [[#Get|Get]]<br />
|-<br />
| 3 || [[#Cancel|Cancel]]<br />
|}<br />
<br />
=== Initialize ===<br />
Takes a PID-descriptor, a [[#Module]] and an u64. Returns an Event handle with EventClearMode 0.<br />
<br />
=== Set ===<br />
Takes 2 u32s '''ClockMinRate''' and '''ClockMaxRate'''. No output.<br />
<br />
=== Get ===<br />
No input. Returns an u32 '''ClockRate'''.<br />
<br />
=== Cancel ===<br />
No input/output.<br />
<br />
= fgm:dbg =<br />
This is "nn::fgm::sf::IDebugger".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || Initialize<br />
|-<br />
| 1 || Read<br />
|-<br />
| 2 || Cancel<br />
|}<br />
<br />
= lbl =<br />
This is "nn::lbl::detail::ILblController". This was moved from [[Backlight_services|lbl]] with [10.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SaveCurrentSetting<br />
|-<br />
| 1 || LoadCurrentSetting<br />
|-<br />
| 2 || SetCurrentBrightnessSetting<br />
|-<br />
| 3 || GetCurrentBrightnessSetting<br />
|-<br />
| 4 || ApplyCurrentBrightnessSettingToBacklight<br />
|-<br />
| 5 || GetBrightnessSettingAppliedToBacklight<br />
|-<br />
| 6 || SwitchBacklightOn<br />
|-<br />
| 7 || SwitchBacklightOff<br />
|-<br />
| 8 || GetBacklightSwitchStatus<br />
|-<br />
| 9 || EnableDimming<br />
|-<br />
| 10 || DisableDimming<br />
|-<br />
| 11 || IsDimmingEnabled<br />
|-<br />
| 12 || EnableAutoBrightnessControl<br />
|-<br />
| 13 || DisableAutoBrightnessControl<br />
|-<br />
| 14 || IsAutoBrightnessControlEnabled<br />
|-<br />
| 15 || SetAmbientLightSensorValue<br />
|-<br />
| 16 || [[#GetAmbientLightSensorValue]]<br />
|-<br />
| 17 || SetBrightnessReflectionDelayLevel<br />
|-<br />
| 18 || GetBrightnessReflectionDelayLevel<br />
|-<br />
| 19 || SetCurrentBrightnessMapping<br />
|-<br />
| 20 || GetCurrentBrightnessMapping<br />
|-<br />
| 21 || SetCurrentAmbientLightSensorMapping<br />
|-<br />
| 22 || GetCurrentAmbientLightSensorMapping<br />
|-<br />
| 23 || [3.0.0+] IsAmbientLightSensorAvailable<br />
|-<br />
| 24 || [3.0.0+] SetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 25 || [3.0.0+] GetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 26 || [3.0.0+] [[#EnableVrMode]]<br />
|-<br />
| 27 || [3.0.0+] [[#DisableVrMode]]<br />
|-<br />
| 28 || [3.0.0+] [[#IsVrModeEnabled]]<br />
|-<br />
| 29 || [7.0.0+] IsAutoBrightnessControlSupported<br />
|}<br />
<br />
== Ambient Light Sensor Notes ==<br />
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).<br />
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.<br />
The sensor is fully configurable.<br />
<br />
== GetAmbientLightSensorValue ==<br />
No input. Before 5.x, outputs lux in float. (5.0.0+) Returns an output struct:<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x0 || 0x4 || bOverLimit. (u32) Equals to 1 if visible or IR light data is over 65534.<br />
|-<br />
| 0x4 || 0x4 || fLux. (float) Value in lux from the ambient light sensor.<br />
|}<br />
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.<br />
<br />
== GetCurrentBrightnessSetting ==<br />
No input. Returns an output u32 int of the current backlight level.<br />
<br />
== GetBrightnessSettingAppliedToBacklight ==<br />
No input. Returns an output u32 int of the backlight level computed from the ambient light sensor. <br />
<br />
== IsAutoBrightnessControlEnabled ==<br />
No input. Returns an output u8 bool indicating whether auto brightness is enabled. <br />
<br />
== EnableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets a global state field to 0x1.<br />
<br />
== DisableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets the global state field used by [[#EnableVrMode]] to 0x0.<br />
<br />
== IsVrModeEnabled ==<br />
No input. Returns an output u8 bool set by the above commands.<br />
<br />
= Module =<br />
This is "nn::fgm::Module".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Name || Block<br />
|-<br />
| 0 || CPU<br />
|-<br />
| 1 || GPU<br />
|-<br />
| 2 || EMC<br />
|-<br />
| 3 || SCLK<br />
|-<br />
| 4 || MSELECT<br />
|-<br />
| 5 || NVDEC<br />
|-<br />
| 6 || NVENC<br />
|-<br />
| 7 || NVJPG<br />
|}<br />
<br />
= Settings =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Key || Size || Notes<br />
|-<br />
| background_download_stress_testing_storage || strlen || "sdcard", "builtin", "system".<br />
|-<br />
| battery_draining_enabled || 1 || ?<br />
|-<br />
| fs_access_log_mode || strlen || "log", "sdcard", "log+sdcard", "off".<br />
|-<br />
| fs_speed_emulation_mode || strlen || "faster", "slower", "random", "off".<br />
|-<br />
| host_romfs_redirection_target || strlen || "builtin", "off".<br />
|-<br />
| idle_time_detect_mode || strlen || "on", "off".<br />
|-<br />
| initial_tick_value || strlen || "7days", "14days", "30days", "90days", "hex": ?.<br />
|-<br />
| memory_mode || strlen || "auto", "4GB", "6GB".<br />
|-<br />
| needs_update_vulnerability_policy || strlen || "default": ?, "force_true": ?, "force_false": ?.<br />
|-<br />
| operation_mode_policy || strlen || "auto": ?, "handheld", "console".<br />
|-<br />
| performance_mode_policy || strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (SDEV only).<br />
|-<br />
| screenshot_target || strlen || "screenshot": ?, "physical": ?.<br />
|-<br />
| sdev_cpu_overclock_enabled || 1 || SDEV only. Used to allow access to 1224MHz CPU mode.<br />
|-<br />
| sdev_throttling_additional_delay_us || 4 || SDEV only.<br />
|-<br />
| sdev_throttling_additional_delay_enabled || 1 || SDEV only.<br />
|-<br />
| sleep_mode || strlen || "default": ?, "pseudo": ?.<br />
|-<br />
| throttling_for_smpd_enabled || 1 || Not used as of 3.0.<br />
|-<br />
| throttling_for_undock_enabled || 1 || Not used as of 3.0.<br />
|}<br />
<br />
[[Category:Services]]</div>
Masagrator
https://switchbrew.org/w/index.php?title=PTM_services&diff=10003
PTM services
2020-10-10T17:00:47Z
<p>Masagrator: Edited BatteryChargeInfoFields to update some fields. Used Hekate as reference.</p>
<hr />
<div>= fan =<br />
This is "nn::fan::detail::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || OpenController<br />
|}<br />
<br />
== IController ==<br />
This is "nn::fan::detail::IController".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetRotationSpeedLevel<br />
|-<br />
| 1 || SetRotationSpeedLevelByDiff<br />
|-<br />
| 2 || GetRotationSpeedLevel<br />
|-<br />
| 3 || SetRotationRate<br />
|-<br />
| 4 || GetRotationRate<br />
|-<br />
| 5 || [1.0.0-6.2.0] EnableFan<br />
|-<br />
| 6 || [1.0.0-6.2.0] DisableFan<br />
|-<br />
| 7 || [1.0.0-6.2.0] GetActualRotationSpeedLevel<br />
|}<br />
<br />
[7.0.0+] SetRotationSpeedLevelByDiff/SetRotationRate no longer takes any input. GetRotationRate no longer returns output. These were presumably replaced with new cmds?<br />
<br />
= psm =<br />
This is "nn::psm::IPsmServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetBatteryChargePercentage]]<br />
|-<br />
| 1 || [[#GetChargerType]]<br />
|-<br />
| 2 || [[#EnableBatteryCharging]]<br />
|-<br />
| 3 || [[#DisableBatteryCharging]]<br />
|-<br />
| 4 || [[#IsBatteryChargingEnabled]]<br />
|-<br />
| 5 || [[#AcquireControllerPowerSupply]]<br />
|-<br />
| 6 || [[#ReleaseControllerPowerSupply]]<br />
|-<br />
| 7 || [[#OpenSession]]<br />
|-<br />
| 8 || [[#EnableEnoughPowerChargeEmulation]]<br />
|-<br />
| 9 || [[#DisableEnoughPowerChargeEmulation]]<br />
|-<br />
| 10 || [[#EnableFastBatteryCharging]]<br />
|-<br />
| 11 || [[#DisableFastBatteryCharging]]<br />
|-<br />
| 12 || [[#GetBatteryVoltageState]]<br />
|-<br />
| 13 || [[#GetRawBatteryChargePercentage]]<br />
|-<br />
| 14 || [[#IsEnoughPowerSupplied]]<br />
|-<br />
| 15 || [[#GetBatteryAgePercentage]]<br />
|-<br />
| 16 || [[#GetBatteryChargeInfoEvent]]<br />
|-<br />
| 17 || [[#GetBatteryChargeInfoFields]]<br />
|-<br />
| 18 || [3.0.0+] GetBatteryChargeCalibratedEvent<br />
|}<br />
<br />
== GetBatteryChargePercentage ==<br />
No input, returns an output u32.<br />
<br />
== GetChargerType ==<br />
No input, returns an output u32.<br />
<br />
== EnableBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableBatteryCharging ==<br />
No input/output.<br />
<br />
== IsBatteryChargingEnabled ==<br />
No input, returns an output u8.<br />
<br />
== AcquireControllerPowerSupply ==<br />
No input/output.<br />
<br />
== ReleaseControllerPowerSupply ==<br />
No input/output.<br />
<br />
== OpenSession ==<br />
No input, returns an output [[#IPsmSession]].<br />
<br />
== EnableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== DisableEnoughPowerChargeEmulation ==<br />
No input/output.<br />
<br />
== EnableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== DisableFastBatteryCharging ==<br />
No input/output.<br />
<br />
== GetBatteryVoltageState ==<br />
No input, returns an output u32.<br />
<br />
== GetRawBatteryChargePercentage ==<br />
No input, returns an output double.<br />
<br />
== IsEnoughPowerSupplied ==<br />
No input, returns an output bool.<br />
<br />
== GetBatteryAgePercentage ==<br />
No input, returns an output double.<br />
<br />
== GetBatteryChargeInfoEvent ==<br />
No input, returns an output Event handle.<br />
<br />
== GetBatteryChargeInfoFields ==<br />
No input, returns an output 0x40-byte struct:<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x00 || 0x4 || u32. Charge current limit in mA<br />
|-<br />
| 0x04 || 0x4 || u32. Input current limit in mA<br />
|-<br />
| 0x08 || 0x4 || u32. Fast charge current limit in mA<br />
|-<br />
| 0x0C || 0x4 || u32. Charge voltage limit in mV<br />
|-<br />
| 0x10 || 0x4 || Possibly an emum<br />
|-<br />
| 0x14 || 0x4 || Possibly a set a flags<br />
|-<br />
| 0x18 || 0x4 || Possibly an enum<br />
|-<br />
| 0x1C || 0x4 || Unknown<br />
|-<br />
| 0x20 || 0x4 || u32. Raw battery charge per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x24 || 0x4 || u32. Voltage now in mV<br />
|-<br />
| 0x28 || 0x4 || u32. Battery age per cent-mille (i.e. 100% = 100000 pcm)<br />
|-<br />
| 0x2C || 0x4 || Boolean? Receiving voltage?<br />
|-<br />
| 0x30 || 0x4 || Possibly an enum related to charging<br />
|-<br />
| 0x34 || 0x4 || u32. Charger voltage limit in mV<br />
|-<br />
| 0x38 || 0x4 || u32. Charger current limit in mA<br />
|-<br />
| 0x3C || 0x4 || Possibly a set a flags (potentially 0x100 for charging, 0x1 for undocked)<br />
|-<br />
|}<br />
<br />
== IPsmSession ==<br />
This is "nn::psm::IPsmSession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#BindStateChangeEvent]]<br />
|-<br />
| 1 || [[#UnbindStateChangeEvent]]<br />
|-<br />
| 2 || [[#SetChargerTypeChangeEventEnabled]]<br />
|-<br />
| 3 || [[#SetPowerSupplyChangeEventEnabled]]<br />
|-<br />
| 4 || [[#SetBatteryVoltageStateChangeEventEnabled]]<br />
|}<br />
<br />
=== BindStateChangeEvent ===<br />
No input, returns an output event with autoclear disabled.<br />
<br />
=== UnbindStateChangeEvent ===<br />
No input/output.<br />
<br />
=== SetChargerTypeChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetPowerSupplyChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
=== SetBatteryVoltageStateChangeEventEnabled ===<br />
Takes an input u8 bool, no output.<br />
<br />
= tc =<br />
This is "nn::tc::IManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetOperatingMode<br />
|-<br />
| 1 || GetThermalEvent<br />
|-<br />
| 2 || IsActionAllowed<br />
|-<br />
| 3 || EnableVirtualTemperature<br />
|-<br />
| 4 || DisableVirtualTemperature<br />
|-<br />
| 5 || SetVirtualTemperature<br />
|-<br />
| 6 || EnableFanControl<br />
|-<br />
| 7 || DisableFanControl<br />
|-<br />
| 8 || IsFanControlEnabled<br />
|-<br />
| 9 || [5.0.0+] GetSkinTemperatureMilliC<br />
|}<br />
<br />
= ts =<br />
This is "nn::ts::server::IMeasurementServer".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#GetTemperatureRange]]<br />
|-<br />
| 1 || [[#GetTemperature]]<br />
|-<br />
| 2 || [[#SetMeasurementMode]]<br />
|-<br />
| 3 || [[#GetTemperatureMilliC]]<br />
|-<br />
| 4 || [8.0.0+] ? (Takes a total of 4-bytes of input, returns an [[#IUnknown0]])<br />
|}<br />
<br />
== IUnknown0 ==<br />
Added with [8.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || <br />
|-<br />
| 1 || <br />
|-<br />
| 2 || <br />
|-<br />
| 3 || <br />
|-<br />
| 4 || [10.0.0+]<br />
|}<br />
<br />
== GetTemperatureRange ==<br />
Takes an u8 [[#Location]] and returns an s32 minimum temperature + s32 maximum temperature.<br />
<br />
The returned temperature values are in Celsius.<br />
<br />
== GetTemperature ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in Celsius.<br />
<br />
== SetMeasurementMode ==<br />
Takes an u8 [[#Location]] and an u8 MeasurementMode, no output.<br />
<br />
== GetTemperatureMilliC ==<br />
Takes an u8 [[#Location]] and returns an output s32.<br />
<br />
The output is the temperature in MilliC.<br />
<br />
== Location ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Internal<br />
|-<br />
| 1 || External<br />
|}<br />
<br />
= pcm =<br />
This is "nn::pcm::IManager".<br />
<br />
[4.0.0+] This service was moved to '''nvdbgsvc''' and is only available to SDEV units. <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || IsSupported<br />
|-<br />
| 1 || ReadCurrentPower<br />
|-<br />
| 2 || [4.0.0+] IsServiceEnabled<br />
|-<br />
| 3 || [4.0.0+] ReadCurrentVoltage<br />
|}<br />
<br />
= apm:am =<br />
This is "nn::apm::IManager".<br />
<br />
This was added with [8.0.0+] and replaces the old [[PPC_services#apm|apm]] service.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#OpenSession]]<br />
|-<br />
| 1 || GetPerformanceMode<br />
|-<br />
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]<br />
|}<br />
<br />
== OpenSession ==<br />
Returns an [[#ISession]].<br />
<br />
== IsCpuOverclockEnabled ==<br />
No input, returns an output u8 bool.<br />
<br />
= apm:sys =<br />
This is "nn::apm::ISystemManager".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || RequestPerformanceMode<br />
|-<br />
| 1 || GetPerformanceEvent<br />
|-<br />
| 2 || GetThrottlingState<br />
|-<br />
| 3 || GetLastThrottlingState<br />
|-<br />
| 4 || ClearLastThrottlingState<br />
|-<br />
| 5 || [5.0.0+] LoadAndApplySettings<br />
|-<br />
| 6 || [7.0.0+] [[#SetCpuBoostMode]]<br />
|-<br />
| 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]]<br />
|}<br />
<br />
== GetPerformanceEvent ==<br />
Returns an [[#ISession]].<br />
<br />
== SetCpuBoostMode ==<br />
Takes an u32 [[#CpuBoostMode]].<br />
<br />
=== CpuBoostMode ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Mode || Description<br />
|-<br />
| 0 || Disabled.<br />
|-<br />
| 1 || Boost CPU. Additionally, throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C.<br />
|-<br />
| 2 || Conserve power. Only throttle GPU to minimum.<br />
Use [[#PerformanceConfiguration|performance configurations]] 0x9222000B and 0x9222000C.<br />
|}<br />
<br />
== GetCurrentPerformanceConfiguration ==<br />
Returns the currently active [[#PerformanceConfiguration]] (default value is 0x00020003).<br />
<br />
= ISession =<br />
This is "nn::apm::ISession".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SetPerformanceConfiguration<br />
|-<br />
| 1 || GetPerformanceConfiguration<br />
|-<br />
| 2 || [8.0.0+] [[#SetCpuOverclockEnabled]]<br />
|}<br />
<br />
== SetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and an u32 [[#PerformanceConfiguration]].<br />
<br />
== GetPerformanceConfiguration ==<br />
Takes an u32 [[#PerformanceMode]] and returns an output u32 [[#PerformanceConfiguration]].<br />
<br />
== SetCpuOverclockEnabled ==<br />
Takes an input u8 bool, no output.<br />
<br />
== PerformanceMode ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || Name<br />
|-<br />
| 0 || Normal<br />
|-<br />
| 1 || Boost<br />
|}<br />
<br />
== PerformanceConfiguration ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Value || CPU clock || GPU clock || Memory clock<br />
|-<br />
| 0x00010000 || 1020.0 || 384.0 || 1600.0<br />
|-<br />
| 0x00010001 || 1020.0 || 768.0 || 1600.0<br />
|-<br />
| 0x00010002 || 1224.0 || 691.2 || 1600.0<br />
|-<br />
| 0x00020000 || 1020.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020001 || 1020.0 || 307.2 || 1600.0<br />
|-<br />
| 0x00020002 || 1224.0 || 230.4 || 1600.0<br />
|-<br />
| 0x00020003 || 1020.0 || 307.2 || 1331.2<br />
|-<br />
| 0x00020004 || 1020.0 || 384.0 || 1331.2<br />
|-<br />
| 0x00020005 || 1020.0 || 307.2 || 1065.6<br />
|-<br />
| 0x00020006 || 1020.0 || 384.0 || 1065.6<br />
|-<br />
| 0x92220007 || 1020.0 || 460.8 || 1600.0<br />
|-<br />
| 0x92220008 || 1020.0 || 460.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x92220009 || 1785.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000A || 1785.0 || 76.8 || 1331.2<br />
|-<br />
| [7.0.0+] 0x9222000B || 1020.0 || 76.8 || 1600.0<br />
|-<br />
| [7.0.0+] 0x9222000C || 1020.0 || 76.8 || 1331.2<br />
|}<br />
<br />
Clocks are all in MHz.<br />
<br />
Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units.<br />
<br />
= fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9 =<br />
These are "nn::fgm::sf::ISession".<br />
<br />
Each service represents a different priority from 0 to 9. The "fgm" service represents priority 8 (default).<br />
<br />
[2.0.0+] Only "fgm", "fgm:0" and "fgm:9" are now valid.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize]]<br />
|}<br />
<br />
== Initialize ==<br />
No input. Returns an [[#IRequest]].<br />
<br />
== IRequest ==<br />
This is "nn::fgm::sf::IRequest".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || [[#Initialize_2|Initialize]]<br />
|-<br />
| 1 || [[#Set|Set]]<br />
|-<br />
| 2 || [[#Get|Get]]<br />
|-<br />
| 3 || [[#Cancel|Cancel]]<br />
|}<br />
<br />
=== Initialize ===<br />
Takes a PID-descriptor, a [[#Module]] and an u64. Returns an Event handle with EventClearMode 0.<br />
<br />
=== Set ===<br />
Takes 2 u32s '''ClockMinRate''' and '''ClockMaxRate'''. No output.<br />
<br />
=== Get ===<br />
No input. Returns an u32 '''ClockRate'''.<br />
<br />
=== Cancel ===<br />
No input/output.<br />
<br />
= fgm:dbg =<br />
This is "nn::fgm::sf::IDebugger".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || Initialize<br />
|-<br />
| 1 || Read<br />
|-<br />
| 2 || Cancel<br />
|}<br />
<br />
= lbl =<br />
This is "nn::lbl::detail::ILblController". This was moved from [[Backlight_services|lbl]] with [10.0.0+].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Cmd || Name<br />
|-<br />
| 0 || SaveCurrentSetting<br />
|-<br />
| 1 || LoadCurrentSetting<br />
|-<br />
| 2 || SetCurrentBrightnessSetting<br />
|-<br />
| 3 || GetCurrentBrightnessSetting<br />
|-<br />
| 4 || ApplyCurrentBrightnessSettingToBacklight<br />
|-<br />
| 5 || GetBrightnessSettingAppliedToBacklight<br />
|-<br />
| 6 || SwitchBacklightOn<br />
|-<br />
| 7 || SwitchBacklightOff<br />
|-<br />
| 8 || GetBacklightSwitchStatus<br />
|-<br />
| 9 || EnableDimming<br />
|-<br />
| 10 || DisableDimming<br />
|-<br />
| 11 || IsDimmingEnabled<br />
|-<br />
| 12 || EnableAutoBrightnessControl<br />
|-<br />
| 13 || DisableAutoBrightnessControl<br />
|-<br />
| 14 || IsAutoBrightnessControlEnabled<br />
|-<br />
| 15 || SetAmbientLightSensorValue<br />
|-<br />
| 16 || [[#GetAmbientLightSensorValue]]<br />
|-<br />
| 17 || SetBrightnessReflectionDelayLevel<br />
|-<br />
| 18 || GetBrightnessReflectionDelayLevel<br />
|-<br />
| 19 || SetCurrentBrightnessMapping<br />
|-<br />
| 20 || GetCurrentBrightnessMapping<br />
|-<br />
| 21 || SetCurrentAmbientLightSensorMapping<br />
|-<br />
| 22 || GetCurrentAmbientLightSensorMapping<br />
|-<br />
| 23 || [3.0.0+] IsAmbientLightSensorAvailable<br />
|-<br />
| 24 || [3.0.0+] SetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 25 || [3.0.0+] GetCurrentBrightnessSettingForVrMode<br />
|-<br />
| 26 || [3.0.0+] [[#EnableVrMode]]<br />
|-<br />
| 27 || [3.0.0+] [[#DisableVrMode]]<br />
|-<br />
| 28 || [3.0.0+] [[#IsVrModeEnabled]]<br />
|-<br />
| 29 || [7.0.0+] IsAutoBrightnessControlSupported<br />
|}<br />
<br />
== Ambient Light Sensor Notes ==<br />
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).<br />
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.<br />
The sensor is fully configurable.<br />
<br />
== GetAmbientLightSensorValue ==<br />
No input. Before 5.x, outputs lux in float. (5.0.0+) Returns an output struct:<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset || Size || Description<br />
|-<br />
| 0x0 || 0x4 || bOverLimit. (u32) Equals to 1 if visible or IR light data is over 65534.<br />
|-<br />
| 0x4 || 0x4 || fLux. (float) Value in lux from the ambient light sensor.<br />
|}<br />
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.<br />
<br />
== GetCurrentBrightnessSetting ==<br />
No input. Returns an output u32 int of the current backlight level.<br />
<br />
== GetBrightnessSettingAppliedToBacklight ==<br />
No input. Returns an output u32 int of the backlight level computed from the ambient light sensor. <br />
<br />
== IsAutoBrightnessControlEnabled ==<br />
No input. Returns an output u8 bool indicating whether auto brightness is enabled. <br />
<br />
== EnableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets a global state field to 0x1.<br />
<br />
== DisableVrMode ==<br />
No input/output. Used by [[AM_services#SetVrModeEnabled]].<br />
<br />
Sets the global state field used by [[#EnableVrMode]] to 0x0.<br />
<br />
== IsVrModeEnabled ==<br />
No input. Returns an output u8 bool set by the above commands.<br />
<br />
= Module =<br />
This is "nn::fgm::Module".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Name || Block<br />
|-<br />
| 0 || CPU<br />
|-<br />
| 1 || GPU<br />
|-<br />
| 2 || EMC<br />
|-<br />
| 3 || SCLK<br />
|-<br />
| 4 || MSELECT<br />
|-<br />
| 5 || NVDEC<br />
|-<br />
| 6 || NVENC<br />
|-<br />
| 7 || NVJPG<br />
|}<br />
<br />
= Settings =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Key || Size || Notes<br />
|-<br />
| background_download_stress_testing_storage || strlen || "sdcard", "builtin", "system".<br />
|-<br />
| battery_draining_enabled || 1 || ?<br />
|-<br />
| fs_access_log_mode || strlen || "log", "sdcard", "log+sdcard", "off".<br />
|-<br />
| fs_speed_emulation_mode || strlen || "faster", "slower", "random", "off".<br />
|-<br />
| host_romfs_redirection_target || strlen || "builtin", "off".<br />
|-<br />
| idle_time_detect_mode || strlen || "on", "off".<br />
|-<br />
| initial_tick_value || strlen || "7days", "14days", "30days", "90days", "hex": ?.<br />
|-<br />
| memory_mode || strlen || "auto", "4GB", "6GB".<br />
|-<br />
| needs_update_vulnerability_policy || strlen || "default": ?, "force_true": ?, "force_false": ?.<br />
|-<br />
| operation_mode_policy || strlen || "auto": ?, "handheld", "console".<br />
|-<br />
| performance_mode_policy || strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (SDEV only).<br />
|-<br />
| screenshot_target || strlen || "screenshot": ?, "physical": ?.<br />
|-<br />
| sdev_cpu_overclock_enabled || 1 || SDEV only. Used to allow access to 1224MHz CPU mode.<br />
|-<br />
| sdev_throttling_additional_delay_us || 4 || SDEV only.<br />
|-<br />
| sdev_throttling_additional_delay_enabled || 1 || SDEV only.<br />
|-<br />
| sleep_mode || strlen || "default": ?, "pseudo": ?.<br />
|-<br />
| throttling_for_smpd_enabled || 1 || Not used as of 3.0.<br />
|-<br />
| throttling_for_undock_enabled || 1 || Not used as of 3.0.<br />
|}<br />
<br />
[[Category:Services]]</div>
Masagrator