Difference between revisions of "Manu services"

From Nintendo Switch Brew
Jump to navigation Jump to search
 
(9 intermediate revisions by 2 users not shown)
Line 2: Line 2:
  
 
= manu =
 
= manu =
 +
This is "nn::manu::IManu".
  
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 
|-
 
|-
| 0 || || Takes 4 bytes of input, and produces 0 bytes output.
+
| 0 || [[#InitializeUsbTransferPipeFile|InitializeUsbTransferPipeFile]]
 
|-
 
|-
| 1 || || Takes an X descriptor, and produces, 8 bytes output.
+
| 1 || [[#IsFileExist|IsFileExist]]
 
|-
 
|-
| 2 || || Takes 0x18 bytes of input, a B descriptor, and an X descriptor, and produces 0 bytes of output.
+
| 2 || [[#ReadFile|ReadFile]]
 
|-
 
|-
| 3 || || Takes 0x18 bytes of input, an A descriptor, and an X descriptor, and produces 0 bytes of output.
+
| 3 || [[#WriteFile|WriteFile]]
 
|-
 
|-
| 4 || || Takes 4 bytes of input, and produces 0 bytes of output.
+
| 4 || [[#InitializeUsbTransferPipeRaw|InitializeUsbTransferPipeRaw]]
 
|-
 
|-
| 5 || || Takes 0x10 bytes of input and a B descriptor, and produces 8 bytes of output.
+
| 5 || [[#ReadRaw|ReadRaw]]
 
|-
 
|-
| 6 || || Takes 0x10 bytes of input and an A descriptor, and produces 8 bytes of output.
+
| 6 || [[#WriteRaw|WriteRaw]]
 
|-
 
|-
 +
| 7 || [7.0.0+]
 +
|-
 +
| 8 || [14.0.0+]
 
|}
 
|}
  
This seems to interface with [[USB_services|usb:ds]]. SystemInitializer only uses cmd1..cmd3.
+
All commands are wrappers for [[USB_services|usb:ds]] requests with USB configured as:
 +
VID:          0x057E (Nintendo Co., Ltd)
 +
PID:          0x3000
 +
bcdDevice:    0x0100 (1.00)
 +
Manufacturer:  "Nintendo"
 +
Product:      "NintendoSdkDebugger"
 +
SerialNumber:  "SerialNumber"
 +
 
 +
[7.0.0+] USB is now configured as:
 +
VID:          0x057E (Nintendo Co., Ltd)
 +
PID:          0x3003
 +
bcdDevice:    0x0100 (1.00)
 +
Manufacturer:  "Nintendo"
 +
Product:      "NintendoSdkManufacturing"
 +
SerialNumber:  "SerialNumber"
 +
 
 +
== InitializeUsbTransferPipeFile ==
 +
Unofficial name.
 +
 
 +
Takes an input u32. No output.
 +
 
 +
Configures a transfer pipe over [[USB_services|usb:ds]] for file access mode.
 +
 
 +
== IsFileExist ==
 +
Unofficial name.
 +
 
 +
Takes a type-0x9 input buffer containing a path string. Returns an output u64.
 +
 
 +
Checks whether the specified file exists.
 +
 
 +
This is "FsFile::Exists" in SystemInitializer.
 +
 
 +
== ReadFile ==
 +
Unofficial name.
 +
 
 +
Takes a type-0x6 output buffer, a type-0x9 input buffer containing a path string and three u64s '''OutSize''', '''Offset''' and '''InSize'''. No output.
 +
 
 +
Reads data from the specified file.
 +
 
 +
== WriteFile ==
 +
Unofficial name.
 +
 
 +
Takes a type-0x5 output input, a type-0x9 input buffer containing a path string and three u64s '''OutSize''', '''Offset''' and '''InSize'''. No output.
 +
 
 +
Writes data to the specified file.
 +
 
 +
SystemInitializer also uses this as "FsFile::Create" with all input u64s set to 0.
 +
 
 +
== InitializeUsbTransferPipeRaw ==
 +
Unofficial name.
 +
 
 +
Takes an input u32. No output.
 +
 
 +
Configures a transfer pipe over [[USB_services|usb:ds]] for raw access mode.
 +
 
 +
== ReadRaw ==
 +
Unofficial name.
 +
 
 +
Takes a type-0x6 output buffer and two u64s '''Offset''' and '''Size'''. No output.
 +
 
 +
Reads raw data from the device.
 +
 
 +
== WriteRaw ==
 +
Unofficial name.
 +
 
 +
Takes a type-0x5 input buffer and two u64s '''Offset''' and '''Size'''. No output.
 +
 
 +
Writes raw data to the device.
 +
 
 +
[[Category:Services]]

Latest revision as of 22:08, 7 August 2023

Manu ("Manufacturing") services are provided by the 010000000000B14A sysmodule, which is installed at the factory but not on normal retail systems.

manu

This is "nn::manu::IManu".

Cmd Name
0 InitializeUsbTransferPipeFile
1 IsFileExist
2 ReadFile
3 WriteFile
4 InitializeUsbTransferPipeRaw
5 ReadRaw
6 WriteRaw
7 [7.0.0+]
8 [14.0.0+]

All commands are wrappers for usb:ds requests with USB configured as:

VID:           0x057E (Nintendo Co., Ltd)
PID:           0x3000
bcdDevice:     0x0100 (1.00)
Manufacturer:  "Nintendo"
Product:       "NintendoSdkDebugger"
SerialNumber:  "SerialNumber"

[7.0.0+] USB is now configured as:

VID:           0x057E (Nintendo Co., Ltd)
PID:           0x3003
bcdDevice:     0x0100 (1.00)
Manufacturer:  "Nintendo"
Product:       "NintendoSdkManufacturing"
SerialNumber:  "SerialNumber"

InitializeUsbTransferPipeFile

Unofficial name.

Takes an input u32. No output.

Configures a transfer pipe over usb:ds for file access mode.

IsFileExist

Unofficial name.

Takes a type-0x9 input buffer containing a path string. Returns an output u64.

Checks whether the specified file exists.

This is "FsFile::Exists" in SystemInitializer.

ReadFile

Unofficial name.

Takes a type-0x6 output buffer, a type-0x9 input buffer containing a path string and three u64s OutSize, Offset and InSize. No output.

Reads data from the specified file.

WriteFile

Unofficial name.

Takes a type-0x5 output input, a type-0x9 input buffer containing a path string and three u64s OutSize, Offset and InSize. No output.

Writes data to the specified file.

SystemInitializer also uses this as "FsFile::Create" with all input u64s set to 0.

InitializeUsbTransferPipeRaw

Unofficial name.

Takes an input u32. No output.

Configures a transfer pipe over usb:ds for raw access mode.

ReadRaw

Unofficial name.

Takes a type-0x6 output buffer and two u64s Offset and Size. No output.

Reads raw data from the device.

WriteRaw

Unofficial name.

Takes a type-0x5 input buffer and two u64s Offset and Size. No output.

Writes raw data to the device.