SceSblUpdateMgr: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
(Redirected page to Updater#SceSblUpdateMgr)
 
m (→‎Types: Fix fields of SceSblUsSpkgInfo)
 
(23 intermediate revisions by 2 users not shown)
Line 1: Line 1:
#REDIRECT [[Updater#SceSblUpdateMgr]]
See also [[Updater]]. This module performs many platform checks.
 
== Module ==
 
This module exists only in the non-secure kernel. The SELF can be found in <code>bootfs:update_mgr.skprx</code>.
 
{| class="wikitable"
! Version !! World !! Privilege
|-
| 0.931-3.740.011 || Non-secure || Kernel
|}
 
== Libraries ==
 
=== Known NIDs ===
{| class="wikitable"
|-
! Version !! Name !! World !! Visibility !! NID
|-
| 0.931-1.692.000 || SceSblUpdateMgrForKernel || Non-secure || Kernel || 0xC4466E48
|-
| 0.931-1.692.000 || SceSblUpdateMgrForDriver || Non-secure || Kernel || 0x0E04CD3D
|-
| 0.931-3.740.011 || SceSblSsUpdateMgr || Non-secure || User || 0x31406C49
|-
| 0.990-1.692.000 || SceSblSsUpdateMgrAdditional || Non-secure || User || 0xBDD7A86F
|}
 
== Types ==
 
<source lang="C">
typedef char SceUpdateMode;
 
typedef struct SceSblUsSpkgInfo { // Size is 0x10 on FW 0.931-0.990
SceSize size; // size of this structure
uint32_t version;
uint8_t status[4];
int reserved2;
} SceSblUsSpkgInfo;
 
typedef struct SceKernelSpackageArgs { // Size is 0x2C on FW 0.931
  SceSize arg_size; // Size of this structure
  SceUInt32 package_type;
  void *addr;
  SceSize size;
  SceUInt32 flags;
  char unk[0x8];
  SceUInt32 seq_no;
  SceUInt32 result;
  SceUInt32 progress;
  SceUInt32 written_rates;
} SceKernelSpackageArgs;
</source>
 
== SceSblUpdateMgrForKernel ==
 
SceSblUpdateMgrForKernel functions and NIDs are exactly identical to SceSblUpdateMgrForDriver.
 
== SceSblUpdateMgrForDriver ==
 
=== sceSblUsVerifyPupForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0xD593D613
|}
 
<source lang="C">int sceSblUsVerifyPupForDriver(const char *path);</source>
 
=== sceSblUsVerifyPupHeaderForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0xBAFCA304
|}
 
<source lang="C">int sceSblUsVerifyPupHeaderForDriver(const char *path);</source>
 
=== sceSblUsVerifyPupSegmentForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0xF43372C4
|}
 
<source lang="C">int sceSblUsVerifyPupSegmentForDriver(const char *path);</source>
 
=== sceSblUsVerifyPupSegmentByIdForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0xB4AC7684
|}
 
<source lang="C">int sceSblUsVerifyPupSegmentByIdForDriver(const char *path, void *arg2, int seg_id, int arg4);</source>
 
=== sceSblUsVerifyPupWatermarkForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0xDD90C4B9
|}
 
<source lang="C">int sceSblUsVerifyPupWatermarkForDriver(const char *path);</source>
 
=== sceSblUsUpdateSpackageForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0xF41138F1
|}
 
<source lang="C">int sceSblUsUpdateSpackageForDriver(int package_type, void *kaddr, SceSize size, uint32_t flags, int *pRequestId);</source>
 
=== sceSblUsInspectSpackageForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0xE7F5A4C0
|}
 
<source lang="C">int sceSblUsInspectSpackageForDriver(int package_type, void *kaddr, SceSize size, uint32_t flags, int *pRequestId);</source>
 
=== sceSblUsExtractSpackageForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0x87AC6E73
|}
 
<source lang="C">int sceSblUsExtractSpackageForDriver(int package_type, void *kaddr, SceSize size, uint32_t flags, int *pRequestId);</source>
 
=== sceSblUsAllocateBufferForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0x2D69BFDC
|}
 
<source lang="C">int sceSblUsAllocateBufferForDriver(SceSize size, void **kaddr);</source>
 
=== sceSblUsReleaseBufferForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0x45B91736
|}
 
<source lang="C">int sceSblUsReleaseBufferForDriver(void *kaddr);</source>
 
=== sceSblUsGetStatusForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0x99D57D18
|}
 
<source lang="C">int sceSblUsGetStatusForDriver(int node_type, int requestId, uint32_t *seq_no, uint32_t *result, uint32_t *progress, uint32_t *written_rates);</source>
 
=== sceSblUsGetSpkgInfoForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0xAE7D3BF5
|}
 
<source lang="C">int sceSblUsGetSpkgInfoForDriver(int package_type, SceSblUsSpkgInfo *pInfo);</source>
 
=== sceSblUsGetUpdateModeForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0xEEC71CCC
|}
 
Get UpdateMode from [[Ernie#NVS|Ernie NVS]].
 
<source lang="C">int sceSblUsGetUpdateModeForDriver(SceUpdateMode *mode);</source>
 
=== sceSblUsSetUpdateModeForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0x266820E9
|}
 
Set UpdateMode to [[Ernie#NVS|Ernie NVS]].
 
<source lang="C">int sceSblUsSetUpdateModeForDriver(SceUpdateMode mode);</source>
 
=== SceSblUpdateMgrForDriver_6ACEF44D ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0x6ACEF44D
|}
 
Only returns 0.
 
<source lang="C">int SceSblUpdateMgrForDriver_6ACEF44D(void);</source>
 
=== sceSblUsPowerControlForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0x64ECC81A
|}
 
<source lang="C">int sceSblUsPowerControlForDriver(int mode, int flag);</source>
 
=== sceSblUsGetApplicableVersionForDriver ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-1.692.000 || 0x7CC73839
|}
 
<source lang="C">
// type must be 1 or 9 else "builtin revoke list cannot be found"
int sceSblUsGetApplicableVersionForDriver(int type, void *versionBuf);
</source>
 
=== SceSblUpdateMgrForDriver_C8D235C4 ===
{| class="wikitable"
! Version !! NID
|-
| 0.996.090-1.692.000 || 0xC8D235C4
|}
 
== SceSblSsUpdateMgrAdditional ==
 
This library was not present on FW 0.931, and was removed since FW 1.80. Its functions were moved to SceSblSsUpdateMgr library.
 
=== sceSblUsInformUpdateStartedForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990-1.692.000 || 0x1E40A14E
|}
 
Example of value for unk_number: 300.
 
<source lang="C">int sceSblUsInformUpdateStartedForUser(SceUInt32 nTask, int unk_number, const char *message, SceSize messageLength);</source>
 
=== sceSblUsInformUpdateOngoingForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990-1.692.000 || 0x3A917CCE
|}
 
<source lang="C">int sceSblUsInformUpdateOngoingForUser(SceUInt32 nTask, SceUInt32 percentage);</source>
 
=== sceSblUsInformUpdateFinishedForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990-1.692.000 || 0x4734B987
|}
 
<source lang="C">int sceSblUsInformUpdateFinishedForUser(SceUInt32 nTask, const char *message, SceSize messageLength);</source>
 
=== sceSblUsSetSwInfoIntForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990-1.692.000 || 0xA870D285
|}
 
Example of (name, value) couples:
<pre>
("SdkVersion", 0x1692000)
("ScVersion", ?).
</pre>
 
<source lang="C">int sceSblUsSetSwInfoIntForUser(const char *name, SceSize nameLength, SceUInt32 value);</source>
 
=== sceSblUsSetSwInfoStrForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990-1.692.000 || 0x8C7255C8
|}
 
Example of (name, value) couples:
<pre>
SysRevision: "sys-revision"
SysBuildNumber: "sys-build-number"
VshRepository: "vsh-repository-path"
VshRevision: "vsh-revision"
VshBuildNumber: "vsh-build-number"
</pre>
 
<source lang="C">int sceSblUsSetSwInfoStrForUser(const char *name, SceSize nameLength, const char *value, SceSize valueLength);</source>
 
=== sceSblUsSetSwInfoBinForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990-1.692.000 || 0xF157E34A
|}
 
<source lang="C">int sceSblUsSetSwInfoBinForUser(const char *name, SceSize nameLength, const void *value, SceSize valueLength);</source>
 
== SceSblSsUpdateMgr ==
 
=== sceSblUsGetUpdateModeForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0x8E834565
|}
 
Temp name was sceSblSsUpdateMgrGetBootMode.
 
Get UpdateMode from [[Ernie#NVS|Ernie NVS]].
 
<source lang="C">int sceSblUsGetUpdateModeForUser(SceUpdateMode *mode);</source>
 
=== sceSblUsSetUpdateModeForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0xC725E3F0
|}
 
Temp name was sceSblSsUpdateMgrSetBootMode.
 
Set UpdateMode to [[Ernie#NVS|Ernie NVS]].
 
<source lang="C">int sceSblUsSetUpdateModeForUser(SceUpdateMode mode);</source>
 
=== sceSblUsPowerControlForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0x1825D954
|}
 
Temp name was sceSblSsUpdateMgrSendCommand.
 
<source lang="C">
// Modes:
// 0: reboot target and/or CP with or without CP update. flag = 2 -> reboot CP, flag = 5 -> reboot Ernie
// 1: shutdown target. flag 5 = shutdown Ernie
// 2: sceKernelPowerLock(0)
// 3: sceKernelPowerUnlock(0)
// 4: LED ON
// 5: LED OFF
// 6: LED INIT
// 7: sceKernelPowerTick(flag)
// 8: Checks if CP is enabled by DIP switch 194.
 
int sceSblUsPowerControlForUser(int mode, int flag);
</source>
 
=== sceSblUsGetSpkgInfoForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0x8E3EC2E1
|}
 
Temp name was sceSblSsUpdateMgrGetSpkgInfo.
 
<source lang="C">int sceSblUsGetSpkgInfoForUser(int package_type, SceSblUsSpkgInfo *pInfo);</source>
 
=== sceSblUsVerifyPupForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0x6F5EDBF4
|}
 
path max len: 0x3FF bytes
 
<source lang="C">int sceSblUsVerifyPupForUser(const char *path);</source>
 
=== sceSblUsVerifyPupAdditionalSignForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990 || not present
|-
| 3.60-3.740.011 || 0xB19366CB
|}
 
path max len: 0x3FF bytes
 
<source lang="C">int sceSblUsVerifyPupAdditionalSignForUser(const char *path);</source>
 
=== sceSblUsVerifyPupHeaderForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.940-3.740.011 || 0x9BE17A06
|}
 
path max len: 0x3FF bytes
 
<source lang="C">int sceSblUsVerifyPupHeaderForUser(const char *path);</source>
 
=== sceSblUsVerifyPupSegmentForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0xD47FD33E
|}
 
path max len: 0x3FF bytes
 
<source lang="C">int sceSblUsVerifyPupSegmentForUser(const char *path, SceUInt64 segment_index);</source>
 
=== sceSblUsVerifyPupSegmentByIdForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0x95FC1A0A
|}
 
path max len: 0x3FF bytes
 
<source lang="C">int sceSblUsVerifyPupSegmentByIdForUser(const char *path, uint64_t seg_id);</source>
 
=== sceSblUsVerifyPupWatermarkForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0xC6CDEB8D
|}
 
path max len: 0x3FF bytes
 
<source lang="C">int sceSblUsVerifyPupWatermarkForUser(const char *path);</source>
 
=== sceSblUsUpdateSpackageForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0x6E8DDAC4
|}
 
<source lang="C">int sceSblUsUpdateSpackageForUser(int package_type, SceKernelSpackageArgs *args, int *pRequestId);</source>
 
=== sceSblUsInspectSpackageForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0x1A39F6EE
|}
 
<source lang="C">int sceSblUsInspectSpackageForUser(int package_type, SceKernelSpackageArgs *args, int *pRequestId);</source>
 
=== sceSblUsExtractSpackageForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0xC1792A1C
|}
 
<source lang="C">int sceSblUsExtractSpackageForUser(int package_type, SceKernelSpackageArgs *args, int *pRequestId);</source>
 
=== sceSblUsGetExtractSpackageForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0x4897AD56
|}
 
<source lang="C">
// node_type must be 0, 1 or 2
 
int sceSblUsGetExtractSpackageForUser(int node_type, int requestId, SceKernelSpackageArgs *args);
</source>
 
=== sceSblUsAllocateBufferForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0x4C06F41C
|}
 
<source lang="C">int sceSblUsAllocateBufferForUser(SceSize size, void **uaddr);</source>
 
=== sceSblUsReleaseBufferForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0xBD677F5A
|}
 
<source lang="C">int sceSblUsReleaseBufferForUser(void *uaddr);</source>
 
=== sceSblUsGetStatusForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0xF403143E
|}
 
<source lang="C">int sceSblUsGetStatusForUser(int node_type, int requestId, SceKernelSpackageArgs *args);</source>
 
=== sceSblUsCheckSystemIntegrityForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0xBED8DFC7
|}
 
Check if the current process is system privileged.
 
<source lang="C">SceInt32 sceSblUsCheckSystemIntegrityForUser(void);</source>
 
=== sceSblUsGetApplicableVersionForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.931-3.740.011 || 0x3ADD4B7A
|}
 
<source lang="C">
// type must be 1 or 9 else returns error "builtin revoke list cannot be found"
int sceSblUsGetApplicableVersionForUser(int type, void *versionBuf);
</source>
 
=== sceSblUsInformUpdateStartedForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990 || not present
|-
| 1.000.071-3.740.011 || 0x9FC8E905
|}
 
<source lang="C">int sceSblUsInformUpdateStartedForUser(int number1, int number2, const char *str, SceSize len);</source>
 
=== sceSblUsInformUpdateOngoingForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990 || not present
|-
| 1.000.071-3.740.011 || 0xD0CB50AC
|}
 
<source lang="C">int sceSblUsInformUpdateOngoingForUser(int number1, int number2);</source>
 
=== sceSblUsInformUpdateFinishedForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990 || not present
|-
| 1.000.071-3.740.011 || 0x2A02DCFB
|}
 
<source lang="C">int sceSblUsInformUpdateFinishedForUser(int number, const char *str, SceSize len);</source>
 
=== sceSblUsSetSwInfoIntForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990 || not present
|-
| 1.000.071-3.740.011 || 0x157AD4AD
|}
 
<source lang="C">int sceSblUsSetSwInfoIntForUser(char *str, SceSize len, SceUInt32 number);</source>
 
=== sceSblUsSetSwInfoStrForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990 || not present
|-
| 1.000.071-3.740.011 || 0xFE930747
|}
 
<source lang="C">int sceSblUsSetSwInfoStrForUser(char *str1, SceSize len1, char *str2, SceSize len2);</source>
 
=== sceSblUsSetSwInfoBinForUser ===
{| class="wikitable"
! Version !! NID
|-
| 0.990 || not present
|-
| 1.000.071-3.740.011 || 0x92A8002B
|}
 
<source lang="C">int sceSblUsSetSwInfoBinForUser(char *str1, SceSize len1, char *str2, SceSize len2);</source>
 
[[Category:ARM]]
[[Category:Kernel]]
[[Category:Modules]]
[[Category:Library]]

Latest revision as of 20:50, 27 December 2023

See also Updater. This module performs many platform checks.

Module

This module exists only in the non-secure kernel. The SELF can be found in bootfs:update_mgr.skprx.

Version World Privilege
0.931-3.740.011 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
0.931-1.692.000 SceSblUpdateMgrForKernel Non-secure Kernel 0xC4466E48
0.931-1.692.000 SceSblUpdateMgrForDriver Non-secure Kernel 0x0E04CD3D
0.931-3.740.011 SceSblSsUpdateMgr Non-secure User 0x31406C49
0.990-1.692.000 SceSblSsUpdateMgrAdditional Non-secure User 0xBDD7A86F

Types

typedef char SceUpdateMode;

typedef struct SceSblUsSpkgInfo { // Size is 0x10 on FW 0.931-0.990
	SceSize size; // size of this structure
	uint32_t version;
	uint8_t status[4];
	int reserved2;
} SceSblUsSpkgInfo;

typedef struct SceKernelSpackageArgs { // Size is 0x2C on FW 0.931
  SceSize arg_size; // Size of this structure
  SceUInt32 package_type;
  void *addr;
  SceSize size;
  SceUInt32 flags;
  char unk[0x8];
  SceUInt32 seq_no;
  SceUInt32 result;
  SceUInt32 progress;
  SceUInt32 written_rates;
} SceKernelSpackageArgs;

SceSblUpdateMgrForKernel

SceSblUpdateMgrForKernel functions and NIDs are exactly identical to SceSblUpdateMgrForDriver.

SceSblUpdateMgrForDriver

sceSblUsVerifyPupForDriver

Version NID
0.931-1.692.000 0xD593D613
int sceSblUsVerifyPupForDriver(const char *path);

sceSblUsVerifyPupHeaderForDriver

Version NID
0.931-1.692.000 0xBAFCA304
int sceSblUsVerifyPupHeaderForDriver(const char *path);

sceSblUsVerifyPupSegmentForDriver

Version NID
0.931-1.692.000 0xF43372C4
int sceSblUsVerifyPupSegmentForDriver(const char *path);

sceSblUsVerifyPupSegmentByIdForDriver

Version NID
0.931-1.692.000 0xB4AC7684
int sceSblUsVerifyPupSegmentByIdForDriver(const char *path, void *arg2, int seg_id, int arg4);

sceSblUsVerifyPupWatermarkForDriver

Version NID
0.931-1.692.000 0xDD90C4B9
int sceSblUsVerifyPupWatermarkForDriver(const char *path);

sceSblUsUpdateSpackageForDriver

Version NID
0.931-1.692.000 0xF41138F1
int sceSblUsUpdateSpackageForDriver(int package_type, void *kaddr, SceSize size, uint32_t flags, int *pRequestId);

sceSblUsInspectSpackageForDriver

Version NID
0.931-1.692.000 0xE7F5A4C0
int sceSblUsInspectSpackageForDriver(int package_type, void *kaddr, SceSize size, uint32_t flags, int *pRequestId);

sceSblUsExtractSpackageForDriver

Version NID
0.931-1.692.000 0x87AC6E73
int sceSblUsExtractSpackageForDriver(int package_type, void *kaddr, SceSize size, uint32_t flags, int *pRequestId);

sceSblUsAllocateBufferForDriver

Version NID
0.931-1.692.000 0x2D69BFDC
int sceSblUsAllocateBufferForDriver(SceSize size, void **kaddr);

sceSblUsReleaseBufferForDriver

Version NID
0.931-1.692.000 0x45B91736
int sceSblUsReleaseBufferForDriver(void *kaddr);

sceSblUsGetStatusForDriver

Version NID
0.931-1.692.000 0x99D57D18
int sceSblUsGetStatusForDriver(int node_type, int requestId, uint32_t *seq_no, uint32_t *result, uint32_t *progress, uint32_t *written_rates);

sceSblUsGetSpkgInfoForDriver

Version NID
0.931-1.692.000 0xAE7D3BF5
int sceSblUsGetSpkgInfoForDriver(int package_type, SceSblUsSpkgInfo *pInfo);

sceSblUsGetUpdateModeForDriver

Version NID
0.931-1.692.000 0xEEC71CCC

Get UpdateMode from Ernie NVS.

int sceSblUsGetUpdateModeForDriver(SceUpdateMode *mode);

sceSblUsSetUpdateModeForDriver

Version NID
0.931-1.692.000 0x266820E9

Set UpdateMode to Ernie NVS.

int sceSblUsSetUpdateModeForDriver(SceUpdateMode mode);

SceSblUpdateMgrForDriver_6ACEF44D

Version NID
0.931-1.692.000 0x6ACEF44D

Only returns 0.

int SceSblUpdateMgrForDriver_6ACEF44D(void);

sceSblUsPowerControlForDriver

Version NID
0.931-1.692.000 0x64ECC81A
int sceSblUsPowerControlForDriver(int mode, int flag);

sceSblUsGetApplicableVersionForDriver

Version NID
0.931-1.692.000 0x7CC73839
// type must be 1 or 9 else "builtin revoke list cannot be found"
int sceSblUsGetApplicableVersionForDriver(int type, void *versionBuf);

SceSblUpdateMgrForDriver_C8D235C4

Version NID
0.996.090-1.692.000 0xC8D235C4

SceSblSsUpdateMgrAdditional

This library was not present on FW 0.931, and was removed since FW 1.80. Its functions were moved to SceSblSsUpdateMgr library.

sceSblUsInformUpdateStartedForUser

Version NID
0.990-1.692.000 0x1E40A14E

Example of value for unk_number: 300.

int sceSblUsInformUpdateStartedForUser(SceUInt32 nTask, int unk_number, const char *message, SceSize messageLength);

sceSblUsInformUpdateOngoingForUser

Version NID
0.990-1.692.000 0x3A917CCE
int sceSblUsInformUpdateOngoingForUser(SceUInt32 nTask, SceUInt32 percentage);

sceSblUsInformUpdateFinishedForUser

Version NID
0.990-1.692.000 0x4734B987
int sceSblUsInformUpdateFinishedForUser(SceUInt32 nTask, const char *message, SceSize messageLength);

sceSblUsSetSwInfoIntForUser

Version NID
0.990-1.692.000 0xA870D285

Example of (name, value) couples:

("SdkVersion", 0x1692000)
("ScVersion", ?).
int sceSblUsSetSwInfoIntForUser(const char *name, SceSize nameLength, SceUInt32 value);

sceSblUsSetSwInfoStrForUser

Version NID
0.990-1.692.000 0x8C7255C8

Example of (name, value) couples:

SysRevision: "sys-revision"
SysBuildNumber: "sys-build-number"
VshRepository: "vsh-repository-path"
VshRevision: "vsh-revision"
VshBuildNumber: "vsh-build-number"
int sceSblUsSetSwInfoStrForUser(const char *name, SceSize nameLength, const char *value, SceSize valueLength);

sceSblUsSetSwInfoBinForUser

Version NID
0.990-1.692.000 0xF157E34A
int sceSblUsSetSwInfoBinForUser(const char *name, SceSize nameLength, const void *value, SceSize valueLength);

SceSblSsUpdateMgr

sceSblUsGetUpdateModeForUser

Version NID
0.931-3.740.011 0x8E834565

Temp name was sceSblSsUpdateMgrGetBootMode.

Get UpdateMode from Ernie NVS.

int sceSblUsGetUpdateModeForUser(SceUpdateMode *mode);

sceSblUsSetUpdateModeForUser

Version NID
0.931-3.740.011 0xC725E3F0

Temp name was sceSblSsUpdateMgrSetBootMode.

Set UpdateMode to Ernie NVS.

int sceSblUsSetUpdateModeForUser(SceUpdateMode mode);

sceSblUsPowerControlForUser

Version NID
0.931-3.740.011 0x1825D954

Temp name was sceSblSsUpdateMgrSendCommand.

// Modes:
// 0: reboot target and/or CP with or without CP update. flag = 2 -> reboot CP, flag = 5 -> reboot Ernie
// 1: shutdown target. flag 5 = shutdown Ernie
// 2: sceKernelPowerLock(0)
// 3: sceKernelPowerUnlock(0)
// 4: LED ON
// 5: LED OFF
// 6: LED INIT
// 7: sceKernelPowerTick(flag)
// 8: Checks if CP is enabled by DIP switch 194.

int sceSblUsPowerControlForUser(int mode, int flag);

sceSblUsGetSpkgInfoForUser

Version NID
0.931-3.740.011 0x8E3EC2E1

Temp name was sceSblSsUpdateMgrGetSpkgInfo.

int sceSblUsGetSpkgInfoForUser(int package_type, SceSblUsSpkgInfo *pInfo);

sceSblUsVerifyPupForUser

Version NID
0.931-3.740.011 0x6F5EDBF4

path max len: 0x3FF bytes

int sceSblUsVerifyPupForUser(const char *path);

sceSblUsVerifyPupAdditionalSignForUser

Version NID
0.990 not present
3.60-3.740.011 0xB19366CB

path max len: 0x3FF bytes

int sceSblUsVerifyPupAdditionalSignForUser(const char *path);

sceSblUsVerifyPupHeaderForUser

Version NID
0.940-3.740.011 0x9BE17A06

path max len: 0x3FF bytes

int sceSblUsVerifyPupHeaderForUser(const char *path);

sceSblUsVerifyPupSegmentForUser

Version NID
0.931-3.740.011 0xD47FD33E

path max len: 0x3FF bytes

int sceSblUsVerifyPupSegmentForUser(const char *path, SceUInt64 segment_index);

sceSblUsVerifyPupSegmentByIdForUser

Version NID
0.931-3.740.011 0x95FC1A0A

path max len: 0x3FF bytes

int sceSblUsVerifyPupSegmentByIdForUser(const char *path, uint64_t seg_id);

sceSblUsVerifyPupWatermarkForUser

Version NID
0.931-3.740.011 0xC6CDEB8D

path max len: 0x3FF bytes

int sceSblUsVerifyPupWatermarkForUser(const char *path);

sceSblUsUpdateSpackageForUser

Version NID
0.931-3.740.011 0x6E8DDAC4
int sceSblUsUpdateSpackageForUser(int package_type, SceKernelSpackageArgs *args, int *pRequestId);

sceSblUsInspectSpackageForUser

Version NID
0.931-3.740.011 0x1A39F6EE
int sceSblUsInspectSpackageForUser(int package_type, SceKernelSpackageArgs *args, int *pRequestId);

sceSblUsExtractSpackageForUser

Version NID
0.931-3.740.011 0xC1792A1C
int sceSblUsExtractSpackageForUser(int package_type, SceKernelSpackageArgs *args, int *pRequestId);

sceSblUsGetExtractSpackageForUser

Version NID
0.931-3.740.011 0x4897AD56
// node_type must be 0, 1 or 2

int sceSblUsGetExtractSpackageForUser(int node_type, int requestId, SceKernelSpackageArgs *args);

sceSblUsAllocateBufferForUser

Version NID
0.931-3.740.011 0x4C06F41C
int sceSblUsAllocateBufferForUser(SceSize size, void **uaddr);

sceSblUsReleaseBufferForUser

Version NID
0.931-3.740.011 0xBD677F5A
int sceSblUsReleaseBufferForUser(void *uaddr);

sceSblUsGetStatusForUser

Version NID
0.931-3.740.011 0xF403143E
int sceSblUsGetStatusForUser(int node_type, int requestId, SceKernelSpackageArgs *args);

sceSblUsCheckSystemIntegrityForUser

Version NID
0.931-3.740.011 0xBED8DFC7

Check if the current process is system privileged.

SceInt32 sceSblUsCheckSystemIntegrityForUser(void);

sceSblUsGetApplicableVersionForUser

Version NID
0.931-3.740.011 0x3ADD4B7A
// type must be 1 or 9 else returns error "builtin revoke list cannot be found"
int sceSblUsGetApplicableVersionForUser(int type, void *versionBuf);

sceSblUsInformUpdateStartedForUser

Version NID
0.990 not present
1.000.071-3.740.011 0x9FC8E905
int sceSblUsInformUpdateStartedForUser(int number1, int number2, const char *str, SceSize len);

sceSblUsInformUpdateOngoingForUser

Version NID
0.990 not present
1.000.071-3.740.011 0xD0CB50AC
int sceSblUsInformUpdateOngoingForUser(int number1, int number2);

sceSblUsInformUpdateFinishedForUser

Version NID
0.990 not present
1.000.071-3.740.011 0x2A02DCFB
int sceSblUsInformUpdateFinishedForUser(int number, const char *str, SceSize len);

sceSblUsSetSwInfoIntForUser

Version NID
0.990 not present
1.000.071-3.740.011 0x157AD4AD
int sceSblUsSetSwInfoIntForUser(char *str, SceSize len, SceUInt32 number);

sceSblUsSetSwInfoStrForUser

Version NID
0.990 not present
1.000.071-3.740.011 0xFE930747
int sceSblUsSetSwInfoStrForUser(char *str1, SceSize len1, char *str2, SceSize len2);

sceSblUsSetSwInfoBinForUser

Version NID
0.990 not present
1.000.071-3.740.011 0x92A8002B
int sceSblUsSetSwInfoBinForUser(char *str1, SceSize len1, char *str2, SceSize len2);