Board: BeagleBone Black Old system: Debian 10 (worked) New system: Debian 13 (booting from microSD), kernel 6.15.11-bone27 Goal: Boot with eMMC visible (mmcblk1) and UARTs enabled.
Problem
When I uncomment this in /boot/uEnv.txt:
enable_uboot_overlays=1
the serial debug shows:
mmc1: Failed to initialize a non-removable card
and eMMC (/dev/mmcblk1) disappears. If I comment it out, eMMC works—but my UARTs aren’t initialized at boot (I need UART1/2/4).
I tried adding the eMMC overlay explicitly (with and without disabling the virtual eMMC overlay), but it didn’t help:
uboot_overlay_addr3=/lib/firmware/BB-BONE-eMMC1-01-00A0.dtbo
#disable_uboot_overlay_emmc=1 # tried both commented and uncommented
What I expect / ask
- Why does enabling U-Boot overlays make the eMMC fail to initialize on Debian 13?
- What’s the correct way to have eMMC + UARTs working together with U-Boot overlays?
Current /boot/uEnv.txt (Debian 13)
#Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0
uname_r=6.15.11-bone27
#uuid=
#dtb=
###U-Boot Overlays###
###Documentation: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
###Master Enable
enable_uboot_overlays=1
###
###Overide capes with eeprom
uboot_overlay_addr0=/lib/firmware/BB-UART2-00A0.dtbo
uboot_overlay_addr1=/lib/firmware/BB-UART4-00A0.dtbo
uboot_overlay_addr2=/lib/firmware/BB-UART1-00A0.dtbo
uboot_overlay_addr3=/lib/firmware/BB-BONE-eMMC1-01-00A0.dtbo
###
###Additional custom capes
#uboot_overlay_addr4=<file4>.dtbo
#uboot_overlay_addr5=<file5>.dtbo
#uboot_overlay_addr6=<file6>.dtbo
#uboot_overlay_addr7=<file7>.dtbo
###
###Custom Cape
#dtb_overlay=<file8>.dtbo
###
###Disable auto loading of virtual capes (emmc/video/wireless/adc)
#disable_uboot_overlay_emmc=1
disable_uboot_overlay_video=1
disable_uboot_overlay_audio=1
disable_uboot_overlay_wireless=1
disable_uboot_overlay_adc=1
###
###PRUSS OPTIONS
###pru_rproc (4.14.x-ti kernel)
#uboot_overlay_pru=AM335X-PRU-RPROC-4-14-TI-00A0.dtbo
###pru_rproc (4.19.x-ti kernel)
uboot_overlay_pru=AM335X-PRU-RPROC-4-19-TI-00A0.dtbo
###pru_uio (4.14.x-ti, 4.19.x-ti & mainline/bone kernel)
#uboot_overlay_pru=AM335X-PRU-UIO-00A0.dtbo
###
###Cape Universal Enable
enable_uboot_cape_universal=1
###
###Debug: disable uboot autoload of Cape
#disable_uboot_overlay_addr0=1
#disable_uboot_overlay_addr1=1
#disable_uboot_overlay_addr2=1
#disable_uboot_overlay_addr3=1
###
###U-Boot fdt tweaks... (60000 = 384KB)
#uboot_fdt_buffer=0x60000
###U-Boot Overlays###
console=ttyS0,115200n8
cmdline=fsck.repair=yes earlycon coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 systemd.remount-fs=no rw
#In the event of edid real failures, uncomment this next line:
#cmdline=fsck.repair=yes earlycon coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 video=HDMI-A-1:1024x768@60e
#Use an overlayfs on top of a read-only root filesystem:
#cmdline=fsck.repair=yes earlycon coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 overlayroot=tmpfs
##enable Generic eMMC Flasher:
#cmdline=init=/usr/sbin/init-beagle-flasher
Old (working) /boot/uEnv.txt from Debian 10
#Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0
uname_r=6.15.11-bone27
#uuid=
#dtb=
###U-Boot Overlays###
###Documentation: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
###Master Enable
enable_uboot_overlays=1
###
###Overide capes with eeprom
uboot_overlay_addr0=/lib/firmware/BB-UART2-00A0.dtbo
uboot_overlay_addr1=/lib/firmware/BB-UART4-00A0.dtbo
uboot_overlay_addr2=/lib/firmware/BB-UART1-00A0.dtbo
###
#uboot_overlay_addr0=<file0>.dtbo
#uboot_overlay_addr1=<file1>.dtbo
#uboot_overlay_addr2=<file2>.dtbo
#uboot_overlay_addr3=<file3>.dtbo
###
###Additional custom capes
#uboot_overlay_addr4=<file4>.dtbo
#uboot_overlay_addr5=<file5>.dtbo
#uboot_overlay_addr6=<file6>.dtbo
#uboot_overlay_addr7=<file7>.dtbo
###
###Custom Cape
#dtb_overlay=<file8>.dtbo
###
###Disable auto loading of virtual capes (emmc/video/wireless/adc)
#disable_uboot_overlay_emmc=1
disable_uboot_overlay_video=1
disable_uboot_overlay_audio=1
disable_uboot_overlay_wireless=1
disable_uboot_overlay_adc=1
###PRUSS OPTIONS
###pru_rproc (4.14.x-ti kernel)
#uboot_overlay_pru=AM335X-PRU-RPROC-4-14-TI-00A0.dtbo
###pru_rproc (4.19.x-ti kernel)
uboot_overlay_pru=AM335X-PRU-RPROC-4-19-TI-00A0.dtbo
###pru_uio (4.14.x-ti, 4.19.x-ti & mainline/bone kernel)
#uboot_overlay_pru=AM335X-PRU-UIO-00A0.dtbo
###
###Cape Universal Enable
enable_uboot_cape_universal=1
###
###Debug: disable uboot autoload of Cape
#disable_uboot_overlay_addr0=1
#disable_uboot_overlay_addr1=1
#disable_uboot_overlay_addr2=1
#disable_uboot_overlay_addr3=1
###
###U-Boot fdt tweaks... (60000 = 384KB)
#uboot_fdt_buffer=0x60000
###U-Boot Overlays###
console=ttyS0,115200n8
cmdline=fsck.repair=yes earlycon coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 systemd.remount-fs=no rw
#In the event of edid real failures, uncomment this next line:
#cmdline=fsck.repair=yes earlycon coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 video=HDMI-A-1:1024x768@60e
#Use an overlayfs on top of a read-only root filesystem:
#cmdline=fsck.repair=yes earlycon coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 overlayroot=tmpfs
##enable Generic eMMC Flasher:
#cmdline=init=/usr/sbin/init-beagle-flasher
Relevant boot log
debug: [enable_uboot_overlays=1] ...
uboot_overlays: Switching too: dtb=am335x-boneblack-uboot.dtb ...
uboot_overlays: loading /lib/firmware/BB-UART2-00A0.dtbo ...
uboot_overlays: loading /lib/firmware/BB-UART4-00A0.dtbo ...
uboot_overlays: loading /lib/firmware/BB-UART1-00A0.dtbo ...
uboot_overlays: loading /lib/firmware/BB-BONE-eMMC1-01-00A0.dtbo ...
uboot_overlays: loading /lib/firmware/BB-BONE-eMMC1-01-00A0.dtbo ...
...
mmc1: Failed to initialize a non-removable card
Things I tried (all permutations)
- Comment/uncomment:
enable_uboot_cape_universal=1uboot_overlay_addr3=/lib/firmware/BB-BONE-eMMC1-01-00A0.dtbodisable_uboot_overlay_emmc=1uboot_overlay_pru=AM335X-PRU-RPROC-4-19-TI-00A0.dtbo
Still can’t get eMMC + UARTs to work together with enable_uboot_overlays=1.
Any known changes in Debian 13/U-Boot overlay behavior that would cause eMMC to fail? What’s the recommended overlay setup so eMMC initializes and UARTs are enabled?