PlayStation 3

The Linux SCSI Target Wiki

Revision as of 22:10, 16 July 2011 by Marcf (Talk | contribs)
Jump to: navigation, search
PlayStation 3
PS3 Logo.png
Original model, Sixaxis controller, DualShock 3 controller and Slim model
Counter-clockwise from the top: Logo, original "fat" model, Sixaxis controller, DualShock 3 controller, current "slim" model.
Developer Sony Computer Entertainment
Manufacturer Sony EMCS, Foxconn, ASUSTeK[1]
Product family PlayStation
Type Video game console
Generation Seventh generation era
Retail availability November 11, 2006
CPU 3.2 GHz Cell Broadband Engine
Storage capacity 2.5" SATA hard drive
(20 GB to 320 GB included) (upgradeable)
Memory 256 MB system and 256 MB video
Display Composite, S-Video, Component, D-Terminal, HDMI
Graphics 550 MHz nVidia/Sony Computer Entertainment RSX "Reality Synthesizer"
Sound AV multi, TOSLINK, HDMI
Controller input Sixaxis, DualShock 3, Logitech Driving Force GT, Logitech Cordless Precision™ controller, standard USB controllers, GT Force, Rhythm game controllers, PlayStation Move, GunCon 3, PlayStation Portable, Keyboard and Mouse
Connectivity Flash Memory, A/V Out, 802.11b/g, Bluthooth, 4×USB 2.0, 1×GbE
Online services PlayStation Network
Backward
compatibility
PlayStation (all models)
PS2 (20 GB, 60 GB, some 80 GB)
Predecessor PlayStation 2
See platforms for an overview over the supported devices and CPUs.
iSCSI HD media over IPv6 from LIO storage on the PS3.
PS3 to MacBook Pro to DVI-Out from HD-DVD media.
LIO on the PS3.
LIO up and running on the PS3.

The Sony PlayStation 3 (officially abbreviated as PS3)[2] is a seventh-generation game consoles that runs LIO. It is the third home video game console produced by Sony and the successor to the PlayStation 2 (PS2) as part of the PlayStation series. The PlayStation 3 competes with Microsoft's Xbox 360 and Nintendo's Wii as part of the seventh generation of video game consoles.

A major feature that distinguishes the PS3 from its predecessors is its unified online gaming service, the PlayStation Network,[3] which contrasts with Sony's former policy of relying on video game developers for online play.[4] Other major features of the console include its robust multimedia capabilities,[5] connectivity with the PlayStation Portable,[6] and its use of the BluRay Disc as its primary storage medium.[7] The PS3 was also the first BluRay 2.0-compliant BluRay player on the market.[8] The PS3 is based on the IBM Cell Broadband Architecture CPU.

Contents

PlayStation Family

The PlayStation (officially abbreviated PS) brand is a series of video game consoles created and developed by Sony Computer Entertainment. Spanning the fifth, sixth and seventh generations of video gaming, the brand was first introduced on December 3, 1994 in Japan. The brand consists of a total of three consoles, a media center, an online service, a line of controllers and a handheld as well as multiple magazines.

LIO runs on both PS3 and the PS2. For the PS3, a Live USB image is available to turn the PS3 into a media jukebox.[9]

LIO 3.0

The PS3 runs LIO v3.0 (Target+iSCSI) based on a modified Linux/ppc64 kernel.

Configuration

Features

Live USB image

The fastest and easiest option is to get the free live USB image from Datera, Inc., and follow the README provided with it. This setup was described in detail in the Linux Magazine.[9]

Setup

Getting the sources

First, install git and git-core packages on the PS3, then follow the git clone instructions from Target:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/nab/lio-core-2.6.git lio-core-2.6.git

Building the sources

Second, configure and built Linux v2.6.29 from lio-core-2.6.git and under "Device Drivers" built the Target core module, configFS infrastructure and the iSCSI target mode stack as loadable kernel modules (LKMs).

Once lio-core-2.6.git/drivers/target/target_core_mod.ko and drivers/lio-core/iscsi_target_mod.ko have been built and installed with:

make modules_install

Mounting configFS

LIO v3.0 uses configFS to configure the Target and iSCSI modules. All storage objects can be accessed and exported, so the configFS module must be loaded and configFS must be mounted. Mount configFS at /sys/kernel/config:

mount -t configfs configfs /sys/kernel/config

This can also be added to /etc/fstab:

configfs /sys/kernel/config configfs defaults 1 1

The export of storage objects from the PS3 on Linux/ppc64 through the v3.0 code should be up and running now.

Configure storage objects

Once configFS is mounted and Target and iSCSI modules can be loaded, the following set of configFS calls will grant r/w demo access to the ps3rom.

modprobe target_core_mod
export CONFIGFS=/sys/kernel/config/
export TARGET=/sys/kernel/config/target/core/
export FABRIC=/sys/kernel/config/target/iscsi/
# Create PSCSI ConfigFS storage object from HTCL 0:0:0:0
mkdir -p $TARGET/pscsi_0/sr0
echo scsi_channel_id=0,scsi_target_id=0,scsi_lun_id=0 > $TARGET/pscsi_0/sr0/control
echo 1 > $TARGET/pscsi_0/sr0/enable

export DEF_IQN="iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157"
export PORTAL="192.168.0.160:3260"
# The first mkdir(2) to $FABRIC will load iscsi_target_mod
mkdir -p "$FABRIC/$DEF_IQN/tpgt_1/np/$PORTAL"
echo 8 > "$FABRIC/$DEF_IQN/tpgt_1/param/MaxConnections"
# Create the SCSI Target Port from PSCSI storage object
mkdir -p "$FABRIC/$DEF_IQN/tpgt_1/lun/lun_0"
ln -s $TARGET/pscsi_0/sr0 "$FABRIC/$DEF_IQN/tpgt_1/lun/lun_0/lio_bdrom_port"
# Allow demo mode R/W access for the iSCSI target portal group
echo 0 > $FABRIC/$DEF_IQN/tpgt_1/attrib/authentication
echo 1 > $FABRIC/$DEF_IQN/tpgt_1/attrib/generate_node_acls
echo 0 > $FABRIC/$DEF_IQN/tpgt_1/attrib/demo_mode_write_protect
# Enable the TPG Endpoint so initiators can login
echo 1 > $FABRIC/$DEF_IQN/tpgt_1/enable

ConfigFS object tree

For LIO v3.0, a running /sys/kernel/config/target configFS layout looks like:

target# tree/sys/kernel/config/target
/sys/kernel/config/target/
|-- core
|   |-- alua
|   |   |-- lu_gps
|   |   |   `-- default_lu_gp
|   |   |       |-- alua_access_state
|   |   |       |-- lu_gp_id
|   |   |       `-- members
|   |   `-- tg_pt_gps
|   |       `-- default_tg_pt_gp
|   |           |-- alua_access_state
|   |           |-- members
|   |           `-- tg_pt_gp_id
|   `-- pscsi_0
|       |-- hba_info
|       `-- sr0
|           |-- alua_lu_gp
|           |-- attrib
|           |   |-- block_size
|           |   |-- emulate_tas
|           |   |-- emulate_ua_intlck_ctrl
|           |   |-- hw_block_size
|           |   |-- hw_max_sectors
|           |   |-- hw_queue_depth
|           |   |-- max_sectors
|           |   |-- queue_depth
|           |   `-- task_timeout
|           |-- control
|           |-- enable
|           |-- fd
|           |-- info
|           |-- pr
|           |   |-- res_holder
|           |   |-- res_pr_all_tgt_pts
|           |   |-- res_pr_generation
|           |   |-- res_pr_holder_tg_port
|           |   |-- res_pr_registered_i_pts
|           |   |-- res_pr_type
|           |   `-- res_type
|           `-- wwn
|               |-- vpd_assoc_logical_unit
|               |-- vpd_assoc_scsi_target_device
|               |-- vpd_assoc_target_port
|               |-- vpd_protocol_identifier
|               `-- vpd_unit_serial
|-- iscsi
|   |-- iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157
|   |   `-- tpgt_1
|   |       |-- acls
|   |       |-- attrib
|   |       |   |-- authentication
|   |       |   |-- cache_dynamic_acls
|   |       |   |-- default_cmdsn_depth
|   |       |   |-- demo_mode_write_protect
|   |       |   |-- generate_node_acls
|   |       |   |-- login_timeout
|   |       |   |-- netif_timeout
|   |       |   `-- prod_mode_write_protect
|   |       |-- control
|   |       |-- enable
|   |       |-- lun
|   |       |   `-- lun_0
|   |       |       |-- alua_tg_pt_gp
|   |       |       `-- lio_bdrom_port -> ../../../../../../target/core/pscsi_0/sr0
|   |       |-- np
|   |       |   `-- 192.168.0.160:3260
|   |       |       |-- info
|   |       |       `-- sctp
|   |       `-- param
|   |           |-- AuthMethod
|   |           |-- DataDigest
|   |           |-- DataPDUInOrder
|   |           |-- DataSequenceInOrder
|   |           |-- DefaultTime2Retain
|   |           |-- DefaultTime2Wait
|   |           |-- ErrorRecoveryLevel
|   |           |-- FirstBurstLength
|   |           |-- HeaderDigest
|   |           |-- IFMarkInt
|   |           |-- IFMarker
|   |           |-- ImmediateData
|   |           |-- InitialR2T
|   |           |-- MaxBurstLength
|   |           |-- MaxConnections
|   |           |-- MaxOutstandingR2T
|   |           |-- MaxRecvDataSegmentLength
|   |           |-- OFMarkInt
|   |           |-- OFMarker
|   |           `-- TargetAlias
|   `-- lio_version
`-- version
22 directories, 68 files

Kernel ringbuffer

For reference, the kernel ring buffer output on the PS3 looks like:

TARGET_CORE[0]: Loading Generic Kernel Storage Engine: v3.0.0 on Linux/ppc64 on 2.6.29
TARGET_CORE[0]: Initialized ConfigFS Fabric Infrastructure: v1.0.0 on Linux/ppc64 on 2.6.29
SE_PC[0] - Registered Plugin Class: TRANSPORT
PLUGIN_TRANSPORT[1] - pscsi registered
PLUGIN_TRANSPORT[4] - iblock registered
PLUGIN_TRANSPORT[5] - rd_dr registered
PLUGIN_TRANSPORT[6] - rd_mcp registered
PLUGIN_TRANSPORT[7] - fileio registered
SE_PC[1] - Registered Plugin Class: OBJ
PLUGIN_OBJ[1] - dev registered
Target_Core_ConfigFS: Located se_plugin: c000000006a44030 plugin_name: pscsi hba_type: 1 plugin_dep_id: 0
CORE_HBA[0] - Linux-iSCSI.org SCSI HBA Driver v3.0 on Generic Target Core Stack v3.0
CORE_HBA[0] - ps3rom
CORE_HBA[0] - Attached SCSI HBA to Generic Target Core with TCQ Depth: 1 MaxSectors: 128
CORE_HBA[0] - Attached HBA to Generic Target Core
PSCSI: Allocated pdv: c00000000c384500 for sr0
Target_Core_ConfigFS: Allocated se_subsystem_dev_t: c000000006927800 se_dev_su_ptr: c00000000c384500
PSCSI[0]: Referencing SCSI Channel ID: 0
PSCSI[0]: Referencing SCSI Target ID: 0
PSCSI[0]: Referencing SCSI LUN ID: 0
pscsi: Using SPC_PASSTHROUGH, no reservation emulation
pscsi: Using SPC_ALUA_PASSTHROUGH, no ALUA emulation
CORE_PSCSI[0] - Activating Legacy Device with TCQ: 1 at SCSI Location (Channel/Target/LUN) 0/0/0
  Vendor: SONY      Model: PS-SYSTEM   302R  Revision: 4094
  Type:   CD-ROM                             ANSI SCSI revision: 00
PSCSI Status Byte exception at task: c00000000696ee00 CDB: 0x12 Result: 0x08000002
CORE_PSCSI[0] - Added Type: CD-ROM            for 0:0:0
Target_Core_ConfigFS: Registered se_dev->se_dev_ptr: c000000003050000
Target_Core_ConfigFS: REGISTER -> group: d000000002087f20 name: iscsi
Linux-iSCSI.org iSCSI Target Core Stack v3.0.0 on Linux/ppc64 on 2.6.29
<<<<<<<<<<<<<<<<<<<<<< BEGIN FABRIC API >>>>>>>>>>>>>>>>>>>>>>
Initialized struct target_fabric_configfs: c00000000d418600 for iscsi
<<<<<<<<<<<<<<<<<<<<<< END FABRIC API >>>>>>>>>>>>>>>>>>>>>>
LIO_TARGET[0] - Set fabric -> lio_target_fabric_configfs
iscsi_allocate_thread_sets:195: ***OPS*** Spawned 4 thread set(s) (8 total threads).
TARGET_CORE[iSCSI]: Allocated Discovery se_portal_group_t for endpoint: None, Portal Tag: 0
CORE[0] - Allocated Discovery TPG
Loading Complete.
Target_Core_ConfigFS: REGISTER -> Located fabric: iscsi
Target_Core_ConfigFS: REGISTER -> d0000000025f5fa0
Target_Core_ConfigFS: REGISTER -> Allocated Fabric: iscsi
Target_Core_ConfigFS: REGISTER -> Set tf->tf_fabric for iscsi
lio_target_call_coreaddtiqn(): name: iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157
CORE[0] - Added iSCSI Target IQN: iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157
LIO_Target_ConfigFS: REGISTER -> iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157
LIO_Target_ConfigFS: REGISTER -> Allocated Node: iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157
lio_target_tiqn_addtpg() called: name tpgt_1
lio_target_tiqn_addtpg() parent name: iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157
lio_target_tiqn_addtpg() Using TPGT: 1
TARGET_CORE[iSCSI]: Allocated Normal se_portal_group_t for endpoint: iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157, Portal Tag: 1
CORE[iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157]_TPG[1] - Added iSCSI Target Portal Group
LIO_Target_ConfigFS: REGISTER -> iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157
LIO_Target_ConfigFS: REGISTER -> Allocated TPG: tpgt_1
LIO_Target_ConfigFS: REGISTER -> iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157 TPGT: 1 PORTAL: 192.168.0.160:3260
CORE[0] - Added Network Portal: 192.168.0.160:3260 on TCP on network device: None
CORE[iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157] - Added Network Portal: 192.168.0.160:3260,1 on TCP on network device: None
CORE[iqn.2003-01.org.linux-iscsi.playstation3.cell:sn.73b073c4e157]_TPG[1] - Incremented np_exports to 1
LIO_Target_ConfigFS: addnptotpg done!
iSCSI_TPG[1]_LUN[0] - Activated iSCSI Logical Unit from CORE HBA: 0
LIO_Target_ConfigFS: Created Port Symlink sr0 -> lun_0
Disabling iSCSI Authentication Methods for TPG: 1.
iSCSI_TPG[1] - Generate Initiator Portal Group ACLs: Enabled
iSCSI_TPG[1] - Demo Mode Write Protect bit: OFF
iSCSI_TPG[1] - Enabled iSCSI Target Portal Group

LIO 2.9

Running the legacy Target v2.9 iSCSI for PS3-Linux code is still supported, but requires manual setup see Target#Building-2.9. The following builds are a bit outdated, however, but might still be helpful.

Setup

Getting the sources

Get the Linux kernel modules iscsi-target-module-2.6.25-2.9.0.295-1.powerpc.rpm. They are built for PPC464 and built with the toolkit for Fedora Core 8 PPC. This is gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33)

This module has been tested with 2.6.25 from ps3-linux.git and built against arch/powerpc/configs/ps3_defconfig with drivers/md/* enabled as modules for MD/LVM access with Target.

Using the BD-ROM on a kernel older than 2.6.24 requires a small patch (ps3rom-use-128-max-sector.diff) for full performance.

The userspace sources are 32-bit modules for Fedora Core 8:

Building the sources

Follow the BUILD-README.

Addon CD

See ADDON CD for more information.

OCFS2

LIO on the PS3 has been serving FILEIO and IBLOCK storage objects for OCFS2 and EXT3 Filesystem access on OS-2008 running on mobile clients (Nokia N800 and i386 Ubuntu).

iSCSI HD

In summer 2007, the LinuxWorld PS3 BOF hosted a demonstration and discussion on running HD media types (BluRay and the now defunct DVD-HD) between a PS3, an Apple MacbookPro Laptop, and an USB connected Toshiba/MicrosoftHD-DVD drive.

An 802.11n v1.0 IPv[4,6] wireless demo via a 1 GbE router connected to the PS3 running Linux 2.6.23-rc5 (the kernel sources are avilable from ps3-linux.git).

See also

Notes

  1. Shilov, Anton (7/18/2006). "Asustek Computer Ships PlayStation 3 Consoles". X-bit Labs. 
  2. "Entertainment on PS3 has a new look". Sony Computer Entertainment Europe. 8/18/2009. 
  3. "PlayStation Direct.net". PlayStation Direct.net. 
  4. "Sony confirms PS2 online plans". The Register. 8/15/2002. 
  5. "PlayStation.com - PLAYSTATION®3 Features: Multimedia". Sony Computer Entertainment America. 
  6. De Leon, Al (12/26/2007). "PlayStation Blog — PS3 Tips — Remote Play and PlayStation Store". Sony Computer Entertainment America. 
  7. "PlayStation 3 Features - BluRay". Sony Computer Entertainment America. 
  8. Lempel, Eric (3/20/2008). "Firmware version 2.20 bringing BD-Live to PS3". Sony Computer Entertainment America. 
  9. a b Feilner, Markus (February, 2010). "Zum Spielen zu schade". Linux Magazine. 

External links

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox
Google AdSense