Skip to content
CrashSerious edited this page Nov 30, 2010 · 25 revisions

Supported Devices

A list of all devices which rockbox supports (and to what degree) can be found here. However, it is important to note that the only devices which are currently supported by this project are the ones which use the ARC USB controller (found in the PP502x chipset).

If you can confirm more platforms, feel free to edit this page.

Confirmed Working

  • ipodnano1g
  • ipodvideo
  • sansae200
  • ipod4g
  • ipodmini2g

Unconfirmed, Probably Working

  • gigabeats
  • gogearhdd1630
  • gogearhdd6330
  • gogearsa9200
  • ipodcolor
  • ipodmini1g
  • iriverh10
  • iriverh10_5gb
  • mrobe100
  • sansac200
  • vibe500

Unsupported Platforms

The following USB controllers are known not to meet the hardware requirements necessary, and all rockbox targets based on them will never work with this exploit:

  • AS3525
    • Lacking access to the USB Address register.

Porting to Other Rockbox Targets

Porting is fairly simple - the most challenging part is discovering if the platform in question has a capable USB controller. In order to qualify, the USB controller must support:

  • The ability for software to modify the "USB Address" register of the target USB controller.
  • A way to manually reset the Data Toggle on an arbitrary endpoint.

In addition, the USB driver must be augmented to provide the following features:

  • A blocking recv() function.
  • 8 byte packet size for in/out control endpoints.
  • USB Full Speed (not High Speed).

If the hardware meets the requirements, adding support should be easy: just try to mimic the changes introduced into ARC driver, and provide a suitable alternative for Endpoint_ResetDataToggle()

How to Build

Checkout the rockbox_psgroove repository

  git clone git://github.com/shuffle2/rockbox_psgroove.git

Build the toolchain for your device

  cd rockbox_psgroove
  sudo tools/rockboxdev.sh

Fetch the pl3 submodule

  git submodule init
  git submodule update

Build the ps3 toolchain

There are a few ps3 toolchains available, I prefer the one at HACKERCHANNEL/ps3chain. Remember to install build-essentials and libncurses5-dev( naming as pr ubuntu ) Clone the repo and follow the readme to install the toolchain.

Compile the pl3 payloads and rockbox_psgroove

  cd firmware/usbstack/pl3
  make
cd ..
  # now, edit firmware/usbstack/config.h. The Defines for the current firmware
  # versions supported by PL3 are, uncomment the one firmware you wish to compile rockbox_psgroove for. Ensure all the other firmware 
  # definitions are commented out: (In this example rockbox_psgroove would compile for firmware 3.15)

/* 1. Define your PS3 Firmware. -= ONLY USE ONE! =-*/
/* The firmware version supported gets defined in the Makefile */
//#define FIRMWARE_2_76
//#define FIRMWARE_3_01
//#define FIRMWARE_3_10
#define FIRMWARE_3_15
//#define FIRMWARE_3_21
//#define FIRMWARE_3_40
//#define FIRMWARE_3_41 

 # Next define your target payload. The concept is the same as above, make sure only ONE payload is defined. (Note: Most people will
 # only need the Regular payload and *maybe* NUS. The other's are only useful for Ps3 development) In the below example the Regular
 # Payload is defined:

/* 2. Define your Target payload reg/NUS/Dev/etc -= ONLY USE ONE! =- */
#define Payload_Regular //if you don't know what the others are-- this is what you want!
//#define Payload_NUS
//#define Payload_Dev
//#define Payload_Dump_ELFS
//#define Payload_Trace_ALL_SC
//#define Payload_Trace_HVC
//#define Payload_Trace_SC
//#define Payload_Trace_VUART
  cd ../../..
  mkdir build_yourdevicenamehere
  cd build_yourdevicenamehere
  ../tools/configure
  make

Finished!

If you don't already have it installed, install the rockbox bootloader. Now, replace the firmware file on the device with the one you just compiled.

Note: you can install directly while compiling like so:

  make PREFIX=/path/to/device bininstall

##Compile with pl3 dev payload Until a more elegant way to switch between different payload types is implemented, to compile with payload_dev or payload_no_unauth instead of the default_payload,

modify: rockbox_psgroove/firmware/usbstack/psgroove_descriptor.h

  #include "pl3/default_payload_3_41.h"
  #include "pl3/default_payload_3_01.h"
  #include "pl3/default_payload_3_10.h"
  #include "pl3/default_payload_3_15.h"

to

  #include "pl3/payload_dev_3_41.h"
  #include "pl3/payload_dev_3_01.h"
  #include "pl3/payload_dev_3_10.h"
  #include "pl3/payload_dev_3_15.h"

and

  #define default_payload default_payload_3_41
  ...
  #define default_payload default_payload_3_15
  ...
  #define default_payload default_payload_3_10
  ...
  #define default_payload default_payload_3_01

to

  #define default_payload payload_dev_3_41
  ...
  #define default_payload payload_dev_3_15
  ...
  #define default_payload payload_dev_3_10
  ...
  #define default_payload payload_dev_3_01

then make clean in your build directory and follow the same procedure to compile.

Use with AsbestOS

If you're using HACKERCHANNEL/ps3chain as mentioned above:

diff --git a/common/ppu.mak b/common/ppu.mak
index b63e0ea..e5dca77 100644
--- a/common/ppu.mak
+++ b/common/ppu.mak
@@ -5,7 +5,7 @@
 # This code is licensed to you under the terms of the GNU GPL, version 2;
 # see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

-PREFIX=$(PS3DEV)/bin/powerpc64-linux-
+PREFIX="ppu64-"

 CFLAGS=-ffreestanding -mbig-endian -mcpu=cell -m64
 LDFLAGS=-nostartfiles -nostdlib -mbig-endian
Clone this wiki locally