uOFW, the alternate Firmware project for the PSP
Some of you might have heard of uOFW, a project that aims at fully reverse-engineering OFW 6.60 on the PSP with the goal of writing an open source Firmware for our beloved device. Others might remember the Utopia project with a similar goal. Finally, most of you might wonder what the point of such a project would be, since we all have CFW on our PSPs… Today, in the hope of answering some of these questions, I’m interviewing Felix and Artart, the leads of one of the most ambitious projects on the PSP.
Wololo: Hi guys, could you describe the uOFW project in noob-friendly words? If I am a regular PSP user, what does this project do for me? What is its ultimate goal?
Felix & Artart: It’s quite a tough question, but although the project is very technical and not noob-friendly, its goals are very simple to understand.
uOFW is a project of reverse engineering the PSP firmware: in short, it means we are discovering how the PSP operating system works. In other words, it means we are looking into all the software which is used to make your PSP work as it does. From the binaries of this operating system (like a computer executable), we take its source code: it means we discover the way it works in a both human-readable and machine-readable way, in a conventional programming language (here, the C language).
As an end user, the project does nothing for now… we are “just” making a new PSP firmware, identical to the original one, but free of rights (it can be modified freely), and in a way which lets us modify it how we want. This means alternative firmwares may appear, opening your PSP to more opportunities and functionality… of course that part depends on what people will do with uOFW, not on uOFW itself. Still, with the documented source codes of the modules (and the working modules) we make adding new features to the firmware easier than ever before!
In addition, uOFW can also lead to progresses in emulators. As an example, the audio.prx module reverse engineering is heavily used in PCSP (practically untouched from what I heard), and it’s working perfectly.
A major part of the uOFW project is the documentation about the PSP modules and the PSP hardware itself. We intend to create the first compact archive of PSP hardware/kernel information. For now, a lot of information about it can already be found on the Internet, however, unfortunately, they cannot be found at a single place. Examples are the websites wololo.net and ps2dev, both being places where major information about the PSP can be found, but in many cases only in the form of bits and pieces, leaving much valuable information unfound (or can only be found after some search time). We want to change that with uOFW, adding module specific information right into the module’s source code. And it doesn’t end with that; we have setup a PSP wiki for the uOFW project as well, adding all information we find during reverse engineering which don’t get included into the source code.
Some information included in the uOFW documentations is very technical and thus aimed at hackers (people who would want to make low-level software for PSP or even, why not, a new firmware from scratch? Or porting linux? Bottom line: Everything is possible!) Even if you are not such a developer, but nonetheless interested in the PSPs inner works and want to know more about it, you should definitely check out the documentations added inside of a module’s source code, as they are aimed at explaining what is really going on. That means, not only C experts can get a grasp of what is going on but even every day PSP users.
Its final goal, shall we say, would be to completely reverse engineer the PSP firmware, resulting in having a completely open-source and modifiable firmware. However, we are aware of the fact that this objective is probably too high to be realistic (that is one reason why we are looking for more new contributors). Consequently, our goal is to reverse engineer all the most important modules (kernel ones, as opposed to VSH and utilities). This is a very long term project though… but the awesomeness of the project shall not stop us!
Wololo: What is the current status of the project? What can it do in its current state?
Felix & Artart: As for now, a few modules were reverse engineered. In its very basic form, as we said previously, it can’t do anything more than the original firmware; that is, you can use our “uOFW installer” to run our modules which work (only five are really working for now), and you won’t see any difference with the original firmware. However, it only seems to be the original firmware: actually, you’re partly running uOFW! (Let me just add that it is an awesome feeling to see “your” module running which you reverse engineered from scratch.)
The current five working modules are the controller module, the system timer module, the syscon module, the me_wrapper module and the LED module (although we still have to upload its working version). As you can see, we already finished some big numbers and we are looking forward to add more powerful modules to that list as time goes by.
These five modules are ready to be fully modified by anyone who wants to add new futures to the PSP’s kernel right away! Want some new, cool controller features? Just add them to the module, compile it and there you go! By this method, we can even continue releasing updates for the PSP and implement features, we, the users, really want; a point Sony did not always take into consideration.
We are hard at work to add more modules to the list of working modules and to provide even deeper looks inside the PSP kernel, however, we also have to emphasize that we (uOFW’s current main contributors) are very busy with real life for the foreseeable future and we would welcome every new contributor on board, bringing uOFW even further than it is right now! In other words: We need YOU! And don’t worry, if you have questions about reverse engineering or need help with a specific code block, we will happily help you out.
Wololo: That’s a nice transition to my next question: How many developers are actively working on this?
Felix & Artart: Currently, we are only four people actively working on it: Felix, Almost, artart78 and Omega2058. Some people just joined us, whereas others did a few libraries/modules for us but most likely won’t do anything more in a short time (Draan, jigsaw, mowglisanu, some1). While this list seems to be rather short, let us note that we have ongoing discussions with people (they are all excited to help uOFW coming together!) on IRC about PSP kernel details and specifications.
Wololo: How is uOFW different from an official firmware? How is it different from a CFW like Pro CFW? How is it different from a project like Utopia?
Felix & Artart: For its usage, uOFW is exactly like the official firmware; the only difference is that it’s understandable, modifiable, freely redistributable, etc….
A CFW is a modified official firmware… instead of reverse engineering the official firmware, its developers just understood SOME parts of the official firmware and replaced them by different ways, depending on what was needed.
For Utopia, you’ll need to search for long before finding a difference with uOFW, simply because there is none. The objective is the same! We just wanted to start again from scratch because Utopia was made on an old firmware (we are reverse engineering the latest firmware) and only a small part of it was code written in a way that would let us reuse it.
Furthermore, all its developers had abandoned the project; Mathieulh even had set the Utopia repository down for some time when there were legal issues with Sony. Considering all this, we found it easier to restart everything again from scratch, with a new team, new objectives, and with an improved organization. As the founders of the uOFW project, we are in full control of it and can listen to any suggestion made by you in order to make it even better!
To make a conclusion, uOFW is probably one of the most ambitious and interesting projects the PSP scene ever had!
Wololo: This does sound exciting indeed, if more devs want to participate, how can they contribute to uOFW?
By now, I hope we have already made you interested in uOFW, and, even better, interested in contributing to it. You will need some MIPS ASM/C knowledge in order to reverse engineer PSP modules and, of course, reverse engineering skills are needed as well. Now, if you don’t have the latter, don’t panic! Artart wrote an excellent guide about reverse engineering for the PSP and you should definitely check that out! It can be found at: http://psnpt.com/joomla/index.php/articles/39-tutorials.
Furthermore, we will add links (on the Github repository page) to MIPS online resources which you can use to improve your MIPS ASM skills.
If you want to take a look at uOFW’s current project status, check out its Github repository at: https://github.com/uofw/uofw
uOFW’s project page can be found at: http://dev.psnpt.com/redmine/projects/uofw
The doxygen documentation is located at: http://uofw.psnpt.com/sdkdoc/
uOFW’s wiki can be found at: http://dev.psnpt.com/redmine/projects/uofw/wiki/Wiki
If you want to join uOFW, you can always contact us through our emails:
Felix91’s email: FelixDev91@gmail.com
Artart78’s email: firstname.lastname@example.org
In addition, you can always contact us via IRC on the FreeNode server (irc.freenode.net) (join the channel #uofw).