Over the weekend Graf Chokolo
has continued on his project
updating his PS3 Linux kernel with new drivers while Kmeaw
has made available AsbestOS Linux Kernel Installer v2.0, although he states it is still a work-in-progress.
Download: PS3 Linux v2.6 (New Drivers)
/ AsbestOS Linux Kernel Installer v2.0
/ AsbestOS v2.0 (Compiled)
PS3 Linux v2.6 Changelog:
- Added ioctl PS3RAM_IOCTL_USER_TO_LPAR_ADDR cmd to ps3ram character device to convert user space addresses to lpar addresses
- New PS3 VUART Dispatcher Manager (port 10) driver
- New PS3 Dispatcher Manager Proxy character device driver for user space /dev/ps3dmproxy
AsbestOS Linux Kernel Installer v2.0 Changelog:
- ICON0.PNG – Updated for v2.0
- sfo.xml – Updated for v2.0
- Makefile – Updated for v2.0
- Progress bar and 128M bootmem fix.
To quote from http://ps3.khore.org/asbestos-v20-released: Well folks, it's done! I've been working with kmeaw last couple of weeks in asbestOS v2.0. This release is easyer to use, and eases the installation of Debian GNU/Linux in your PS3. Right now, it's the best way to overcome the loss of OtherOS feature. Hope everyone enjoys it!
To quote from http://grafchokolo.com/ps3-development-page.html/comment-page-1/#comment-395: Just pushed my newest PS3 Linux drivers to remote GIT repository
You can access Dispatcher Manager from User Space through /dev/ps3dmproxy and in Kernel Space through ps3dm interface.
But take care, some HV services are dangerous and you should know what you are doing, you could e.g. overwrite your metldr or EID on FLASH
So be careful.
I intend to write an updater for packages in the next days which will be able to update e.g. CORE OS package from Linux user space
And then i will upload it.
For a long time i couldn’t decide where to implement the updater, in kernel space or in user space, kernel space makes e.g. easy converting memory addresses to LPAR addresses, but allocating large piece of memory in kernel is not simple, and implemnting HV services in kernel seems to me to be out of question, so i decied to do it from user space, more safe and easier
And we will need HUGEPAGE support for updater. I already tested it on my PS3 Linux and it works great
One page is 16 MB large, more than enough for updating packages. The updater can allocate a huge page, store there the package, lock this page in memory so that swapper doesn’t move it to swap space, convert the address of the page to LPAR address and send it to Update Manager
I also added a new IOCTL to /dev/ps3ram character device – PS3RAM_IOCTL_USER_TO_LPAR_ADDR. It allows you to convert a user space memory address to LPAR address. We will need it for updater e.g., because updater has to send LPAR address of package to Update Manager. Here is an example how to use it: http://pastie.org/1585460
int main(int argc, char **argv)
unsigned char *buf;
int fd, res;
struct ps3ram_ioctl_user_to_lpar_addr user_to_lpar_addr;
fd = open("/dev/ps3ram", O_RDWR);
if (fd < 0)
fprintf(stderr, "error: open failed with %d\n", fd);
posix_memalign(&buf, 4 * 4096, 4096);
user_to_lpar_addr.user_addr = (unsigned long) buf;
res = ioctl(fd, PS3RAM_IOCTL_USER_TO_LPAR_ADDR, &user_to_lpar_addr);
if (res < 0)
fprintf(stderr, "error: ioctl failed with %d\n", res);
Have fun and report any bugs to me please. HV hacking is cool
Just enabled ENCDEC and ATA debug messages in HV from Linux and now i can see those messages
http://pastie.org/1585891 HV rocks!!!
Maybe i should enable RSX debug messages and see what they do.
Here is my new PS3 updater on Linux in action
We don’t need PUP files or GameOS anymore to do updates
It can be done now on Linux easily
It can inspect packages now
Didn’t try updating yet, too dangerous, have to check everything 1000 times at least because i don’t have a NOR flasher
In case, you are wondering what those repo node value numbers mean, then read my HV page about UM inspect package service.
And here is an example if a package is damaged. I intentionally modified a package and let UM inspect it, It returns error
If SONY is reading it, they will know what those numbers mean
As i said previously, i allocated a huge page with mmap(MAP_HUGETLB) and stored there the package, then i converted the user space address of the buffer to LPAR address and sent a UM inspect package request to Update Manager through my /dev/ps3dmproxy.
To make Linux preallocate some huge pages during boot, i passed boot parameter “hugepages=1″, it means Linux kernel should preallocate 1 huge page of size 16 MB. And an application can grab this page with mmap syscall.
I will upload it soon
Stay tuned. PS3+Linux+HV rock !!! And i know where to patch Update Manager in HV process 6 so it will allow us to do downgrades without Product Mode
I also improved my DM drivers, will upload them soon too.
Extracting packages with Update Manager works now also
More PlayStation 3 News