Capmtp services

From Nintendo Switch Brew
Revision as of 18:46, 7 December 2020 by Yellows8 (talk | contribs) (→‎Notes)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This implements the MTP PTP protocol. This was added with 11.0.0.


This is "nn::capmtp::ICapmtpRootSession".

Cmd Name Notes
0 No input. Returns a session of #ICapmtpInterface


This is "nn::capmtp::ICapmtpInterface".

Cmd Name Notes
0 Takes a u32 max folder count, a u32 max image count, a u32 max video count, a transfer memory handle + u32 size and a type-0x5 buffer translated "Other" utf-16 string.
1 No input or output. Unmaps transfer memory from Cmd0, stops "nn.capmtp.CapmtpCommandLoop".
2 No input or output. Starts MTP command handler thread "nn.capmtp.CapmtpCommandLoop".
3 No input or output. Stops "nn.capmtp.CapmtpCommandLoop".
4 No input. Returns true if "nn.capmtp.CapmtpCommandLoop" is running.
5 No input. Returns readable event handle. Signaled when the USB connection status changes.
6 No input. Returns true if a USB connection is established.
7 No input. Returns readable event handle. Signaled when an error occurred during album scan.
8 No input or output. Returns the album scan Result.


Only PTP operations 0x1001-0x100A are available.

  • OpenSession/CloseSession only allow a maximum of 1 session to be opened.
  • DeviceInfo: Serial Number is set to the output from GetSerialNumber. Device Version is set to the SystemVersion DisplayVersion.

While this has access to fsp-srv it remains unused. Images and Videos are loaded with caps:a.

Program names are loaded with ns using the transfer memory from Cmd0.