Project Database (PDB)
PDB (Project Database) files are used by the PS3 to specify tasks for the XMB to do. They are stored in /dev_hdd0/vsh/task/ in 4 byte hex directories (e.g. 00000001/, 001ABCD0/)
Each directory represents an task id and each task is defined by a couple of .pdb files. I believe pdb means package database, since the only place where these files appear is in /dev_hdd0/vsh/task and they seem to represent a .pkg download.
There will always be a 00000001/ directory with no .pkg file in it. I suppose it's there to represent another task the PS3 has to do (maybe the 'check for push downloads' for PSN+ users?), and I suggest never to mess with it.
Every other directory seems to represent a .pkg file that is being downloaded or has been downloaded (but not installed) through PSN. In each directory you should find the .pkg, a PNG image to show (filename ICON_FILE), and two or three .pdb files (d0.pdb and d1.pdb and an empty f0.pdb, which may or may not be there).
When there are unfinished/not installed (PS3 files, not for PSP or PSVITA) downloaded task, xmb/users/Turn Off System can appear the option to turn off the system automatically after background download.
Header[edit | edit source]
The file starts with a 4 byte magic of 0x00000000
Data Entries[edit | edit source]
Offset | Length | Type | Information |
---|---|---|---|
0x0 | 0x4 | unsigned int | Entry ID |
0x4 | 0x4 | unsigned int | Length |
0x8 | 0x4 | unsigned int | Length (again?) |
0xC | Length | bytes | Data |
Entry IDs[edit | edit source]
File Entry ID | Filename |
---|---|
0x64 | |
0x65 | Task active (0=paused, 1=downloading) |
0x66 | Task unregister auto. |
0x68 | |
0x69 | Package Name (Task Title) |
0x6A | Icon Path |
0x6B | Task Subtype (0=photo,1=music,2=video,4=patch?) |
0x6C | |
0xC8 | Authentication UserName |
0xC9 | Authentication Password |
0xCA | Server URL/URI |
0xCB | Package Filename |
0xCC | Package Last-Modified |
0xCD | Move XCB |
0xCE | Package File Size |
0xCF | |
0xD0 | Downloaded Size/Received Length |
0xD1 | Referer? |
0xD2 | |
0xD3 | |
0xD5 | (Video) PlayCount |
0xD6 | (Video) StopPointInfo |
0xD7 | (Video) StopPointInfoSuppl |
0xD8 | File Download In Progress |
0xD9 | Content ID |
0xDA | Download Completed / Video:Video.reserved30 |
0xDB | |
0xDC | |
0xDD | |
0xDE | (String) |
0xDF | |
0xE0 | (String) |
0xE1 | (String) |
0xE2 | (String) |
0xE3 | (String) |
0xE4 | |
0xE5 | |
0xE6 | |
0xE7 | Title ID |
0xEA | Video:Common.reserved24 |
0xEB | Log URL |
0xEC | |
0xED | |
0xEE | |
0xEF | Video:Video.reserved29 |
0xF0 | |
0xF1 | |
0xF2 | |
0xF3 | preordered |
0xF4 | |
0xF5 | (drmcontent) |
Here are some entries that have been observed (in the order seen on file). I will first document the task 1, then pkg tasks :
ID | Length | Type | Known values | Meaning |
---|---|---|---|---|
0x64 | 4 | int | 2 | ? |
0x65 | 4 | int | 1(d0.pdb) 2 (d1.pdb) | ? (part maybe?) |
0x66 | 1 | byte | 0 | ? |
0x6B | 4 | int | -1 | ? |
0x68 | 4 | int | 0x80023e13 | ? |
0x6C | 4 | int | 3 |
Note that it doesn't look like the 00000001/ task pdb values change depending on the number of tasks available.
Here are the values seen in a game task :
Type | Length | Known values | Meaning |
---|---|---|---|
0x00000064 | 4 | 0 | |
0x00000065 | 4 | 0 | |
0x00000066 | 1 | 0 | |
0x0000006B | 4 | 3 | |
0x00000068 | 4 | 0x80023e13 or 0x80023e1A or 0 | |
0x0000006C | 4 | 0 |
The values are different from the 00000001/ task, but they seem consistent for all .pkg tasks. The value of 0x00000068 is the only one that changes, and it's either 0 in one file or in the other (d0.pdb vs. d1.pdb), never both, and always one.
Also, Here are the values that only appeared in the pkg tasks, they come right after the above KLLVs. Note that all variable lengths mean it's a string and that it includes a trailing 0x00 in the string :
Type | Length | Known values | Meaning |
---|---|---|---|
0x000000D0 | 8 | 64bit value | current file size or total file size of .pkg in Big Endian |
0x000000CE | 8 | 64bit value | current file size or total file size of .pkg in Big Endian
(same value as D0 for a fully downloaded title, need partial downloads to determine which key represents what) |
0x000000CC | variable | "Thu, 02 Sep 2010 02:05:50 GMT" (qore) | Date of when the .pkg was created (apparently since it's almost 1 week before it appeared on PSN) |
0x0000006A | variable | "/dev_hdd0/vsh/task/00000002/ICON_FILE" (qore) | Path to PNG image for thumbnail on the XMB |
0x00000069 | variable | "Qore® Episode 28: September 2010" (qore) | File title to show on the XMB |
0x000000CA | variable | "http://zeus.dl.playstation.net/...." (qore) | Download URL of .pkg |
0x000000CB | variable | "TSk2vwaT....UP7hmNPRk.pkg" (qore) | Filename of .pkg |
0x000000D9 | variable | "UP9000-NPUA80191_00-QOREISSUE0282010" (qore) | Content id of .pkg |
0x000000DA | 1 | 1 | Paused ? Completed ? Currently active ? other ? |
0x000000CD | 1 | 0 | Paused ? Completed ? Currently active ? other ? |
0x000000EB | variable | "http://nsx-e.np.dl.playstation.net/nsx/log?&sid=...&filetype=drmcontent&fileid=UP90..&sizemb=1692.3" (qore) | URL for logging game installs? |
0x000000EC | 1 | 0 | Paused ? Completed ? Currently active ? other ? |
This is all the information we have so far.. unfortunately, since Sony decided to block access to PSN, we can't test more downloading, so it's hard to get new .pdb files, and so it's hard to extrapolate more.
Tools[edit | edit source]
- PS3Utils - by KaKaRoTo (link not working) - forks with pdb_gen.c: [1] [2]
- PS3Utils pdb_gen.c - old fork from KaKaRoTo (Deroad)
Files[edit | edit source]
Heavy Rain Episode 1: d0 d1 ICON_FILE
|