Difference between revisions of "SceUsbDevSerial"

From Vita Development Wiki
Jump to navigation Jump to search
Line 11: Line 11:
 
! Version !! World !! Privilege
 
! Version !! World !! Privilege
 
|-
 
|-
| 0.995-3.60 || Non-secure || Kernel
+
| 0.990-3.60 || Non-secure || Kernel
 
|}
 
|}
  
Line 22: Line 22:
 
! Version !! Name !! World !! Visibility !! NID
 
! Version !! Name !! World !! Visibility !! NID
 
|-
 
|-
| 0.995-3.60 || [[SceUsbSerial#SceUsbSerial|SceUsbSerial]] || Non-secure || User || 0x125C67C7
+
| 0.990-3.60 || [[SceUsbDevSerial#SceUsbDevSerial|SceUsbDevSerial]] || Non-secure || User || 0x125C67C7
 
|}
 
|}
  
Line 35: Line 35:
 
|}
 
|}
  
<source lang="c">
+
<source lang="C">int SceUsbDevSerial_4437FF2D(void *pIn, SceSize size);</source>
 
 
</source>
 
  
 
=== SceUsbDevSerial_57FBB08C ===
 
=== SceUsbDevSerial_57FBB08C ===
Line 47: Line 45:
 
|}
 
|}
  
<source lang="c">
+
<source lang="C">int SceUsbDevSerial_57FBB08C(void *pOut, SceSize *size);</source>
 
 
</source>
 
  
 
=== SceUsbDevSerial_6F2B3960 ===
 
=== SceUsbDevSerial_6F2B3960 ===
Line 59: Line 55:
 
|}
 
|}
  
<source lang="c">
+
<source lang="C">int SceUsbDevSerial_6F2B3960(void);</source>
 
 
</source>
 
  
 
=== SceUsbDevSerial_918D359E ===
 
=== SceUsbDevSerial_918D359E ===
Line 71: Line 65:
 
|}
 
|}
  
<source lang="c">
+
<source lang="C">
 
+
// version: on FW 3.60, it must be 0x3517008 or 0x3517001
</source>
+
// value: anything different than 0
 +
// value_size: must be 4
 +
int SceUsbDevSerial_918D359E(SceUInt32 version, SceUInt32 value, SceSize value_size);</source>
  
 
=== sceUsbDevSerialFinalize ===
 
=== sceUsbDevSerialFinalize ===
Line 83: Line 79:
 
|}
 
|}
  
<source lang="c">
+
<source lang="C">
 
/**
 
/**
 
  * Stops USB Dev Serial device
 
  * Stops USB Dev Serial device
Line 90: Line 86:
 
</source>
 
</source>
  
<source lang="c">
+
<source lang="C">
 
sceUdcdDeactivateToBusForDriver(2);
 
sceUdcdDeactivateToBusForDriver(2);
 
sceUdcdStopToBusForDriver("USBSerialDriver", 0, 0, 2);
 
sceUdcdStopToBusForDriver("USBSerialDriver", 0, 0, 2);
Line 104: Line 100:
 
|}
 
|}
  
Calls sceUdcdGetDeviceStateInternalForDriver(2, a2, a3, 2).
+
Calls [[SceUdcd#sceUdcdGetDeviceStateInternalForDriver]](2).
  
<source lang="c">sceUsbDevSerialGetDeviceState(int a1, int a2, int a3);</source>
+
<source lang="C">sceUsbDevSerialGetDeviceState(void);</source>
  
 
=== sceUsbDevSerialInit ===
 
=== sceUsbDevSerialInit ===
Line 116: Line 112:
 
|}
 
|}
  
<source lang="c">
+
Reversed code:
 +
<source lang="C">
 +
int sceUsbDevSerialInit(SceUInt32 bus) {
 +
    int ret = 0;
 +
    if (bus >= 2)
 +
        return 0x80243300;
 +
    ret = sceUdcdStartInternalForDriver("USBDeviceControllerDriver", 0, 0, 2));
 +
    if (ret != 0)
 +
        return ret;
 +
    ret = sceUdcdStartInternalForDriver("USBSerialDriver", 0, 0, 2);
 +
    if (ret != 0) {
 +
        sceUdcdStopInternalForDriver("USBDeviceControllerDriver", 0, 0, 2);
 +
        return ret;
 +
    }
 +
    ret = sceUdcdActivateInternalForDriver(0xFFFF, bus);
 +
    if (ret != 0)
 +
        sceUdcdStopInternalForDriver("USBSerialDriver", 0, 0, 2);
 +
    return ret;
 +
}
 +
</source>
 +
 
 +
<source lang="C">
 
/**
 
/**
  * Initialize USB Dev serial device
+
  * Initialize USB Dev Serial device
 
  *
 
  *
 +
* bus: Must be 0 or 1.
 +
*
 
  * @return 0 on success, < 0 on error
 
  * @return 0 on success, < 0 on error
 
  */
 
  */
int sceUsbDevSerialInit(int a1);
+
int sceUsbDevSerialInit(SceUInt32 bus);
</source>
 
 
 
<source lang="c">
 
int ret = 0;
 
ret = sceUdcdStartToBusForDriver("USBDeviceControllerDriver", 0, 0, 2));
 
if (ret != 0)
 
    return ret;
 
ret = sceUdcdStartToBusForDriver("USBSerialDriver", 0, 0, 2);
 
if (ret != 0) {
 
    sceUdcdStopToBusForDriver("USBDeviceControllerDriver", 0, 0, v4);
 
    return ret;
 
}
 
ret = sceUdcdActivateToBusForDriver(0xFFFF, a1, 2);
 
if (ret != 0)
 
    sceUdcdStopToBusForDriver("USBSerialDriver", 0, 0, 2);
 
return ret;
 
 
</source>
 
</source>
  
Line 149: Line 152:
 
|}
 
|}
  
<source lang="c">
+
<source lang="C">int SceUsbDevSerial_F0C3F3D4(void);</source>
 
 
</source>
 
  
  
 
[[Category:Modules]]
 
[[Category:Modules]]
 
[[Category:Kernel]]
 
[[Category:Kernel]]

Revision as of 23:02, 30 January 2022

Module

A simplified and internal development version of SceUsbSerial:

  • Does not check SceSblACMgrForDriver for processes capabilities.
  • Does not check sceIdStorageLookupForDriver(0x112, 0, /*s_data_81003184*/ "", 0x40); (might be Driver name similarly to PSP IdStorage)

This module exists only in Non-secure world. The SELF can be found in os0:kd/usbdev_serial.skprx.

Version World Privilege
0.990-3.60 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
0.990-3.60 SceUsbDevSerial Non-secure User 0x125C67C7

SceUsbDevSerial

SceUsbDevSerial_4437FF2D

Version NID
3.60 0x4437FF2D
int SceUsbDevSerial_4437FF2D(void *pIn, SceSize size);

SceUsbDevSerial_57FBB08C

Version NID
3.60 0x57FBB08C
int SceUsbDevSerial_57FBB08C(void *pOut, SceSize *size);

SceUsbDevSerial_6F2B3960

Version NID
3.60 0x6F2B3960
int SceUsbDevSerial_6F2B3960(void);

SceUsbDevSerial_918D359E

Version NID
3.60 0x918D359E
// version: on FW 3.60, it must be 0x3517008 or 0x3517001
// value: anything different than 0
// value_size: must be 4
int SceUsbDevSerial_918D359E(SceUInt32 version, SceUInt32 value, SceSize value_size);

sceUsbDevSerialFinalize

Version NID
0.990-3.60 0x9F497D4E
/**
 * Stops USB Dev Serial device
 */
int sceUsbDevSerialFinalize(void);
sceUdcdDeactivateToBusForDriver(2);
sceUdcdStopToBusForDriver("USBSerialDriver", 0, 0, 2);
sceUdcdStopToBusForDriver("USBDeviceControllerDriver", 0, 0, 2);

sceUsbDevSerialGetDeviceState

Version NID
0.990-3.60 0xC0FDECAF

Calls SceUdcd#sceUdcdGetDeviceStateInternalForDriver(2).

sceUsbDevSerialGetDeviceState(void);

sceUsbDevSerialInit

Version NID
0.990-3.60 0xDAE5C362

Reversed code:

int sceUsbDevSerialInit(SceUInt32 bus) {
    int ret = 0;
    if (bus >= 2)
        return 0x80243300;
    ret = sceUdcdStartInternalForDriver("USBDeviceControllerDriver", 0, 0, 2));
    if (ret != 0)
        return ret;
    ret = sceUdcdStartInternalForDriver("USBSerialDriver", 0, 0, 2);
    if (ret != 0) {
        sceUdcdStopInternalForDriver("USBDeviceControllerDriver", 0, 0, 2);
        return ret;
    }
    ret = sceUdcdActivateInternalForDriver(0xFFFF, bus);
    if (ret != 0)
        sceUdcdStopInternalForDriver("USBSerialDriver", 0, 0, 2);
    return ret;
}
/**
 * Initialize USB Dev Serial device
 *
 * bus: Must be 0 or 1.
 * 
 * @return 0 on success, < 0 on error
 */
int sceUsbDevSerialInit(SceUInt32 bus);

SceUsbDevSerial_F0C3F3D4

Version NID
3.60 0xF0C3F3D4
int SceUsbDevSerial_F0C3F3D4(void);