PS3 PKGi PS3 v1.2.2 released

bucanero

Developer
PKGi PS3 is a PlayStation 3 port of PSVita pkgi.

The pkgi-ps3 homebrew app allows to list, select and download .pkg files directly on your PS3.

screenshot_2019_12_17_02_38_27.png

Download link: https://github.com/bucanero/pkgi-ps3/releases/latest
Source code available on GitHub


  • PKGi PS3 v1.2.2
    https://github.com/bucanero/pkgi-ps3/releases/latest

    Latest changes (2021-10-22):

    Added

    • Migrated all networking code to libcurl
    • Support for HTTP, HTTPS, FTP, FTPS links with TLS v1.2
    • French translation
    • German translation
    • Italian translation
    • Polish translation
    • Portuguese translation
    • Turkish translation
    Fixed

    • Crash when item list is empty


  • v1.2.0

    Added
    • Internationalization support
    • Language detection based on PS3 settings
    • Spanish translation
    • Online scan for available content updates
    • Support for TLS v1.2 using newer libcurl+polarSSL

    .v1.1.8

    Added
    • Content icon download from the TMDB (based on Title ID)
    • Use content icons for package bubbles (XMB)
    • Set L2/R2 buttons as shortcuts to switch between content categories

    Fixed
    • XMB callback handling

    .v1.1.6

    Added
    • Generate .rif files when downloading items (system must be activated)
    • Improved speed when creating empty files in background download mode
    • Enter button detection (cross/circle)

    .v1.1.3

    Added
    • Improved auto-update code to download .pkg updates directly from GitHub
    • Increased database memory limit to 32768 items
    • Changed App location to the XMB Network tab

    Fixed

    • The app now allows to download items that already exist
    • Start/Stop music works without requiring to restart the application


    .v1.1.2

    Added
    • Added content categorization and filtering
    • Added support for loading multiple database files
    • Added support for online db update/sync

    Fixed
    • Filter unsupported or missing URLs when loading a database

    .v1.1.0

    Added
    • Added TTF fonts to support Japanese characters
    • Added SSL support (the app can download https:// links)
    • Added package install bubble for Direct downloads
    • Added background music
    • Added settings options for music and auto-update
    Fixed
    • Fixed UI issue where texts could go beyond the screen limits

    .v1.0.8

    Added
    • Added analog pad support
    • Added CPU/RSX temperature status
    • Added Details screen
    • Added automatic download after version update check
    Fixed
    • Improved empty .pkg file generation using async IO.
    • Improved UI

    .v1.0.5

    Added
    • Generic text database format support
    • Credits ( :but select: ) and Exit ( :but start: ) confirmation dialogs
    • Changelog file
    Fixed
    • The app now creates /dev_hdd0/exdata if the folder doesn't exists
    • Fixed unresponsive background download dialog while creating a PKG file
    • Fixed a bug when the URL was missing

    .v1.0.0

    Added
    • Text search filtering using on-screen keyboard
    • Background download task mode (uses internal Download Manager)
    Fixed
    • Fixed incorrect progress bar information during direct download

  • Installation notes

    After installing the application, you'll need to create a "pkgi.txt" database file on /dev_hdd0/game/NP00PKGI3/USRDIR

    The file should contain the list of PKG files (URLs) that you'd like to list in the app.
    The file is simply a CSV (comma separated value) text file with the following format (each line means one item in the list):
    Code:
    contentid,flags,name,description,rap,url,size,checksum

    where:
    • contentid is full content id of item, for example: UP0000-NPHA99999_00-0000112223333000.
    • flags is currently unused number, set it to 0.
    • name is arbitrary string to display for name.
    • description is currently unused alternative item's description, leave it empty.
    • rap is the 16 hex bytes of the RAP file, if needed by the pkg (.rap will be created on hdd0/exdata). Leave empty for no rap file.
    • url is http url where to download the content .pkg file.
    • size is size of pkg in bytes, or 0 if unknown.
    • checksum is sha256 digest of pkg as 32 hex bytes to make sure pkg is not tampered with. Leave empty to skip the check.

    For example, the pkgi.txt could be something as:
    Code:
    EP0000-NP9999999_00-0AB00A00FR000000,0,My PKG Test,,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

  • original PS Vita version by mmozeiko
    ported to PlayStation 3 by Bucanero



See the project's README on GitHub for more information: https://github.com/bucanero/pkgi-ps3



feel free to share you comments and ideas! :cool2:
 
Last edited:
Nice work.
Could it be made so all those fields are optional except for a pkg URL.

right now I'm working on a generic text db definition file, so it could basically support any kind of delimiter (comma, semi-colon, pipe, tab, etc) and any kind of order for the columns (or even making most columns optional)

I guess that besides URL, the app will need to have a contentid to display the item properly and be able to select it.
(and right now contentid is mandatory because it's also used as a filename for files)

but pretty much with this new feature everything will be optional and customizable :D
 
@DeViL303 well your wish has been granted, with my latest generic db parser code, actually all the fields are optional :)

regarding the content-id thing, if it's not provided then one is generated on demand, based on the row number (e.g. X00000-X99999999_00-0000000000000000)
 
I've updated PKGi PS3 and released v1.0.5

The most relevant change is the support for generic user-defined text database formats. See changelog for details.
Please read the document to learn how to define your own db format.

WIP: I've changed the code to use async writes while creating the PKG file for background download, and it has improved speed 3X. (writing about 20 MB/s) . It will be available in the next version
 
Last edited:
PKGi PS3 is a PlayStation 3 port of PSVita pkgi.

The pkgi-ps3 homebrew app allows to download and install .pkg files directly on your PS3.

View attachment 21459

Download link: https://github.com/bucanero/pkgi-ps3/releases/latest
Source code: available on GitHub

Changelog - v1.0.5

Added

  • Generic text database format support
  • Credits (SELECT) and Exit (START) confirmation dialogs
  • Changelog file
Fixed

  • The app now creates /dev_hdd0/exdata if folder doesn't exists
  • Fixed unresponsive background download dialog while creating a PKG file
  • Fixed a bug when the URL was missing

v1.0.0
Added

  • Text search filtering using on-screen keyboard
  • Background download task mode (uses internal Download Manager)
Fixed

  • Fixed incorrect progress bar information during direct download

See the project's README on GitHub for more information: https://github.com/bucanero/pkgi-ps3


Installation summary:
After install, you'll need to create a "pkgi.txt" file on /dev_hdd0/game/NP00PKGI3/USRDIR

The file should contain the list of PKG files (URLs) that you'd like to list in the app.
The file is simply a CSV (comma separated value) text file with the following format (each line means one item in the list):
Code:
contentid,flags,name,description,rap,url,size,checksum

where:
  • contentid is full content id of item, for example: UP0000-NPHA99999_00-0000112223333000.
  • flags is currently unused number, set it to 0.
  • name is arbitrary string to display for name.
  • description is currently unused alternative item's description, leave it empty.
  • rap is the 16 hex bytes of the RAP file, if needed by the pkg (.rap will be created on hdd0/exdata). Leave empty for no rap file.
  • url is http url where to download the content .pkg file.
  • size is size of pkg in bytes, or 0 if unknown.
  • checksum is sha256 digest of pkg as 32 hex bytes to make sure pkg is not tampered with. Leave empty to skip the check.

For example, the pkgi.txt could be something as:
Code:
EP0000-NP9999999_00-0AB00A00FR000000,0,My PKG Test,,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

feel free to share you comments and ideas! :cool2:
hi. i have try your program. i have download 2 tiny pkg for try. the download finish and the two pkg are in standard position (hdd0://packages). but when i try to install it the installation not start. i have use normal download.
 
hi. i have try your program. i have download 2 tiny pkg for try. the download finish and the two pkg are in standard position (hdd0://packages). but when i try to install it the installation not start. i have use normal download.

As I don't know what are you downloading,
Try to download those .pkg files with your browser and upload them by FTP to the PS3. Then check to install them manually. To be sure the problem is not in the .pkg files.
 
@DeViL303 well your wish has been granted, with my latest generic db parser code, actually all the fields are optional :)

Great. Nice one.

If you are looking for more ideas, I wonder could you add the ability to have sub categories, so each pkg would have an extra optional field for the category. Like backup managers, homebrew games etc, If it has nothing in that field then it shows in the root view or something like that.


regarding the content-id thing, if it's not provided then one is generated on demand, based on the row number (e.g. X00000-X99999999_00-0000000000000000)
If some info is missing, for example it just gets a pkg URL, I wonder could it pull the size from the server and the content ID from the header.

Maybe it could have toggles for optional extras like that.
 
Great. Nice one.

If you are looking for more ideas, I wonder could you add the ability to have sub categories, so each pkg would have an extra optional field for the category. Like backup managers, homebrew games etc, If it has nothing in that field then it shows in the root view or something like that.

yes, I was actually thinking to give the "flag" column some real use, and the category thing could be a good one.
It's an integer flag, so we could just define different values such as:

0001 = game
0002 = utility
0004 = backup manager
0008 = media app
0016 = theme
0032 = dlc
...
etc

then the filtering should be straight-forward

If some info is missing, for example it just gets a pkg URL, I wonder could it pull the size from the server and the content ID from the header.

Maybe it could have toggles for optional extras like that.

the size is checked on-demand when you try to download an item.

Getting the content-id from an http request is a bit tricky, in the sense that when the database is loaded, the app would request and download the headers for every item on the list (creating a slowdown and overhead of traffic), so that's why I used the "id generator" option.
Maybe an "on-demand" update could be added to the "Details" screen. In that case, the app would only check and download the header for 1 specific pkg.
 
btw @DeViL303 , would you help me out defining the categories for it?
I don't want to forget stuff or create meaningless categories that won't be used at all

So I was thinking we can think and list the categories, and then decide:
game, theme, dlc, utility, etc.
 
Exist a way to compile pkg like i do with dol file and devkitpro on wii? I use linux. The question is retoric. I want know what is the right environment for compile ps3 code? Ps1light is rewritten open original sdk? Pkgi is written for sony devkit?
 
Exist a way to compile pkg like i do with dol file and devkitpro on wii? I use linux. The question is retoric. I want know what is the right environment for compile ps3 code? Ps1light is rewritten open original sdk? Pkgi is written for sony devkit?

The app is built using PSL1GHT, an open source PS3 sdk library. (It doesn't use the original devkit at all)
The Readme on Github lists all the libs you need to build the app.

I've written down a short tutorial on how to build the toolchain and create your dev-environment with Psl1ght:
http://www.bucanero.com.ar/2019/08/14/building-your-ps3-dev-environment-on-macos/

You shouldn't have issues building the environment in Linux either.
 
Another great release . My suggestions are :

- can we change the font ? Right now it's Times New Roman and it looks ancient . Maybe Arial would be better .
- i noticed some improvement in the download speed . When you open up the software , the first download goes at ~ 5000 Kb/s ( direct method ) . If you close the program and open it again all downloads are at ~ 1500 Bk/s .
- Would be nice if the pkgi.txt containts data like release year , recommended age , game score .. but that's not your job :)
 
to support japanese characters I'm using the internal PS3 fonts, so you should see new fonts in the next release

about the download speeds, I can't actually test too much around here, my network speed isn't that great so the only checks I can do are "it connects" or "it doesn't"

For the additional pkg details, you can use the "description" field in the text database. In the latest version, you can press :but square: and get additional information about the current item (if it has a valid URL, a RAP, etc), including the description if there's one.
 
I've just released PKGi PS3 v1.1.0

quite a bunch of changes this time:

* Added TTF fonts to support Japanese characters
* Added SSL support (the app can download https:// links)
* Added package install bubble for Direct downloads
* Added background music
* Added settings options for music and auto-update
* Fixed UI issue where texts could go beyond the screen limits

Merry X-mas! :D
 

Similar threads

Back
Top