SceSblUpdateMgr: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
m (→‎Types: Fix fields of SceSblUsSpkgInfo)
 
(20 intermediate revisions by 2 users not shown)
Line 1: Line 1:
also see [[Updater]].
See also [[Updater]]. This module performs many platform checks.


== Module ==
== Module ==
This module exists only in the non-secure kernel. The SELF can be found in <code>bootfs:update_mgr.skprx</code>.
This module exists only in the non-secure kernel. The SELF can be found in <code>bootfs:update_mgr.skprx</code>.


Line 7: Line 8:
! Version !! World !! Privilege
! Version !! World !! Privilege
|-
|-
| 1.69-3.60 || Non-secure || Kernel
| 0.931-3.740.011 || Non-secure || Kernel
|}
|}


== Libraries ==
== Libraries ==
This module exports libraries to both kernel and user.


=== Known NIDs ===
=== Known NIDs ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version
! Version !! Name !! World !! Visibility !! NID
! Name
! World
! Visibility
! NID
|-
|-
| 0.931-1.69 || SceSblUpdateMgrForKernel || Non-secure || Kernel || 0xC4466E48
| 0.931-1.692.000 || SceSblUpdateMgrForKernel || Non-secure || Kernel || 0xC4466E48
|-
|-
| 0.931-1.69 || SceSblUpdateMgrForDriver || Non-secure || Kernel || 0x0E04CD3D
| 0.931-1.692.000 || SceSblUpdateMgrForDriver || Non-secure || Kernel || 0x0E04CD3D
|-
|-
| 0.931-3.60 || SceSblSsUpdateMgr || Non-secure || User || 0x31406C49
| 0.931-3.740.011 || SceSblSsUpdateMgr || Non-secure || User || 0x31406C49
|-
|-
| 0.990 || SceSblSsUpdateMgrAdditional || Non-secure || User || 0xBDD7A86F
| 0.990-1.692.000 || SceSblSsUpdateMgrAdditional || Non-secure || User || 0xBDD7A86F
|}
|}


Line 38: Line 34:
typedef struct SceSblUsSpkgInfo { // Size is 0x10 on FW 0.931-0.990
typedef struct SceSblUsSpkgInfo { // Size is 0x10 on FW 0.931-0.990
SceSize size; // size of this structure
SceSize size; // size of this structure
int version;
uint32_t version;
int reserved1;
uint8_t status[4];
int reserved2;
int reserved2;
} SceSblUsSpkgInfo;
} SceSblUsSpkgInfo;
Line 67: Line 63:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.940 || 0xD593D613
| 0.931-1.692.000 || 0xD593D613
|}
|}


Line 76: Line 72:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.940 || 0xBAFCA304
| 0.931-1.692.000 || 0xBAFCA304
|}
|}


Line 85: Line 81:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.940 || 0xF43372C4
| 0.931-1.692.000 || 0xF43372C4
|}
|}


Line 94: Line 90:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.940 || 0xB4AC7684
| 0.931-1.692.000 || 0xB4AC7684
|}
|}


Line 103: Line 99:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.940 || 0xDD90C4B9
| 0.931-1.692.000 || 0xDD90C4B9
|}
|}


Line 112: Line 108:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0xF41138F1
| 0.931-1.692.000 || 0xF41138F1
|}
|}


Line 121: Line 117:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0xE7F5A4C0
| 0.931-1.692.000 || 0xE7F5A4C0
|}
|}


Line 130: Line 126:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0x87AC6E73
| 0.931-1.692.000 || 0x87AC6E73
|}
|}


Line 139: Line 135:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0x2D69BFDC
| 0.931-1.692.000 || 0x2D69BFDC
|}
|}


Line 148: Line 144:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0x45B91736
| 0.931-1.692.000 || 0x45B91736
|}
|}


Line 157: Line 153:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0x99D57D18
| 0.931-1.692.000 || 0x99D57D18
|}
|}


Line 166: Line 162:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0xAE7D3BF5
| 0.931-1.692.000 || 0xAE7D3BF5
|}
|}


Line 175: Line 171:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0xEEC71CCC
| 0.931-1.692.000 || 0xEEC71CCC
|}
|}


Get UpdateMode from Ernie NVS. See [[SceSblSsMgr#NVS_Areas]].
Get UpdateMode from [[Ernie#NVS|Ernie NVS]].


<source lang="C">int sceSblUsGetUpdateModeForDriver(SceUpdateMode *mode);</source>
<source lang="C">int sceSblUsGetUpdateModeForDriver(SceUpdateMode *mode);</source>
Line 186: Line 182:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0x266820E9
| 0.931-1.692.000 || 0x266820E9
|}
|}


Set UpdateMode to Ernie NVS. See [[SceSblSsMgr#NVS_Areas]].
Set UpdateMode to [[Ernie#NVS|Ernie NVS]].


<source lang="C">int sceSblUsSetUpdateModeForDriver(SceUpdateMode mode);</source>
<source lang="C">int sceSblUsSetUpdateModeForDriver(SceUpdateMode mode);</source>
Line 197: Line 193:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0x6ACEF44D
| 0.931-1.692.000 || 0x6ACEF44D
|}
|}


Only return 0.
Only returns 0.


<source lang="C">int SceSblUpdateMgrForDriver_6ACEF44D(void);</source>
<source lang="C">int SceSblUpdateMgrForDriver_6ACEF44D(void);</source>
Line 208: Line 204:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0x64ECC81A
| 0.931-1.692.000 || 0x64ECC81A
|}
|}


Line 217: Line 213:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-0.990 || 0x7CC73839
| 0.931-1.692.000 || 0x7CC73839
|}
|}


Line 224: Line 220:
int sceSblUsGetApplicableVersionForDriver(int type, void *versionBuf);
int sceSblUsGetApplicableVersionForDriver(int type, void *versionBuf);
</source>
</source>
=== SceSblUpdateMgrForDriver_C8D235C4 ===
{| class="wikitable"
! Version !! NID
|-
| 0.996.090-1.692.000 || 0xC8D235C4
|}


== SceSblSsUpdateMgrAdditional ==
== SceSblSsUpdateMgrAdditional ==


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


=== sceSblUsInformUpdateStartedForUser ===
=== sceSblUsInformUpdateStartedForUser ===
Line 233: Line 236:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || 0x1E40A14E
| 0.990-1.692.000 || 0x1E40A14E
|}
|}


<source lang="C">int sceSblUsInformUpdateStartedForUser(int number1, int number2, const char *str, SceSize len);</source>
Example of value for unk_number: 300.
 
<source lang="C">int sceSblUsInformUpdateStartedForUser(SceUInt32 nTask, int unk_number, const char *message, SceSize messageLength);</source>


=== sceSblUsInformUpdateOngoingForUser ===
=== sceSblUsInformUpdateOngoingForUser ===
Line 242: Line 247:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || 0x3A917CCE
| 0.990-1.692.000 || 0x3A917CCE
|}
|}


<source lang="C">int sceSblUsInformUpdateOngoingForUser(int number1, int number2);</source>
<source lang="C">int sceSblUsInformUpdateOngoingForUser(SceUInt32 nTask, SceUInt32 percentage);</source>


=== sceSblUsInformUpdateFinishedForUser ===
=== sceSblUsInformUpdateFinishedForUser ===
Line 251: Line 256:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || 0x4734B987
| 0.990-1.692.000 || 0x4734B987
|}
|}


<source lang="C">int sceSblUsInformUpdateFinishedForUser(int number, const char *str, SceSize len);</source>
<source lang="C">int sceSblUsInformUpdateFinishedForUser(SceUInt32 nTask, const char *message, SceSize messageLength);</source>


=== sceSblUsSetSwInfoIntForUser ===
=== sceSblUsSetSwInfoIntForUser ===
Line 260: Line 265:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || 0xA870D285
| 0.990-1.692.000 || 0xA870D285
|}
|}


<source lang="C">int sceSblUsSetSwInfoIntForUser(char *str, SceSize len, SceUInt32 number);</source>
Example of (name, value) couples:
<pre>
("SdkVersion", 0x1692000)
("ScVersion", ?).
</pre>
 
<source lang="C">int sceSblUsSetSwInfoIntForUser(const char *name, SceSize nameLength, SceUInt32 value);</source>


=== sceSblUsSetSwInfoStrForUser ===
=== sceSblUsSetSwInfoStrForUser ===
Line 269: Line 280:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || 0x8C7255C8
| 0.990-1.692.000 || 0x8C7255C8
|}
|}


<source lang="C">int sceSblUsSetSwInfoStrForUser(char *str1, SceSize len1, char *str2, SceSize len2);</source>
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 ===
=== sceSblUsSetSwInfoBinForUser ===
Line 278: Line 298:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || 0xF157E34A
| 0.990-1.692.000 || 0xF157E34A
|}
|}


<source lang="C">int sceSblUsSetSwInfoBinForUser(char *str1, SceSize len1, char *str2, SceSize len2);</source>
<source lang="C">int sceSblUsSetSwInfoBinForUser(const char *name, SceSize nameLength, const void *value, SceSize valueLength);</source>


== SceSblSsUpdateMgr ==
== SceSblSsUpdateMgr ==
Line 289: Line 309:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0x8E834565
| 0.931-3.740.011 || 0x8E834565
|}
|}


Temp name was sceSblSsUpdateMgrGetBootMode.
Temp name was sceSblSsUpdateMgrGetBootMode.


Get UpdateMode from Ernie NVS. See [[SceSblSsMgr#NVS_Areas]].
Get UpdateMode from [[Ernie#NVS|Ernie NVS]].


<source lang="C">int sceSblUsGetUpdateModeForUser(SceUpdateMode *mode);</source>
<source lang="C">int sceSblUsGetUpdateModeForUser(SceUpdateMode *mode);</source>
Line 302: Line 322:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0xC725E3F0
| 0.931-3.740.011 || 0xC725E3F0
|}
|}


Temp name was sceSblSsUpdateMgrSetBootMode.
Temp name was sceSblSsUpdateMgrSetBootMode.


Set UpdateMode to Ernie NVS. See [[SceSblSsMgr#NVS_Areas]].
Set UpdateMode to [[Ernie#NVS|Ernie NVS]].


<source lang="C">int sceSblUsSetUpdateModeForUser(SceUpdateMode mode);</source>
<source lang="C">int sceSblUsSetUpdateModeForUser(SceUpdateMode mode);</source>
Line 315: Line 335:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0x1825D954
| 0.931-3.740.011 || 0x1825D954
|}
|}


Line 329: Line 349:
// 5: LED OFF
// 5: LED OFF
// 6: LED INIT
// 6: LED INIT
// 7: ?
// 7: sceKernelPowerTick(flag)
// 8: ?
// 8: Checks if CP is enabled by DIP switch 194.


int sceSblUsPowerControlForUser(int mode, int flag);
int sceSblUsPowerControlForUser(int mode, int flag);
Line 339: Line 359:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0x8E3EC2E1
| 0.931-3.740.011 || 0x8E3EC2E1
|}
|}


Line 350: Line 370:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0x6F5EDBF4
| 0.931-3.740.011 || 0x6F5EDBF4
|}
|}


path max len : 0x3FF bytes
path max len: 0x3FF bytes


<source lang="C">int sceSblUsVerifyPupForUser(const char *path);</source>
<source lang="C">int sceSblUsVerifyPupForUser(const char *path);</source>
Line 361: Line 381:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || NOT PRESENT
| 0.990 || not present
|-
|-
| 3.60 || 0xB19366CB
| 3.60-3.740.011 || 0xB19366CB
|}
|}


path max len : 0x3FF, path len >= 0x400 : error
path max len: 0x3FF bytes


<source lang="C">int sceSblUsVerifyPupAdditionalSignForUser(const char *path);</source>
<source lang="C">int sceSblUsVerifyPupAdditionalSignForUser(const char *path);</source>
Line 374: Line 394:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-3.60 || 0x9BE17A06
| 0.940-3.740.011 || 0x9BE17A06
|}
|}


path max len : 0x3FF
path max len: 0x3FF bytes


<source lang="C">int sceSblUsVerifyPupHeaderForUser(const char *path);</source>
<source lang="C">int sceSblUsVerifyPupHeaderForUser(const char *path);</source>
Line 385: Line 405:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0xD47FD33E
| 0.931-3.740.011 || 0xD47FD33E
|}
|}


path max len: 0x3FF bytes
path max len: 0x3FF bytes


<source lang="C">int sceSblUsVerifyPupSegmentForUser(const char *path);</source>
<source lang="C">int sceSblUsVerifyPupSegmentForUser(const char *path, SceUInt64 segment_index);</source>


=== sceSblUsVerifyPupSegmentByIdForUser ===
=== sceSblUsVerifyPupSegmentByIdForUser ===
Line 396: Line 416:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0x95FC1A0A
| 0.931-3.740.011 || 0x95FC1A0A
|}
|}


Line 407: Line 427:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0xC6CDEB8D
| 0.931-3.740.011 || 0xC6CDEB8D
|}
|}


path max len : 0x3FF bytes
path max len: 0x3FF bytes


<source lang="C">int sceSblUsVerifyPupWatermarkForUser(const char *path);</source>
<source lang="C">int sceSblUsVerifyPupWatermarkForUser(const char *path);</source>
Line 418: Line 438:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0x6E8DDAC4
| 0.931-3.740.011 || 0x6E8DDAC4
|}
|}


Line 427: Line 447:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0x1A39F6EE
| 0.931-3.740.011 || 0x1A39F6EE
|}
|}


Line 436: Line 456:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0xC1792A1C
| 0.931-3.740.011 || 0xC1792A1C
|}
|}


Line 445: Line 465:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0x4897AD56
| 0.931-3.740.011 || 0x4897AD56
|}
|}


Line 458: Line 478:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0x4C06F41C
| 0.931-3.740.011 || 0x4C06F41C
|}
|}


Line 467: Line 487:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0xBD677F5A
| 0.931-3.740.011 || 0xBD677F5A
|}
|}


Line 476: Line 496:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0xF403143E
| 0.931-3.740.011 || 0xF403143E
|}
|}


Line 485: Line 505:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0xBED8DFC7
| 0.931-3.740.011 || 0xBED8DFC7
|}
|}


Not implemented: does nothing.
Check if the current process is system privileged.


<source lang="C">
<source lang="C">SceInt32 sceSblUsCheckSystemIntegrityForUser(void);</source>
int sceSblUsCheckSystemIntegrityForUser(void) {
int state;
 
if (sceSblACIsSystemProgramForKernel(0) == 0)
return 0x800F022C;
 
ENTER_SYSCALL(state);
EXIT_SYSCALL(state);
 
return 0;
}
</source>
 
<source lang="C">int sceSblUsCheckSystemIntegrityForUser(void);</source>


=== sceSblUsGetApplicableVersionForUser ===
=== sceSblUsGetApplicableVersionForUser ===
Line 510: Line 516:
! Version !! NID
! Version !! NID
|-
|-
| 0.931-3.60 || 0x3ADD4B7A
| 0.931-3.740.011 || 0x3ADD4B7A
|}
|}


<source lang="C">
<source lang="C">
// type must be 1 or 9 else "builtin revoke list cannot be found"
// type must be 1 or 9 else returns error "builtin revoke list cannot be found"
int sceSblUsGetApplicableVersionForUser(int type, void *versionBuf);
int sceSblUsGetApplicableVersionForUser(int type, void *versionBuf);
</source>
</source>
Line 522: Line 528:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || NOT PRESENT
| 0.990 || not present
|-
|-
| 3.60 || 0x9FC8E905
| 1.000.071-3.740.011 || 0x9FC8E905
|}
|}


Line 533: Line 539:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || NOT PRESENT
| 0.990 || not present
|-
|-
| 3.60 || 0xD0CB50AC
| 1.000.071-3.740.011 || 0xD0CB50AC
|}
|}


Line 544: Line 550:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || NOT PRESENT
| 0.990 || not present
|-
|-
| 3.60 || 0x2A02DCFB
| 1.000.071-3.740.011 || 0x2A02DCFB
|}
|}


Line 555: Line 561:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || NOT PRESENT
| 0.990 || not present
|-
|-
| 3.60 || 0x157AD4AD
| 1.000.071-3.740.011 || 0x157AD4AD
|}
|}


Line 566: Line 572:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || NOT PRESENT
| 0.990 || not present
|-
|-
| 3.60 || 0xFE930747
| 1.000.071-3.740.011 || 0xFE930747
|}
|}


Line 577: Line 583:
! Version !! NID
! Version !! NID
|-
|-
| 0.990 || NOT PRESENT
| 0.990 || not present
|-
|-
| 3.60 || 0x92A8002B
| 1.000.071-3.740.011 || 0x92A8002B
|}
|}


<source lang="C">int sceSblUsSetSwInfoBinForUser(char *str1, SceSize len1, char *str2, SceSize len2);</source>
<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);