A bit of politics…

Disclaimer: The opinions expressed in this post are my own. If you wish to comment, you are free to do so, but please make sure you read the whole post before commenting.

I will not tolerate a single comment that contains any kind of insult, racism or hate against any religion or ethnicity.


If you’ve been following me on twitter, then you probably noticed a bit of political “debate” happening lately over there. If not, let me summarize it :

I retweeted a tweet by @LowKeyMusic1 where he says that “burrying” the body at sea does not constitute “respectful of muslim traditions” while talking about the recent death of Osama Bin Laden (OBL), I received some answers from people angry at me for retweeting that, and some people saying that OBL does not deserve respect, to which I replied that any human being deserves respect regardless of what they’ve done, and even if that person had lost all of its humanity (isn’t it true anyways that there are “animal rights” associations and you’re supposed to respect even animals?). Saying something like that was enough to warrant me being branded a terrorist or “supporting and defending terrorism” and people even saying that if Bush or Obama would have been killed, I wouldn’t have said anything about respect, and that I would have been happy. It even went as far as people deducing from what I said that I was “happy that people died on 9/11”.

What also happens was that, in answer to that, @PSXScene told me that OBL didn’t deserve any respect for what he did, to which I answered that nobody knows what he did, he was trained by the CIA and he may have been hired by the CIA for all we know, so we shouldn’t be so quick to judge people without knowing the absolute full truth. That gave me a response from @PSXScene, and I quote “Nice tin-foiled turban you’re wearing”. That remark got me pretty  upset because it was a clearly racist and offensive comment that crossed the line. Other reason was that I didn’t understand the “tin foiled” comment as I didn’t know what the “tin foiled hat” expression meant. I later realized the meaning of it and it did calm me down a little to be honest, but the turban comment was still an offensive, racist and over the line comment that many other people also felt was racist (although they were american and fully understood the meaning of it). When I got into the argument about this racist comment, other people started sending me even more racist comments, like “I pee on the quran and spit on mohamed” or “All you dirty arabs should die”, and other stuff like that.

I have since continued tweeting my opinion and I’ve seen many people agreeing with me, as well as a few others who disagreed. Some of those decided to simply unfollow me (no harm done), others decided to go on an insult rampage (blocked, bye bye) while a few decided to reply and start an intelligent exchange of ideas which usually ended up with either “I understand what you meant now, sorry for being pissed earlier, I agree with you now” (from them), or “sorry, that’s not how I intended to say it, and I’m sorry if I offended you” (from me), or “I disagree with you, but I understand your position and respect it” (from either).

This whole mess is why I decided to write this blog post, because I want to make sure people understand what I’m saying, and also to point out some of my political views so others can think about them too.

First things first, I believe in free speech, and I believe that everyone is entitled to their thoughts and no one should be  silenced for whatever reason. The backlash I got, people insulting me, people threatening me, and people telling me to “stop posting garbage” is in my opinion a way to prevent me from having an opinion. It is not a government going after me to prevent me from speaking, it is a community of people trying to pressure me into shutting up (through insults or through accusations of supporting terrorism, etc..). As you probably know, I will not be silenced, if Sony couldn’t get me to hide behind a rock, then I don’t believe that some twitter ‘friends’ would be enough to make me shut up. On the contrary, I will continue to post or retweet anything that I personally feel is an intelligent comment, worthy of everyone’s attention, regardless on whether or not it’s “pro-american policies”. If you disagree, feel free to discuss it with me, as long as you stay respectful, it will be my pleasure to debate anything with you. If you disagree, you are also free to unfollow me, or to simply ignore me.


Now onto the issues at hand. First, about Osama’s death, I couldn’t care less. I do deplore any loss of life, and I did want to see him being brought to justice rather than executed (assuming it was an execution). I was asked by someone how they should have handled his burial,  and my answer still stands : “I don’t care, dump him in the sea, freeze him in a morgue, whatever. The only issue I have here is that Obama said “respectful of Islamic traditions” which is bullshit”. So, yeah, I’m not pro-ben laden, I’m not sad that he got killed or whatever, my original retweet wasn’t about OBL himself, it was rather about Obama’s statement about “respecting Islamic traditions” and I wanted to point out that that statement was not entirely true.

There was also the issue about the celebration of OBL’s death, and my opinion does not change, and I’m far from being the only one to believe that : People should NOT be celebrating someone’s death, no matter who it is. It’s a simple matter of being human or not. As a human being, I don’t think that we should celebrate, yell and chant because some guy, even our enemy, got killed. Now everyone who says that yes they should celebrate and that if I don’t go out and celebrate with them, then I’m “supporting terrorism” are just trying to use fear to assert their opinion. There was this quote that was largely retweeted on twitter which said “I mourn the loss of thousands of precious lives, but I will not rejoice in the death of one, not even an enemy.” which sums up exactly the message that I was trying to get across. The quote was originally attributed to Martin Luther King Jr. but was later revealed to be a misquote (and the original author is actually Jessica Dovey) and I even saw people turn down that argument because it’s a “fake quote”.. but, regardless of who said it, does it make it any less truthful ?

I understand people feeling relief, and being glad that OBL is dead, I can even understand people being happy that he’s dead, it makes sense somehow. But what I’m criticizing here is that people are *celebrating* as if their soccer team just won the world cup. And if you say that people were celebrating because they “won the war against terrorism”, that’s bullshit because people were celebrating the death of Bin Laden, as simple as that, and everybody knows that the death of OBL was nothing more than revenge (not even justice since he didn’t get to face a jury) and that although OBL was the figure representing Al Quaeda, his death will be practically (possibly not entirely) meaningless in the running of their operations (it might even anger them and make them want to get their own revenge). Even Obama did say it in his speech, the war on terrorism is not finished and Al Quaeda is still running without OBL, so really, that wasn’t a “victory on the war against terrorism”.

That makes me think about something else I said which seems to have rubbed people the wrong way, I quoted something from Naruto (a Japanese anime that I like watching) where he said that the only way to end the circle of hate is for people to learn forgiveness, that revenge only generates revenge and it becomes an endless cycle of war… (I just checked the exact text I tweeted and it was “The circle of hate must end, vengeance must stop, or there will always be war…”). I’ve received various hate responses of people thinking that what I meant by that was that OBL shouldn’t have been killed. I honestly was not thinking about OBL, it did not cross my mind, and whether or not he should have been killed is not for me to decide, like I said, I do not care about him, all I care about is that humans shouldn’t die by the hand of other humans. I simply remembered that sentence and decided to tweet it because when I heard it (a few months ago), I thought it made sense and something reminded me of it. It is also true, in the sense that the US government did ‘something’ to piss off these terrorists, they got their revenge by the 9/11 attack, to which the US took revenge by invading Afghanistan and Iraq, killing thousands of people over there, who will leave behind families that will be fueled by revenge, thus possibly joining terrorist groups, now they killed OBL for revenge, and some Al Quaeda group might want to take revenge for this, etc.. So I’m not saying that you should forgive and move on with your life, I’m just saying that as long as there is revenge, there will be war, it’s an endless cycle, and I do not believe that the human nature will allow that cycle to be broken.

About the “tin foiled” comment and the “conspiracy theory” stuff, I never said I believed in that stuff, but what I did say is that I don’t believe in what the media says. I do however believe in some of the conspiracy theories, some others I think they are far fetched, and some I don’t know if I should believe in them.  My main point is to tell you : Stop being blinded by what the media tells you, they can and they will lie, think for yourselves for once. And it’s true, the government lies on many things, if not the government then the media will lie simply because the more sensational it is, the more they get to sell! Just like when George Hotz went to South America for vacation and came back to see all the news talking about how he fled the country, etc.. and so many people believed that, simply because they didn’t take 5 seconds to think “does that even make sense???”. The same applies with the mainstream US (and international) media, so if someone tells me “they said on CNN that..”, that’s enough for me to question what he’s about to say. If you don’t believe me then think about the Iraq war. It was proven that there were no weapons of mass destruction and that the government knew it and lied to the US citizens and defied the UN and invaded Iraq anyways. Go read the book “Fair game”, or better yet (for most of you, me included) watch the movie of the same title “Fair game”. I watched that movie recently, and at the end, I was shocked to see that it was all a true story, then I started searching about Valerie Palme Wilson and her story. What shocked me is not the fact that the US Government lied publicly, knowing that it was lying to its citizens only in order to justify a war that never should have happened, or that it then tried to crush and destroy its own citizens, trying to censor them and deny them their right to exercise free speech. What shocked me is that this story was known, shown on TV with a public hearing and the American people should know all about it, and yet, I had never heard of it until I saw the movie. It’s clear that when you see the same things over and over again on TV, you end up believing them, you end up forgetting all the other things that the media doesn’t want to show you more than once (just enough to say that they are fair since they ‘reported’ on the news). Same goes about how some colonel or something lied about the event where the US Army killed journalists in Iraq and until wikileaks showed the video of what really happened, nobody could have proven that the military lied about the events that took place that day. And another rather sad example of the media lying, do you remember right after 9/11 when all medias and newspapers were showing a video/pictures of Palestinians “celebrating the tragedy”? Until it was later revealed that the footage was dated from 1995 during a national holiday? This is a clear example of why you shouldn’t always trust what you see on TV, and that was my point.

And while we’re at it, you probably all heard the news of how Bin Laden was killed in a firefight, then later that he was unarmed but struggling, then later that he was shot after he was in their custody… that’s simple proof that everything you hear on TV isn’t necessarily 100% true. Whether he was killed in a firefight, or when struggling, or was simply executed, it doesn’t matter, we’ll probably never really know what happened in there, what I want people to understand is just that : Don’t state something as a fact if you don’t really know what happened.

One important thing to note.. when I say “Don’t trust the media”, it applies to all medias, not just american ones.


The last subject I want to talk about, considering this post is already quite huge, is about the whole “you are anti-american”. Because I’m stating my opinion which happens not to be “Death to all those dirty arabs”, I’m suddenly anti-american? People automatically say that I’m defending terrorism and that I was probably happy that people died on the 9/11 attacks. Seriously? What do you guys don’t understand about “all life is sacred”? Where did I ever say “all non-american life is sacred” ? Human beings should not die by the hand of other human beings, it’s as simple as that. And you know what, I can see all over the internet tons of americans saying the exact same thing as me, are they anti-american too? I simply hate this idea of “you’re either with us or with them”. if I don’t end my sentence with “God Bless America”, it almost looks like I’m anti-american, or that I don’t care about those who died on that fateful day. You keep saying “God Bless America” while I say “God Bless the World” and yes, America IS included in the World. Like I said to @xPreatorianx on twitter : “There are way too many innocents who died, I deplore the loss of life, whether it’s an iraqi child bombed and killed for no reason or whether it’s a US soldier sent there to die while doing the deeds of the rich bastards profiting from the war”.

This whole thing seems to make people see things black or white, where in reality, life is full of shades of gray. When I express my opinion, and if people disagree with it, I get labeled a terrorist for some reason.

I would suggest people listen to what Glenn Greenwald thinks about the subject. He is an american, and yet, everything he says seems to be exactly what I’ve been saying too. The difference between me and him is that he probably knows how to communicate his ideas a bit better than me. You can view an interview with him on the subject at the following URL : http://bloggingheads.tv/diavlogs/35971


I believe that’s enough politics for today. I’m not gonna go too deep in that territory for this post as I just wanted to clarify some of the things that people might have misunderstood and make my opinion clear. Also, above all, I wanted to make people open their eyes and think about what’s happening around them instead of following blindly. I hope I achieved (at least partially) this goal.



Posted in Politics | Tagged , , , , | 42 Comments

PS3IDA Released!

It’s been a while since my last post! A lot has been happening lately, I’ve mostly kept my followers updated on what’s new through my Twitter account, but I think that this deserves a post of its own!

I’ve  been reversing some PPC code in IDA and unfortunately, it doesn’t handle the PS3 files very well, so I wrote a lot of scripts in order to make  it parse the files properly! There was one thing missing though that I couldn’t do with an .idc script : handling of jump tables.

Yesterday, I took on the task of writing an IDA plugin in order to parse the ppc code and find jump tables and define them in IDA’s kernel so the analysis is done properly! It was a very fun and exciting challenge that I enjoyed doing, and I’m happy to say that I succeeded and it works very well (on the files I tried anyways).

The IDA API is extensive and easy to use, and allows you to do pretty much anything! I also found the IDA Pro Book to be extremely well written and very useful! I would suggest to anyone who likes tinkering to try and write an IDA plugin, because it was a challenging but fun experience!

I initially wrote the plugin thinking that the jump table instruction patterns was always the same, but when I started testing, I found out that some instructions could have a different order, there might be inserted instructions in the middle of the pattern, or different registers being used, etc.. so I eventually had to rewrite my plugin and ended up using a class that comes from IDA’s SDK which takes care of “instruction rescheduling” and “intermingling of the jump sequence with other instructions”, at least I learned from my first try and it made my second try a lot easier. I also realized that I haven’t done any C++ in maybe 5 or 6 years, and I really forgot all about how to write C++ code. It was a bit embarassing to google “how to derive from a class in C++”, lol!

Anyways, I am now releasing my scripts and my PPCJT plugin for IDA under a new project : PS3IDA.

I’ve created the ps3ida repository on git-hacks.com (Thanks again to @dashhacks for providing us with this safe haven for all our legal tools). The repository contains many files, I suggest you read the README file for a description of each, but the most important ones are analyze_self.idc and analyze_sprx.idc. I’ve also ported my lv2_dump_analyzer.idc script to work with IDA 6.0.

There are two plugins in ps3ida, the first one is the well known PPCAltivec released by xorloser, I’ve decided to add it to the project so the source code stays available for anyone who needs it. I also slightly modified the source code so it compiles correctly on Linux using gcc 4.x. The second plugin is PPCJT that I wrote yesterday, it will find jump tables and define them in IDA’s kernel so the functions get properly analyzed. Just install it, and when you see a switch/case in the code, put the cursor on the ‘bctr’ instruction and press ‘C’ so it can parse the jump sequence and fix it, or just go to  “Options->General->Analysis->Reanalyze program” and it will fix them for all the file.

I have built the PPCJT plugin for Windows and Linux for IDA v6.0, you can download it here.

My personal suggestion, since IDA could screw up the analysis in its initial run, would be to completely undefine the file (Ctrl-PageUp + Alt-L + Ctrl-PageDown + U), then run the analyze_self.idc or analyze_sprx.idc.. it will take some time, but then you’ll get a beautiful file loaded 🙂 Especially with the correctly named imports, this should help a lot any reverse engineer out there!


p.s: If you have no idea what I’m talking about, then this is not for you, this does not lead to any ‘CFW’ or jailbreaking of 3.60 or whatever else you might hope for… so don’t come here and post stupid and/or irrelevant questions of that kind… please do not comment if you’re not a user of IDA or if you don’t know what IDA is or if you don’t have anything constructive to say.


PPCJT v0.1 for IDA v6.0.



Posted in Development, PS3 | Tagged , , , , , | 25 Comments

Libnice 0.1.0 released!

Yesterday, I released a new version of Libnice, This is a new major version that has a small API/ABI break from previous versions.

Here are the main changes :

  • Added nice_candidate_copy to the public API
  • Make stun_timer timeouts configurable (Breaks API and ABI)
  • Add compatibility support for MSOC 2007 and MSOC 2007 R2
  • Add MS-TURN support for MSOC
  • Added and completed TURN RFC 5766 support
  • Add a nice_agent_set_port_range API to force a component to use a specific port range
  • Fix various bugs and memory leaks
  • Improved documentation

The API and ABI break is with the StunTimer usage, so if you use it, you’ll need to do a small change to your code. Because the library version changed, you’ll also need to recompile your applications that link with libnice.

The biggest change in this version is the full support for the recently published RFC 5766 TURN standard (UDP and TCP) as well as the addition of MS Office Communicator compatibility. The API/ABI break introduced in the StunTimer usage is to allow specifying the timeout of STUN retransmissions. The timeout for the STUN and TURN discovery during the candidate gathering phase has also been lowered to 3 seconds now instead of the 9 second timeout that we had before, which should make for a quicker candidate gathering phase and a more responsive UI.

Another interesting change is the addition of the nice_agent_set_port_range API that allows you to specify a range of ports that you want a component to listen to for host candidates. This should help those who use port forwarding with symmetric NATs.

The stun_usage_timer configurable timeout as well as the nice_agent_set_port_range addition were suggested by Tom Kaminski.
The MSOC support was added by Jakub Adam.
The RFC 5766 TURN support was added by Marcus Lundblad and myself.
Other small fixes that were reported on the libnice mailing list were also fixed and included in this version.
Thanks to everyone who contributed in this release and thanks to Collabora and Nokia for sponsoring that work!

A new version of Farsight2 has also been released today (0.0.23) which should work with the new API of this Libnice release.

You can download this new version of Libnice from the usual place.



Posted in Development, libnice | Tagged , , , , , | 2 Comments

PS3: First ‘Custom Firmware’ now working!

Update: I’ve now fixed the issue about the missing game data icons. PS3-Hacks.com has a nice step-by-step tutorials and they posted the PUP files.

Update 2: DO NOT try to install this from the service mode, it might brick your console, install it normally from the normal menu or the recovery menu.

Great news!

Thanks to the tools made by the fail0verflow team (and thanks to sven in particular for his work on the pkg/unpkg tools), the first “Custom Firmware” is now available for the PS3!

I see a lot of questions coming up really fast on my Twitter account, so here are the basic things you need to know :

Because of legal/copyright issues, I will not provide the custom firmware to anyone, however, I’ve made available all the tools necessary to transform an Official firmware update, into a custom one, just grab my ps3utils repository from github, compile, then run :

./create_cfw.sh PS3UPDATE.PUP CFW.PUP

This will take the official firmware, unpack it, modify it, then repack it correctly (requires you to install ps3tools).

This should work on Linux and Mac for now, but I’m sure others will do it for the masses and illegally release those files somewhere.

The advantage here is that you can do it for any firmware, if you want to keep version 3.41, then give it the 3.41 update, if you are on 3.55 already and can’t downgrade, then run the script on the official 3.55 firmware and it will create a modified 3.55 firmware.

You can put the file in a USB drive under the filename “PS3/UPDATE/PS3UPDAT.PUP” and then go to system update in the XMB, and it will allow you to install the update (even if you’re already on 3.55).

People are asking what are the features of this firmware, it’s simple, all it does is to add those “Install Package Files” options to the Game section of the XMB. It doesn’t do anything else!

This firmware will not allow you to run the currently available homebrew application. Once the homebrew developers re-package their files in a ‘retail’ .pkg format with signed executable, then it will work (this should be coming soon thanks to the work of the fail0verflow team).

Since the kernel is left unmodified, this means that this custom firmware is really meant for future homebrew installation, and it will not allow piracy. I plan on keeping it that way.

This is just the first attempt at custom firmware, and it only contains a minor modification to allow you to install pkg files directly, eventually we’ll get some more options added to it in the future. This is just starting to get interesting!

p.s: Thanks to everyone who helped make this possible!

Enjoy! 🙂

Posted in Development, PS3 | Tagged , , , , , , , , , , , | 263 Comments

The aMSN team donates to the EFF

Thanks to the ads that we have displayed on the aMSN website, the aMSN Team was able to gain a bit of money and we decided to donate part of that revenue to the EFF.

The EFF is a donation-funded nonprofit organization that defends our digital rights, helps promote net neutrality and raises questions about our privacy and our rights as consumers of the Internet. It fights for us in court and helps protect the digital world from big corporations who do not care about their consumers. The EFF also has a “Coder’s Rights project”  that defend developers like us.

The aMSN Team has  just donated 2500$ to the EFF and we are glad to help them in their fight. We encourage everyone to help this cause, since we are all benefiting from their hard work and maybe it’s time for us, as Internet consumers, to give back to them.

We wish everyone a Merry Christmas and Happy New Year!

The aMSN Team.

Posted in aMSN | Tagged , , , , , , | 6 Comments

Second Humble Indie Bundle + Braid Linux release!

Hi all,

After the huge success of the Humble Indie Bundle from last May, which I absolutely loved, the group of Indie developers decided to release a second Humble Indie Bundle with five other games, one of which is Braid, my favorite Independent game.

I suggest everyone goes over to http://humblebundle.com and buys those games, you name your price and you get five great games with no DRM and with Linux, Mac and Windows binaries available for you to install on any and all of your PCs. you can also decide how to share that money you just spent, how much you want to send to the developers, or to the EFF or Child’s Play charities. Don’t waste any time and go show your appreciation of good games and your support to the open spirit of writing multiplatofrm, non-DRM games. Maybe this time again, like in the first bundle, the developers will decide to release their games to an open source license (I wish:)).

In the last bundle, I was a bit sad that Braid wasn’t included, but it was because it wasn’t available for Linux yet. I had previously discussed with Jonathan Blow (the author of Braid) about Linux support and he said that it would eventually be available, and he indeed delivered! Although there has been no news about this and no release of Braid for Linux so far, the Humble Indie Bundle also marks the release of the Linux version of Braid. Get the bundle and you will be able to download a native version of Braid for Linux (although it’s been reported that the Windows version worked under Wine).

I’ve tried running Braid on my  Linux system and had the horrible issue of the ‘missing GL extension’ that so many people are having. I checked the game’s bugzilla on icculus and found the related bug report in which Scott Mansell found the solution : The missing extension is “GL_EXT_texture_compression_s3tc” which is disabled on the open source drivers because it is covered by a patent and requires a licence.
If you live in a country where the patent doesn’t apply, you can enable it using driconf. Simply install it (“sudo apt-get install driconf” or “sudo yum install driconf”) then run ‘driconf’ and enable the S3TC extension in the “Image quality” tab of driconf.

Thank you Scott Mansell! 🙂

I hope this helps a few of you, enjoy!


Posted in Braid | Tagged , , , , , , , , | 8 Comments

GStreamer: GstFilters to be (hopefully) merged into gst-plugins-base

Today is the day of the Gstreamer Conference 2010 in Cambridge. Unfortunately, I couldn’t attend, but I thought I’d share a little something about the things I’ve done on GStreamer, as part of my work for Collabora.

If you remember my last post about Fsu, I talked about how you could use the FsuFilterManager and FsuFilter  classes to create some really cool GStreamer applications that can modify the pipeline dynamically, using a minimum amount of code and a very easy to use API. There was a lot of interest to this during last GUADEC and I decided to move the code from Farsight into Gstreamer itself. The FsuFilter* objects are independent of Farsight, and can be useful to a lot of people, so there was no reason to keep them there.

I have ported the code from Farsight into gst-plugins-base and renamed the FsuFilter* classes into GstFilter* and made it into a libgstfilters library. I opened a bug report on Gnome’s bugzilla asking for my branch to be merged into gst-plugins-base. I would appreciate it if everyone interested in this could have a look, review the code if possible, mainly review the API and try to use it. I’d like to make sure that the API is stable, feature complete and easy to use for everyone, so if you have any complaints about it, feel free to comment on the bugzilla so I can fix it and hopefully get cleaner/better code merged upstream soon!

You can find the built gtk-doc of the GstFilters library here.

Update: To clear any possible misunderstandings, the GstFilters library hasn’t been accepted yet into gst-plugins-base. So far, I’ve only opened a bug report and hopefully, after it gets reviewed, it might get accepted into -base (or not). I’d just like to get people to comment on the API and help me improve it.


Posted in Development, Farsight | Tagged , , , , , , , , | 5 Comments

PS3: Why I don’t like the Hermes payload

First things first, the title says “why I don’t like the hermes Payload” so this has nothing to do with Hermes himself. I don’t know him, I never spoke to him, so I don’t know what kind of person he is and so I have no opinion on him personally. Now, I want to make some things clear, I’ve seen a lot of people criticize me for ‘bashing Hermes’, and many people seem to think that I’m trying to say “I’m better than him” or something. Also, it looks like I created some confusion with my comments from my previous blog post. So I want to apologize and make sure there is no confusion anymore : When I said that the hermes payload is ‘dangerous’, people misunderstood me.. no it is not specifically dangerous for your PS3, it won’t brick it or anything, the only ‘danger’ there is, is that it could (in some situations) crash… then you’d need to reboot, that’s it.. so don’t freak out about his work being harmful or anything, because as far as I know, it’s not! Some people also told me “give credit where its due”, and I want to do it, I’ve always given credit to people, every time I achieved something, I gave credit to those who helped me achieve it. I’m not looking for fame here (if I did, I would have announced PL3’s release 3 weeks ago when I created it) I’m just having some fun in my free time doing something that I like. Hermes did contribute some nice things, and I appreciate what he did, mainly he figured out how to fix the controller issues with some games, that was something very difficult to fix and I’m surprised at how fast he came up with a solution and it was a smart solution and all I can say is “good job”. The other stuff he did in his payload, I don’t like that much, and that’s what I want to cover in this post.. I may have been ‘harsh’, but I don’t see the point in trying to be diplomatic, I’m a programmer, not a politician. I don’t like his code, and I speak my mind, I’m being honest, and I’m not trying to criticize him without any reason, as far as I know, I’ve stayed respectful and that’s all that matters to me. To those who don’t want to know about all the technical details, let me ‘conclude’ here by saying that if the hermes payload works for you, then good, use it, I’m not telling people to stop using it, I’m not saying that PL3 works better either, maybe his payload works better in some situations, maybe not, but overall, the user’s choice should always be “whatever works for you”. The PL3 initiative is about having a standard repository for payloads, and having a common code base for everyone to work on, so in the future, PL3 might evolve faster and have more features, or maybe it won’t, the thing to note is that it’s better for payload developers to base their work off PL3. But again, this is meaningless for most users, apart from maybe clearing up the confusion about all these payloads and nobody knows which one to use. Also, I talked about PL3, which is a common repository for contributors to work on, people seem to have nicknamed it “kakaroto’s payload” or “kakaroto’s pl3”, but I never said it was my payload, PL3 is PL3, it’s not all my work, and if you look at the commit log, you will see that I’m not the only contributor to it. PL3 itself integrates patches and solutions provided by Hermes, Waninkoko and Mathieulh, I improved some of their patches to make sure it works better for non-3.41 firmwares, but it’s still credited to be their work. PL3 is not my payload, PL3 is a payload repository for everyone. Also, PL3 as a project is a repository containing multiple payloads (default one, development one, dump_lv2, dump_elfs, etc..). PL3 is not perfect, nothing in the world is perfect, so it might have bugs, it might not work for some people, who knows what might happen. But I never said that it was perfect, so people should stop thinking that I said that. It’s written more cleanly, it’s better in terms of the infrastructure behind it, but that’s the only thing I can vouch for. Also for those complaining about me adding a donate button to the blog post, I don’t see how that’s relevant, I’m not begging people for money (and I haven’t received any donations in the last ~3 weeks just so you know). If you don’t want to donate, then don’t, no reason to bitch about it. I’ve put the button there so that people who appreciate the work and want to donate something have a way of doing it. I asked for donations before because I needed to buy a PS3 for development, I already raised enough money to buy it, so I don’t need any more donations, so I’m not asking people for donation money anymore, as simple as that. Anyways, here are the more detailed/technical explanations on the reasons why I don’t like his payload : First, the code is not clean, it’s unmaintainable. The fact that he gives his source code in .rar files instead of a git fork is the biggest issue I have with it. And yes, that does not matter for users, it only matters for developers.  The problem with his method of delivery is that you have no way of knowing what he based his code off, so it’s hard to figure out what he changed.. also, when you find out his base, and do a diff, you get a huge diff for everything he did, all in one shot, and then you have to reverse engineer it to understand what he patched. That’s complicated and annoying for developers! For those who follow my twitter, you can see how many commits I do, I always like having “small commits” because each commit becomes independent, self explanatory and easy to review. It also makes things easier to integrate, if you want a specific thing, you just merge/cherry-pick that single commit, instead of copy/pasting code, and editing it to remove the clutter. The  other reason I like git is that if he used it and I merge a commit from him, then the code stays credited to his name in the commit log, it allows me to have his code without ‘taking ownership’ of his work, it allows everyone to be credited for what they did, and I think it’s the first thing to have for an open source and community project. The reason why I said his code could crash is because his payload got too big and couldn’t fit anymore in the allocated memory we have in the kernel (1296 bytes), so he decided to just move the code to a random position (0x7fff000 I think). This means that his payload will work as long as no application, game or kernel allocates memory which ‘randomly’ ends up in that area.. if it does, then the payload would get overwritten and the kernel will crash. The proper way of doing it (PL3 does that) is to allocate memory during the initialization of the payload, copy the functions we want in that memory that we own, and write those functions to be position independent so they would work no matter where they are placed in RAM. Another reason is the way his syscall8 works, I tried to read his assembly and reverse engineer it, and I seriously was lost and couldn’t understand what was happening.. there are no comments (you’ll notice that my payload has a comment on almost every instruction), so how can I integrate his syscall if i don’t even know what it does… if at least it was on git, I could see the commit messages and understand what each chunk of code did, but he doesn’t use git, so… The way he fixed the controller issue was also not very good, he patched two offsets to jump to a function that decides on some kind of enum on what response to return and you controlled that with his own system call 8.. why do something like that? it makes the fix dependent on people using this new syscall, and it’s useless when you can just patch it directly to return the right value. I also didn’t like the fact that his code became a mess that is 3.41 independent, and it would have taken a huge amount of work just to try to make it work again on 3.15. I already spent time cleaning up the payloads and making them work for older firmwares, so why fork and write code that doesn’t integrate that, it just makes collaboration harder. There’s also the whole syscall 35 versus 36 issue, but that has nothing to do with his payload since I added sc35 after he released his payload. It’s not about his payload being bad because it doesn’t support it, it’s simply about PL3 having a ‘superior’ (if I may say so) system call. What it means for users? nothing at the moment, maybe it will be used for doing fancier stuff later on, maybe you can map a game to your bluray and a different game to /app_home, that could be useful for users, but for now, it’s simply more flexible and cleaner code. There are many other small things that I didn’t like, but it mostly just summarizes to “the code is not clean and it’s unmaintainable” and “he doesn’t use git”. Like I said, if you don’t care about that, then I see no reason for you not to use his payload. It doesn’t mean either that he’s not skilled, it simply means that he may lack experience in code sharing and experience in open source. But that doesn’t make his work any less valuable. I hope this clears things up a bit. I criticized his work, said what I thought of it and people over reacted, I wanted to make sure people didn’t  misunderstand me, and didn’t think I don’t respect Hermes for what he’s done already. Everything else is just drama and people trying to get attention. If this post stirs up even more trouble, then so be it, I don’t think I have much more to say. I said what I think, people should take it or leave it. I do not however tolerate people insulting me for no reason at all. So please, criticize me all you want, just stay respectful. Thank you, KaKaRoTo

Posted in Development, PS3 | Tagged , , , , , | 82 Comments

PS3: The payload mess…

Hi all,

I see a lot of people asking me some questions and I notice a lot of ignorance in the net about the different payload and the latest PL3 payload. So I want to make things clear..
First of all, people should stop talking/requesting/using the hermes v3 payload, I don’t like his work, and the payload is not good, it might crash the system in some cases, it’s not written properly, and hermes doesn’t even seem to understand how git works.
Also, PL3 already includes (for some time now) all the good stuff from hermes, it already supports installing game updates, or running games without a disc, anything else that Hermes added is useless and dangerous could crash in some situations (requiring a reboot).

Some might have seen my tweets about my new payload being released, and many are asking me what is the difference between my payload and what is already available.
PL3 doesn’t support syscall 36 anymore, for multiple reasons, first, it was bad code, it was mapping a path to a single hardcoded value (/dev_bdvd or /app_home or /dev_flash or whatever is hardcoded in the payload) which means that, since we (the PSGroove and PSFreedom developers) don’t want to support running backups, all the official payloads weren’t working with the backup manager without being patched first. The syscall 35 I added in my payload is more generic though, it is the proper way of doing things. You can map any path to another other new path, the prototype looks like this :

  syscall_35 (char *old_path, char *new_path);

This means that the payload doesn’t need to have a hardcoded /dev_bdvd path in it, or have extra code for mapping /app_home to something else.. or having syscall 36 change both /dev_bdvd and /app_home breaking homebrew when using a discless mode with a backup manager. You also don’t need a special payload to run the ‘firmware usb loader’.. It all just works because the choice of the path mapping is given to the homebrew applications themselves. This means that the backup managers will just map /dev_bdvd to what they want and they will work by default on my payload, there will be no need for a patched version of the payload to make them work.
This however means that the backup managers that depend on syscall 36 will stop working. For now Gaia Manager is the only backup manager available that is compatible with my payload. But I’m sure more will be ported to use syscall 35.
People need to understand that this new syscall 35 has to become the new standard, this is what all the payloads should use, nothing else, and this is what everyone should start using, not the old, crappy, backup-manager specific, PSJailbreak written, syscall 36.

We need to have some form of standardization for all these payloads, I’m tired of seeing about 100 different payloads floating on the internet, it doesn’t make sense. I always believed in a single payload that works for everyone, and that’s why I created PL3, that’s why it’s a project independent of PSFreedom (and PSGroove has been ported to it) and that’s where all the efforts should go. Also, by using PL3, you automatically gain support, and all the same features, for whatever previous firmwares PL3 already supports (3.01, 3.10, 3.15 and 3.41).

I have just recently seen this new payload that everyone is so happy about that includes “all the good things from 3 worlds”, the one created by Rancid, which includes the stuff from hermes, waninkoko and Mathieulh… and I was shocked to see how much people were happy about this.. people don’t really seem to understand that this wasn’t necessary at all? PL3 has had all those patches for a while now, so why did Rancid even bother making this payload that includes the patches from hermes, waninkoko and Mathieulh? Why would you spend your time doing something that already is available!

This blog post is meant to stop all this ignorance and let people know that they don’t need to look for a special payload, just use PL3 and you’ll get everything you need. It is also meant to explain to everyone what is different about my payload.

On a side, I have received a P3Hub device, kindly donated to me by the people from r4king.com, and I have now tried PSGroove for the first time! I’ve also created a fork of jevinskie’s port of PSGroove which is now improved and updated to support the latest PL3 version. This means that the PL3 payload is available for everyone, those using PSFreedom as well as those using PSGroove, so there is no excuse now on not using it or relying on badly written payloads developed by people who barely know how to code (yes, using winrar instead of git is a good indication of that).

Update: I forgot to rant about peek&poke!!! So let’s do it now… well, the default payload in PL3 has peek and poke disabled, and for a simple reason : Nobody needs them! and more importantly they are misued! I’ve look at the code of the different backup managers, and it looks like all of them use poke to patch the memory to ‘fix something’ because they think that it’s their job to do it.. no it’s not! If you have a working patch, then submit it to PL3 and if people complain, tell them “use the proper payload”, don’t try to take advantage of peek&poke to go and modify the kernel’s instructions! The reason is simple.. you are a homebrew app that does X, then do X, leave the kernel patching to the payloads! Just as PL3 doesn’t map /dev_bdvd to /dev_usb000/I.Like.This.Game/ and locks it out! Also, I’m on firmware 3.15, so when you decide to poke and patch the kernel with a hardcoded offset, you’re just screwing up my kernel because the offset is firmware dependent! it’s not the same depending on the firmware you use, and I don’t want you playing with it. So.. peek&poke are really not useful to anybody, they are not even available on a normal linux pc, so why would you want them in your default payload, right?! The only people who should use a payload with those syscalls enabled are real developers, people who want to analyze and patch the kernel on the fly while they are doing some development of, maybe, a kernel driver! That’s it. Anyways, that’s enough ranting from me for today!

P.s: In my branch of PSGroove, I wrote a script that build the .hex file for every supported device (from the README) for every supported firmware. You can find all the hex files here : PSGroove+PL3 hex files

Update: Thanks to evilsperm, I’ve updated the archive with hex files for these devices : Blackcat, Xplain, Olimex, UsbTinyMkII, Bentio and OpenKubus.
Update 2: Some people reported crashes with my payload when running backups with installed updates. I figured out the cause and fixed it now in git. The hex files above have also been updated

Thanks for reading.

Posted in Development, PS3 | Tagged , , , , , , , , , , , | 159 Comments

PSFreedom now supports firmware 3.01, 3.10 and 3.15


I’ve got some great news for those of you who have not updated your PS3 firmware! I have just succeeded in adding Firmware 3.01 support into PSFreedom. I’ve pushed the latest code to github and you can now download the source and compile PSFreedom for 3.01.
For now, you will need to edit config.h and change the FIRMWARE_3_41 into FIRMWARE_3_01, then recompile. However, I will soon add support for dynamically choosing the target firmware version by simply doing a :
echo 3.01 > /proc/psfreedom/fw_version

I will soon add support for firmware 3.10 and 3.15, so be patient, and you will be rewarded. I would like to thank Klutsh as well as Philippe Hug who helped me achieve this port to 3.01.
The new payload changes are available in the PL3 github and any project/port that is also using PL3 should automatically gain support for the 3.01 firmware.
You will also be able to enjoy some new ‘tools’ in PL3 that will allow you to dump the LV2 kernel as well as the decrypted ELF files of the XMB and other configuration files it uses. The ethernet dumping is also now compatible with PS3 Slim models.

Philhug and I have worked together recently to make PL3 compatible with 3.15, and it is now done, working and ready for you to use. I have just pushed the latest changes to github, so just update both PSFreedom and PL3, and define FIRMWARE_3_15 in PSFreedom’s config.h and recompile. You will then be able to enjoy your unrestricted PS3 on 3.15 firmwares. Enjoy!

Update 2:
I have just added support for firmware 3.10 to PL3. You can get it by upgrading to the latest git version of PL3. There are however some changes in there that might break PSFreedom, so wait until I update PSFreedom tomorrow to be compatible with the latest PL3 changes!
I have also added a HOWTO file that explains the steps required to port PSFreedom to an exploitable firmware. Enjoy

I would like to thank, again, those who have donated. For the others, you can still donate, if you appreciate the work I’ve done.


Posted in Development, PS3 | Tagged , , , , , , , , , , , , , , | 70 Comments