A PlayStation 3 package download tool
PKGi PS3 is a PlayStation 3 port of PSVita pkgi.
The
pkgi-ps3homebrew app allows to download and install
.pkgfiles directly on your PS3.
Comments, ideas, suggestions? You can contact me on Twitter and on my website.
direct mode) or queued for background download (
background mode) using the internal Download Manager.
.riffiles for downloaded content (system must be activated)
background downloadmode.
Get the latest version here.
See the latest changes here.
You need to create a
pkgi.txtfile in
/dev_hdd0/game/NP00PKGI3/USRDIRthat contains the items available for installation. The text database format is user customizable. Check this section to learn how to define your own custom db format.
You can also load additional database files:
pkgi_games.txt
pkgi_dlcs.txt
pkgi_themes.txt
pkgi_avatars.txt
pkgi_demos.txt
pkgi_managers.txt
pkgi_emulators.txt
pkgi_apps.txt
pkgi_tools.txt
Items on each of these files will be auto-categorized to the file content type. Note: The app assumes that every database file has the same format, as defined in
dbformat.txt.
You can refresh and sync an online database by adding the DB URL(s) to the
config.txtfile in
/dev_hdd0/game/NP00PKGI3/USRDIR.
For example:
url http://www.mysite.com/mylist.csv url_demos http://www.demos.com/otherlist.csv url_emulators http://www.example.com/emulators.csv
Using this setup,
pkgi.txtwill be updated with
mylist.csv,
pgi_demos.txtwith
otherlist.csv, and
pkgi_emulators.txtwith
emulators.csv.
Next time you open the app, you'll have an additional menu option called Refresh. When you select it, the local databases will be syncronized with the defined URLs.
The application needs a text database that contains the items available for installation, and it must follow the default format definition, or have a custom format definition file.
The default database file format uses a very simple CSV format where each line means one item in the list:
contentid,type,name,description,rap,url,size,checksum
where:
| Column | Description | |--------|-------------| |
contentid| is the full content id of the item, for example:
UP0000-NPXX99999_00-0000112223333000. |
type| is a number for the item's content type. See the table below for details. (set it to 0 if unknown) |
name| is a string for the item's name. |
description| is a string for the item's description. |
rap| the 16 hex bytes for a RAP file, if needed by the item (
.rapfiles will be created on
/dev_hdd0/exdata). Leave empty to skip the
.rapfile. |
url| is the HTTP/HTTPS URL where to download the
.pkg. |
size| is the size in bytes of the
.pkgfile, or 0 if unknown. |
checksum| is a SHA256 digest of the
.pkgfile (as 32 hex bytes) to make sure the file is not tampered with. Leave empty to skip the check.
Note:
nameand
descriptioncannot contain newlines or commas.
An example
pkgi.txtfile:
EP0000-NP9999999_00-0AB00A00FR000000,0,My PKG Test,A description of my pkg,dac109e963294de6cd6f6faf3f045fe9,http://192.168.1.1/html/mypackage.pkg,2715513,afb545c6e71bd95f77994ab4a659efbb8df32208f601214156ad89b1922e73c3 UP0001-NP00PKGI3_00-0000000000000000,0,PKGi PS3 v0.1.0,,,http://bucanero.heliohost.org/pkgi.pkg,284848,3dc8de2ed94c0f9efeafa81df9b7d58f8c169e2875133d6d2649a7d477c1ae13
| Type value | Content type | |------------|--------------| | 0 | Unknown | 1 | Game | 2 | DLC | 3 | Theme | 4 | Avatar | 5 | Demo | 6 | Backup Manager | 7 | Emulator | 8 | Application | 9 | Tool
To use a custom database format, you need to create a
dbformat.txtfile, and save it on
/dev_hdd0/game/NP00PKGI3/USRDIR.
The
dbformat.txtdefinition file is a 2-line text file: * Line 1: the custom delimiter character (e.g.:
;,
,,
|, etc.) * Line 2: the column names for every column in the custom database, delimited by the proper delimiter defined in line 1
Note: For the columns to be properly recognized, use the column tag names defined in the table above.
All the columns are optional. Your database might have more (or less) columns, so any unrecognized column will be skipped.
Example
dbformat.txt, for a database using semi-colon (
;) as separator:
; name;TITLE ID;REGION;description;AUTHOR;TYPE;url;rap;size
Result: only the
name,description,url,rap,sizefields will be used.
Example
dbformat.txt, for a database using character pipe (
|) as separator:
| REGION|TITLE|name|url|rap|contentid|DATE|PKG FILENAME|size|checksum
Result: only the
name,url,rap,contentid,size,checksumfields will be used.
Using the application is simple and straight-forward:
.rapdata, the file will be saved in the
/dev_hdd0/exdata/folder.
rapstring?
You can use a tool like RIF2RAP to generate a
.rapfrom your existing
.riffiles. Then you can use a tool like
hexdumpto get the hex byte string.
.pkglinks?
You can use PSDLE to find
.pkgURLs for the games you own. Then either use the original URL, or host the file on your own web server.
Check the
/dev_hdd0/tmp/pkgifolder - each download will be in a separate
.pkgfile by its title id. Simply delete the file and start again.
Optimization is still pending. If
directdownload is slow, you can use
background downloadmode to download files using the internal PS3 Download Manager.
You need to have installed:
Run
maketo create a release build. After that, run
make pkgto create a
.pkginstall file.
You can also set the environment variable
PS3LOAD=tcp:x.x.x.xto the PS3's IP address; that will allow you to use
make runand send
pkgi-ps3.selfdirectly to the PS3Load listener.
To enable debug logging, build PKGi PS3 with
make DEBUGLOG=1. The application will send debug messages to UDP multicast address
239.255.0.100:30000. To receive them you can use socat on your PC:
$ socat udp4-recv:30000,ip-add-membership=239.255.0.100:0.0.0.0 -
pkgi-ps3is released under the MIT License.