Updating Bluray Drive Firmware on Linux: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
Line 123: Line 123:
* BD buffer 0 is used to send BD firmware to BD drive.
* BD buffer 0 is used to send BD firmware to BD drive.
* The BD firmware is sent in chunks of size 0x8000 bytes with SCSI command WRITE BUFFER mode 7.
* The BD firmware is sent in chunks of size 0x8000 bytes with SCSI command WRITE BUFFER mode 7.
TODO: code an application to update BD firmware on Linux

Revision as of 18:17, 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

Sending BD Firmware to BD Drive

  • BD update package is first decrypted and then sent to BD drive.
  • BD buffer 0 is used to send BD firmware to BD drive.
  • The BD firmware is sent in chunks of size 0x8000 bytes with SCSI command WRITE BUFFER mode 7.

TODO: code an application to update BD firmware on Linux