GTA02 GSM firmware upgrade with FLUID (was Re: status of GSM firmware)

Werner Almesberger werner at
Fri Apr 25 04:35:51 CEST 2008

Below is a step-by-step description of how the firmware is upgraded on a
GTA02v5 with FLUID running on the GTA02. Note that this process tolerates
almost no variations. Stray from the instructions at your own peril.

Of course, some of the files you need for this are only available for
internal use, so I'm sorry that I'll have to disappoint most of the
readers. But you may still enjoy reading how it's done ... ;-)

But first, let me clean up some myths that have popped up about the GSM
firmware upgrade process:

- Myth: you can only upgrade the firmware from the outside, using Windows

  Truth: it works just fine with Linux. I just reflashed my GSM firmware
  three times in a row, without any ill effects

- Myth: this reset procdure will only work once. If you want to do it
  again, you have to power-cycle the Neo first.

  Truth: nope, it seems to be quite repeatable

- Myth: what one has to do on GTA02 is quite similar to GTA01

  Truth: well, that's what I thought several hours ago as well ...

Okay, enough of the prelude. Here we go:

- download the following three files:

- copy them to the GTA02v5:

  pc# ifconfig usb0
  pc# scp gpio fluid_0.0+svn20070817-r2_armv4t_eabi.ipk \
    gsm_ac_gp_fd_pu_em_cph_ds_vc_cal35_ri_36_amd8_ts0-moko9-beta1.m0 \

- log on, prepare the modem for reset, and ready FLUID:

  pc# ssh

  neo# opkg install fluid_0.0\+svn20070817-r2_armv4t_eabi.ipk

  neo# /etc/init.d/gsmd stop

  neo# echo 0 >/sys/bus/platform/devices/neo1973-pm-gsm.0/power_on
  neo# echo 1 >/sys/bus/platform/devices/neo1973-pm-gsm.0/power_on
  neo# gpio b7=0
  neo# echo AT at POFF >/dev/ttySAC0

  neo# cd /usr/sbin
  neo# FLUID_PORT=/dev/ttySAC0 FLUID_FLOWCONTROL=h fluid.exe \
    -oO -b 115200 \
    -f $HOME/gsm_ac_gp_fd_pu_em_cph_ds_vc_cal35_ri_36_amd8_ts0-moko9-beta1.m0

  It should say something like this (takes a few seconds to load the file):
  FLUID Revision 2.27, ...
  Bootloader: (reset target)

- start a second session and start the modem:

  neo# gpio b7=1

  FLUID should now say something like this:

   (fluid, version 3) ok
  Checksumming (269 * 8kB = 2152kB):  ok
  Flash Detect: (0xEC, 0x22A0) Samsung K5A3240CT ok
  Program: (34 sectors, 267*8k=2136k) (*******************) ok

  If you get his instead: MESSAGE: File 'cmd.m0' not found
  Then you didn't do the  cd /usr/sbin
  Please pay attention ;-)

  If FLUID does nothing, curse your bad luck and repeat the reset sequence.

- to verify that everything went well, do this in either of the two

  neo# cat /dev/ttySAC0 &
  neo# echo -en 'AT+CGMR\r' >/dev/ttySAC0
  neo# echo -en 'AT+CGMR\r' >/dev/ttySAC0
  +CGMR: "HW: GTA, GSM: gsm_ac_gp_fd_pu_em_cph_ds_vc_cal_amd8_ts0-Moko9-beta1"
  neo# kill %1

  If you get no version string, you probably didn't send the AT command

That's all. Enjoy your new firmware ! ;-)

By the way, that "gpio" binary is just

Thanks to Joachim, Matt, and Michael for precious hints that got me past
various pitfalls.

- Werner

More information about the openmoko-devel mailing list