Monday, July 28, 2008

Open2x newsletter #3

F200 support
Senquack recently discovered that GamePark Holdings had made a sneaky source release of 4.1. This included for the first time, the menu code along with the normal kernel source which has some interesting bits of code such as serial number reading and enabling TV-out correctly (I'm hoping to roll these functions into a dynamic library to be included in the firmware itself). Senquack then managed to merge the F200 code from this new 4.1 kernel into our own kernel tree and it seems to work perfectly now on all GP2Xs! After further testing this will be added to SVN. So it looks like the initial public release of the firmware will include both F100 and F200 support.

New library and kernel interface
As many people will be aware, we have a /etc/open2x file which tells you which version of the filesystem you are currently running. I am hoping to be able to take this a little further soon and work has started on a /proc or /dev driver which will let you read out various static pieces of information about the system itself. Although I cannot guarantee anything yet, senquack may be able to hook up a programming interface to let one globally mute the speakers and set the maximum volume (as the GPH firmware can through the menu).
UPDATE: This is now working

DR4

I don't normally do this because it is a pain working to deadlines, but I have decided to set one for DR4 because it is virtually finished anyway and has been dragging on for ages now. The date we are going to try and work towards is August 10th. After this date, the core components of the firmware (i.e. the libraries and the kernel) will be frozen until a public release can be made (then of course I'll start looking at new features again). So if anybody has any patches lying around or wants any applications bundled please send them in well in advance of this date!

Tasks that need to be completed for DR4:
  • New GP2X hardware library
  • Kernel info driver
  • Userland side of touchscreen support (tslib, calibration and SDL 1.2.11 support)
  • Completion of safer installer

Friday, February 22, 2008

Open2x Makefiles

I've adapted the GBA Makefiles from devkitARM to work with the Open2x toolchain. They are very clean, and I thought it'd be nice to have them around so that new people don't have to faff around writing their own. It may also help people release dynamic binaries when a public release of the Open2x firmware is made.

There are two Makefiles included. 'Makefile' builds a dynamically linked binary suitable only for use on Open2x and 'Makefile.gph' builds a statically linked binary, which can run on any firmware (but is really meant for GPH only).

To install, simply copy the 3 rules files to /opt/open2x/gcc-4.1.1-glibc-2.3.6 (or wherever you have installed the toolchain) and create a copy of the template directory to use as your project directory. There is a 'LIBS' variable in each Makefile (line 40) to which you need to add your -lwhatever statements to. If you want to compile C++ code with these Makefiles, you will also have to add a CXXFLAGS section, which will normally be the same as CFLAGS.

Download here

Wednesday, February 20, 2008

Firmware: Developer Release 3

I've finally made a third developer release of the Open2x firmware. This is a translational release between DR2 and a release candidate for a final public release. As far as I'm concerned, the filesystem is pretty complete and the kernel is in good shape.

New features in this release are plentiful. For one thing, the latest SVN version of GMenu2x is being used, which has a new 'Explorer' option so you can run applications without first creating a shortcut if you like. I've also added a new Open2x settings menu into GMenu2x to enable such things as USB host and USB networking on boot (as well as configure them). I will be uploading the code for this soon, but if you really need it now just contact me.

And that leads nicely onto some other new features thanks to working USB host support. USB mass storage and HID have been tested working thus far (you need to select the 'Mount EXT' icon in GMenu2x after inserting a mass storage device). Other USB drivers have been included but I know very little about them so they may not be complete and they certainly haven't been tested (Bluetooth should be in there, along with several USB ethernet devices).

Several applications have been integrated into the firmware, with more to come in future releases. Currently we have a file manager (Enexfi), video player (MP2X) and an E-book reader (Greader2x). Any suggestions are welcome (particularly for an image viewer), but they must be open source so we can recompile and distribute them with the firmware.

The base filesystem now has up to date libraries but I've had to compress them which adds a second or two onto the boot time of DR2 (still less than the GPH firmware and will be corrected with the next release).

Once the new features of this have been tested, I'll move on to DR4 (which I've already got plans for, but more on those closer to the time) which will be a release candidate of sorts in itself.

If you want a copy of this release, please contact me in #open2x on FreeNode (IRC).

In other news, I've found a way of clearing the fake bad blocks off the NAND without touching the bootloader so all those problems caused by 3.0 downgrades should soon be a thing of the past! I'm going to work on a dedicated NAND claner which may be integrated into the next Open2x firmware installer.

Sunday, February 10, 2008

Open2x newsletter #2

GMenu2x updates
Ryo has been hard at work with GMenu2x and I've updated our GMenu2x to the latests from SVN. This makes it a bit easier to use, and has a more traditional file browser alongside the 'links' mechanism for launching applications (so you can now just select an executable file from SD without creating a link).

Open2x settings
I have looked through the GMenu2x source code and have added a new panel for controlling Open2x settings such as USB networking on boot, IP, telnet on boot, FTP on boot and so on. This should make it a lot simpler to use USB networking since you will not longer need that file in the root of your SD card.

USB host
Finally! USB host has been fixed by Lithosphere in the kernel (it seems that usb-ohci.c was messed up during the 2.4.25->2.4.26 patching process). I've spent some time and managed to get USB storage and USB HID working nicely (there are other modules in the firmware for USB, but since I don't have any of these devices, they are untested currently).

DR3
DR3 will hopefully be coming very soon now. Expect this release to be close to the final public one and will of course have all the features mentioned above and in the previous newsletter. I'm just looking for the built-in applications now (we need an image viewer in particular), but this is not a blocker for a DR release (though we shall not be releasing a public Open2x firmware which is missing some important built-in applications).

Wednesday, November 21, 2007

Open2x newsletter #1

Library work
Over the last few days, I've been rewriting the scripts that compile the Open2x libraries. They should be more manageable (since each library is split into an isolated 'module'), reliable (since they use more standard build procedures than the old scripts) and can now handle multiple versions and basic dependency tracking. In the future, integration with the buildroot-based firmware compilation system will be possible since I have used the same configuration format as buildroot produces. These new scripts will find their way into SVN over the next day or so. In addition to the improvements to the scripts, I've also been through an updated all the libraries where it was needed (roughly half) to the latest versions.
I've uploaded a binary lib pack which can be found here (these are untested, so use with some caution, and I'd appreciate feedback from everybody who tries them out).

MP2X
Recent work on MP2X (congratulations are in order for Lithosphere, who has waded through the horrible mass of code we have inherited from GPH and got this working dynamically linked on an Open2x firmware - look out for this in SVN soon) in particular has flagged up a few important libraries that we were missing, and these have now been added into the build procedure (libiconv, libunicodefont and libSDL_inifile). Any requests are of course welcome, but we can't include everything (especially not anything obscure) since space is very limited, even after I go through and strip/remove bits and bobs. So this is good news for everybody who has been using DR2 and needing to load compat each time they wish to watch a video as MP2X will be included in DR3.

DR3
In other news, I would like to thank trooper of GP32x for the donation of a GP2X to replace my old one which seems to have developed a hardware fault. Also, RobBrown and CanDoo from #gp2xdev for donating towards the cost of a new JTAG dongle. This means I am now able to begin work on the DR3 firmware release, which, if all our plans come to fruition, will be the best yet by far. Not only will we have all new libraries, MP2X but also included will be working USB host support (again, thanks go to Lithosphere for this), hopefully meaning a few more drivers than we've had up until now will be available (I am aware of some Bluetooth work being undertaken by sebtx on #open2x). I am aiming to make this the last developer-only release before we go into public testing and releases, since I know people have been waiting for a while and recently all the blockers for a final public release have been eliminated.

GP2X development talk
Jay Vaughan (torpor) recently gave a talk about homebrew development and had Open2x on display. There is a video of part of it (you can catch glimpses of Open2x!) on YouTube (German). Jay is the English-speaking guy later on in the video.