Editing Project Database (PDB)

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
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/)
Will be Updated Soon
 
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 === 
 
The file starts with a 4 byte magic of 0x00000000
 
=== Data Entries ===
{| class="wikitable"
!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 ===
{| class="wikitable"
!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 :
 
 
 
{| class="wikitable"
!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 :
 
{| class="wikitable"
 
!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 :
 
 
 
{| class="wikitable"
!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  =
 
* [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)
 
= Files  =
 
Heavy Rain Episode 1: [http://stoker25.com/files/hre1/d0.pdb d0] [http://stoker25.com/files/hre1/d1.pdb d1] [http://stoker25.com/files/hre1/ICON_FILE ICON_FILE]
 
 
 
{{File Formats}}<noinclude>[[Category:Main]]</noinclude>
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)