Skip to content

Instantly share code, notes, and snippets.

@SvenGDK
Last active January 20, 2026 12:35
Show Gist options
  • Select an option

  • Save SvenGDK/6525ec4af64e45a847e35af45da46ab4 to your computer and use it in GitHub Desktop.

Select an option

Save SvenGDK/6525ec4af64e45a847e35af45da46ab4 to your computer and use it in GitHub Desktop.
How to fully block YouTube from being updated on the PS5 when using YT2JB.

Simply modifing appinfo.db will not block YouTube from being updated. As soon as you connect to the internet without setting a DNS it will automatically refresh itself to the correct clean state, the icon also switches back to original. This can result in a softlock where you have to set up everyhting again.

In order to properly block YouTube from being updated, you also need to fully update YouTube's parameters after a new installation.

The param.json file of the YouTube app is actually located at 3 positions when installed :

  • At /system_data/priv/appmeta/PPSA01650/param.json
  • At /user/appmeta/PPSA01650/param.json
  • And also inside /system_data/priv/mms/app.db TABLE: tbl_contentinfo COLUMN: AppInfoJson
    • The values aren't exactly the same ones as in param.json but the CONTENT_VERSION and VERSION_FILE_URI is also located in there

To fully block YouTube from being updated:

  1. Get /system_data/priv/mms/appinfo.db and apply following patch :
UPDATE tbl_appinfo SET val = 'http://127.0.0.2' WHERE titleId = 'PPSA01650' AND key = 'VERSION_FILE_URI';
UPDATE tbl_appinfo SET val = '99.999.999' WHERE titleId = 'PPSA01650' AND key = 'CONTENT_VERSION';
  1. Get 1 param.json from /system_data/priv/appmeta/PPSA01650/param.json OR /user/appmeta/PPSA01650/param.json
  2. Modify contentVersion to 99.999.999 and versionFileUri to http://127.0.0.2
  3. Get /system_data/priv/mms/app.db and apply following patch :
UPDATE tbl_contentinfo
SET AppInfoJson = json_set(
    AppInfoJson,
    '$.CONTENT_VERSION', '99.999.999',
    '$.VERSION_FILE_URI', 'http://127.0.0.2'
)
WHERE titleId = 'PPSA01650';
  1. Navigate to the Settings on your PS5
  2. Upload all files back using FTP :
  • param.json to /system_data/priv/appmeta/PPSA01650/param.json AND /user/appmeta/PPSA01650/param.json
  • appinfo.db to /system_data/priv/mms/appinfo.db
  • app.db to /system_data/priv/mms/app.db
  1. Press PS button on the controller and restart the console
@rocknard
Copy link

Hm... it says on sqlite cli "no such column: VERSION_FILE_URI" when applied to appinfo.db. I had to use this:

UPDATE tbl_appinfo
SET val = 'http://127.0.0.2'
WHERE titleId = 'PPSA01650'
AND key = 'VERSION_FILE_URI';

and

UPDATE tbl_appinfo
SET val = '99.999.999'
WHERE titleId = 'PPSA01650'
AND key = 'CONTENT_VERSION';

The colum is not defined as "key". Didn't check the other app.db

@SvenGDK
Copy link
Author

SvenGDK commented Jan 18, 2026

Hm... it says on sqlite cli "no such column: VERSION_FILE_URI" when applied to appinfo.db. I had to use this:

UPDATE tbl_appinfo SET val = 'http://127.0.0.2' WHERE titleId = 'PPSA01650' AND key = 'VERSION_FILE_URI';

and

UPDATE tbl_appinfo SET val = '99.999.999' WHERE titleId = 'PPSA01650' AND key = 'CONTENT_VERSION';

The colum is not defined as "key". Didn't check the other app.db

Yes, this is actually correct. I updated the code above.

@rocknard
Copy link

And app.db with that code is adding new parameters instead of overwriting:

Original extracted from PPSA01650:

{"data":"01.000.003","key":"CONTENT_VERSION","size":10,"type":2}
{"data":"https://sgst.prod.dl.playstation.net/sgst/prod/00/np/PPSA01650_00/c91127c5-5b92-4a2a-83b4-0bc41481f672-version.xml ","key":"VERSION_FILE_URI","size":255,"type":2}
,"mimeType":0,"mimeTypeFormatVersion":0,"parserId":0,"promoterFormatVersion":0}

With your code (extracted):

{"data":"01.000.003","key":"CONTENT_VERSION","size":10,"type":2}
{"data":"https://sgst.prod.dl.playstation.net/sgst/prod/00/np/PPSA01650_00/c91127c5-5b92-4a2a-83b4-0bc41481f672-version.xml ","key":"VERSION_FILE_URI","size":255,"type":2}
,"mimeType":0,"mimeTypeFormatVersion":0,"parserId":0,"promoterFormatVersion":0,"CONTENT_VERSION":"99.999.999","VERSION_FILE_URI":"http://127.0.0.2"}


It is not overwriting the values, instead is generating new ones added at the end, and i don't know if it is intended? I used this (not tested on PS5, but checked on pc):

UPDATE tbl_contentinfo
SET AppInfoJson = json_set(
    AppInfoJson,
    '$.field_list',
    (
        SELECT json_group_array(
            CASE
                WHEN json_extract(e.value,'$.key') = 'CONTENT_VERSION'
                    THEN json_set(e.value,'$.data','99.999.999')

                WHEN json_extract(e.value,'$.key') = 'VERSION_FILE_URI'
                    THEN json_set(e.value,'$.data','http://127.0.0.2')

                ELSE e.value
            END
        )
        FROM json_each(AppInfoJson,'$.field_list') AS e
    )
)
WHERE titleId IN ('PPSA01650','PPSA01651','PPSA01652');

With this code you get this:

{"data":"99.999.999","key":"CONTENT_VERSION","size":10,"type":2},
{"data":"http://127.0.0.2","key":"VERSION_FILE_URI","size":255,"type":2},
,"mimeType":0,"mimeTypeFormatVersion":0,"parserId":0,"promoterFormatVersion":0}

@SvenGDK
Copy link
Author

SvenGDK commented Jan 19, 2026

And app.db with that code is adding new parameters instead of overwriting:

Original extracted from PPSA01650:

{"data":"01.000.003","key":"CONTENT_VERSION","size":10,"type":2} {"data":"https://sgst.prod.dl.playstation.net/sgst/prod/00/np/PPSA01650_00/c91127c5-5b92-4a2a-83b4-0bc41481f672-version.xml ","key":"VERSION_FILE_URI","size":255,"type":2} ,"mimeType":0,"mimeTypeFormatVersion":0,"parserId":0,"promoterFormatVersion":0}

With your code (extracted):

{"data":"01.000.003","key":"CONTENT_VERSION","size":10,"type":2} {"data":"https://sgst.prod.dl.playstation.net/sgst/prod/00/np/PPSA01650_00/c91127c5-5b92-4a2a-83b4-0bc41481f672-version.xml ","key":"VERSION_FILE_URI","size":255,"type":2} ,"mimeType":0,"mimeTypeFormatVersion":0,"parserId":0,"promoterFormatVersion":0,"CONTENT_VERSION":"99.999.999","VERSION_FILE_URI":"http://127.0.0.2"}

It is not overwriting the values, instead is generating new ones added at the end, and i don't know if it is intended? I used this (not tested on PS5, but checked on pc):

UPDATE tbl_contentinfo
SET AppInfoJson = json_set(
    AppInfoJson,
    '$.field_list',
    (
        SELECT json_group_array(
            CASE
                WHEN json_extract(e.value,'$.key') = 'CONTENT_VERSION'
                    THEN json_set(e.value,'$.data','99.999.999')

                WHEN json_extract(e.value,'$.key') = 'VERSION_FILE_URI'
                    THEN json_set(e.value,'$.data','http://127.0.0.2')

                ELSE e.value
            END
        )
        FROM json_each(AppInfoJson,'$.field_list') AS e
    )
)
WHERE titleId IN ('PPSA01650','PPSA01651','PPSA01652');

With this code you get this:

{"data":"99.999.999","key":"CONTENT_VERSION","size":10,"type":2},
{"data":"http://127.0.0.2","key":"VERSION_FILE_URI","size":255,"type":2},
,"mimeType":0,"mimeTypeFormatVersion":0,"parserId":0,"promoterFormatVersion":0}

You are probably in the wrong database. The JSON is also wrong. It will look like :

{"#_access_index":273,"#_access_index_13fe9ffc":41,"#_access_index_13fe9ffd":42,"#_access_index_13fe9ffe":273,"#_booted":1,"#_contents_status":0,"#_ctime":"2026-01-13 21:33:06.000","#_install_time":"2026-01-13 21:33:06.000","#_last_access_time":"2026-01-17 08:19:05.121","#_last_access_time_13fe9ffc":"2026-01-13 22:15:43.267","#_last_access_time_13fe9ffd":"2026-01-13 22:15:43.282","#_last_access_time_13fe9ffe":"2026-01-17 08:19:05.121","#_last_start_type_13fe9ffe":2,"#_mtime":"2026-01-13 21:38:50.078","#_promote_time":"2026-01-13 22:15:39.579","#_size":471072768,"#_size_app_only":471072768,"#catalog_age_level":"{\"US\":13,\"default\":13}","#catalog_concept_id":205453,"#catalog_content_badge_type":2,"#catalog_content_version":"01.000.030","#catalog_path_icon0_info":-8070450532247928832,"#catalog_path_icon0_info_time_stamp":1768415303,"#catalog_path_pic0_info":-8070450532247928832,"#catalog_path_pic0_info_time_stamp":1768415303,"#catalog_ps_platform":0,"#catalog_title":"YouTube","#catalog_title_01":"YouTube","#exit_type":0,"#scp_last_access_datetime":63904014312645234,"#scp_last_access_datetime_common":63904014312645234,"#scp_modified_date":"2026-01-12T14:54:20Z","#scp_modified_date_common":"2026-01-12T14:54:20Z","AGE_LEVEL":"{\"US\":13,\"default\":13}","APP_TYPE":5,"ATTRIBUTE":1644167168,"ATTRIBUTE2":0,"ATTRIBUTE3":512,"ATTRIBUTE_EXE":0,"ATTRIBUTE_INTERNAL":0,"CATEGORY_TYPE":65536,"CONCEPT_ID":205453,"CONTENT_BADGE_TYPE":2,"CONTENT_ID":"UP4381-PPSA01650_00-YOUTUBESIEA00000","CONTENT_VERSION":"99.999.999","DEEPLINK_URI":"psgm:play?id=PPSA01650","DISPLAYLOCATION":188,"DISP_LOCATION_1":0,"DISP_LOCATION_2":0,"DOWNLOAD_DATA_SIZE":256,"DOWNLOAD_DATA_SIZE_2":0,"HUBAPP_URI":"psmediahub:main?titleId=PPSA01650","MASS_SIZE":0,"METADATA_ID":"prior:internal:0","NOTICE_SCREEN_VERSION":0,"PARENTAL_LEVEL":0,"PUBTOOL_VERSION":"1.51","SDK_VERSION":"0x0400000000000000","SERVICE_LAUNCH_BUTTON_KEY_CODE":3,"SYSTEM_VER_PPR":289074801081843712,"TITLE":"YouTube","TITLE_01":"YouTube","TITLE_ID":"PPSA01650","USER_DEFINED_PARAM_1":0,"USER_DEFINED_PARAM_2":0,"USER_DEFINED_PARAM_3":0,"USER_DEFINED_PARAM_4":0,"VERSION_FILE_URI":"http://127.0.0.2","_app_format_type":1,"_contents_ext_type":0,"_contents_location":0,"_current_slot":0,"_disable_live_detail":0,"_external_hdd_app_status":0,"_hdd_location":0,"_install_status":0,"_install_sub_status":1,"_install_version":1153202979583557633,"_local_concept_id":"cid:scp:000000000003228d","_m2_device_id":0,"_metadata_path":"/user/appmeta/PPSA01650","_not_install_sub_status":0,"_org_path":"/user/app/PPSA01650","_path_changeinfo_info":0,"_path_icon0_info":-8070450532247928832,"_path_icon0_info_time_stamp":1768340329,"_path_info":0,"_path_info_2":0,"_path_pic0_info":-6917529027641081856,"_path_pic0_info_time_stamp":1768340329,"_path_promotion0_info":0,"_primary_title_sort":197637,"_ps_platform":0,"_size_other_hdd":0,"_sort_priority":100,"_uninstall_recommend_atime":"2026-01-17 07:42:16.626","_uninstall_recommend_rank":0,"_uninstallable":1,"_view_category":0,"sync_index":304}

@rocknard
Copy link

You are showing me appinfo.db, not app.db (they are stored on /system_data/priv/mms/, as you said). appinfo.db is using table "tbl_appinfo", but app.db is using "AppInfoJson". Please, recheck.

appinfo.db was adressed on my first post, you corrected it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment