Flashing the GSM Firmware
This is a step-by-step description of how the firmware is upgraded on a Neo with FLUID running on the device. Note that this process tolerates almost no variations. Stray from the instructions at your own peril. Instructions based on a posting by Werner (http://lists.openmoko.org/pipermail/openmoko-devel/2008-April/002605.html), thanks.
Please note: Update to MOKO9-beta firmware isn't recommended by OM, and probably won't fix any recent issues like #1024 et al.
Please see http://people.openmoko.org/joerg/calypso_moko_FW for more recent FW-images. For now there is some moko10, which should fix #666, and also has a new command AT+CSIM. This version is not supposed to fix #1024 We are planning to include this version, renamed to moko10, to the factory image of A7 run. Version string will change though.
We recommend you don't update by following this procedure, unless you feel very comfortable with commandline. Don't miss-spell any FLUID command! There will be a SD-image shortly, that greatly simplifies the whole GSM-update process - we suggest everybody who's not feeling completely comfortable with the procedure described herein to wait for this improved method.
Warning: there are chances to _completely_ brick your GSM modem on messing around with FLUID! Please watch out for typos!
The GSM-firmware didn't differ from GTA01 to GTA02, as the GSM-hardware didn't either. This means you can flash MOKO10 (or any other recent GSM-FW) to GTA01 as well. According to mwester, this worked for him to update from MOKO1 on a GTA01Bv4 to MOKO10b2, by following the steps described herein.
Any reports on successful update, as well as problems encountered, or SIMs seen to work after update, all highly appreciated. Please add to the "discussion" tab of this wikipage. Thanks!
Phase 1: Preparations
- Download and install a distribution to your device that gives you SSH access. We recommend the fso-console image:
mickey@amethyst$ cd /tmp mickey@amethyst$ wget http://people.openmoko.org/mickey/images/openmoko-fso-console-image-glibc-ipk--20081028-om-gta02.rootfs.jffs2.summary mickey@amethyst$ dfu-util -a rootfs -R -D ./openmoko-fso-console-image-glibc-ipk--20081028-om-gta02.rootfs.jffs2.summary mickey@amethyst$ wget http://people.openmoko.org/mickey/images/uImage-2.6.24+r10+gitr75999+54524f4531c8b262431b794fea610d81bb351c86-r10-om-gta02.bin mickey@amethyst$ dfu-util -a kernel -R -D ./uImage-2.6.24+r10+gitr75999+54524f4531c8b262431b794fea610d81bb351c86-r10-om-gta02.bin
- Install http://people.openmoko.org/joerg/calypso_moko_FW/fluid_0.0+svn20070817-r2_armv4t_eabi.ipk on your device:
root@om-gta02:~# opkg install http://people.openmoko.org/joerg/calypso_moko_FW/fluid_0.0+svn20070817-r2_armv4t_eabi.ipk
- Install http://people.openmoko.org/joerg/calypso_moko_FW/s3c24xx-gpio_1.0+svnr4130-r2.1_armv4t.ipk on your device:
root@om-gta02:~# opkg install http://people.openmoko.org/joerg/calypso_moko_FW/s3c24xx-gpio_1.0+svnr4130-r2.1_armv4t.ipk
- Download http://people.openmoko.org/joerg/calypso_moko_FW/gsm_ac_gp_fd_pu_em_cph_ds_vc_cal35_ri_36_amd8_ts0-moko10.m0
and place it into the /home/root directory:
root@om-gta02:~# cd $HOME root@om-gta02:~# wget http://people.openmoko.org/joerg/calypso_moko_FW/gsm_ac_gp_fd_pu_em_cph_ds_vc_cal35_ri_36_amd8_ts0-moko10.m0
Phase 2: The Lobotomy
- Make sure nothing is accessing the GSM modem. If you're using the fso-console image from the link above, this will happen automagically on boot. On other systems, kill processes as you see fit.
- Powercycle the modem:
root@om-gta02:~# echo 0 >/sys/bus/platform/devices/neo1973-pm-gsm.0/power_on root@om-gta02:~# echo 1 >/sys/bus/platform/devices/neo1973-pm-gsm.0/power_on root@om-gta02:~# s3c24xx-gpio b7=0 root@om-gta02:~# echo "AT@POFF" >/dev/ttySAC0
- Launch the FLUID binary:
root@om-gta02:~# cd /usr/sbin root@om-gta02:/usr/sbin# 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-moko10.m0
It should say something like this (takes a few seconds to load the file):
FLUID Revision 2.27, ... Bootloader: (reset target)
(if this fails repeatedly, or flashing aborted and you have a broken and "bricked" gsm-firmware due to this, try -oo instead of -oO, to use the calypso ROM bootloader instead of the firmware bootloader. Also try without the 'FLUID_FLOWCONTROL=h' part, there are reports on ROM-bootloader not working with hardware-flowcontrol. Changing the -b to some lower baudrate might improve stability of flashing-process - the bootloader does autobaud, so you're free to use any rate)
- Start a second SSH session and start the modem:
root@om-gta02:~# s3c24xx-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
Note: If you get this 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, this is the whole 'echo 0/1, b7=0/1 stuff'.
- To verify that everything went well, do this in either of the two sessions:
root@om-gta02:~# cat /dev/ttySAC0 & root@om-gta02:~# echo -en 'AT\r' >/dev/ttySAC0 root@om-gta02:~# echo -en 'AT+CGMR\r' >/dev/ttySAC0 +CGMR: "HW: GTA, GSM: gsm_ac_gp_fd_pu_em_cph_ds_vc_cal_amd8_ts0-Moko10" root@om-gta02:~# kill %1
In some case you may receive this:
(fluid, version 3) ok Checksumming (269 * 8kB = 2152kB): ok Flash Detect: (0xEC, 0x22A0) Samsung K5A3240CT ok Program: (0 sectors, 0*8k=0k) () ok
If so reflash some older firmware that can be found here (http://people.openmoko.org/joerg/calypso_moko_FW/) -- but never downgrade to a version earlier than Moko6, or you will render the GSM unusable (certain internal data structures changed between Moko5 and Moko6). Also PLEASE DON 'T USE moko9beta1, as there is at least one report on reflashing to another FW gets difficult from moko9b1.
Some users wasn't able to complete the upgrade since they got an error while the firmware was uploading in the GSM chip (like Flash operation timeout).
However a solution has been found and it allows to use again the GSM modem.
Use the following fluid command:
FLUID_PORT=/dev/ttySAC0 fluid.exe -oO -b 115200 -f $HOME/gsm_ac_gp_fd_pu_em_cph_ds_vc_cal35_ri_36_amd8_ts0-moko10.m0
(Without FLOWCONTROL and with -oo to choose the ROM bootloader)
Then on a second ssh session please use this instead of the gpio command:
echo 0 > /sys/bus/platform/devices/neo1973-pm-gsm.0/power_on echo 1 > /sys/bus/platform/devices/neo1973-pm-gsm.0/power_on
The firmware download should start now.