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.
- master boot record
- boot loader for prototype (256MB) units or for production (512MB) units
(resellers should use the latter) - system partition
- data partition
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:
- master boot record
- boot loader for prototype (256MB) units or for production (512MB) units
(resellers should use the latter) - system partition
- data partition
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.