Updating Bluray Drive Firmware on Linux: Difference between revisions
Jump to navigation
Jump to search
Line 111: | Line 111: | ||
<pre> | <pre> | ||
if ((type & 0x00FFFFFFFFFFFFFF) | if ((type & 0x00FFFFFFFFFFFFFF) == h_id) | ||
FW is OK | FW is OK | ||
else | else |
Revision as of 08:42, 26 August 2012
Introduction
- No use actually but just for the sake of scientific research :)
Current BD FW Version
Using Storage Manager service get_version:
sudo ./ps3dm sm get_version 00 03 00 50 00 00 00 00
Using SC Manager service get_region_data:
sudo ps3dm scm get_region_data 8 | hexdump -C 00000000 00 03 00 50 00 00 00 00 00 00 00 00 00 00 00 00 |...P............| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000030
Or reading it from BD drive istelf, see http://www.ps3devwiki.com/wiki/BD_Drive_Reverse_Engineering#Get_Version.
BD Drive Type
- Use SCSI Inquiry to fetch BD drive identification string.
sudo sg_inq /dev/sr0
- PUP file contains several BD update packages.
- Update manager matches BD drive type against h_id from update package header.
- h_id is at offset 0x8 (8 bytes) in the update package header.
- E.g. h_id from BDPT_FIRMWARE_PACKAGE_306R.pkg is 0x0000000000000007.
Identification string | Type | Flag |
---|---|---|
SONY EmerFlashROM | 0x2100000000000001 | 0 |
SONY PS-EMBOOT 300R | 0x2100000000000001 | 0 |
SONY BDRW AQUAM(BDIT) | 0x1100000000000001 | 0 |
SONY PS-SYSTEM 300R | 0x1100000000000001 | 0 |
SONY PS-SYSTEM V300 | 0x1100000000000001 | 0 |
SCEI EMER-FLASH-8 | 0x2200000000000002 | 0 |
SONY PS-EMBOOT 301R | 0x2200000000000002 | 0 |
SONY PS-SYSTEM 301R | 0x1200000000000002 | 0 |
SONY PS-EMBOOT 302R | 0x2200000000000003 | 1 |
SONY PS-SYSTEM 302R | 0x1200000000000003 | 1 |
SONY PS-EMBOOT 303R | 0x2200000000000004 | 0 |
SONY PS-SYSTEM 303R | 0x1200000000000004 | 0 |
SONY PS-EMBOOT 304R | 0x2200000000000005 | 1 |
SONY PS-SYSTEM 304R | 0x1200000000000005 | 1 |
SONY PS-EMBOOT 306R | 0x2200000000000007 | 1 |
SONY PS-SYSTEM 306R | 0x1200000000000007 | 1 |
BD drive type and FW type check:
if ((type & 0x00FFFFFFFFFFFFFF) == h_id) FW is OK else FW is NOT OK fi