<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://switchbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=GovanifY</id>
	<title>Nintendo Switch Brew - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://switchbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=GovanifY"/>
	<link rel="alternate" type="text/html" href="https://switchbrew.org/wiki/Special:Contributions/GovanifY"/>
	<updated>2026-05-14T20:27:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=HIPC&amp;diff=486</id>
		<title>HIPC</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=HIPC&amp;diff=486"/>
		<updated>2017-05-10T20:44:05Z</updated>

		<summary type="html">&lt;p&gt;GovanifY: This is the whole cmdbuf size otherwise it throws an invalid IPC command error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== IPC Command Structure ==&lt;br /&gt;
This is an array of u32&#039;s.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Word || Bits || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 15-0 || IPC version? Always 4.&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 19-16 || Number of buf X descriptors (each: 2 words).&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 23-20 || Number of buf A descriptors (each: 3 words).&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 27-24 || Number of buf B descriptors (each: 3 words).&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 31-28 || Number of type W desciptors (each: 3 words), never observed.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 9-0 || Total word count (in u32&#039;s).&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 13-10 || If set to 2, enable buf C descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 31 || Enable handle descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| ... || || Handle descriptor, if enabled.&lt;br /&gt;
|-&lt;br /&gt;
| ... || || Buf X descriptors, each one 2 words.&lt;br /&gt;
|-&lt;br /&gt;
| ... || || Buf A descriptors, each one 3 words.&lt;br /&gt;
|-&lt;br /&gt;
| ... || || Buf B descriptors, each one 3 words.&lt;br /&gt;
|-&lt;br /&gt;
| ... || || Type W descriptors, each one 3 words.&lt;br /&gt;
|-&lt;br /&gt;
| ... || || Padding&lt;br /&gt;
|-&lt;br /&gt;
| ... || || Raw data&lt;br /&gt;
|-&lt;br /&gt;
| ... || || Buf C descriptors, each one 2 words.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Handle descriptor ===&lt;br /&gt;
There can only be one of this descriptor type. It is enabled by bit31 of the second word.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Word || Bits || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || Send current PID.&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 4-1 || Number of handles.&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 8-5 || Number of B-words for this special descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| ... || || Handles&lt;br /&gt;
|-&lt;br /&gt;
| ... || || B-words, purpose unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buffer descriptor A/B ===&lt;br /&gt;
This packing is so unnecessarily complex.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Word || Bits || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || || Lower 32-bits of size.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || || Lower 32-bits of address.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1-0 || Always set to 1 or 3. R/RW.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 4-2 || Bit 38-36 of address.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 27-24 || Bit 35-32 of size.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 31-28 || Bit 35-32 of address.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buffer descriptor C ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Word || Bits || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || || Lower 32-bits of address.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 15-0 || Rest of address.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 31-16 || Size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buffer descriptor X ===&lt;br /&gt;
This one is packed even worse than A, they inserted the bit38-36 of the address &#039;&#039;on top&#039;&#039; of the counter field.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Word || Bits || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 5-0 || Bits 5-0 of counter.&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 8-6 || Bit 38-36 of address.&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 11-9 || Bits 11-9 of counter.&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 15-12 || Bit 35-32 of address.&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 31-16 || Size&lt;br /&gt;
|-&lt;br /&gt;
| 1 || || Lower 32-bits of address.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Raw data portion ==&lt;br /&gt;
This is an array of u64&#039;s. It&#039;s always aligned to 16 so sometimes there is padding words before it.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Word || Description&lt;br /&gt;
|-&lt;br /&gt;
| ... || Pid is written here if enabled.&lt;br /&gt;
|-&lt;br /&gt;
| +0 || Magic (&amp;quot;SFCI&amp;quot; for requests, &amp;quot;SFCO&amp;quot; for responses)&lt;br /&gt;
|-&lt;br /&gt;
| +1 || Cmd id&lt;br /&gt;
|-&lt;br /&gt;
| ... || Rest of raw data.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Official marshalling code ==&lt;br /&gt;
The official marshalling function takes an array of (buf_ptr, size) pairs and a type-field for each such pair.&lt;br /&gt;
&lt;br /&gt;
Bitmask 0x10 seems to indicate null-terminated strings, but that flag is ignored by the marshalling code.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type Mask || Description&lt;br /&gt;
|-&lt;br /&gt;
| 4 + 1 || Creates an A descriptor&lt;br /&gt;
|-&lt;br /&gt;
| 4 + 2 || Creates a B descriptor&lt;br /&gt;
|-&lt;br /&gt;
| 8 + 1 || Creates an X descriptor&lt;br /&gt;
|-&lt;br /&gt;
| 8 + 2 || Creates a C descriptor&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 + 1 || Creates both an A and X descriptor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || Output-buf, copy?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>GovanifY</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=Services_API&amp;diff=485</id>
		<title>Services API</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=Services_API&amp;diff=485"/>
		<updated>2017-05-10T10:48:26Z</updated>

		<summary type="html">&lt;p&gt;GovanifY: (strings binary | grep  SCFI) == false, SFCI == true&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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).&lt;br /&gt;
&lt;br /&gt;
Handles for services are retrieved from the service manager port, &amp;quot;sm:&amp;quot;. Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a SVC.&lt;br /&gt;
&lt;br /&gt;
= sm: =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || [[#Initialize]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[#GetService]]&lt;br /&gt;
|-&lt;br /&gt;
| 2 || [[#RegisterService]]&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Initialize ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Word || Value&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0x00000004&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0x8000000A&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 0x00000001&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0-1 || Pid&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0 || &amp;quot;SFCI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Always 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== GetService ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Word || Value&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0x00000004&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0x0000000A&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0 || &amp;quot;SFCI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0x00000001&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Service name, zero padded and casted to u64.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RegisterService ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Word || Value&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0x00000004&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0x0000000C&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0 || &amp;quot;SFCI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0x00000002&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Service name, zero padded and casted to u64.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Max sessions? 32-bit integer.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Unknown bool&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Service List =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Service names&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; | Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
| acc:u1, acc:su&lt;br /&gt;
| [[Account services]]&lt;br /&gt;
| u1: for user 1?&lt;br /&gt;
|-&lt;br /&gt;
| appletAE&lt;br /&gt;
| Applet Accessor services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| aoc:u&lt;br /&gt;
| AddOn Content services &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| audren:u&lt;br /&gt;
| Audio Renderer services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| audout:u&lt;br /&gt;
| Audio Out services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| bgtc:t, bgtc:sc&lt;br /&gt;
| Task services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| bsd:u, bsd:s&lt;br /&gt;
| Sockets services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| caps:a, caps:c, caps:ss&lt;br /&gt;
| Capture services&lt;br /&gt;
| a: Album, ss: Screenshot&lt;br /&gt;
|-&lt;br /&gt;
| fatal:u&lt;br /&gt;
| Fatal Error services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| friend:u, friend:v, friend:m, friend:s, friend:a&lt;br /&gt;
| Friend services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| fsp-srv&lt;br /&gt;
| [[Filesystem services]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| hid, hid:dbg, hid:sys&lt;br /&gt;
| [[HID services]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ldn:m&lt;br /&gt;
| [[Local Network Monitor services]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ldr:ro, ldr:shel&lt;br /&gt;
| [[Loader services]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| lm&lt;br /&gt;
| Log services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| lr&lt;br /&gt;
| ?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| erpt:c&lt;br /&gt;
| ERPT(?) services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mii:u, mii:e&lt;br /&gt;
| Mii services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nifm:u, nifm:a, nifm:s&lt;br /&gt;
| Network Interface services&lt;br /&gt;
| u: User, a: Applet, s: System&lt;br /&gt;
|-&lt;br /&gt;
| nim:shp&lt;br /&gt;
| NIM services&lt;br /&gt;
| shp: eShop&lt;br /&gt;
|-&lt;br /&gt;
| ns:am, ns:su, ns:dev&lt;br /&gt;
| [[NS Services]]&lt;br /&gt;
| am: Application Manager, su: System Update&lt;br /&gt;
|-&lt;br /&gt;
| nsd:u, nsd:a&lt;br /&gt;
| [[NSD services]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nvdrv:a, nvmemp, mm:u&lt;br /&gt;
| [[NV services]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ovln:rcv, ovln:snd&lt;br /&gt;
| Overlay Notification services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| pctl, pctl:a, pctl:s, pctl:r&lt;br /&gt;
| Parental Control services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| pdm:ntfy, pdm:qry&lt;br /&gt;
| Play Log services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| pl:u&lt;br /&gt;
| Shared Font services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| pm:bm, pm:shell&lt;br /&gt;
| [[Process Manager services]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| prepo:u, prepo:s, prepo:m, prepo:a&lt;br /&gt;
| [[Play Report services]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| set, set:sys&lt;br /&gt;
| [[Settings services]]&lt;br /&gt;
| sys: System settings&lt;br /&gt;
|-&lt;br /&gt;
| sfdnsres&lt;br /&gt;
| DNS resolver services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ssl&lt;br /&gt;
| SSL services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| time:u, time:a, time:s&lt;br /&gt;
| Time services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| vi:m, vi:s, vi:u&lt;br /&gt;
| VI (Camera?) services&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>GovanifY</name></author>
	</entry>
</feed>