Widgets
Description
Widgets was introduced in PS3 firmware 2.00 up to 3.30 as a way to display dynamic information from web servers in XMB, are very dependant and managed by the Web Browser. The only official widget was named Information Board
In firmware 3.40 widgets was removed because his initial purpose of displaying dynamic content was superceeded by Life with PlayStation (in firmware 2.40) and later by the "what's news" display mode (in firmware 3.00)
- Notes
- XMB loads all available widgets by using the function host://localhost/q? and the subclass x-host/widget (see: XMBML Functions), and are displayed using the class x-xmb/xmliboard (but the class x-xmb/xmliboard is not used anymore and has been replaced by x-xmb/xmlnpsignup). See: XMBML Coding
- PSP introduced widgets in firmware 5.50 (the same information board inherited from PS3). This firmware update for PSP also had some improvements related with the web browser (Internet search for games directly from the XMB, Trend Micro Web Security, and Trend Micro Kids' Safety)
Information Board
It was posible to enable or disable the "information board" widget by pressing triangle over his icon in network column. The way that are build allows to add more widgets in a modular way (but was removed instead of adding more). For an overview of how the "information board" widget was working originally see the official user manual and the introduction at ps3explained.com
It seems the removal of the widgets support was made only partially (are still supported by loading the widget from external devices), so it should be possible to (re)create it, or to create custom widgets
Information Board QA Server: Off/On
Debug XMB loads the widget by using the view ID "root_info" and Query "host_provider_flash". Same than retail XMB, but debug needs this setting enabled. See: QA Flagging
dev_flash/vsh/module
xai_plugin.sprx
This file was removed, see: xai_plugin
To use xai_plugin.sprx in a different firmware version is needed to resign the file with the keys of the firmware where is going to be used. In this example is used scetool for the resigning with the "template" option and the file explore_plugin_full.sprx taken from the modern firmware
Decrypt
scetool.exe -d xai_plugin.sprx xai_plugin_dec.prx
Encrypt
scetool.exe --template explore_plugin_full.sprx --sce-type=SELF --skip-sections=FALSE --compress-data=TRUE --encrypt xai_plugin_dec.prx xai_plugin_new.sprx
dev_flash/vsh/resource
explore_category_network.rco
There is a widget entry missing in the rcoxml ?. And the squared icon in this screenshot ?
Code Sample
dev_flash/vsh/resource/explore/xmb
category_widget.xml
Widgets XMBML configuration file, this file exists in all firmwares with some segments disabled
Code Sample
category_network.xml
Widget icons loaded by XMBML in Network column, widgets related segments was removed in firmware 3.00 by removing his <View id> and his attr
Code Sample
dev_flash/vsh/resource/explore/icon
widget.png
This file exists in firmwares since 2.00 up to 4.83. size 17205 bytes. MD5:5ed81a2c29a6514a4c3b9b72efc5b9f2
dev_flash/vsh/resource/xai
extensions.xml
Contains: extensions.entry.module=Widget and extensions.entry.plugin=xai_plugin
Code Sample
widgets.xml
Contains: xai.widget.url=/dev_hdd0/widget/npdrm/informationboard
Code Sample
dev_flash/vsh/resource/silk/data/
This files was removed in firmware 2.20 at the same time it was implemented the "silk_nas" Web Browser
CEHtmlBrowserApp.bin
Up to firmware 2.17 (and removed in 2.20) See: SILKPADD
CEHtmlBrowserAppXaiWidget.bin
Up to firmware 2.17 (and removed in 2.20) See: SILKPADD
dev_flash/vsh/resource/silk/etc
fontinfo-Xai.xml
Code Sample
dev_flash/vsh/resource/silk_nas/etc
fontinfo-Xai.xml
In firmwares since 2.20 up to 4.83. Size 3063 bytes. MD5:8C1102561C72A21B7866CC4D17D6EFBF
Code Sample
dev_flash/vsh/resource/silk/xai/widgets/informationboard/
Information board main executable and settings files, removed in 3.00
rss.swf
Main widget window, in shockwave flash format
For a preview of how it works you can drag-and-drop the file to your PC webbrowser... or use a shockwave flash editor/player
Icon.png
widget icon identifyer
config.xml
config for rss.swf
Code Sample
setting.xml
RSS URL list by Target_ID, for non QA
Code Sample
setting_qa.xml
RSS URL list by Target_ID, for QA
Code Sample
dev_flash/vsh/resource/silk/xai/widgets/informationboard/strings/
One folder named strings containing 16 files for languages named: infob_<language>.xml (e.g: infob_german.xml, infob_french.xml, etc...)
infob_<language>.xml
dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_chinese_simplified.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_chinese_traditional.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_danish.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_dutch.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_english.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_finnish.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_french.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_german.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_italian.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_japanese.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_korean.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_norwegian.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_portuguese.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_russian.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_spanish.xml dev_flash/vsh/resource/silk/xai/widgets/informationboard/string/infob_swedish.xml
Example from infob_english.xml
Code Sample
dev_flash/vsh/resource/silk/xai/widgets/informationboard/<language>.lproj/
15 folders for different languages named <language>.lproj (e.g: German.lproj, French.lproj, etc...), every folder contains a file named InfoPlist.strings with the same data
dev_flash/vsh/resource/silk/xai/widgets/informationboard/da.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/Dutch.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/fi.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/French.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/German.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/Italian.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/Japanese.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/ko.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/nb.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/pt.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/ru.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/Spanish.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/sv.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/zh_CN.lproj/InfoPlist.strings dev_flash/vsh/resource/silk/xai/widgets/informationboard/zh_TW.lproj /InfoPlist.strings
InfoPlist.strings
Example:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 43 46 42 75 6E 64 6C 65 44 69 73 70 6C 61 79 4E CFBundleDisplayN 00000010 61 6D 65 20 3D 20 22 49 6E 66 6F 72 6D 61 74 69 ame = "Informati 00000020 6F 6E 20 42 6F 61 72 64 22 3B on Board";
- Notes
- Mac widgets also use .lproj localization so maybe can use custom language files.
dev_hdd0/widget/npdrm/informationboard
The existence of this path is a deduction because there is other file where it can be seen this is an alternative path to load widgets. The file contents on this path is unknown but most probably are the same files used in the informationboard directory under dev_flash, so the only difference is the device (dev_hdd0 instead of dev_flash), and the npdrm signature ?
- Notes
- Loaded by Query "host_provider_flash" using src="host://localhost/q?path=/dev_hdd0/widget/npdrm&suffix=informationboard&subclass=x-host/widget"
- The src XMBML code in the line above means:
- host://localhost/q? (this is a XMBML Function)
- path=/dev_hdd0/widget/npdrm (the path where are located the files that are going to be loaded)
- suffix=informationboard (in this case seems to be part of the path, also the name of the widget)
- subclass=x-host/widget (indicates what to do with the files by his type)
- The src XMBML code in the line above means:
- Loaded by Query "host_provider_flash" using src="host://localhost/q?path=/dev_hdd0/widget/npdrm&suffix=informationboard&subclass=x-host/widget"