Zero3W vs. eMMC

Round one!!
the battle between the Zero3W and it’s (perhaps mythical) eMMC drive continues.
I’d like to ask some questions on this topic to see if anyone has successfully utilized the Zero3W eMMC>

  1. Has ANYONE been able to boot from eMMC using any image on a Zero3W? If so, how?

  2. Can anyone explain how to access the eMMC storage on the Zero3W? I look into the File Manager info available and can’t tell how the disc drives are divided and displayed on the File Manager. Can
    anyone describe what File Editor information pertains to which drive… SD card or eMMC.

  3. Is it possible to access the eMMC storage through the file manager to create, open or close folders or files so that user files can be used and accessed independent of the which SD card is installed?

  4. Using the “Getting Started” info from Radxa, it describes using a terminal program like Putty, a COM port, and USB breakout cable for Zero3W GPIO pins 6 (black GND), 8 (white UART TXD) & 10 (green UART RXD) and reboot while pressing the maskrom switch. But, as in my case Windows 11 does not have a real COM port structure so what does one choose for a path? Any ideas?

  5. Is there a working bootloader file for the Zero3W? If so, where can we download it from?

I would like to do more than just keep keying “lsblk”

Some help here from the forum would benefit us all but the real information needs to come from a reliable Radxa person who can issue some accurate documents or maybe some meaningful web pages without dead links. PLUS: A lot of the information found when googling is old and/or deprecated.

I plan on doing a YouTube review of this great little board but as Chris Barnatt of Explaining Computers describes working with the Zero3W firmware as painful. It will have to become much less painful to steal a reasonable market share of the “Zero” business.

I have been booting from emmc for a while now. the process for me was to write the boot loader and OS image to the emmc with rkdevelop tools. I used a Raspberry Pi Zero 2W to do that.

  1. The preferred and recommended way is to use rkdevelop tools as already mentioned in the previous post. There is a chance you can boot from eMMC by writing a modified bootloader to a specific location but if it fails you end up with the board without booting from eMMC and SD card, so it is a dangerous try, i pass. You can always recover using rktools.

  2. The steps are on 3.

  3. Here are the steps to access eMMC as a drive to create, delete, and move files and folders visible from File Manager. Note some of these instructions are not necessary if you have automount. Use at your own risk.

You will need fdisk and mkfs.ext4 tools installed. You can run the command in root mode to bypass user access restrictions.

  • Boot your board and find the eMMC device using CLI (command line interface). Type in CLI:

rock@rzero-3w:~$ dmesg|grep mmcbl
[ 10.251619] mmcblk0: mmc0:0001 AJTD4R 14.6 GiB
[ 10.251889] mmcblk0boot0: mmc0:0001 AJTD4R partition 1 4.00 MiB
[ 10.252165] mmcblk0boot1: mmc0:0001 AJTD4R partition 2 4.00 MiB
[ 10.252393] mmcblk0rpmb: mmc0:0001 AJTD4R partition 3 4.00 MiB, chardev (236:0)
[ 11.046631] mmcblk1: mmc1:aaaa SB32G 29.7 GiB
[ 11.063425] mmcblk1: p1 p2
[ 15.981279] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[ 17.708506] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)

As we can see, /dev/mmcblk0 is our eMMC (16GB), and /dev/mmcblk1 is our SD card (32GB)

  • Create a partition and format the eMMC. Warning: Content will be lost!
rock@rzero-3w:~$ sudo fdisk /dev/mmcblk0

Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9384bc2b.

Command (m for help): p
Disk /dev/mmcblk0: 14.56 GiB, 15634268160 bytes, 30535680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9384bc2b

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-30535679, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-30535679, default 30535679): 

Created a new partition 1 of type 'Linux' and of size 14.6 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
  • Format the eMMC

export sdcard=/dev/mmcblk0
mkfs.ext4 -F -b 4096 -E stride=2,stripe-width=1024 -L eMMC ${sdcard}p1

  • check if we have it now

sudo fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 14.56 GiB, 15634268160 bytes, 30535680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9384bc2b

Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 30535679 30533632 14.6G 83 Linux

  • Since i don’t have an automount, i have to mount eMMC manually to have access rights
mkdir eMMC
sudo mount /dev/mmcblk0p1 eMMC
  • double check again
ls -la /home/rock/eMMC
total 24
drwxr-xr-x 3 root root  4096 Mar  5 15:15 .
drwxrwxr-x 7 rock rock  4096 Mar  5 15:19 ..
drwx------ 2 root root 16384 Mar  5 15:15 lost+found
  • Testing your new eMMC access
rock@rzero-3w:~$ sudo chown rock:rock ./eMMC
rock@rzero-3w:~$ ls -la /home/rock/eMMC
total 24
drwxr-xr-x 3 rock rock  4096 Mar  5 15:15 .
drwxrwxr-x 7 rock rock  4096 Mar  5 15:19 ..
drwx------ 2 root root 16384 Mar  5 15:15 lost+found
rock@rzero-3w:~$ cd eMMC/
rock@rzero-3w:~/eMMC$ mkdir test
rock@rzero-3w:~/eMMC$ ls -la
 total 28
 drwxr-xr-x 4 rock rock  4096 Mar  5 16:41 .
 drwxrwxr-x 7 rock rock  4096 Mar  5 15:19 ..
 drwx------ 2 root root 16384 Mar  5 15:15 lost+found
 drwxrwxr-x 2 rock rock  4096 Mar  5 16:41 test
 rock@rzero-3w:~/eMMC$ echo "test" > test.txt
 rock@rzero-3w:~/eMMC$ cat test.txt 
 test

Everything you do in /home/rock/eMMC will be on eMMC (device)
If you are using Desktop I think by the time you format the eMMC it will be mounted automatically.
In this particular example, the next boot will not mount eMMC automatically, but the automount will.

  1. I think it’s a Windows thing, when you attach the USB debug dongle to the free USB port (if there is one) it will create a serial port. Maybe this reading can help: https://www.virtual-serial-port.org/articles/add-more-com-ports-on-computer/ , i pass

  2. Writing the wrong bootloader can give you trouble, get it from where you got the image, i think.

bhouseski, thanks…
I am working from a Windows11 machine. Which bootloader are you using? I haven’t been able to find one.

Thanks, Avaf… I have been slowly and carefully following your instructions for part 3. I am down to the mounting part. Doing a lsblk I can see all of the correct info based on your instructions, but the drive is apparently not mounting since I can’t get into any eMMC directory nor can I copy to any eMMC directory. Am I correct in assuming the eMMC is not mounted? I am continuing to explore your instructions and trying to reach an understanding of what I am doing before doing. I appreciate your help. I’ll keep you posted.

What’s the output of:

sudo fdisk -l

and

mount

If you created the directory, it must be there, even if not mounted you can cd to it. Where and how did you create it?

AVAF,
I think this is the info you were asking for…

GNU nano 5.4 foremmc.txt

radxa@radxa-zero3:~$ mkdir eMMC
mkdir: cannot create directory ‘eMMC’: File exists

radxa@radxa-zero3:~$ sudo mount /dev/mmcblk0p1

mount: /dev/mmcblk0p1: can’t find in /etc/fstab.
radxa@radxa-zero3:~$ ls -la /home/rock/eMMC
ls: cannot access ‘/home/rock/eMMC’: No such file or directory

radxa@radxa-zero3:~$ lsblk -la
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
ram0 1:0 0 4M 0 disk
loop0 7:0 0 0B 0 loop
loop1 7:1 0 0B 0 loop
loop2 7:2 0 0B 0 loop
loop3 7:3 0 0B 0 loop
loop4 7:4 0 0B 0 loop
loop5 7:5 0 0B 0 loop
loop6 7:6 0 0B 0 loop
loop7 7:7 0 0B 0 loop
sda 8:0 1 29.1G 0 disk
sda1 8:1 1 29.1G 0 part
sdb 8:16 1 0B 0 disk
sdc 8:32 1 0B 0 disk
mmcblk1 179:0 0 59.6G 0 disk
mmcblk1p1 179:1 0 16M 0 part /config
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
ram0 1:0 0 4M 0 disk
loop0 7:0 0 0B 0 loop
loop1 7:1 0 0B 0 loop
loop2 7:2 0 0B 0 loop
[ Read 126 lines ]
^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute ^C Location
^X Exit ^R Read File ^\ Replace ^U Paste ^J Justify ^_ Go To Line

Still trying to do a crash course on Linux CLI since I am a Windows and Raspberry Pi kinda guy.

many, many thanks

Making progress on the eMMC in the Zero3W. After watching much of a Linux CLI course on YouTube by Colt Steele, I better understand some of the commands that have been used to get access to the eMMC drive. The eMMC on my 8Gb Zero3W is now accessible although it is not bootable from eMMC. Part of the problem was my inexperience with Linux being a Window’s users since the inception of Windows. Thanks to Avaf and Shadow on this forum for their assistance. Also, a shout out to Colt Steele and his “50 Linux Commands Most Popular Linux commands & Terminal Commands” for the crash course… Colt is a great instructor and is easy to watch for a great learning experience. Great for newbies to get familiarized with Linux.
There still is a lot to learn before forming the “system” for my use. That includes learning how to boot from eMMC.

Just discovered “Midnight Commander”! Wow, I wish I knew about this app when I started the Linux adventure required for working with the Zero3W board. As a Linux newbie. the information input is overwhelming just to stumble about the Debian image on the Zero3W. Check out the app and install through:
“sudo apt-get install mc”

It makes disk maneuverings a lot easier and more understandable and has allowed me to move python files, graphic images, documents, and other tidbits to their own directories on the Zero3W eMMC. I even have an image of the Zero3W Debian build 6 on the eMMC in it’s own “firmware” directory. Now, I just have to figure out how to reliably boot from eMMC and everything I need is on-board without a SD card.