Replace the on-board 8G eMMC with 64G eMMC (Including some test results)

I replaced the on-board eMMC by a 64G Bytes high performance eMMC, and it works.

The idea came in my mind when I wasn’t able to compile OpenCV 3.1 on my Banana Pi M3 due to storage limitation. So I had to use a 16G SD card instead. It’s a pity that I can’t run my codes one the fast eMMC.

2 weeks ago, I decided to buy a bigger eMMC and replace it by myself. Two days ago, the chips arrived.

Here is the chip. A 64GB high-performance sansung eMMC. I paid for it about 15 pounds including postage.

And here is my M3.

The comparison of the original eMMC on-board (KLM8G1WEMB) and the one I brought (KLMCG8GEAC) . But you will see later in the test result, the read speed is limited by the speed of A83T at 50MHz and 50MB/s

The board is ready to detach the eMMC. I tried first with my hot air gun. But I fail due to the overheat of the power supplier.

Then, someone told me that I could use the cooker! 1 minutes later, it is done!

Then remove the extra tin.


Use my old sd card to power on… Everything works fine, it’s recognizes the eMMC! Working mode is 50MB-8bits-DDR.

Here is the start-up log for SD card. You could see it’s running on 25MB-4bits-SDR mode.

Unfortunately, the chip isn’t empty. But they seems haven’t initialized yet. So it might be a ‘new’ eMMC.

Whatever, Let’s start the test.

There are three tests I tried. Here is the list of tests.

  • Using dd cmd to test the reading and writting speed in different block sizes.

  • Using dd cmd to simulate 4k I/O test. (read 4k block, then write them in the same block)

  • Using hdparm

Let’s do the hdparm first:

sudo hdparm -Tt /dev/mmcblk0

Compare to SD card both 8G emmc and 64G emmc has two times speed.

For the dd reading test, I used this cmd below. The test is about reading 1 Gbytes data from eMMC or SD card. The data is collected from the result of dd. I change bs and count to do the test in different block size.
time sudo dd if=/dev/mmcblk1 of=/dev/null bs=512 count=2097152

The theoretical maximum speed of eMMC on A83T is limit to 50MB/s. It might because there are some buffers in the system.

Here is the writing test: time sudo dd if=/dev/zero of=/home/pi/test.dat bs=512 conv=fdatasync count=2097152 conv=fdatasync means that the data write directly to emmc without buffer.

The 64G is 6 to 7 times faster than both sd card and 8GB eMMC.

4k test, using the cmd below: time sudo dd if=/dev/mmcblk1 of=/dev/mmcblk1 bs=4k count=10000 oflag=dsync

The data should means how many read and write cycles that the emmc / sd card can performs in 1 second. But it might not works as my expectation. Please refer to the specification of eMMC in the front of this post. For the 8G eMMC test, I/O should not go above writing IOPS. (about 200)

For the conclusion, This is a worthwhile attempt to gain both writing speed and storage capacity. But I think the stander version is enough. Because the limitation is the interface of A83T, the maximum speed is limited to 50MB/s.

More descriptions on my blog (in Chinese):

I’m not a native English speaker; sorry if I confuse you with my language. Regards,


very good , i like.:slight_smile:

Why don’t you test the most important criteria? Random I/O (your IOPS test is still more or less sequential writing)?

Please compare with

Can you add iozone results please?

Thanks! The ramdon read/write test is what I wanted but I didn’t know how to do it.

Since I only have one M3 which emmc is already replaced. I can’t do the test on 8G eMMC anymore.

Here are the results of 64G emmc and the result from Dragan tested with the same parameters. iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2

8G emmc test from Dragan ------------------------
                                                      random   random
kB       reclen    write  rewrite    read    reread   read     write
102400       4     4378     2626     5659     7929    8329     5106
102400      16    13302    13674    27495    27399    26636    13430
102400     512    22770    23383    54337    54592    52669    23046
102400    1024    23582    23381    60522    61165    61159    23364
102400   16384    24577    25005    72832    72809    72435    25216

64G emmc test ----------------------------------
						      random   random  
kB      reclen    write  rewrite    read    reread    read     write    
102400       4     5460     5798     9486     8208    8465     4594       
102400      16    11906    13318    20516    20600    20284    13203             
102400     512    27360    27617    38483    38391    38669    26293  
102400    1024    28549    28699    45715    45694    45707    27767
102400   16384    32795    32879    61076    61130    61368    32698   

16G SD ------------------------------------------
						     random    random           
kB      reclen    write  rewrite    read    reread    read     write  
102400       4     2111     2222     5653     5474     5297      787   
102400      16     4835     5017    11486    11509    10643     1002 
102400     512    15067    16210    15754    15805    15930     2081  
102400    1024    11400    16488    17742    17774    17786     7059  
102400   16384    18805    19184    21013    21042    21077    19062   

It seems like in all the reading test, the 64G is slower then 8G. However, 64G faster then 8G in some writing cases. A large writing block is more like a sequence writing instead of “random”.

For the 16G SD card (SanDisk UHS-1 C4 16G), XD

1 Like

Thx for the numbers. Yes, seems it’s a bit slower but what matters more to me is still superiour random I/O write performance compared to even the fastest SD cards (and they’re limited to ~23MB/s sequential speeds anyway).

But unfortunately just 8GB eMMC is not enough to make any real use of it. And it’s a bit tricky to use a large SD card for secondary storage and the eMMC for the rootfs (which would be an ideal combination but requires that the boot loader will be on the SD card since Allwinner SoCs always prefer booting from card if present).

hmmm the idea of putting my PCB on a cooker…not something I want to try, but an interesting experiment.

thank you for your hardwork. if you need a new sample , just send a mail to : , and tell she , lion wang need she send a free sample to you . give she this post link.

Thank you, I will contact her later

Yes, I prefer to have SD card working with eMMC. 8G is not enough for OS together with application. I don’t think it’s easy to have boot in emmc when the the SD card is available. Have someone know what is the function of the on-board u-boot button? Does it help?

I have some question about the random read/write test. I use only 100M data. It seems much faster than I used the ‘dd’ for 1G data. Is it because 100M is not big enough for avoiding the data cache?

The u-boot button is labeled wrong and should be called FEL button instead. And on the M3 the boot loader has to be on the SD card if the card is connected when the board boots. It’s not that hard to achieve that with good OS images since you write the image to eMMC, then copy the 1st 1MB with dd to the SD card, adjust there the partition table afterwards to suit your needs and exchange the root= path to point to the eMMC: root=/dev/mmcblk1p1 instead of root=/dev/mmcblk0p1 in boot.cmd (or uEnvt.txt when using the horrible SinoVoip OS images that still use stone age mechanisms)

Regarding the test data size for sequential speed tests you might be right, that’s what I normally recommend:

And when you test with twice the RAM size then you end up at ~60 MB/s:

BTW: I will follow now @BrianBeuken’s suggestion to finally go away since it’s useless to discuss here. SinoVoip refuses to improve their software and most of the users remaining here are absolutely clueless. I’m available at linux-sunxi IRC from time to time or in Armbian forums.

1 Like

but at least they are not insulting, goodbye.

Thanks for your explanation. So it’s possible and not that difficult to have SD card and emmc working together. I will try later. Regards,

This procedure is really dangerous for many hackers. But it’s a good tutorial to upgrade the M3 depending on the project.

Thank you for that, that’s cool!


Hello Friend. approved the publication. I have a banana pi m3 and I want to buy another memory with 64bit or 128nits. you can tell me where can I buy? which you work value to this exchange of pieces? thank you

Hi Gecoura,

I brought it from and sent it to UK thought a shipping agent ( But it will be difficult for those who don’t know Chinese. Please search some tutorial about how to buy things from taobao if you really want to have a cheaper price.

What I recommended is KLMCG8GEAC (64G) or KLMCGAGEAC (128G). In fact, any of the emmc in the list I shown can be used without any problem. Just pick one and see if you could buy it.

KLMCG8GEAC on ebay:

and on aliexpress

1 Like

There are overlay filesystems, which OpenWRT uses to allow for the root filesystem on the eMMC but extend by external SD or even an USB attached disk.

How to keep other components & chips from becoming unsoldered from board? I can not see any way from EVERY thing from becoming loosened or moved or poor solder joint(s) as result pf using heat on whole board. Heat gun seems better localized heat on eMMC,

You are right. I am using the heat gun on emmc with the cooker play as a heat bed only. The components surrounding the emmc are actually loosened. Just dont touch would be ok.

Can I change eMMC from Asus T101HA? Where can I buy a 128gb eMMC?