Module
Known NIDs
Version |
Name |
World |
Privilege |
NID
|
1.69 |
SceUsbSerial |
Non-secure |
Kernel |
0xF8D9930F
|
3.60 |
SceUsbSerial |
Non-secure |
Kernel |
0xB3C543D4
|
Libraries
Known NIDs
SceUsbSerialForDriver
This library does not exist anymore as of FW 3.60.
sceUsbSerialStartForDriver
Version |
NID
|
1.69 |
0xFEE7F4BA
|
/**
* Activate USB serial device
*
* @return 0 on success, < 0 on error
*
* @note The user is responsible for making sure no other UDC driver is active. This activates UDC as a "PS Vita" Type D device.
*/
int sceUsbSerialStartForDriver(void);
sceUsbSerialSetupForDriver
Version |
NID
|
1.69 |
0x590B8F97
|
/**
* Setup USB serial device
*
* @return 0 on success, < 0 on error
*
* @param unk Unknown
*/
int sceUsbSerialSetupForDriver(int unk);
sceUsbSerialStatusForDriver
Version |
NID
|
1.69 |
0x8C426906
|
/**
* Get USB device status
*
* @return Returns 1 when serial port is open
*/
int sceUsbSerialStatusForDriver(void);
sceUsbSerialCloseForDriver
Version |
NID
|
1.69 |
0xE6B1E64F
|
/**
* Close USB serial device
*/
int sceUsbSerialCloseForDriver(void);
sceUsbSerialGetRecvBufferSizeForDriver
Version |
NID
|
1.69 |
0xF531B5AE
|
/**
* Get receive buffer length
*
* @return Returns length of USB rx buffer
*/
unsigned int sceUsbSerialGetRecvBufferSizeForDriver(void);
sceUsbSerialSendForDriver
Version |
NID
|
1.69 |
0x0C2E73C0
|
/**
* Send data
*
* @param[in] *buffer data to send over usb
* @param[in] len int len of serial buffer data
* @param unk1 Unknown
* @param unk2 Unknown
* @note max send length is 0x10000
*/
unsigned int sceUsbSerialSendForDriver(const void *buffer, unsigned int len, int unk1, int unk2);
sceUsbSerialRecvForDriver
Version |
NID
|
1.69 |
0x6B5E296F
|
/**
* Receive Data
*
* @param[out] *buffer buffer for incoming data
* @param[in] max_len max data length to receive
* @param unk1 Unknown
* @param unk2 Unknown
* @note max recv length is 0x10000
*/
unsigned int sceUsbSerialRecvForDriver(void *buffer, unsigned int max_len, int unk1, int unk2);
SceUsbSerial
sceUsbSerialStart
Version |
NID
|
1.69 |
0xE3BEC18C
|
3.60 |
0xE3BEC18C
|
User wrapper for sceUsbSerialStartForDriver
.
Checks sceSblACMgrIsAllowedUsbSerialForDriver.
/**
* Activate USB serial device
*
* @return 0 on success, < 0 on error
*
* @note The user is responsible for making sure no other UDC driver is active. This activates UDC as a "PS Vita" Type D device.
*
* @note Wrapper for kernel function sceUsbSerialStartForDriver()
*/
int sceUsbSerialStart(void);
int ret = 0;
sceUdcdDeactivateForDriver(a1, a2, a3, (*(uint32_t *)(/*data_81003000*/)) << 0x17);
sceUdcdStopForDriver("USB_MTP_Driver", 0, 0);
sceUdcdStopForDriver("USBDeviceControllerDriver", 0, 0);
ret = sceUdcdStartForDriver("USBDeviceControllerDriver", 0, 0);
if (ret != 0)
return ret;
ret = sceUdcdStartForDriver("USBSerDriver", 0, 0);
if (ret != 0) {
sceUdcdStopForDriver("USBSerDriver", 0, 0);
return ret;
}
ret = sceUdcdActivateForDriver(0x69B);
if (ret != 0) {
sceUdcdStopForDriver("USBDeviceControllerDriver", 0, 0);
return ret;
}
return ret;
sceUsbSerialSetup
Version |
NID
|
1.69 |
0x290E08B4
|
3.60 |
0x290E08B4
|
User wrapper for sceUsbSerialSetupForDriver
. Must have correct permissions to call.
/**
* Setup USB serial device
*
* @return 0 on success, < 0 on error
*
* @param unk Unknown
*
* @note Wrapper for kernel function sceUsbSerialSetupForDriver()
*/
int sceUsbSerialSetup(int unk);
sceUsbSerialStatus
Version |
NID
|
1.69 |
0xA6A2F5DE
|
3.60 |
0xA6A2F5DE
|
User wrapper for sceUsbSerialStatusForDriver
. Must have correct permissions to call.
/**
* Close USB serial device
*
* @return Returns 1 when serial port is open
*
* @note Wrapper for kernel function sceUsbSerialStatusForDriver()
*/
int sceUsbSerialStatus(void);
sceUsbSerialClose
Version |
NID
|
1.69 |
0xF2415853
|
3.60 |
0xF2415853
|
User wrapper for sceUsbSerialCloseForDriver
. Must have correct permissions to call.
/**
* Close USB serial device
*/
int sceUsbSerialClose(void);
sceUdcdDeactivateForDriver(a1, a2, a3, (*(uint32_t *)(/*data_81003000*/)) << 0x1F);
sceUdcdStopForDriver("USBSerDriver", 0, 0);
sceUdcdStopForDriver("USBDeviceControllerDriver", 0, 0);
sceUdcdStartForDriver("USBDeviceControllerDriver", 0, 0);
sceUdcdStartForDriver("USB_MTP_Driver", 0, 0);
sceUdcdActivateForDriver(0x4E4);
sceUsbSerialGetRecvBufferSize
Version |
NID
|
1.69 |
0xE8567A87
|
3.60 |
0xE8567A87
|
User wrapper for sceUsbSerialGetRecvBufferSizeForDriver
. Must have correct permissions to call.
/**
* Get receive buffer length
*
* @return Returns length of USB rx buffer
*/
unsigned int sceUsbSerialGetRecvBufferSize(void);
sceUsbSerialSend
Version |
NID
|
1.69 |
0x89E71202
|
3.60 |
0x89E71202
|
User wrapper for sceUsbSerialSendForDriver
. Must have correct permissions to call. Max length is 0x10000
.
/**
* Send data
* @param[in] *buffer data to send over usb
* @param len int len of serial buffer data
* @param unk1 Unknown
* @param unk2 Unknown
* @note len max value is 0x10000
*/
unsigned int sceUsbSerialSend(const void *buffer, unsigned int len, int unk1, int unk2);
sceUsbSerialRecv
Version |
NID
|
1.69 |
0xF26DC8D8
|
3.60 |
0xF26DC8D8
|
User wrapper for sceUsbSerialRecvForDriver
. Must have correct permissions to call. Max length is 0x10000
.
/**
* Receive Data
*
* @param[out] *buffer buffer for incoming data
* @param max_len max data length to receive
* @param unk1 Unknown
* @param unk2 Unknown
* @note max_len max value is 0x10000
*/
unsigned int sceUsbSerialRecv(void *buffer, unsigned int max_len, int unk1, int unk2);
Sample Kernel Usage
int usb_serial_connect(void) {
int ret;
ret = sceUsbSerialStatusForDriver();
printf("sceUsbSerialStatusForDriver: 0x%08X\n", ret);
if (ret != 0x80244401) {
printf("already connected\n");
return 0;
}
ret = sceUsbSerialStartForDriver();
printf("sceUsbSerialStartForDriver: 0x%08X\n", ret);
ret = sceUsbSerialSetupForDriver(1);
printf("sceUsbSerialSetupForDriver: 0x%08X\n", ret);
if (ret == 0x80244403) {
ret = SceUsbSerialForDriver_0x6AA4EFA4();
printf("SceUsbSerialForDriver_0x6AA4EFA4: 0x%08X\n", ret);
ret = sceUsbSerialSetupForDriver(1);
printf("sceUsbSerialSetupForDriver: 0x%08X\n", ret);
}
while (sceUsbSerialStatusForDriver() != 1); // wait for ready
return 0;
}
int usb_serial_close(void) {
int ret;
ret = SceUsbSerialForDriver_0x6AA4EFA4();
printf("SceUsbSerialForDriver_0x6AA4EFA4: 0x%08X\n", ret);
ret = sceUsbSerialCloseForDriver();
printf("sceUsbSerialCloseForDriver: 0x%08X\n", ret);
return 0;
}
int usb_serial_send(const void *data, unsigned int len) {
int ret;
ret = sceUsbSerialSendForDriver(data, len, 0, -1);
printf("sceUsbSerialSendForDriver: 0x%08X\n");
return ret;
}
int usb_serial_recv(void *data, unsigned int len) {
int ret;
while (sceUsbSerialGetRecvBufferSizeForDriver() < len) {
if (sceUsbSerialStatusForDriver() != 1)
return 0;
}
ret = sceUsbSerialRecvForDriver(data, len, 0, -1);
printf("sceUsbSerialRecvForDriver: 0x%08X\n");
return ret;
}