[Android Q&A, Help & Troubleshooting] Swivelgames:
Hey guys,

I was hoping someone would be able to help me flash the NAND on the board. There are a couple avenues that I have taken, but I've gotten stuck right before completion each time. I have an image to flash, and access to the board via my 32-bit Linux PC.

The board that I have is the Olimex A13-OLinuXino-WiFi.

Here's the different methods I've attempted:

Using ADB

This is what I'm most familiar with. The only place I'm stuck is finding out what block to flash the image to.

From what I've heard...

/dev/block/nanda bootloader
/dev/block/nandc boot
/dev/block/nandg recovery

But, I have no clue if that applies to all A13's.

My assumption is to run the following code, but... that's what it is... an assumption. Anyone able to shed some light on this?

cat /sdcard/imagefile.img > /dev/block/nand<1?>
sync; sync; sync
echo -n boot | busybox dd of=/dev/block/nand<2?> count=1 conv=sync; sync

Using LiveSuit

LiveSuit is the toolset that AllWinner released for their A1X SoCs... the problem is it seems like they only have a Windows or 64-bit Linux version. Since I'm only on 32-bit Linux, I obviously can't compile it. I've searched everywhere for a 32-bit version

Using sunxi-tools

LiveSuit utilizes sunxi-tools to flash the board. However... I can't for the life of me find any documentation surrounding it or any type of process around how to flash the board. It's all a mystery. There are two tools that I have been told to look at: nand-part and fel*. nand-part is a tool to manage the NAND partitions, while fel is a tool for writing directly to the NAND (specifying blocks, start and size).

NAND Map Memory

-name- -start- -size-
bootloader : 100000 1000000
env : 1100000 200000
boot : 1300000 2000000
system : 3300000 10000000
data : 13300000 20000000
misc : 33300000 100000
recovery : 33400000 2000000
cache : 35400000 10000000
UDISK : 45400000 a8400000

Is it a safe assumption that these correspond with the blocks in /dev/block/?

As in, /dev/block/nanda = bootloader, /dev/block/nadab = env?

Using awutil

A new one! AllWinner Utilities has a tool called `awflash` which is supposed to be comparable to LiveSuit and flashes using the same method. The only problem is I can't get it to compile.

swivel-mac:awflash swivelgames$ make -k awflash
cc -I/Developer/Platforms/.de650d.245/.de650d.244/SDKs/iPhoneSimulator4.1.sdk/usr/include/pcap/ -L/usr/local/lib -Wall -o awflash awflash.c -lusb
awflash.c:67: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
awflash.c:114: warning: ‘struct usb_dev_handle’ declared inside parameter list
awflash.c:114: warning: its scope is only this definition or declaration, which is probably not what you want
awflash.c: In function ‘fex_xfer’:
awflash.c:137: warning: implicit declaration of function ‘usb_bulk_write’
awflash.c:144: warning: implicit declaration of function ‘usb_bulk_read’
awflash.c: At top level:
awflash.c:172: warning: ‘struct usb_dev_handle’ declared inside parameter list
awflash.c: In function ‘fex_command’:
awflash.c:174: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:182: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:199: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:209: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:221: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:230: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:240: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:245: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:257: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:274: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:280: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:296: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c: In function ‘main’:
awflash.c:358: warning: implicit declaration of function ‘usb_init’
awflash.c:360: warning: implicit declaration of function ‘usb_set_debug’
awflash.c:362: warning: implicit declaration of function ‘locate_device’
awflash.c:362: warning: assignment makes pointer from integer without a cast
awflash.c:367: warning: implicit declaration of function ‘usb_set_configuration’
awflash.c:371: warning: implicit declaration of function ‘usb_claim_interface’
awflash.c:375: warning: implicit declaration of function ‘usb_set_altinterface’
awflash.c:417: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:420: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
awflash.c:423: warning: passing argument 1 of ‘fex_xfer’ from incompatible pointer type
make: *** [awflash] Error 1

Anyone able to help me out with any of these methods? You would think with four options there would be SOME sort of resource or documentation out there to help me out. But, you know...

Any help would be appreciated!