dev builds
themes manual
device status forums
mailing lists
IRC bugs
dev guide

Wiki > Main > GminiPortDevelopment (compare)

Difference: GminiPortDevelopment (r10 vs. r9)

Gmini Hacking for Not So Dummies

The big picture

Basically, there's no "big picture". Here an (edited) excerpt of a conversation where I explain why:

_alx_ How long did it take for you to get inside this project jyp What do you mean ? _alx_ I mean to get confirm with all the routines and programm stuff and hardware details jyp I'm not confirm with "everything" jyp What I mean is, this is not a project where you go top down from specs to implementation jyp The very goal of the project is to understand what's going on jyp implementing bits here and there until you get the picture _alx_ So you take the existing firmaware code and try to understand? I thought you were doing a new firmware! jyp Both are done at the same time, in parallel. jyp But... the implementation part is perhaps 1% of the work _alx_ so, how long did it takes you to make the first step? I mean understanding the code doing your first modification and get a result? jyp We're basing our work on Rockbox. jyp Actually the implementation part equals porting rockbox. jyp The first thing implemented was the lcd driver... It was done in a few hours jyp ... because our lcd is very similar to another lcd already supported by Rockbox _alx_ lcd-driver: I guess you got the modification that are needed to be done out of the original archos firmware!? jyp Mostly, yes. (Also by running little test programs on the Gmini) _alx_ ok, I understand. _alx_ so there are little parts that can be done by different persons and the parts don't depend on each other (mostly)? jyp true 

How do I start?

Best is to pick a task you'd like to do. Please, ask out on irc (#gmemu, or #rockbox, on freenode); we'll give you directions on how to start, and it will avoid duplicating work too. Before you start, you will also need the tools...


This page describes how to setup a full environnement for contributing to the Gmini port. This includes

  • A compiler for to generate Code on the gmini
  • Tools to create your own firmware upgrades
  • A Gmini Emulator
  • An environment for reverse-engineering of the Archos firmware
  • Various test programs to run on Gmini devices.

First you'll need a unix-like OS, (preferably linux), with gcc, QT and QT tools (moc)

Then you'll need a compiler for the CalmRISC16 architecture. See CrossCompiler for instructions.

Fetch gemoss from sourceforge cvs.

cvs login 
cvs -z3 co gemoss

Compile it:

cd gemoss
automake -a
./configure GMINIMODEL=....  LOADADDRESS=...

GMINIMODEL is either GMINISP, GMINI100 or GMINI200. LOADADDRESS is the address where code will be flashed in the gmini, don't do anything stupid like putting a generated aaz file onto your device without triple-checking the address is correct. As of today we have NO WAY to recover a badly flashed gmini. I repeat: flashing at a bad address will overwrite Archos' code, making it impossible to flash back the original firmware. This said, the following table will tell you what to put:

After publication of the wiki and a couple bricked gminis, here's a table of load addresses tested correct by users:

ModelFirmware versionFlashing target address
120 FirmwareGmini100_v1100 0x77000
SP FirmwareGminiSP_V130 0x70000
Other Other UNKNOWN! ASK!

In any case, you'd better understand very well what this means and why you should put the addresses above. After all someone might just have edited this wiki page with incorrect information.

At this point, you can try to run the archos firmware inside the emulator. Don't worry if the display is reversed.

cd reverse
make gui

You can also run some of our own code inside the emulator

cd testbed
make adc.emu

You are now ready for serious hacking. You'll need to setup a hook inside your gmini in order to run code on it. This is explained here:

At this point, you should know which address to put as LOADADDRESS. Reconfigure and remake. Remember what it said about no recovery? Then you're ready to flash your gmini. NOTE: As of today we don't have a LCD driver for the 200 series. There's probably no point to go further if you have a 2xx. Otherwise... Plug the usb...

mount /mnt/usb/
make adc.aaz
cp adc.aaz /mnt/usb/whatever.AAZ
umount /mnt/usb/

WAIT for the unmount to finish. Plug the DC in.

This is the point of no-return. Instead of unplugging the usb, you can always remove the AAZ file from the gmini disk.

Back to business... while whatching the gmini display, unplug the usb. It says something gets updated. Battery guy... Switch on; play a .wav file... Your code should run.

  • If this doesn't work as expected, come tell us on IRC, #gmemu (freenode), we can help you, hopefully wink
  • If you made it here alone, come tell us on IRC, #gmemu (freenode), you can help us, hopefully wink

r11 - 30 Sep 2007 - 18:10:39 - NicolasPennequin

Revision r10 - 12 Mar 2005 - 10:31 - JeanPhilippeBernardy
Revision r9 - 12 Mar 2005 - 10:25 - JeanPhilippeBernardy
Copyright by the contributing authors.