Filesystem service "fs:USER"
| Command Header
 | 
Description
 | 
Required exheader accessinfo bitmask
 | 
| 0x000100C6
 | 
Dummy1
 | 
None
 | 
| 0x040100C4
 | 
Control
 | 
None
 | 
| 0x08010002
 | 
Initialize
 | 
None
 | 
| 0x080201C2
 | 
OpenFile
 | 
None
 | 
| 0x08030204
 | 
OpenFileDirectly
 | 
None
 | 
| 0x08040142
 | 
DeleteFile
 | 
None
 | 
| 0x08050244
 | 
RenameFile
 | 
None
 | 
| 0x08060142
 | 
DeleteDirectory
 | 
None
 | 
| 0x08070142
 | 
DeleteDirectoryRecursively
 | 
None
 | 
| 0x08080202
 | 
CreateFile
 | 
None
 | 
| 0x08090182
 | 
CreateDirectory
 | 
None
 | 
| 0x080A0244
 | 
RenameDirectory
 | 
None
 | 
| 0x080B0102
 | 
OpenDirectory
 | 
None
 | 
| 0x080C00C2
 | 
OpenArchive
 | 
Each archive idcode has separate accessinfo bitmasks, if any.
 | 
| 0x080D0144
 | 
ControlArchive
 | 
None
 | 
| 0x080E0080
 | 
CloseArchive
 | 
None
 | 
| 0x080F0180
 | 
FormatThisUserSaveData
 | 
None
 | 
| 0x08100200
 | 
CreateSystemSaveData
 | 
0x4, for when the input saveID doesn't match the exheader saveID.
 | 
| 0x08110040
 | 
DeleteSystemSaveData
 | 
0x1004, for when the input saveID doesn't match the exheader saveID.
 | 
| 0x08120080
 | 
GetFreeBytes
 | 
None
 | 
| 0x08130000
 | 
GetCardType
 | 
0x1017
 | 
| 0x08140000
 | 
GetSdmcArchiveResource
 | 
None
 | 
| 0x08150000
 | 
GetNandArchiveResource
 | 
None
 | 
| 0x08160000
 | 
GetSdmcFatfsError
 | 
0x2
 | 
| 0x08170000
 | 
IsSdmcDetected
 | 
None
 | 
| 0x08180000
 | 
IsSdmcWritable
 | 
None
 | 
| 0x08190042
 | 
GetSdmcCid
 | 
0x2
 | 
| 0x081A0042
 | 
GetNandCid
 | 
0x2
 | 
| 0x081B0000
 | 
GetSdmcSpeedInfo
 | 
0x2
 | 
| 0x081C0000
 | 
GetNandSpeedInfo
 | 
0x2
 | 
| 0x081D0042
 | 
GetSdmcLog
 | 
0x2
 | 
| 0x081E0042
 | 
GetNandLog
 | 
0x2
 | 
| 0x081F0000
 | 
ClearSdmcLog
 | 
0x2
 | 
| 0x08200000
 | 
ClearNandLog
 | 
0x2
 | 
| 0x08210000
 | 
CardSlotIsInserted
 | 
0x1017
 | 
| 0x08220000
 | 
CardSlotPowerOn
 | 
0x2
 | 
| 0x08230000
 | 
CardSlotPowerOff
 | 
0x2
 | 
| 0x08240000
 | 
CardSlotGetCardIFPowerStatus
 | 
0x2
 | 
| 0x08250040
 | 
CardNorDirectCommand
 | 
0x2
 | 
| 0x08260080
 | 
CardNorDirectCommandWithAddress
 | 
0x2
 | 
| 0x08270082
 | 
CardNorDirectRead
 | 
0x2
 | 
| 0x082800C2
 | 
CardNorDirectReadWithAddress
 | 
0x2
 | 
| 0x08290082
 | 
CardNorDirectWrite
 | 
0x2
 | 
| 0x082A00C2
 | 
CardNorDirectWriteWithAddress
 | 
0x2
 | 
| 0x082B00C2
 | 
CardNorDirectRead_4xIO
 | 
0x2
 | 
| 0x082C0082
 | 
CardNorDirectCpuWriteWithoutVerify
 | 
0x2
 | 
| 0x082D0040
 | 
CardNorDirectSectorEraseWithoutVerify
 | 
0x2
 | 
| 0x082E0040
 | 
GetProductInfo
 | 
0x1005
 | 
| 0x082F0040
 | 
GetProgramLaunchInfo
 | 
0x1005
 | 
| 0x08300182
 | 
CreateExtSaveData
 | 
0xC, for when the input extdataID doesn't match the exheader extdataID.
 | 
| 0x08310180
 | 
CreateSharedExtSaveData
 | 
0x1005
 | 
| 0x08320102
 | 
ReadExtSaveDataIcon
 | 
0x100D, for when the input extdataID doesn't match the exheader extdataID.
 | 
| 0x08330082
 | 
EnumerateExtSaveData
 | 
0x1005
 | 
| 0x08340082
 | 
EnumerateSharedExtSaveData
 | 
0x1005
 | 
| 0x08350080
 | 
DeleteExtSaveData
 | 
0x100D, for when the input extdataID doesn't match the exheader extdataID.
 | 
| 0x08360080
 | 
DeleteSharedExtSaveData
 | 
0x1005
 | 
| 0x08370040
 | 
SetCardSpiBaudRate
 | 
0x2
 | 
| 0x08380040
 | 
SetCardSpiBusMode
 | 
0x2
 | 
| 0x08390000
 | 
SendInitializeInfoTo9
 | 
None
 | 
| 0x083A0100
 | 
GetSpecialContentIndex
 | 
0x1005
 | 
| 0x083B00C2
 | 
GetLegacyRomHeader
 | 
0x1015
 | 
| 0x083C00C2
 | 
GetLegacyBannerData
 | 
0x1015
 | 
| 0x083D0100
 | 
CheckAuthorityToAccessExtSaveData
 | 
0x44
 | 
| 0x083E00C2
 | 
QueryTotalQuotaSize
 | 
None
 | 
| 0x083F00C0
 | 
GetExtDataBlockSize
 | 
None
 | 
| 0x08400040
 | 
AbnegateAccessRight
 | 
| 0x08410000
 | 
DeleteSdmcRoot
 | 
0x1005
 | 
| 0x08420040
 | 
DeleteAllExtSaveDataOnNand
 | 
0x1005
 | 
| 0x08430000
 | 
InitializeCtrFileSystem
 | 
None
 | 
| 0x08440000
 | 
CreateSeed
 | 
0x2
 | 
| 0x084500C2
 | 
GetFormatInfo
 | 
?
 | 
| 0x08460102
 | 
GetLegacyRomHeader2
 | 
0x1015
 | 
| 0x08470180
 | 
FormatCtrCardUserSaveData
 | 
0x6
 | 
| 0x08480042
 | 
GetSdmcCtrRootPath
 | 
0x100D
 | 
| 0x08490040
 | 
GetArchiveResource
 | 
?
 | 
| 0x084A0002
 | 
ExportIntegrityVerificationSeed
 | 
0x4000
 | 
| 0x084B0002
 | 
ImportIntegrityVerificationSeed
 | 
0x4000
 | 
| 0x084C0242
 | 
FormatSaveData
 | 
0x6, in some cases this right isn't needed however.
 | 
| 0x084D0102
 | 
GetLegacySubBannerData
 | 
0x1015
 | 
| 0x084E0342
 | 
UpdateSha256Context
 | 
0x5
 | 
| 0x084F0102
 | 
ReadSpecialFile
 | 
None
 | 
| 0x08500040
 | 
GetSpecialFileSize
 | 
None
 | 
| 0x08520100
 | 
Unknown (u32 flags, u64 extdataID)
 | 
?
 | 
| 0x08620040
 | 
?
 | 
?
 | 
| 0x08630000
 | 
?
 | 
?
 | 
When access rights are required for a command, at least one of the bits in the process accessinfo specified in the above table for the command must be set. Error 0xD9004676 is returned when a process attempts to use a command which it doesn't have access rights for the command.
File service
| Command Header
 | 
Description
 | 
| 0x000100C6
 | 
Dummy1
 | 
| 0x040100C4
 | 
Control
 | 
| 0x08010100
 | 
OpenSubFile
 | 
| 0x080200C2
 | 
Read
 | 
| 0x08030102
 | 
Write
 | 
| 0x08040000
 | 
GetSize
 | 
| 0x08050080
 | 
SetSize
 | 
| 0x08060000
 | 
GetAttributes
 | 
| 0x08070040
 | 
SetAttributes
 | 
| 0x08080000
 | 
Close
 | 
| 0x08090000
 | 
Flush
 | 
Directory service
| Command Header
 | 
Description
 | 
| 0x000100C6
 | 
Dummy1
 | 
| 0x040100C4
 | 
Control
 | 
| 0x08010042
 | 
Read
 | 
| 0x08020000
 | 
Close
 | 
Filesystem service "fs:LDR"
This service is identical to fs:USER, except FS:OpenArchive archive 0x2345678E can only be accessed with fs:LDR.
ProgramRegistry service "fs:REG"
| Command Header
 | 
Description
 | 
| 0x000100C6
 | 
Dummy1
 | 
| 0x040103C0
 | 
Register
 | 
| 0x04020040
 | 
Unregister
 | 
| 0x040300C0
 | 
GetProgramInfo
 | 
| 0x04040100
 | 
LoadProgram
 | 
| 0x04050080
 | 
UnloadProgram
 | 
| 0x04060080
 | 
CheckHostLoadId
 |