Services API

From Nintendo Switch Brew
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Services 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 inter-process communication (each service has a name up to 8 characters).

Handles for services are retrieved from the service manager port, "sm:", and are released via svcCloseHandle or when a process is terminated or crashes. Manager service "sm:m" also exists. Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a SVC. Services are also able to limit the number of handles given to other processes.

sm:

This is "nn::sm::detail::IUserInterface".

Cmd Name
0 #Initialize
1 #GetService
2 #RegisterService
3 #UnregisterService

Initialize

Takes a pid descriptor and a reserved input u64.

GetService

Takes a zero-padded service name encoded as an u64 integer. Returns a handle.

RegisterService

Takes a zero-padded service name encoded as an u64 integer, an u8 bool is_light, and a s32 max_sessions at the next word. Returns a handle.

UnregisterService

Takes a zero-padded service name encoded as an u64 integer.

sm:m

This is "nn::sm::detail::IManagerInterface".

Cmd Name
0 #RegisterProcess
1 #UnregisterProcess

RegisterProcess

Takes a pid and two A descriptors with the ACID and ACI0 service lists. That data originates from NPDM.

UnregisterProcess

Takes a pid.

Service List

Service names Description Notes
acc:u0, acc:u1, acc:aa, acc:su, [5.0.0+] dauth:0 Account services u0: System, u1: User, su: Admin, aa: Baas
[1.0.0-8.1.0] ahid:cd, [1.0.0-8.1.0] ahid:hdr, hid, hid:dbg, hid:sys, irs, irs:sys, xcd:sys, [3.0.0-7.0.1] hid:tmp, [5.0.0+] hidbus HID services
appletAE, appletOE, idle:sys, omm, spsm, [5.0.0+] tcap, [6.0.0+] caps:su, [8.0.0+] apm Applet Manager services
[1.0.0-2.3.0] aoc:u, mii:u, mii:e, ns:am, ns:su, ns:dev, pl:u, ovln:rcv, ovln:snd, pdm:ntfy, pdm:qry

[3.0.0+] aoc:u, ns:am2, ns:dev, ns:ec, ns:rid, ns:rt, ns:su, ns:vm, ns:web, [1.0.0-7.0.1] ovln:rcv, [1.0.0-7.0.1] ovln:snd

NS Services am: Application Manager, su: System Update
[1.0.0-8.1.0] apm:dbg, [1.0.0-8.1.0] apm:sys, [1.0.0] fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, [1.0.0-8.1.0] fgm, [1.0.0-8.1.0] fgm:0, [1.0.0-8.1.0] fgm:9, [1.0.0-8.1.0] fgm:dbg, [1.0.0-7.0.1] apm, [1.0.0-7.0.1] apm:p, [8.0.0-8.1.0] apm:am PPC services
arp:r, arp:w, [2.0.0+] bgtc:t, [2.0.0+] bgtc:sc, [9.0.0+] time:a, [9.0.0+] time:r, [9.0.0+] time:u, [9.0.0+] notif:a, [9.0.0+] notif:s Glue services
audin:a, audin:d, audin:u, audout:a, audout:d, audout:u, audren:a, audren:d, audren:u, audrec:a, audrec:d, audrec:u, audctl, [1.0.0-2.3.0] codecctl, hwopus, auddebug, [6.0.0+] auddev Audio services
banana Profiler services Not currently available on retail units.
[2.0.0+] bcat:a, [2.0.0+] bcat:u, [2.0.0+] bcat:m, [2.0.0+] bcat:s, news:a, news:c, news:m, news:p, news:v, prepo:u, prepo:s, prepo:m, [1.0.0-5.1.0] prepo:a, [1.0.0] prepo:d, [6.0.0+] prepo:a2 BCAT services
[1.0.0] bpc:c, bpc:b, bpc:r, bpc:w, pcv, pcv:arb, pcv:imm, time:u, time:a, time:s

[2.0.0+] bpc, bpc:r, pcv, [2.0.0-8.1.0] time:u, [2.0.0-8.1.0] time:a, [2.0.0-8.1.0] time:s, [1.0.0-7.0.1] pcv:arb, [1.0.0-7.0.1] pcv:imm, [8.0.0+] clkrst, [8.0.0+] clkrst:a, [8.0.0+] clkrst:i, [8.0.0+] rgltr, [8.0.0+] rtc

PCV services
bsd:u, bsd:s, bsdcfg, ethc:c, ethc:i, nsd:u, nsd:a, sfdnsres Sockets services
btdrv, [5.0.0+] bt Bluetooth Driver services
btm, btm:dbg, btm:sys, [5.0.0+] btm:u BTM services
caps:a, caps:c, [1.0.0] mm:u, [5.0.0+] caps:u Capture services a: AlbumAccessor, c: AlbumControl
[2.0.0+] caps:sc, [2.0.0+] caps:ss, vi:m, vi:s, vi:u, cec-mgr, [2.0.0+] mm:u, [3.0.0-5.1.0] caps:su Display services
dispdrv Nvnflinger services
dmnt:- Debug Monitor services Not currently available on retail units.
erpt:c, erpt:r Error Report services
eupld:c, eupld:r Error Upload services
es ETicket services
fan, psm, tc, ts, pcm, [9.0.0+] apm:sys, [9.0.0+] fgm, [9.0.0+] fgm:0, [9.0.0+] fgm:9, [9.0.0+] fgm:dbg, [9.0.0+] apm:am PTM services pcm is not available on retail units.
fatal:u, fatal:p Fatal services
friend:u, friend:v, friend:m, friend:s, friend:a, [5.0.0-6.0.0] nd:app, [5.0.0-6.0.0] nd:sys Friend services
fsp-srv, fsp-ldr, fsp-pr Filesystem services srv: Main, ldr: Loader, pr: Program Registry
gpio, i2c, i2c:pcv, pinmux, pwm, uart, [3.0.0+] sasbus, [8.1.1+] led Bus services
htc, htcs, htc:tenv, file_io, gds, tma_log, tmagent TMA services
jit:u JIT services Not currently available on retail units.
lbl Backlight services
ldn:m, ldn:s, ldn:u, [5.0.0-6.0.0] ndd, [9.0.0+] lp2p:app, [9.0.0+] lp2p:sys, [9.1.0+] lp2p:m LDN services
[1.0.0+] ldr:pm, ldr:ro, ldr:shel, ldr:dmnt

[3.0.0+] ldr:pm, ldr:shel, ldr:dmnt

Loader services
lm, lm:get Log services
manu Manu Services "Manufacturing", present in factory firmware but not installed on retail systems.
lr, ncm, ncm:v NCM services
nfc:am, nfc:mf:u, nfc:user, nfc:sys, nfp:user, nfp:dbg, nfp:sys NFC services
nifm:u, nifm:a, nifm:s Network Interface services
nim, nim:shp, ntc, [5.0.0+] nim:eca, [7.0.0+] nim:ecas NIM services
npns:u, npns:s NPNS services
nvdrv:a, nvdrv:s, nvdrv:t, nvdrv, nvdrvdbg, nvgem:c, nvgem:cd, nvmemp NV services
pcie, [6.0.0+] pcie:log PCIe services
pctl, pctl:a, pctl:s, pctl:r Parental Control services
pm:bm, pm:info, pm:shell Process Manager services
psc:c, psc:m, [5.0.0+] srepo:u, [5.0.0+] srepo:a, [8.0.0+] ovln:rcv, [8.0.0+] ovln:snd, [9.0.0+] psc:l, [9.0.0+] time:su, [9.0.0+] time:s, [9.0.0+] time:al, [9.0.0+] time:m, [9.0.0+] time:p, [9.0.0+] ins:r, [9.0.0+] ins:s PSC services
[3.0.0+] ldr:ro, ro:dmnt, [7.0.0+] ro:1 RO services
set, set:fd, set:cal, set:sys Settings services cal: calibration, sys: System Settings
[3.0.0+] mii:u, [3.0.0+] mii:e, [3.0.0+] pdm:ntfy, [3.0.0+] pdm:qry, [3.0.0+] pl:u, [5.0.0+] miiimg, [6.0.0+] avm, [9.0.0+] pl:s Shared Database services
ssl SSL services
csrng, spl:, [4.0.0+] spl:mig, [4.0.0+] spl:fs, [4.0.0+] spl:ssl, [4.0.0+] spl:es, [5.0.0+] spl:manu SPL services
sf-uds ? System debug applet "recovery" has access to this service, but it doesn't appear to exist.
tspm ? Applications on [1.0.0] used to have access to this service, but it doesn't appear to be present on retail devices.
usb:ds, usb:hs, usb:pd, usb:pd:c, [1.0.0] usb:pd:m, usb:pm, [7.0.0+] usb:hs:a, [7.0.0+] usb:qdb, [8.0.0+] usb:obsv USB services
wlan:inf, wlan:lcl, wlan:lg, wlan:lga, wlan:sg, wlan:soc, [6.0.0+] wlan:dtc WLAN services
[4.0.0+] grc:c, [6.0.0+] grc:d GRC services
[4.0.0+] mig:usr Migration services
[4.0.0+] caps:dc Jpegdec services
[6.0.0+] olsc:s OLSC services
[9.0.0+] ngct:s, [9.0.0+] ngct:u NGCT services