DIP Switches

From PS4 Developer wiki
Jump to navigation Jump to search

DIP Switches are some parameters on PlayStation Dev/Test Kits that can be turned on or off, hence the name switches. On PS4, these switches are stored in Serial Flash Non Volatile Storage. DIP Switches can be modified by the user through the Debug Settings menu on PS4 or in Neighborhood software on host PC.

See also PS Vita DIP Switches.

PS4 DIP Switches Structure[edit | edit source]

PS4 DIP Switches are stored in a 32-bytes buffer, representing 256 bits so 256 possible switches.

Number Description Used In
0 IsDevelopmentMode libSceDipsw.sprx
1 ? orbis_setip.elf
2 IsAssistMode libSceDipsw.sprx
16 MemMode? SceShellCore.elf
17 MemMode? SceShellCore.elf
24 IsLargeMemoryBudget libSceDipsw.sprx in sceKernelIsDisableRazor, avbase.elf
30 ? libSceDipsw.sprx
40 IsSlowHddMode
56 IsLimitKeepProcess SceShellCore.elf
57 Coredump debug? SceSysCore.elf
60 ? SceShellCore.elf
64 System CPU cores? SceSysCore.elf
65 System CPU cores? SceSysCore.elf
76 ? SceSysCore.elf
91 ? Set on a prototype DevKit
92 ? Set on a prototype DevKit
93 ? Set on a prototype DevKit
94 ? Set on a prototype DevKit
95 ? SceSysCore.elf
96 ? SceSysCore.elf
97 ? SceSysCore.elf
102 HasCp SceShellCore.elf
128 IsVsh4kMode SceShellCore.elf
250 ? SceSysCore.elf
251 ? SceSysCore.elf
255 ? Set on a DevKit

Byte-parsing[edit | edit source]

Altough DIP switches must be handled by bits, analysis can also be carried by bytes in a first step. Here is kept a track of byte analysis that helped to determine the DIP switches usage.

Offset Size Notes
0x0 0x1 SCE_REGMGR_ENT_KEY_DEVENV_TOOL_boot_param. Values: 0xFE Development Mode (on DevKit), 0xFB Assist Mode (on TestKit), 0xFF Release Mode (default)
0x3 0x1 Memory Budget (0xFF Normal, 0xFE Large (default))
0x5 0x1 Slow HDD Mode (0xFE ON, 0xFF OFF (default))
0xB 0x1 Unknown (0x87 on prototype DevKit)
0x10 0x1 vsh_4K Mode (0xFE ON, 0xFF OFF (default))
0x1F 0x1 Unknown (e.g 0x7F)

Boot Parameters[edit | edit source]

Most DIP Switches are listed under Debug Settings -> Boot Parameters. A non-exhaustive list can be found in debug_settings_boot_param.xml after decompilation of the Sce.Vsh.ShellUI.Settings.Plugins.DebugSettings class in /system_ex/app/NPXS20001/psm/Application/app.sexe.

<?xml version="1.0" encoding="UTF-8" ?>

<system_settings version="1.0" plugin="debug_settings_plugin">

  <!-- Boot Parameters -->
  <setting_list id="id_bp" title="Boot Parameters">

    <!-- Release Check Mode -->
    <list id="id_bp_release_check_mode" title="Release Check Mode">
      <list_item id="id_bp_release_check_mode_release" title="Release Mode" value="0"/>
      <list_item id="id_bp_release_check_mode_ast" title="Assist Mode" value="2"/>
      <list_item id="id_bp_release_check_mode_dev" title="Development Mode" value="1"/>
    </list>

    <!-- Release Mode Console -->
    <list id="id_bp_release_mode_console" title="Release Mode Console"
                confirm="You can adjust this setting only when the release check mode is Release mode.&#xa;Are you sure you want to change this?"
                confirm_phrase="Yes,No">
      <list_item id="id_bp_release_mode_console_disable" title="Disable" value="0"/>
      <list_item id="id_bp_release_mode_console_enable" title="Enable" value="1"/>
    </list>

    <!-- Slow HDD Mode -->
    <list id="id_bp_slow_hdd_mode" title="Slow HDD Mode"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_slow_hdd_mode_off" title="Off" value="0"/>
      <list_item id="id_bp_slow_hdd_mode_on" title="On" value="1"/>
    </list>

    <!-- disable_qaf -->
    <list id="id_bp_disable_qaf" title="disable_qaf" 
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_disable_qaf_off" title="Off" value="0"/>
      <list_item id="id_bp_disable_qaf_on" title="On" value="1"/>
    </list>

    <!-- disable_utoken -->
    <list id="id_bp_disable_utoken" title="disable_utoken"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_disable_utoken_off" title="Off" value="0"/>
      <list_item id="id_bp_disable_utoken_on" title="On" value="1"/>
    </list>

    <!-- disable_razor -->
    <list id="id_bp_disable_razor" title="disable_razor"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_disable_razor_off" title="Off" value="0"/>
      <list_item id="id_bp_disable_razor_on" title="On" value="1"/>
    </list>

    <!-- fs_reverted -->
    <list id="id_bp_fs_reverted" title="fs_reverted"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_fs_reverted_off" title="Off" value="0"/>
      <list_item id="id_bp_fs_reverted_on" title="On" value="1"/>
    </list>

    <!-- fs_advanced -->
    <list id="id_bp_fs_advanced" title="fs_advanced"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_fs_advanced_off" title="Off" value="0"/>
      <list_item id="id_bp_fs_advanced_on" title="On" value="1"/>
    </list>

    <!-- fs_trial -->
    <list id="id_bp_fs_trial" title="fs_trial"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_fs_trial_off" title="Off" value="0"/>
      <list_item id="id_bp_fs_trial_on" title="On" value="1"/>
    </list>

    <!-- repeat_kernel_system_suspend -->
    <list id="id_bp_repeat_kernel_system_suspend" title="repeat_kernel_system_suspend"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_repeat_kernel_system_suspend_off" title="Off" value="0"/>
      <list_item id="id_bp_repeat_kernel_system_suspend_on" title="On" value="1"/>
    </list>

    <!-- cpu_unlimited -->
    <list id="id_bp_cpu_restrict" title="cpu_unlimited"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_cpu_restrict_off" title="Off" value="0"/>
      <list_item id="id_bp_cpu_restrict_on" title="On" value="1"/>
    </list>

    <!-- cpu_only_one -->
    <list id="id_bp_cpu_only_one" title="cpu_only_one"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_cpu_only_one_off" title="Off" value="0"/>
      <list_item id="id_bp_cpu_only_one_on" title="On" value="1"/>
    </list>

    <!-- disable_unapproved_sysctl -->
    <list id="id_bp_disable_unapproved_sysctl" title="disable_unapproved_sysctl"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_disable_unapproved_sysctl_off" title="Off" value="0"/>
      <list_item id="id_bp_disable_unapproved_sysctl_on" title="On" value="1"/>
    </list>

    <!-- vm_compressor_mode0 -->
    <list id="id_bp_vm_compressor_mode0" title="vm_compressor_mode0"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_vm_compressor_mode0_off" title="Off" value="0"/>
      <list_item id="id_bp_vm_compressor_mode0_on" title="On" value="1"/>
    </list>

    <!-- kratos_swap_off -->
    <list id="id_bp_kratos_swap_off" title="kratos_swap_off"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_kratos_swap_off_off" title="Off" value="0"/>
      <list_item id="id_bp_kratos_swap_off_on" title="On" value="1"/>
    </list>

    <!-- kratos_mode -->
    <list id="id_bp_kratos_nfs_mode" title="kratos_mode"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_kratos_nfs_mode_off" title="Off" value="0"/>
      <list_item id="id_bp_kratos_nfs_mode_on" title="On" value="1"/>
    </list>

    <!-- kratos_wlan_off -->
    <list id="id_bp_kratos_wlan_off" title="kratos_wlan_off"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_kratos_wlan_off_off" title="Off" value="0"/>
      <list_item id="id_bp_kratos_wlan_off_on" title="On" value="1"/>
    </list>

    <!-- vsh_4k_mode -->
    <list id="id_bp_vsh_4k_mode" title="vsh_4k_mode"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_vsh_4k_mode_off" title="Off" value="0"/>
      <list_item id="id_bp_vsh_4k_mode_on" title="On" value="1"/>
    </list>

    <!-- Standard PS4 Emulation -->
    <list id="id_bp_base_ps4_emulation" title="Standard PS4 Emulation"
                confirm="Your system will restart to reflect the settings." confirm_phrase="OK,Cancel">
      <list_item id="id_bp_base_ps4_emulation_off" title="Off" value="0"/>
      <list_item id="id_bp_base_ps4_emulation_on" title="On" value="1"/>
    </list>

  </setting_list>

</system_settings>