Is the BBB boot button necessary?

I built the latest Angstrom 3.8.10 kernel and put the distribution on an SD card. When I put it into a brand new BBB, it boots from this card even if I don’t press the boot button. If I remove the card and reapply power it boots from the eMMC. This is the behavior I would expect and prefer, quite frankly. Is the SRM documentation wrong about the use of the boot button or am I missing something?

SRM is correct. This is not normal unless you have changed uneven.txt file,

Gerald

Thanks for the quick response. I ordered the commercial version of the board from special computing - perhaps that’s why my behavior is different? I haven’t edited any files - this is the out-of-box behavior. Where is the uneven.txt file? I don’t see it in the eMMC boot partition or in /boot of the rootfs partition, and can’t find any reference to it in the SRM.

Oh? OK then you need to go back to Bill on this. I have no idea what he is doing,

Gerald

Thanks Gerald! FWIW, I really prefer this behavior.

Could you possibly find and post this “uneven.txt” file? I’d like to know how it was done so I can make my boards do it too - boot SD if there is one, else boot eMMC.

Jason,

Would you like to jump in on this one?

Gerald

The boot behavior is:

1) If the button is not pressed, eMMC is tried ahead of uSD, where the
u-boot "MLO" program is found. If the BOOT button is pressed, the uSD
card would be tried. The hardware documentation in this regard is
correct.
2) I believe, and I need to confirm here though I'm pretty certain,
that MLO loaded from eMMC will always load the u-boot u-boot.img from
the same location, ie. eMMC.
3) u-boot.img has a default boot script, where the uSD card is
scanned! This is why you are seeing "boot" from the uSD card, even
though you haven't pressed the BOOT button. What is scanned for is
the file uEnv.txt (case-insensitive, I believe) on the first FAT
partition. You can use this to override the environment variables used
by u-boot and continue to boot off of eMMC (by setting mmcdev
properly), or use it to load Linux off of the uSD. The uEnv.txt file
you have seems to be encouraging u-boot to load the Linux kernel from
your uSD and mount your uSD card as the root file system device.

k, guys that know better, your turn to jump in and help refine this answer.

Well, I understood that.

Gerald

Thanks for that explanation, Jason! My eMMC uEnv.txt file only contains this line:

optargs=quiet

I’ll check to see if my u-boot.img is different from the one contained in the eMMC flasher.

Hi Jason I think it is like you mentioned.

there is a second issue related to this, if you try to put an SD into the slot to be used as “additional storage” u-boot will find the card inserted and tries to boot from it… so it fails and the board doesn’t boot!

Have you guys any idea if this can be avoided changing the default boot command of using a udevcmd?

bye

Ah… “uneven.txt” is actually “uEnv.txt”… must be Gerald’s spellchecker having fun with us.

Isn’t mine! It belongs to Google!

Gerald

Ah, just saw this thread, I’m seeing the same thing… Inserted a uSD card from an old Blackberry I had, and it refuses to boot indicating that it can’t read uEnv.txt from that file.

Considering the BBBlack also doesn’t seem to autoscan or autodetect the uSD when I insert it after it’s fully booted from the eMMC, this renders the uSD slot completely useless. Is there a way to change the default boot script?

Nevermind, sounds like I need to add a uEnv.txt file to this SD card and make it set the mmcdev to 1. Not really my preferred way to go… if I want the bootloader to have any interaction with the uSD card I’d prefer to hold S2! Makes it confusing to get a brand new uSD card going particularly since I don’t have any SD-to-uSD adapters hanging around here…

Noted. Hopefully the SW people are listening.

Gerald

Ok I ended up using my Android phone as a uSD card reader with the USB link to a Windows PC…

Created a uEnv.txt with:

mmcdev=1
bootpart=1:2
mmcroot=/dev/mmcblk1p2 ro

It seemed to have an issue with CR+LF’s in Windows so I had to dos2unix the file before it would boot properly. But it’s booting now, and the computer attached the BeagleBone (Macbook Pro) now sees the uSD card instead of the eMMC’s BEAGLEBONE volume.

I have been playing with this last night. I got 2 BBB from digi-key last night.

I agree with SKiAt that any card in the uSD slot prevents it from booting kernel from eMMC.

To my way of thinking uboot should check for uEnv.txt and if found assume that uSD should be used for kernel and rootfs.

HOWEVER, if uEnv.txt is not found on uSD, then it should boot kernel and rootfs from eMMC and assume uSD is just extra storage.

However, I don’t know if this is going to help currently.
W/o a blank uSD card at boot the system boots with eMMC on /dev/mmcblk0 even though physically it is on MMC1.

If you plug a uSD card in while it is running, no new /dev/mmcblk* devices show up.

Is the kernel only mapping one or the other MMCx interface?
How would the eMMC update uSD image work then?

I am trying to download the eMMC update image but am currently looking at a 5 hour download time. I guess everyone got their BBB’s last night.

Bill

Still confused. I looked at Robert’s eMMC update for Ubuntu.[1]
It definitly expects eMMC to be on /dev/mmcblk1

https://github.com/RobertCNelson/tools/blob/master/scripts/beaglebone-black-sync-nand.sh

It's a kernel feature: :wink:

with no microSD card:
eMMC is /dev/mmcblk0

with microSD card:
microSD : /dev/mmcblk0
eMMC: /dev/mmcblk1

Regards,