PSL1GHT is a lightweight PlayStation 3 homebrew SDK, provided as a temporary way to compile user apps to run from the XMB using the open-source PS3 toolchains available.
Update:I've been up to a lot of game hacking recently, but more on that later.
Anyone interested in an open SDK?
Environment:It's pretty lacking right now, but at least it compiles and runs stuff!
I'll move Kammy and r3volution over to it soon.
A GCC toolchain that supports the PowerPC 64bit architecture is required to build PSL1GHT and its samples.
This is the only toolchain that I test with and can guarantee support for.
PS3Chain probably works just as well, as should marcan's AsbestOS toolchain.
Some toolchains will probably already use newlib, and will make the included newlib unnecessary.
Run make install in the psl1ght directory to build it all, and make sure to set the environment variable $PSL1GHT to the folder where you wish to install it to, for example...
... for a local build of it.Code:cd /path/to/psl1ght.git export PSL1GHT=/path/to/psl1ght.git/build make make install
Ensure that $PSL1GHT is set when you are building any of the examples or other apps that use PSL1GHT.
At the moment, PSL1GHT has basic libc support, with stdout debugging, file access, etc.
You can call lv2 syscalls and do some fun stuff with that, but it doesn't link to PS3 dynamic libraries yet which is where all the exciting functionality comes in.
Also, a make_fself equivalent is still missing.
KammyKammy is now the first PSL1GHT app! Check out the readme for a cool way to debug PSL1GHT apps over ethernet:
Kammy is a system for loading patches to lv2 (PlayStation 3's Game OS) from a user application, using PSGroove or any other implementation of the exploit that adds the peek/poke syscalls. Kammy was inspired by Treeki's Nintendo Wii game patching system, Kamek.
Building Kammy requires PSL1GHT installed to build. This includes needing one of the supported PS3 GCC toolchains. Besides PSL1GHT, you will need the following utilities:
xxd: Creating patch bin files requires the xxd tool to be installed.
dd: Also required for building the patch bin files.
With these dependencies installed, you can build Kammy by simply cd'ing to the loader directory and running:
UsageCode:make clean make
Kammy must be used with a payload that supports poke/peek. This includes PSGroove and most of its forks - including my own - among others. To apply a Kammy patch, a loader application must be started on the PS3. This is usually done from XMB from an installed package, or from USB using my PSGroove fork's apploader payload (or PL3's payload_dev).
Ethernet Debug Example :
The example loader included in Kammy installs a hook into lv2 that sends debug messages over the ethernet cable of the PS3. This is useful for getting data from the PS3 and lv2 (you get crash reports, and some info from different apps). It's also a useful way of seeing printfs from any applications you write and test, including ones built with PSL1GHT.
This setup has three requirements to work properly:
1. Your PS3 must be connected to a router by ethernet cable. Wireless must be disabled in the PS3 network settings.
2. The PC that you're retrieving the info with must be connected to the same router as the PS3. Alternatively you can connect the PS3's cable directly into your computer to get the output.
3. Your PC must have the socat program installed, so you can run the following command:
A ready-to-run pre-compiled ethernet debug loader is provided in the Downloads Section (.self attached to this post)Code:socat udp-recv:18194 stdout
Kammy is made up of three main components:
lv2: This folder contains the lv2 patches to be built. See the ethdebug patch for an example. It is up to the patch to apply any hooks it needs to lv2.
libkammy: This is the basic library that handles the loading of Kammy patches. Altering it should not be necessary.
loader: This folder contains an example that shows how to use libkammy to load kammy and another patch bin from the lv2 folder
Internally, Kammy obliderates syscall 11, so try not to run it with payloads that provide that syscall
Ethernet Debug Loader
Get it here