PSFreedom source code released!

On September 3, 2010, in Development, PS3, by kakaroto

Hi again,

As promised yesterday, I’ve just released the source code for PSFreedom. You can grab it now on github.

If you want to port it to work on another device, then fork the repository and start working, you can send me a pull request once it’s done. See the end of this post for a little howto on porting it to a new device.

I have also decided to remove that video I put yesterday on youtube. I didn’t give the link to anyone, but somehow people found it and it got linked on multiple news sites… that video is useless, hard to watch, and I’m sorry! I’ve made a new video that you can view here :

Since yesterday I’ve been spammed with emails, comments on my blog, PMs and pings on IRC, etc.. and my server even went down (doesn’t seem to be because of high traffic). So I’d like to answer everyone with this FAQ :

Q : What is your relationship with the PSGroove project ?

A: PSGroove was released a while ago while I was already working (about 50% done) on PSFreedom. I had help from Mathieulh and Phire from the PSGroove team, who gave me insight on what the jailbreak does. When PSGroove was released, I read its code to understand what it does and to make sure my code worked in the same way. I copied the descriptors and payload from the code of PSGroove, and I give them credit for what they did, and for what I copied from their project. I set my license to GPL v3 to match theirs, and I gave credits to those who helped me on IRC. However, I say and I insist that PSFreedom is not a port of PSGroove, because I never took their code and ported it to the N900, this is my original work, and I wrote all of its code from scratch. Some of the PSGroove team seem to be in conflict with me because of that, they insist that “if you looked at our code, then it is a without question a port of PSGroove”, and I believe we have two very different understanding of the term ‘port’.

Q : Can/when is it going to work on the iPhone/Symbian/My phone ?

A: PSFreedom is a  Linux driver, so it will only work on Linux-enabled devices.. which means, not on iOS, and not on Symbian, so please stop asking about that!

Q: Will it work on the 770/N800/N810 ?

A: I only did this for the N900, I might port it to other devices, but right now, I cannot give any guarantees to anyone that it will be ported or that it will work on another device… The source code has been released and whoever wants to contribute can go ahead, fork my repository, and send me a pull request when you got something working.

These are linux devices, so yes, it should work, but just like any other device, they use a different controller than the N900, so a little porting will be necessary.

Q: Will it work from a linux PC ?

A: Unfortunately, no, most PCs have a USB controller  that only supports Host mode, but you need Slave mode to be able to make this work.

Q: Can I run backups with this ?

A: At the moment, no, I have used the same payload as PSGroove, which means backups are disabled, although someone already released a version of PSFreedom with backups enabled. In the future, I will hopefully  make the module load any payload at runtime, this way you could choose between different payloads.

Q: Can you make it easier to use ?

A: Me? No.. someone else? Yes.. there is already someone working on a UI for PSFreedom, and it will be available once it’s ready.

Q: What do I need to use PSFreedom on my N900 ?

A: First, you need a N900 (duh) and a PS3 (duh) with firmware 3.41. The N900 should be running the stock kernel (-omap1) not a modified kernel. Then you just need to scp the files to the N900 and run the -enable script.

Q: How much of the source is Nokia N900 specific? Are you using the Linux USB Gadgets library?

A: Very little is N900 specific, I’m using the include/linux/gadget.h if that’s what you mean. See next Q/A for more info.

Q: How hard is it to port it to a new device ?

A: Well, I’ve just separated my code from the N900 specific stuff, so it’s quite easy, there are mainly two functions to write, one to get and one to set the USB address.. two other functions that only return some static result depending on the configuration of the controller (the name of the endpoints, and whether the controller supports high speed or full speed mode).

Read the README file provided with PSFreedom, and check the psfreedom_machine.c file for specifics on what to implement.

Q: How can I port it to a new device.

A: Well, first, you need to figure out what controller your device uses, in the case of the N900, it’s ‘musb’..

Then go to the driver code for that controller (probably in drivers/usb/gadget) and look for ‘SET_ADDRESS’. In the case of musb, it was in drivers/usb/musb/musb_gadget_ep0.c. In there it was setting the address to the USB device, so just copy that code into the psfreedom_machine.c to allow setting the address, and add a similar function to be able to retreive the address.

Then add a function to return 0 or 1 depending on whether the controller supports HIGH, FULL or LOW speed mode (go to usb_gadget_register_driver for your controller, and in the first lines, it should validate the speed argument, it will tell you which ones are acceptable), set LOW speed mode to return TRUE only if FULL speed isn’t available .

Finally, add a function to return the endpoint names.. it will usually be something like ‘epXin’ and ‘epXout’ (where X is the endpoint number), or “epXin-bulk”, etc.. look at how the driver initializes its endpoints or grep for “->name” in the file to find where it sets it…

That should be enough!

Ok this is it for now with the FAQ. Next time, I’ll tell you all about my experience, what problems I encountered and how I fixed them, maybe it will help others!

Enjoy it!

KaKaRoTo

Tagged with:  

48 Responses to PSFreedom source code released!

  1. [...] The source code has been released and whoever wants to contribute can go ahead, fork my repository, and send me a pull request when you got something working. These are linux devices, so yes, it should work, but just like any other … source codes – Google Blog Search [...]

  2. neotof38 says:

    please for samsung galxi spyca android 2.1… ?

  3. nokia-user says:

    but 1 question:

    is it POSSIBLE to port this to a symbian-phone?

  4. impossible says:

    impossible.

  5. Darktox says:

    Great thanks !
    droid and milestone also uses gadget & musb :)

  6. tank-man says:

    Your faq says gpl3 but the comments/header in the code say gpl2.

  7. VoodoRush says:

    Actualy it is possible to be ported for iPhone – a jailbroken iPhone has Darwin Linux for ARM architecture…there are also apps that make the phone act like a generic USB mass storage device – perhaps they are usin slave mode too?

  8. axl79 says:

    will all code compile on Android?, it´s possible to make it work on Android with no so much changes?.

    Thanks for your GREAT Work.

  9. marcx987 says:

    IS this possible i know not with a standard pc usb controller. But using an external hub instead. Since most hubs basically run in both slave and host mode.

    You would have to reverse the mode with in the hub and make it so instead of running host to slave on the pc. it would have to be slave to slave.

    then from there you would just have to make a port for that usb external so it runs and changes the device ids while being loaded on the ps3 from the pc

  10. hacker says:

    how about will it possible to port these from a hacked psp??

  11. badsnakes says:

    hi
    can you port with msm72k driver ?

  12. Tarball says:

    Hi, I’m trying to compile this for the n800 under the Maemo 4 SDK, and I get the following errors:

    [sbox-DIABLO_ARMEL: ~/kakaroto-PSFreedom-8344509] > make n800
    make -C /usr/src/kernel-source-diablo M=/home/tarball/kakaroto-PSFreedom-8344509 EXTRA_CFLAGS=”-I/usr/include -DENABLE_MUSB_CONTROLLER” EXTRAVERSION=-omap1 modules
    make[1]: Entering directory `/targets/DIABLO_ARMEL/usr/src/kernel-source-diablo’
    CC [M] /home/tarball/kakaroto-PSFreedom-8344509/psfreedom.o
    In file included from /home/tarball/kakaroto-PSFreedom-8344509/psfreedom.c:120:
    /home/tarball/kakaroto-PSFreedom-8344509/psfreedom_machine.c: In function `psfreedom_get_address’:
    /home/tarball/kakaroto-PSFreedom-8344509/psfreedom_machine.c:82: warning: implicit declaration of function `gadget_to_musb’
    /home/tarball/kakaroto-PSFreedom-8344509/psfreedom_machine.c:82: warning: initialization makes pointer from integer without a cast
    /home/tarball/kakaroto-PSFreedom-8344509/psfreedom_machine.c: In function `psfreedom_set_address’:
    /home/tarball/kakaroto-PSFreedom-8344509/psfreedom_machine.c:100: warning: initialization makes pointer from integer without a cast
    /home/tarball/kakaroto-PSFreedom-8344509/psfreedom_machine.c:103: error: structure has no member named `address’
    make[2]: *** [/home/tarball/kakaroto-PSFreedom-8344509/psfreedom.o] Error 1
    make[1]: *** [_module_/home/tarball/kakaroto-PSFreedom-8344509] Error 2
    make[1]: Leaving directory `/targets/DIABLO_ARMEL/usr/src/kernel-source-diablo’
    make: *** [N8x0] Error 2

    The n800 uses musb just like the n900, so I’m not sure what the issue is?

  13. Tarball says:

    Well I managed to get it compiled and loaded on the n800, however it doesn’t seem to work as intended. The n800 just sees the ps3 as a USB device accessing the memory card, it doesn’t run the exploit.

  14. Jotap says:

    Pot to N800 please.
    Thx!

  15. azz says:

    Hey Tarball, Can you do a test compile for the n810? Or just send me your files since the n810 and n800 are suppose to be similar. I want to test it out too. Email it to me at koobazzzz at gmail dot com. Much thanks.

  16. Tarball says:

    I’ve sent you the module compiled for the n800/n810, azz.
    Also, my previous post was incorrect. The exploit doesn’t just “not work”. My n800 freezes and reboots when connected to my ps3 after pressing the power and eject buttons. I’m assuming this means something in the code needs to be fixed for n800/n810.

  17. rtaycher says:

    VoodoRush Darwin is not linux, see here http://en.wikipedia.org/wiki/Darwin_(operating_system)

  18. galaxian says:

    Great work Goku! ;-) It is a shame Sony locked the PS3 down so tightly. I know of one Linux HTPC distro that would be ported to the PS3 if full access to the RSX was available.

  19. [...] hacker met de naam KaKaRoTo heeft een stukje software voor de N900 gepubliceerd waarmee het mogelijk is om de playstation 3 te jailbreaken. De hack [...]

  20. [...] PSFreedom source code released! « KaKaRoTo's Blog [...]

  21. impossible says:

    those symbian beggers are pain in the ass! hit your stupid heads with something heavy.. The guy made a nice piece of soft for the phone he owns! Do you think that anybody would buy some symbian shit just to port psfreedom for lame script kiddies? That kind of software should be freely available only for open OSes.

  22. Jon says:

    Hi and congratulations as well as infinite thanks!

    Amazing work, and incredible to have this running on the n900! More people should develope for that “phone”, but that’s beside the point.

    I was wondering whether you would arrange a donate function, I would certainly be willing to donate a nice amount.

    Regards and quite giddy about this,
    Jon

  23. daedalus says:

    Thank you for realeasing the source code it is an invaluable piece for the comunity

  24. Jotap says:

    Please samebody port to N800/N810.
    Please

  25. [...] hacker, die opereert onder de naam KaKaRoTo, heeft de broncode van zijn driver gepubliceerd en in een video getoond hoe het werkt. De driver moet op een Nokia N900 worden gezet, waarna het [...]

  26. [...] PS破解社区当下真从Pre身上获益:Pre的开源inux框架,可以模拟成一个USB硬盘。在psx-scene论坛上,名为“blake_zero”的用户,已经把KaKaRoTo’s PSFreedom移植到Pre上了,这个程序最初是在N900上开发的。 [...]

  27. kikko says:

    sorry for motorola droid/milestone exist nothing? the porting is possible?
    thanx

  28. koke says:

    eii ola esta grandioso tu trabajo lo ke lei eske solo por ahora soporta con telefonos linux con un motorola v8 se podraa

  29. rpgdude says:

    Is it possible to make this work with fw 3.15? Any information you have regarding this would be very valuable.

  30. liamc3ooo says:

    Hi can you please add the HTC Wildfire to the android phones your trying to crack. I believe it uses the msm72k controller aswell but im not sure so you might want to look into it.
    Thanks for all the hard work

  31. UnTiTLeD says:

    Hi i am no developer or anything but can you guys use the python app for Nokia s60 to make psfreedom work on the phone?
    Here is a link to the python app http://sourceforge.net/projects/pys60/files/
    I hope this helps.

    Thank’s for the gr8 work.

    ( Sorry for double post )

  32. Huzayfa says:

    Hello Mr.kakaroto
    your work is AMAZING my friend
    as what Mr.UntiTLeD had syaing .. Can you do this with S60 phones ?
    please ! the most of phone users in the world are using the phones wich compatiable with S60 .. so I hope you to work on it too ..
    Thanks alot my friend !

  33. Kjetil says:

    How about using a dreambox? Im pretty sure they have a usb slave controller. And they often sit right next to the ps3, while running linux 24/7! :)

  34. Darktox says:

    KaKaRoTo,

    I think I have one other port ready
    can we talk on efnet this evening ?

    BR

    Guilhem

  35. Jian says:

    THANKS Kakaroto and PSGroove Team! This is AWESOME!

    I bought the n900 2 weeks ago and PSFreedom is the best gift I could have ever dreamed.

    I´ll stay tuned for any update.

    Thank you so much from Spain.

  36. Tacu says:

    hey, so much thx for this :) i love my n900 even more now :P

    one question: psfreedom was updated today, is there a chance to get this on our phone?

  37. jcesar says:

    psfreedom wasn´t updated today, it was psgroove, they are different thinks
    The psgroove update isn´t usefull for normal users

  38. kakaroto says:

    PSFreedom was also updated… the number of commits that were pushed on git is surprising.. we had multiple ‘updates’ everyday since release.

  39. jubz says:

    kakaroto isit possible for the samasung wave bada linux based can you get it testes or findout what controller it uses to see if it would actually work thank you

  40. jubz says:

    also does psfreedom support backupmanager or instalation of unsigned pkgs ,patches

  41. Jonah says:

    Hi,

    Any chance of this working on iDroid? That is a port of Android running in a dual boot mode on an iPhone.

    Can you look at the souce of iDroid and see if it would work using PSFreedom?

    Regards

  42. Jian says:

    Hi again,

    Could you post what are the new features or when will you release PSFreedom 2.0, please?

    Can´t wait for that.

    Thank you so much

  43. SyLeNtS says:

    Please compilate in IOS!!The best aplication for the iphonee!!

  44. Extralite says:

    2 questions:

    I just wanna know, is it possible to port it to symbian 60 or not?

    If not, can we use a emulator of some kind of the n900 to make this work (on pc) ?

  45. Omegaron says:

    any news about psp or samsung ominia i8000 psfreedom¿?

  46. Kalie says:

    Knowledge wants to be free, just like these artilces!