Difference between revisions of "Services API"

From 3dbrew
Jump to navigation Jump to search
m (Replace service links with new Template:Service)
 
(38 intermediate revisions by 14 users not shown)
Line 1: Line 1:
Nintendo provides application developers with an API, which behind the scenes communicate with certain services. Services in this sense are system processes running in the background which wait for incoming requests. When a process wants to communicate with a service, it first needs to get a handle to the named service, and then it can communicate with the service via interprocess communication. Each service has a name up to 8 characters, for example "nim:u".
+
Nintendo provides application developers with an API, which communicate with certain services. Services, in this sense, are [[Title_list#00040130_-_System_Modules|system processes running in the background]] which wait for incoming requests. When a process wants to communicate with a service, it first needs to get a handle to the named service, and then it can communicate with the service via interprocess communication. Each service has a name up to 8 characters, for example {{Service|nim:u}}.
  
Handles for services are retrieved from the service manager port, "srv:". Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a SVC.
+
Handles for services are retrieved from the [[Services|service manager port]], <code>srv:</code>. Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a SVC.
  
 
For a description of how commands and arguments are passed to services, see [[IPC Command Structure]].
 
For a description of how commands and arguments are passed to services, see [[IPC Command Structure]].
  
List of services:
+
List of services (grouped by the process which provides them):
* [[Filesystem services‎]]
+
{| class="wikitable" border="1"
* [[Process Services‎]]
+
|-
* [[PXI Services‎]]
+
!  Old3ds
* [[Application Manager Services]]
+
!  Services
* [[Process Manager Services]]
+
!  Service names
* [[NIM Services]]
+
! scope="col" width="200" |  Notes
* [[Config Services]]
+
|-
* [[NS|NS and APT Services]]
+
| style="background: green" | Yes
* [[RO Services]]
+
| [[Filesystem services‎]]
* [[NDM Services]]
+
| {{Service|fs:USER}}, {{Service|fs:LDR}}, {{Service|fs:REG}}
* [[CSND Services]]
+
| USER: normal applications and system modules, LDR: loader, REG: register
* [[DSP Services]]
+
|-
* [[GSP Services]]
+
| style="background: green" | Yes
* [[IR Services]]
+
| [[Process Services‎]]
* [[I2C Services]]
+
| {{Service|ps:ps}}
* [[HID Services]]
+
|
* [[PTM|PTM Services]]
+
|-
* [[NWM Services]]
+
| style="background: green" | Yes
* [[HTTP Services]]
+
| [[PXI Services‎]]
* [[SSL Services]]
+
| {{Service|PxiFS0}}, {{Service|PxiFS1}}, {{Service|PxiFSB}}, {{Service|PxiFSR}}, {{Service|PxiPM}}, {{Service|pxi:am9}}, {{Service|pxi:dev}}, {{Service|pxi:mc}}, {{Service|pxi:ps9}}
* [[Socket Services]]
+
|
* [[AC Services]]
+
|-
* [[Friend Services]]
+
| style="background: green" | Yes
* [[PDN Services]]
+
| [[Application Manager Services]]
* [[SPI Services]]
+
| {{Service|am:app}}, {{Service|am:net}}, {{Service|am:u}}, {{Service|am:sys}}, {{Service|am:pipe}}
* [[Loader Services]]
+
| app: am for applications, net: network installation ([[NIM_Services|nim]]), u: local installation, sys: am for system titles, pipe: not an actual port (internally used to represent the [[Application_Manager_Services#File_service|FSFile-like interface]])
* [[MCU Services]]
+
|-
* [[MIC Services]]
+
| style="background: green" | Yes
 +
| [[Process Manager Services]]
 +
| {{Service|pm:app}}, {{Service|pm:dbg}}
 +
| app: launching titles, dbg: launching titles with debugging enabled
 +
|-
 +
| style="background: green" | Yes
 +
| [[NIM Services]]
 +
| {{Service|nim:aoc}}, {{Service|nim:ndm}}, {{Service|nim:s}}, {{Service|nim:u}}
 +
| aoc: DLC, ndm: for [[NDM Services|ndm]], s: for eShop, u: for updater
 +
|-
 +
| style="background: green" | Yes
 +
| [[Config Services]]
 +
| {{Service|cfg:u}}, {{Service|cfg:s}}, {{Service|cfg:i}}, {{Service|cfg:nor}}
 +
| u: for user, s: for system, i: for initialization/formatting, nor: accesses wifi SPI flash
 +
|-
 +
| style="background: green" | Yes
 +
| [[NS|NS and APT Services]]
 +
| {{Service|ns:s}}, {{Service|ns:p}}, {{Service|ns:c}}, {{Service|APT:A}}, {{Service|APT:S}}, {{Service|APT:U}}
 +
| ns:s: for system, ns:p: power (shutdown/reboot), ns:c: ?, APT:A: application, APT:S: system, APT:U: user
 +
|-
 +
| style="background: green" | Yes
 +
| [[RO Services]]
 +
| {{Service|ldr:ro}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[NDM Services]]
 +
| {{Service|ndm:u}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[CSND Services]]
 +
| {{Service|csnd:SND}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[Camera Services]]
 +
| {{Service|cam:u}}, {{Service|y2r:u}}, {{Service|cam:s}}, {{Service|cam:c}}, {{Service|cam:q}} (New3DS only)
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[Codec Services]]
 +
| {{Service|cdc:HID}}, {{Service|cdc:MIC}}, {{Service|cdc:CSN}}, {{Service|cdc:DSP}}, {{Service|cdc:LGY}}, {{Service|cdc:CHK}}
 +
| HID: human interface device, MIC: microphone, CSN: for [[CSND_Services|csnd]]?, DSP: for [[DSP_Services|dsp]]?, LGY: legacy (some kind of backwards compat?), CHK: ?
 +
|-
 +
| style="background: green" | Yes
 +
| [[DLP Services]]
 +
| {{Service|dlp:CLNT}}, {{Service|dlp:FKCL}}, {{Service|dlp:SRVR}}
 +
| CLNT: client, FKCL: fake client, SRVR: server
 +
|-
 +
| style="background: green" | Yes
 +
| [[DSP Services]]
 +
| {{Service|dsp::DSP}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[GSP Services]]
 +
| {{Service|gsp::Lcd}}, {{Service|gsp::Gpu}}
 +
| Lcd: LCD control, Gpu: GPU control
 +
|-
 +
| style="background: green" | Yes
 +
| [[BOSS Services]]
 +
| {{Service|boss:U}}, {{Service|boss:P}}, {{Service|boss:M}}
 +
| U: user, P: privileged, M: for [[NDM Services|ndm]]
 +
|-
 +
| style="background: green" | Yes
 +
| [[CECD Services]]
 +
| {{Service|cecd:u}}, {{Service|cecd:s}}, {{Service|cecd:ndm}}
 +
| u: user, s: system, ndm: for [[NDM Services|ndm]]
 +
|-
 +
| style="background: green" | Yes
 +
| [[IR Services]]
 +
| {{Service|ir:u}}, {{Service|ir:USER}}, {{Service|ir:rst}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[I2C Services]]
 +
| {{Service|i2c::MCU}}, {{Service|i2c::CAM}}, {{Service|i2c::LCD}}, {{Service|i2c::DEB}}, {{Service|i2c::HID}}, {{Service|i2c::IR}}, {{Service|i2c::EEP}}, {{Service|i2c::NFC}}, {{Service|i2c::QTM}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[GPIO Services]]
 +
| {{Service|gpio:CDC}}, {{Service|gpio:MCU}}, {{Service|gpio:HID}}, {{Service|gpio:NWM}}, {{Service|gpio:IR}}, {{Service|gpio:NFC}}, {{Service|gpio:QTM}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[HID Services]]
 +
| {{Service|hid:NFC}}, {{Service|hid:QTM}}, {{Service|hid:SPVR}}, {{Service|hid:USER}}
 +
| NFC: near-field communication (amiibo), QTM: head tracking device (related to [[QTM_Services|QTM Services]])?, SPVR: system privileged?
 +
|-
 +
| style="background: green" | Yes
 +
| [[PTM Services]]
 +
| {{Service|ptm:gets}}, {{Service|ptm:play}}, {{Service|ptm:s}}, {{Service|ptm:sets}}, {{Service|ptm:sysm}}, {{Service|ptm:u}}
 +
| gets: get system time, play: play history, s: system, sets: set system time, sysm: system menu (homemenu/testmenu), u: user
 +
|-
 +
| style="background: green" | Yes
 +
| [[NWM Services]]
 +
| {{Service|nwm::CEC}}, {{Service|nwm::EXT}}, {{Service|nwm::INF}}, {{Service|nwm::SAP}}, {{Service|nwm::SOC}}, {{Service|nwm::TST}}, {{Service|nwm::UDS}}
 +
| CEC: streetpass, EXT: ?, INF: infrastructure, SAP: ?, SOC: socket, UDS: local WLAN, TST: ?
 +
|-
 +
| style="background: green" | Yes
 +
| [[HTTP Services]]
 +
| {{Service|http:C}}
 +
| C: connection
 +
|-
 +
| style="background: green" | Yes
 +
| [[SSL Services]]
 +
| {{Service|ssl:C}}
 +
| C: connection
 +
|-
 +
| style="background: green" | Yes
 +
| [[Socket Services]]
 +
| {{Service|soc:P}}, {{Service|soc:U}}
 +
| P: privileged, U: user
 +
|-
 +
| style="background: green" | Yes
 +
| [[AC Services]]
 +
| {{Service|ac:i}}, {{Service|ac:u}}
 +
| i: internal, u: user
 +
|-
 +
| style="background: green" | Yes
 +
| [[Friend Services]]
 +
| {{Service|frd:a}}, {{Service|frd:n}}, {{Service|frd:u}}
 +
| a: admin, n: for [[NDM Services|ndm]], u: user
 +
|-
 +
| style="background: green" | Yes
 +
| [[News Services]]
 +
| {{Service|news:s}}, {{Service|news:u}}
 +
| s: system, u:user
 +
|-
 +
| style="background: green" | Yes
 +
| [[PDN Services]]
 +
| {{Service|pdn:s}}, {{Service|pdn:d}}, {{Service|pdn:i}}, {{Service|pdn:g}}, {{Service|pdn:c}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[SPI Services]]
 +
| {{Service|SPI::NOR}}, {{Service|SPI::CD2}}, {{Service|SPI::CS2}}, {{Service|SPI::CS3}}, {{Service|SPI::DEF}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[Loader Services]]
 +
| {{Service|Loader}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[MCU Services]]
 +
| {{Service|mcu::CAM}}, {{Service|mcu::GPU}}, {{Service|mcu::HID}}, {{Service|mcu::RTC}}, {{Service|mcu::SND}}, {{Service|mcu::NWM}}, {{Service|mcu::HWC}}, {{Service|mcu::PLS}}, {{Service|mcu::CDC}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[MIC Services]]
 +
| {{Service|mic:u}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[ACT Services]]
 +
| {{Service|act:a}}, {{Service|act:u}}
 +
| a: admin, u: user
 +
|-
 +
| style="background: green" | Yes
 +
| [[MP Services]]
 +
| {{Service|mp:u}}
 +
|
 +
|-
 +
| style="background: green" | Yes
 +
| [[NFC Services]]
 +
| {{Service|nfc:dev}}, {{Service|nfc:m}}, {{Service|nfc:p}}, {{Service|nfc:r}}, {{Service|nfc:s}}, {{Service|nfc:u}}
 +
| dev: developer, m: ? p: passthrough?, r: raw?, s: system, u: user
 +
|-
 +
| style="background: red" | No
 +
| [[MVD Services]]
 +
|
 +
|
 +
|-
 +
| style="background: red" | No
 +
| [[QTM Services]]
 +
|
 +
|
 +
|}
  
 
List of PXI services:
 
List of PXI services:

Latest revision as of 13:31, 18 September 2024

Nintendo provides application developers with an API, which communicate with certain services. Services, in this sense, are system processes running in the background which wait for incoming requests. When a process wants to communicate with a service, it first needs to get a handle to the named service, and then it can communicate with the service via interprocess communication. Each service has a name up to 8 characters, for example nim:u.

Handles for services are retrieved from the service manager port, srv:. Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a SVC.

For a description of how commands and arguments are passed to services, see IPC Command Structure.

List of services (grouped by the process which provides them):

Old3ds Services Service names Notes
Yes Filesystem services‎ fs:USER, fs:LDR, fs:REG USER: normal applications and system modules, LDR: loader, REG: register
Yes Process Services‎ ps:ps
Yes PXI Services‎ PxiFS0, PxiFS1, PxiFSB, PxiFSR, PxiPM, pxi:am9, pxi:dev, pxi:mc, pxi:ps9
Yes Application Manager Services am:app, am:net, am:u, am:sys, am:pipe app: am for applications, net: network installation (nim), u: local installation, sys: am for system titles, pipe: not an actual port (internally used to represent the FSFile-like interface)
Yes Process Manager Services pm:app, pm:dbg app: launching titles, dbg: launching titles with debugging enabled
Yes NIM Services nim:aoc, nim:ndm, nim:s, nim:u aoc: DLC, ndm: for ndm, s: for eShop, u: for updater
Yes Config Services cfg:u, cfg:s, cfg:i, cfg:nor u: for user, s: for system, i: for initialization/formatting, nor: accesses wifi SPI flash
Yes NS and APT Services ns:s, ns:p, ns:c, APT:A, APT:S, APT:U ns:s: for system, ns:p: power (shutdown/reboot), ns:c: ?, APT:A: application, APT:S: system, APT:U: user
Yes RO Services ldr:ro
Yes NDM Services ndm:u
Yes CSND Services csnd:SND
Yes Camera Services cam:u, y2r:u, cam:s, cam:c, cam:q (New3DS only)
Yes Codec Services cdc:HID, cdc:MIC, cdc:CSN, cdc:DSP, cdc:LGY, cdc:CHK HID: human interface device, MIC: microphone, CSN: for csnd?, DSP: for dsp?, LGY: legacy (some kind of backwards compat?), CHK: ?
Yes DLP Services dlp:CLNT, dlp:FKCL, dlp:SRVR CLNT: client, FKCL: fake client, SRVR: server
Yes DSP Services dsp::DSP
Yes GSP Services gsp::Lcd, gsp::Gpu Lcd: LCD control, Gpu: GPU control
Yes BOSS Services boss:U, boss:P, boss:M U: user, P: privileged, M: for ndm
Yes CECD Services cecd:u, cecd:s, cecd:ndm u: user, s: system, ndm: for ndm
Yes IR Services ir:u, ir:USER, ir:rst
Yes I2C Services i2c::MCU, i2c::CAM, i2c::LCD, i2c::DEB, i2c::HID, i2c::IR, i2c::EEP, i2c::NFC, i2c::QTM
Yes GPIO Services gpio:CDC, gpio:MCU, gpio:HID, gpio:NWM, gpio:IR, gpio:NFC, gpio:QTM
Yes HID Services hid:NFC, hid:QTM, hid:SPVR, hid:USER NFC: near-field communication (amiibo), QTM: head tracking device (related to QTM Services)?, SPVR: system privileged?
Yes PTM Services ptm:gets, ptm:play, ptm:s, ptm:sets, ptm:sysm, ptm:u gets: get system time, play: play history, s: system, sets: set system time, sysm: system menu (homemenu/testmenu), u: user
Yes NWM Services nwm::CEC, nwm::EXT, nwm::INF, nwm::SAP, nwm::SOC, nwm::TST, nwm::UDS CEC: streetpass, EXT: ?, INF: infrastructure, SAP: ?, SOC: socket, UDS: local WLAN, TST: ?
Yes HTTP Services http:C C: connection
Yes SSL Services ssl:C C: connection
Yes Socket Services soc:P, soc:U P: privileged, U: user
Yes AC Services ac:i, ac:u i: internal, u: user
Yes Friend Services frd:a, frd:n, frd:u a: admin, n: for ndm, u: user
Yes News Services news:s, news:u s: system, u:user
Yes PDN Services pdn:s, pdn:d, pdn:i, pdn:g, pdn:c
Yes SPI Services SPI::NOR, SPI::CD2, SPI::CS2, SPI::CS3, SPI::DEF
Yes Loader Services Loader
Yes MCU Services mcu::CAM, mcu::GPU, mcu::HID, mcu::RTC, mcu::SND, mcu::NWM, mcu::HWC, mcu::PLS, mcu::CDC
Yes MIC Services mic:u
Yes ACT Services act:a, act:u a: admin, u: user
Yes MP Services mp:u
Yes NFC Services nfc:dev, nfc:m, nfc:p, nfc:r, nfc:s, nfc:u dev: developer, m: ? p: passthrough?, r: raw?, s: system, u: user
No MVD Services
No QTM Services

List of PXI services:

List of ports:


See Error codes.