Difference between revisions of "Project Database (PDB)"

From PS3 Developer wiki
Jump to: navigation, search
m (Entry IDs)
(Added info for ID 0x65)
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
'''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/)  
 
'''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 a task 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.  
+
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.  
 
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.  
Line 51: Line 51:
 
|-   
 
|-   
 
|0x65  
 
|0x65  
|
+
| Task active (0=paused, 1=downloading)
 
|-   
 
|-   
 
|0x66  
 
|0x66  
|
+
| Task unregister auto.
 
|-   
 
|-   
 
|0x68  
 
|0x68  
Line 60: Line 60:
 
|-   
 
|-   
 
|0x69  
 
|0x69  
|Package Name
+
|Package Name (Task Title)
 
|-   
 
|-   
 
|0x6A   
 
|0x6A   
Line 66: Line 66:
 
|-  
 
|-  
 
|0x6B  
 
|0x6B  
|(patch)
+
|Task Subtype (0=photo,1=music,2=video,4=patch?)
 
|-   
 
|-   
 
|0x6C  
 
|0x6C  
Line 78: Line 78:
 
|-   
 
|-   
 
|0xCA   
 
|0xCA   
|Server URL   
+
|Server URL/URI  
 
|-
 
|-
 
|0xCB  
 
|0xCB  
Line 84: Line 84:
 
|-   
 
|-   
 
|0xCC  
 
|0xCC  
  |Package Creation Date 
+
  |Package Last-Modified
 
|-
 
|-
 
|0xCD  
 
|0xCD  
  |   
+
  |  Move XCB
 
|-
 
|-
 
|0xCE  
 
|0xCE  
 
  |Package File Size   
 
  |Package File Size   
 +
|-
 +
|0xCF
 +
|
 
|-
 
|-
 
|0xD0
 
|0xD0
  |Downloaded Size   
+
  |Downloaded Size/Received Length
 +
|-
 +
|0xD1
 +
  |Referer?
 
|-
 
|-
 
|0xD2  
 
|0xD2  
 
  |
 
  |
 +
|-
 +
|0xD3
 +
|
 +
|-
 +
|0xD5
 +
|(Video) PlayCount
 +
|-
 +
|0xD6
 +
|(Video) StopPointInfo
 +
|-
 +
|0xD7
 +
|(Video) StopPointInfoSuppl
 +
|-
 +
|0xD8
 +
| File Download In Progress
 
|-
 
|-
 
|0xD9  
 
|0xD9  
Line 102: Line 123:
 
|-
 
|-
 
|0xDA  
 
|0xDA  
  |Download Completed   
+
  |Download Completed / Video:Video.reserved30
 +
|-
 +
|0xDB
 +
 
 +
|-
 +
|0xDC
 +
 +
|-
 +
|0xDD
 +
 +
|-
 +
|0xDE
 +
|(String)
 +
|-
 +
|0xDF
 +
|
 +
|-
 +
|0xE0
 +
|(String)
 
|-
 
|-
 
|0xE1  
 
|0xE1  
 +
|(String)
 +
|-
 +
|0xE2
 +
|(String)
 +
|-
 +
|0xE3
 +
|(String)
 +
|-
 +
|0xE4
 
  |
 
  |
 
|-
 
|-
Line 117: Line 165:
 
|-
 
|-
 
|0xEA  
 
|0xEA  
  |  
+
  | Video:Common.reserved24
 
|-
 
|-
 
|0xEB  
 
|0xEB  
Line 130: Line 178:
 
|0xEE
 
|0xEE
 
  |
 
  |
 +
|-
 +
|0xEF
 +
|Video:Video.reserved29
 
|-
 
|-
 
|0xF0  
 
|0xF0  
Line 142: Line 193:
 
|0xF3  
 
|0xF3  
 
|preordered
 
|preordered
 +
|-
 +
|0xF4
 +
|
 
|-
 
|-
 
|0xF5  
 
|0xF5  
Line 326: Line 380:
 
= Tools  =
 
= Tools  =
  
[http://github.com/kakaroto/ps3utils PS3Utils] - by KaKaRoTo (link not working)<br />
+
* [http://github.com/kakaroto/ps3utils PS3Utils] - by KaKaRoTo (link not working) - forks with pdb_gen.c: [https://github.com/shadowbladeZ/ps3utils] [https://github.com/omgneeq/ps3utils]<br />
[https://raw.github.com/wargio/ps3utils/master/pdb_gen.c PS3Utils pdb_gen.c] - old fork from KaKaRoTo (Deroad)
+
* [https://raw.github.com/wargio/ps3utils/master/pdb_gen.c PS3Utils pdb_gen.c] - old fork from KaKaRoTo (Deroad)
  
 
= Files  =
 
= Files  =

Latest revision as of 11:51, 10 December 2019

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]

The file starts with a 4 byte magic of 0x00000000

Data Entries[edit]

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]

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]

Files[edit]

Heavy Rain Episode 1: d0 d1 ICON_FILE