Editing Devices

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
The PS5 has many kernel devices that can be accessed through [[IOCTL]]. Some of them have usermode module equivalents, some like "sbl" consist in [[Secure Modules]] and some like "camera" make use of a dedicated firmware stored in kernel memory.
See also [https://psdevwiki.com/ps4/Devices PS4 devices].
Note for ioctls: * indicates name is assumed from RE and may not be accurate.
Note for ioctls: * indicates name is assumed from RE and may not be accurate.


== Device Listing ==
== Device Listing ==
 
Note: only unique devices are listed. Benign devices like /dev/null are omitted for brevity's sake.
Unique devices are listed here without the "/dev/" prefix for readability. Benign devices like /dev/null are omitted for brevity's sake.


{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Device Path !! Device Long Name !! Notes
! Path !! Device Name !! Notes
|-
|-
| a53{io,mm,mmsys} || A53 Input/Output, Memory Management (sys) || See MP4 section
| /dev/a53{io,mm,mmsys} || A53 Input/Output, Memory Management (sys) || See MP4 section
|-
|-
| ajm{i} || Audio Job Manager || -
| /dev/ajm{i} || Audio Job Manager || -
|-
|-
| auditpipe || Audit Pipe || -
| /dev/auditpipe || - || -
|-
|-
| authmgr || Authentication Manager || -
| /dev/authmgr || Authentication Manager || -
|-
|-
| az{1,ctl} || - || Audio-related
| /dev/az{1,ctl} || - || Audio-related
|-
|-
| bar || [[Backup And Restore]] || Used by shellcore for backup and recovery
| /dev/bar || Backup and Restore || Used by shellcore for backup and recovery
|-
|-
| bfs/ctl || - || -
| /dev/bfs/ctl || - || -
|-
|-
| bluetooth_hid || Bluetooth Human Interface Device || -
| /dev/bluetooth_hid || - || -
|-
|-
| bt || Bluetooth || -
| /dev/bt || - || -
|-
|-
| camera || Camera || -
| /dev/camera || Camera || -
|-
|-
| cloudsd || Cloud SaveData || -
| /dev/cloudsd || Cloud SaveData || -
|-
|-
| console || Console || Usermode logging
| /dev/console || Console || Usermode logging
|-
|-
| crepo || Crash Report || Used for crash reporting service (coredump, gpudump, shellcore)
| /dev/crepo || Crash Report || Used for crash reporting service (coredump, gpudump, shellcore)
|-
|-
| ctrlp{_sync} || -CTRLP || Used by libScePad (controller). See PS4 and PS Vita ctrlp modules.
| /dev/ctrlp{_sync} || - || Used by libScePad (controller)
|-
|-
| dbggc{_control} || Debug GPU? || -
| /dev/dbggc{_control} || Debug GPU? || -
|-
|-
| deci_coredump || [[DECI5]] coredump || -
| /dev/deci_coredump || Debug Com. Interface (DECI) coredump || -
|-
|-
| deci_mp4_ioc || [[DECI5]] MP4 ?I/O Control? || -
| /dev/deci_mp4_ioc || DECI I/O Control? || -
|-
|-
| deci_mp4_mmc || [[DECI5]] MP4 ?MM Control? || -
| /dev/deci_mp4_mmc || - || -
|-
|-
| deci_std{in,out,err} || [[DECI5]] Input/Output/Error || -
| /dev/deci_std{in,out,err} || DECI Input/Output/Error || -
|-
|-
| deci_tty* || [[DECI5]] Terminals || -
| /dev/deci_tty* || DECI Terminals || -
|-
|-
| devctl || Dev Control || -
| /dev/devctl || - || -
|-
|-
| diag || Diagnosis || -
| /dev/diag || - || -
|-
|-
| dipsw || [[DIP Switches]] || -
| /dev/dipsw || Dip Switch || -
|-
|-
| dldbg || Dynamic Library Debug || -
| /dev/dldbg || Dynamic Library Debug || -
|-
|-
| dmem{0,1,2} || - || -
| /dev/dmem{0,1,2} || - || -
|-
|-
| dngl || - || -
| /dev/dngl || - || -
|-
|-
| duid || Disc Unique ID || -
| /dev/duid || Disc Unique ID || -
|-
|-
| encdec || Encrypt Decrypt || Related to Portability Keys.
| /dev/encdec || EncDec || -
|-
|-
| envelope || [[Envelope Files]] || Related to Envelope Files Keys.
| /dev/envelope || Envelope Format Crypto || -
|-
|-
| evlg{0,1} || Event Log || Intended to be used with read syscall  
| /dev/evlg{0,1} || Event Log || Intended to be used with read syscall  
|-
|-
| exthdd || External HDD || -
| /dev/exthdd || External HDD || -
|-
|-
| fcram || - || -
| /dev/fcram || - || -
|-
|-
| fsctrl || FileSystem Control || -
| /dev/fsctrl || - || -
|-
|-
| fttrm || ?Film and Television Tracking? Rights Management || Used by bluray app
| /dev/fttrm || - || Used by bluray app
|-
|-
| gbase || - || -
| /dev/gbase || - || -
|-
|-
| gc || GPU command || -
| /dev/gc || GPU command || -
|-
|-
| geom.ctl || - || -
| /dev/geom.ctl || - || -
|-
|-
| gic || - || -
| /dev/gic || - || -
|-
|-
| gsched_bds.ctl || - || -
| /dev/gsched_bds.ctl || - || -
|-
|-
| hdmi || HDMI || -
| /dev/hdmi || HDMI || -
|-
|-
| hid || Human Interface Device || -
| /dev/hid || - || -
|-
|-
| hmd2_* || Head-mounted Display || For PS VR 2.
| /dev/hmd2_* || VR 2? || -
|-
|-
| hmd_* || Head-mounted Display || For PS VR first revision.
| /dev/hmd_* || VR || -
|-
|-
| iccnvs{0,1,2,4,6} || ICC NVS || Specific access to Sectors 0, 1, 2, 4 and 6 of [[Serial Flash]] [[Non Volatile Storage]]
| /dev/iccnvs{0,1,2,4,6} || ICC_NVS (sectors) || Location of Sectors 0, 1, 2, 4 and 6 of sflash0 non volatile storage
|-
|-
| icc_configuration || ICC Configuration || -
| /dev/icc_configuration || ICC Config || -
|-
|-
| icc_crash_report || ICC Crash Report || -
| /dev/icc_crash_report || ICC Crash Report || -
|-
|-
| icc_device_power || ICC Device Power || -
| /dev/icc_device_power || ICC Device Power || -
|-
|-
| icc_fan || ICC Fan || -
| /dev/icc_fan || ICC Fan || -
|-
|-
| icc_floyd || ICC Floyd || SNVS Storage Device. ?TPM related?
| /dev/icc_floyd || ICC TPM? || SNVS Storage Device
|-
|-
| icc_indicator || ICC Indicator || Control the LEDs.
| /dev/icc_indicator || ICC LED || -
|-
|-
| icc_nvs || ICC NVS || ?Global access to [[Serial Flash]] [[Non Volatile Storage]] like on PS4?
| /dev/icc_nvs || ICC NVS || -
|-
|-
| icc_power || ICC Power || -
| /dev/icc_power || ICC Power || -
|-
|-
| icc_sc_config || ICC ?Syscon? Configuration || -
| /dev/icc_sc_config || ICC Syscon? Config || -
|-
|-
| icc_thermal || ICC Thermal || -
| /dev/icc_thermal || ICC Thermal || -
|-
|-
| klog || Kernel Log || Read syscall on this device can be used to get kernel log if privileged
| /dev/klog || Kernel Log || Read syscall on this device can be used to get kernel log if privileged
|-
|-
| kmbp || - || -
| /dev/kmbp || - || -
|-
|-
| lvdctl || Layered Vnode Device Control || -
| /dev/lvdctl || Layered Vnode Device Control || -
|-
|-
| lvd{0,1} || Layered Vnode Device || lv0 is a mountpoint for /mnt/rnps. lvd1 is a mountpoint for /mnt/sandbox/download/NPXS40140. See [[Filesystem]].
| /dev/lvd{0,1} || Layered Vnode Device || -
|-
|-
| cd0 || Compact Disc 0 || cd0 is a mountpoint for /mnt/disc. See [[Filesystem]].
| /dev/m2.ctl || m.2 NVMe Control? || -
|-
|-
| m2.ctl || [[M.2 SSD]] ?Control? || -
| /dev/manuauth || Manufacturer Auth|| -
|-
|-
| manuauth || Manufacturer Auth || -
| /dev/mbus || Event bus || -
|-
|-
| mbus || ?Media/Memory/Management? Bus || Event bus
| /dev/mbus_av || Event bus (audio video?) || -
|-
|-
| mbus_av || ?Media/Memory/Management? Bus (?audio video?) || Event bus maybe for audio/video.
| /dev/md0 || Kernel Md0 || Main System modules are located here for Kernel (Not System Modules!)
|-
|-
| md0 || ?Mount Directory? 0 || Main System modules/devices are located here for Kernel
| /dev/md2 || - || -
|-
|-
| md2 || ?Mount Directory? 2 || md2 is a mountpoint for /system_data/eap/rodata. See [[Filesystem]].
| /dev/mdctl || - || -
|-
|-
| mdctl || ?Mount Directory? Control || -
| /dev/metadbg || - || -
|-
|-
| da1s1 || DA 1 Sector 1 || da1s1 is a mountpoint for /mnt/usb0. See [[Filesystem]].
| /dev/mp1 || System Management Unit (SMU) || Power management, thermals, etc. (see mp1 section)
|-
|-
| metadbg || Meta Debug || -
| /dev/mp3 || Trusted Execution Environment (TEE) || See mp3 section
|-
|-
| mp1 || System Management Unit (SMU) || Power management, thermals, etc. See MP1 section.
| /dev/mp4/dump{_for_decid} || A53 (mdbg?) || See mp4 section
|-
|-
| mp3 || Trusted Execution Environment (TEE) || See MP3 section.
| /dev/notification{0-9} || Notification || -
|-
|-
| mp4/dump{_for_decid} || A53 (mdbg?) || See MP4 section.
| /dev/npdrm || Network Product Digital Rights Management interface || -
|-
|-
| notification{0-9} || Notification || -
| /dev/nsfsctl || Namespace Filesystem (NSFS) Control || -
|-
|-
| npdrm || Network Product Digital Rights Management interface || -
| /dev/nsid1.ctl || - || -
|-
|-
| nsfsctl || Namespace Filesystem (NSFS) Control || -
| /dev/otpaccess || One-Time Programmable Access? || -
|-
|-
| nsid1.ctl || Namespace ID 1 Control || -
| /dev/pfsctldev || Playstation Filesystem (PFS) Control || -
|-
|-
| otpaccess || One-Time Programmable Access? || -
| /dev/pfsmgr || PFS Manager || Used for trophies, savegames, keystone
|-
|-
| pfsctldev || PFS Control Device || -
| /dev/playgo_emu_param{1,2,3} || PlayGo emulator params || -
|-
|-
| pfsmgr || PFS Manager || Used for [[Trophy]], [[Save Data]], [[Keystone]]
| /dev/pltauth{0,1} || Platform Authentication (PSN) || -
|-
|-
| playgo_emu_param{1,2,3} || [[PlayGo]] emulator params || -
| /dev/pup_update0 || PUP Update || -
|-
|-
| pltauth{0,1} || Platform Authentication || For PSN connection.
| /dev/qafutkn || QA flag / Utoken || -
|-
|-
| pup_update0 || PUP Update || -
| /dev/rnps || React Native PS || PSN related
|-
|-
| qafutkn || QA flag / Utoken || -
| /dev/rootparam || Root Param || Used by shellcore for verifying root param sfo/json
|-
|-
| rnps || React Native PS || [[RNPS]] regroups many PSN services (friends, party, events, etc.)
| /dev/s3da || 3D Audio || -
|-
|-
| rootparam || Root Param || Used by [[SceShellCore]] for verifying root param SFO/JSON
| /dev/sbl_secreg || SBL Secure Region || -
|-
|-
| s3da || ?System/Software? 3D Acceleration || See Marcan's slides about PS4 GPU Linux driver.
| /dev/sbl_srv || SBL Service || Used exclusively by playready
|-
|-
| sbl_secreg || SBL Secure Region/Registry || -
| /dev/scanin || - || -
|-
|-
| sbl_srv || SBL Service || Used exclusively by playready
| /dev/sce_zlib{_sys} || zlib || zlib (de)compression
|-
|-
| scanin || - || -
| /dev/sc_fw_update0 || (syscon?) firmware update || -
|-
|-
| sce_zlib{_sys} || zlib || zlib (de)compression
| /dev/sflash0 || SPI flash || 2MB. Has EMC firmware and (non-secure) NVS.
|-
|-
| sc_fw_update0 || ?syscon? firmware update || -
| /dev/srtc || Secure Real Time Clock || -
|-
|-
| sflash0 || [[Serial Flash]] || 2MB. Contains [[EMC]] firmware and (non-secure) NVS.
| /dev/ssd0.* || Internal SSD partitions || -
|-
|-
| sflash0s0 || [[Serial Flash]] Sector 0 ||  
| /dev/sshot || Screenshot || -
|-
|-
| sflash0s0x0 || [[Serial Flash]] Sector 0 Block 0 ||  
| /dev/transactionid.ctl || - || -
|-
|-
| sflash0s0x34 || [[Serial Flash]] Sector 0 Block 34 || Serial Flash [[Non Volatile Storage]]
| /dev/ufssuspend || - || -
|-
|-
| sflash0s0x32 || [[Serial Flash]] Sector 0 Block 32 || To be confirmed.
| /dev/usbctl || USB control || -
|-
|-
| sflash0s0x32b || [[Serial Flash]] Sector 0 Block 32 bis ||  
| /dev/uvd_{dec/enc/bgt} || Unified Video Decoder? || -
|-
|-
| sflash0s0x41b || [[Serial Flash]] Sector 0 Block 41 || To be confirmed.
| /dev/wlanbt || Wireless LAN + Bluetooth || -
|-
|-
| sflash0s0x41b || [[Serial Flash]] Sector 0 Block 41 bis ||
| /dev/xpt0 || XPT Transport Interface || CAM Transport Layer
|-
| sflash0s1 || [[Serial Flash]] Sector 1 || To be confirmed.
|-
| sflash0s1.crypt || [[Serial Flash]] Sector 1 encrypted || To be confirmed.
|-
| sflash0s1.cryptx40 || [[Serial Flash]] Sector 1 encrypted Block 40 ||
|-
| srtc || Secure Real Time Clock || -
|-
| ssd0.* || Solid State Drive 0 || Mountpoints for many internal SSD partitions. See [[Filesystem]].
|-
| sshot || Screenshot || -
|-
| transactionid.ctl || Transaction ID Control || -
|-
| ufssuspend || UFS Suspend || -
|-
| usbctl || USB Control || -
|-
| uvd_{dec/enc/bgt} || ?Unified Video Decoder? || Maybe related to gameplay recording.
|-
| wlanbt || Wireless LAN + Bluetooth || -
|-
| xpt0 || XPT Transport Interface || CAM Transport Layer
|}
|}


== Platform Security Processor Core (PSP) (MP0) ==
== Platform Security Processor Core (PSP) (MP0) ==


* See also the [[AMD Platform Security Processor]] wiki page.
* All the fun things are here
* All the fun things related to PS5 security are here.
* Named SMU PSP as well
* Named AMD SMU PSP (AMD System Management Unit Platform Security Processor) and ASP (AMD Secure Processor) as well.
* Named ASP as well (AMD Secure Processor)


== System Management Unit (SMU) (MP1) ==
== System Management Unit (SMU) (MP1) ==
MP1 (System Management Unit or "SMU") is an xtensa CPU responsible for power management, clock management, sampling sensor data, and other power/thermal-related tasks. The /dev/mp1 device can be used to issue commands to it. Below are known commands.
MP1 (System Management Unit or "SMU") is an xtensa CPU responsible for power management, clock management, sampling sensor data, and other power/thermal-related tasks. The /dev/mp1 device can be used to issue commands to it. Below are known commands.


Line 261: Line 231:
== Sensor Fusion Processor (SFP) (MP2) ==
== Sensor Fusion Processor (SFP) (MP2) ==


* It does not exist on PS5 as it is mainly for mobiles.
* doesn't exist on ps5
* mainly for mobiles


== Trusted Execution Environment (TEE) (MP3) ==
== Trusted Execution Environment (TEE) (MP3) ==
 
MP3 consists of the Trusted Execution Environment (TEE) running on the AMD Platform Security Processor (PSP/SP). Its primary function is Digital Rights Management (DRM) via [https://www.microsoft.com/playready/features/EnhancedContentProtection.aspx PlayReady SL3000]. In userspace, the libSceTEEClient library is used for interfacing with it, which internally uses /dev/mp3 to load secure binaries (sbins) and establish sessions. Below are known commands.
MP3 consists of the Trusted Execution Environment (TEE) running on the [[AMD Platform Security Processor]]. Its primary function is Digital Rights Management (DRM) via [https://www.microsoft.com/playready/features/EnhancedContentProtection.aspx PlayReady SL3000]. In usermode, the libSceTEEClient library is used for interfacing with it, which internally uses /dev/mp3 to load secure binaries (sbins) and establish sessions. Below are known commands.


{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! IOCTL # !! Name !! Notes
! IOCTL # !! Name !! Notes
|-
|0x400CB400
|TEE_IOC_VERSION
| -
|-
|-
| 0xC010B403 || TEE_IOC_INVOKE || Invoke commands
| 0xC010B403 || TEE_IOC_INVOKE || Invoke commands
|-
|0xC010B402
|TEE_IOC_OPEN_SESSION
| -
|-
|0xC008B404
|TEE_IOC_CANCEL
| -
|-
|-
| 0xC010B408 || TEE_IOC_DLM_GET_DEBUG_TOKEN || -
| 0xC010B408 || TEE_IOC_DLM_GET_DEBUG_TOKEN || -
Line 303: Line 261:


== A53MM/A53IO (MP4) ==
== A53MM/A53IO (MP4) ==
MP4, which consists of /dev/a53mm, /dev/a53mmsys, and /dev/a53io, is used for various tasks, and its overall purpose is not fully understood. Some of the things it includes are debugging (mdbg), video encode/decode, and other various memory-management related things. Below are known commands.
MP4, which consists of /dev/a53mm, /dev/a53mmsys, and /dev/a53io, is used for various tasks, and its overall purpose is not fully understood. Some of the things it includes are debugging (mdbg), video encode/decode, and other various memory-management related things. Below are known commands.


Line 405: Line 362:


== Backup and Restore ==
== Backup and Restore ==
 
Backup and Restore (BAR) is used by shellcore via /dev/bar. Below are known commands.
Backup and Restore (BAR) is used by [[SceShellCore]] via /dev/bar. Below are known commands.


{| class="wikitable sortable"
{| class="wikitable sortable"
Line 430: Line 386:


== Disc UID ==
== Disc UID ==
 
Disc UID (/dev/duid) has its own library (libSceDiscId). It's unknown what this is used for at present. It has 2 known ioctls.
Disc UID (/dev/duid) has its own library (libSceDiscId). It's unknown what this is used for at present. It has two known [[IOCTL]]s.


{| class="wikitable sortable"
{| class="wikitable sortable"
Line 443: Line 398:


== Dynamic Library Debug ==
== Dynamic Library Debug ==
Dynamic Lib Debug (/dev/dldbg) is used by the library for debugging syscore. Given the name, it's likely used for debugging sprx libs. Below are known commands.
Dynamic Lib Debug (/dev/dldbg) is used by the library for debugging syscore. Given the name, it's likely used for debugging sprx libs. Below are known commands.


Line 459: Line 413:


== FTTRM ==
== FTTRM ==
 
FTTRM's full purpose is unknown, but it's likely DRM-related. It's used by the Bluray app (BdmvPlayerCore, BdvdPlayerCore, UHDBdPlayerCore) via /dev/fttrm. There are only 2 known commands.
FTTRM's full purpose is unknown, but it is likely DRM-related. It is used by the Bluray application (BdmvPlayerCore, BdvdPlayerCore, UHDBdPlayerCore) via /dev/fttrm. There are only two known commands. RM stands for Rights Management and FT may stand for FilmTrack or Film and Television Tracking. See [https://info.filmtrack.com/the-critical-role-of-security-in-entertainment-rights-management].


{| class="wikitable sortable"
{| class="wikitable sortable"
Line 472: Line 425:


== ICC Floyd (TPM) ==
== ICC Floyd (TPM) ==
The /dev/icc_floyd is for interacting with the floyd Trusted Platform Module (TPM) over ICC. It only has one known command.
The /dev/icc_floyd is for interacting with the floyd Trusted Platform Module (TPM) over ICC. It only has one known command.


Line 486: Line 438:


== Manufacturer Authorization ==
== Manufacturer Authorization ==
 
The /dev/manuauth device seems to be for manufacturer authorization or authentication. It's used in various updaters. Below are known commands.
The /dev/manuauth device seems to be for manufacturer authorization or authentication. It is used in various updaters. Below are known commands.


{| class="wikitable sortable"
{| class="wikitable sortable"
Line 502: Line 453:


== Namespace Filesystem Control ==
== Namespace Filesystem Control ==
 
The Namespace Filesystem (NSFS) is used by Virtual Shell (Vsh) and shellcore. It's critical to processes running on the system. Below are known commands.
The Namespace Filesystem (NSFS) is used by Virtual Shell (Vsh) and [[SceShellCore]]. It is critical to processes running on the system. Below are known commands.


{| class="wikitable sortable"
{| class="wikitable sortable"
Line 521: Line 471:


== PFS Control ==
== PFS Control ==
 
Playstation Filesystem (PFS) Control and /dev/pfsctldev is used internally for VSH. Below are known commands.
Playstation FileSystem (PFS) Control and /dev/pfsctldev is used internally for VSH. Below are known commands.


{| class="wikitable sortable"
{| class="wikitable sortable"
Line 552: Line 501:


== PFS Manager ==
== PFS Manager ==
 
PFS Manager (/dev/pfsmgr) is used by shellcore. It handles trophy related tasks, savedata, and keystone verification. Below are known commands.
PFS Manager (/dev/pfsmgr) is used by [[SceShellCore]]. It handles trophy related tasks, savedata, and keystone verification. Below are known commands.


{| class="wikitable sortable"
{| class="wikitable sortable"
Line 583: Line 531:


== PUP Updater ==
== PUP Updater ==
The /dev/pup_update0 device is used to perform firmware updates.
The /dev/pup_update0 device is used to perform firmware updates.


Line 622: Line 569:


== Root Param ==
== Root Param ==
 
Root Param is used by shellcore to verify root param sfos (for PS4) or jsons (for PS5, aka PPR for ProsPeRo). Below are known commands.
Root Param is used by [[SceShellCore]] to verify root PARAM.SFO files (for PS4) or JSON files (for PS5, aka PPR for ProsPeRo). Below are known commands.


{| class="wikitable sortable"
{| class="wikitable sortable"
Line 637: Line 583:


== CAM Transport Layer ==
== CAM Transport Layer ==
CAM (Common Access Method) storage subsystem provides a method for implementing drivers to control various known storage devices.
CAM (Common Access Method) storage subsystem provides a method for implementing drivers to control various known storage devices.
Attaches any devices it finds to the appropriate drivers.
Attaches any devices it finds to the appropriate drivers.
Line 650: Line 595:
|}
|}


== Wireless LAN and Bluetooth ==
== Wireless LAN + Bluetooth ==
 
WLAN and Bluetooth functionality is reachable via /dev/wlanbt. Below are known commands.
WLAN and Bluetooth functionality is reachable via /dev/wlanbt. Below are known commands.


Please note that all contributions to PS5 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS5 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)