Firmware Flashing

This page is mainly intended for resellers who flash the units before they go to customers, but it might be useful as well for end users who have a non-booting unit and want to attempt to restore it themselves.

NOTE: This is not how you should update your GCW Zero; the flashing procedure will wipe all data! If you want to update your firmware, follow the instructions on this page instead.

2015-07-23

All images updated: boot loader from July 2015, system image contains OpenDingux 2014-08-20, data image contains applications from July 2015.

2013-11-03

New data image with Griffon Legend added and Stringrolled updated:

The other images are unchanged; use the 2013-10-04 versions.

2013-10-04

The following image files are needed to flash the GCW Zero:

ingenic-boot

The tool used for flashing is ingenic-boot. It runs on Linux only. You can find pre-built binaries here:

You can check whether you're running a 32-bit or 64-bit Linux using the arch command line tool. You may need to install the packages for libusb and libconfuse, if those are not already installed.

Alternatively, you can install ingenic-boot from source.

Flashing a Unit

Make sure the Zero is off. While holding the SELECT key, power on the unit with the power slider. This puts the JZ4770 into USB boot mode.

Then run the following command to do the actual flashing:

$ ./ingenic-boot --mbr=mbr.date.bin --boot=ubiboot-v20_mddr_512mb.date.bin --system=system.date.bin --data=data.date.bin

If you are flashing a prototype instead of a production unit, use --boot=ubiboot-v11_ddr2_256mb.date.bin instead of the --boot option listed above and also add --config=gcw0_v11_ddr2_256mb to the options.

You only have to copy-paste the command once; the second time you can use the cursor-up to get the command from the command history.

Once you see letters on the unit's screen, the flashing is complete. On first boot, the unit will resize its data partition from the flashed image size to the full size of the SD card. This will take several minutes. The unit doesn't have to stay connected to the PC during this time. However, make sure it doesn't run out of battery charge while resizing!

Note that the menu will go to power saving mode after a minute of inactivity. The unit is not off unless the green LED is off.

Troubleshooting

If you want to test if ingenic-boot and USB boot mode are working, run this:

$ ./ingenic-boot --probe
probe only
 CPU data: JZ4770V1

Above is the correct output. If the device is not in USB boot mode, or not seen by the PC, you will get the following output:

$ ./ingenic-boot --probe
probe only
Error - no XBurst device found

Sometimes the PC doesn't see the unit. In this case, disconnect the unit from the PC, hold SELECT, press the reset button (front, next to USB socket) and then reconnect the unit to the PC. If problems persist, try again with a different USB cable.

If the unit boots into the factory test application, you didn't press SELECT properly or too late. You can power down the unit by holding the power slider in the upper position for a few seconds.

Flashing Multiple Units from One PC

If you have multiple units connected to the same PC, you must tell the tool which one you want to flash. This is easiest if you can connect devices to separate USB buses. Put multiple devices in USB boot mode and connect them to your PC, then run the following command:

$ lsusb | grep 4770
Bus 001 Device 117: ID a108:4770
Bus 002 Device 007: ID a108:4770

In this example, one device is connected to bus "001" and one is connected to bus "002". If you have devices on separate buses, you can select the one to flash like this:

$ IBBUS=001 ./ingenic-boot --mbr=mbr.date.bin --boot=ubiboot-v20_mddr_512mb.date.bin --system=system.date.bin --data=data.date.bin

Note that you have to use the exact string such as "001": if you try to use just "1" no devices will match.

If, no matter which USB ports you plug the devices into, you can only have devices on the same bus, you can select one using the device number instead. The device number is increased every time you plug a new device. For example, if you want to flash device 117, use this command:

$ IBDEV=117 ./ingenic-boot --mbr=mbr.bin --boot=ubiboot-v20_mddr_512mb.bin --system=system.bin --data=data.bin

Further Information

Full documentation can be found on the wiki for our ingenic-boot fork.