BBB - 5.10.41-bone42 kernel - eMMC not detected on recent Seeed Studio manfactured BBB boards

On a 2017 BBB with kernel 5.10.41-bone42, the eMMC appears, and works correctly with the 5.10.41 kernel:

S10004 3.56 GiB
date:09/2016
manfid:0x000070
size:7471104

~# uname -r ; dmesg | rg '(mmc1|481d800)'
5.10.41-bone42
[    2.453678] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[    4.032183] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[    4.104183] mmc1: SDHCI controller on 481d8000.mmc [481d8000.mmc] using External DMA
[    4.238003] mmc1: new high speed MMC card at address 0001
[    4.254522] mmcblk1: mmc1:0001 S10004 3.56 GiB 
[    4.263840] mmcblk1boot0: mmc1:0001 S10004 partition 1 4.00 MiB
[    4.272998] mmcblk1boot1: mmc1:0001 S10004 partition 2 4.00 MiB
[    4.286475] mmcblk1rpmb: mmc1:0001 S10004 partition 3 4.00 MiB, chardev (244:0)

On a newer BBB (Seeed studio manufactured model), the eMMC is not recognised (although the beaglebone boots from SD card without problems):

~# uname -r ; dmesg | rg '(mmc1|481d800)'
5.10.41-bone42
[    2.453196] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[    4.032521] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[    4.104530] mmc1: SDHCI controller on 481d8000.mmc [481d8000.mmc] using External DMA

With the 4.19.191-bone67 kernel, the eMMC works fine, and I can read out the eMMC info from the Seeed Studio board:

M62704 3.53 GiB
date:08/2020
manfid:0x000070
size:7405568

~# uname -r ; dmesg | rg '(mmc1|481d800)'  
4.19.191-bone67
[    1.540905] omap_hsmmc 481d8000.mmc: Linked as a consumer to regulator.1
[    1.615202] mmc1: new high speed MMC card at address 0001
[    1.621911] mmcblk1: mmc1:0001 M62704 3.53 GiB  
[    1.627234] mmcblk1boot0: mmc1:0001 M62704 partition 1 2.00 MiB
[    1.633847] mmcblk1boot1: mmc1:0001 M62704 partition 2 2.00 MiB
[    1.640484] mmcblk1rpmb: mmc1:0001 M62704 partition 3 512 KiB, chardev (245:0)

Cheers,

Tim.

It’s also worth pointing out that the Seeed beaglebone black eMMC user capacity is slightly smaller (3616 MiB vs. 3648 MiB) than the other BBB boards I’ve seen, so if anyone has hardcoded partition sizes in scripts etc. these may trip them up…

@TimSmall please share the output of:

sudo /opt/scripts/tools/version.sh

Regards,

With the SPI overlays enabled:

git:/opt/scripts/:[e8ae28ccc34a177e9435a0d24cdf8421e081c19a]
eeprom:[A335BNLTEIA02043SBB07828]
model:[TI_AM335x_BeagleBone_Black]
dogtag:[rcn-ee.net console Debian Image 2017-05-21]
bootloader:[microSD-(push-button)]:[/dev/mmcblk0]:[U-Boot SPL 2019.04-00002-gc9b3922522 (Aug 24 2020 - 16:42:18 -0500)]:[location: dd MBR]
bootloader:[microSD-(push-button)]:[/dev/mmcblk0]:[U-Boot 2019.04-00002-gc9b3922522]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-boneblack-uboot.dts]
UBOOT: Loaded Overlay:[BB-ADC-00A0]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0]
UBOOT: Loaded Overlay:[BB-I2C2-RTC-DS1338]
UBOOT: Loaded Overlay:[BB-SPIDEV0-00A0]
UBOOT: Loaded Overlay:[BB-SPIDEV1-00A0]
UBOOT: Loaded Overlay:[BB-UART1-00A0]
UBOOT: Loaded Overlay:[BB-UART4-00A0]
UBOOT: Loaded Overlay:[BB-UART4-RTSCTS-00A0]
UBOOT: Loaded Overlay:[BB-UART5-00A0]
UBOOT: Loaded Overlay:[dev-USB-PWR-CTL-00A1]
kernel:[5.10.41-bone42]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[uboot_overlay_addr0=/lib/firmware/B-I2C1-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr1=/lib/firmware/BB-SPIDEV0-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr2=/lib/firmware/BB-SPIDEV1-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr3=/lib/firmware/BB-UART1-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr4=/lib/firmware/BB-UART4-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr5=/lib/firmware/BB-UART5-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr6=/lib/firmware/BB-UART4-RTSCTS-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr7=/lib/firmware/BB-I2C2-RTC-DS1338.dtbo]
uboot_overlay_options:[disable_uboot_overlay_video=1]
uboot_overlay_options:[dtb_overlay=/lib/firmware/dev-USB-PWR-CTL-00A1.dtbo]
pkg check: to individually upgrade run: [sudo apt install --only-upgrade <pkg>]
pkg:[bb-cape-overlays]:[4.14.20210416.0-0~buster+20210416]
pkg:[bb-customizations]:[1.20210708.0-0~buster+20210708]
WARNING:pkg:[bb-usb-gadgets]:[NOT_INSTALLED]
WARNING:pkg:[bb-wl18xx-firmware]:[NOT_INSTALLED]
pkg:[kmod]:[26-1]
WARNING:pkg:[librobotcontrol]:[NOT_INSTALLED]
pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal i2c netdev gpio pwm bluetooth admin spi tisdk weston-launch xenomai cloud9ide]
cmdline:[console=ttyO0,115200n8 bone_capemgr.uboot_capemgr_enabled=1 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 omap_rtc.blacklist=yes module_blacklist=rtc-omap rtc-omap.blacklist=yes]
dmesg | grep remote
[    1.869114] remoteproc remoteproc0: wkup_m3 is available
[    4.052723] remoteproc remoteproc0: powering up wkup_m3
[    4.089046] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[    4.126084] remoteproc remoteproc0: remote processor wkup_m3 is now up
[   71.053508] remoteproc remoteproc1: 4a334000.pru is available
[   71.222222] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pru
[   71.053508] remoteproc remoteproc1: 4a334000.pru is available
[   71.222222] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pinctrl-single
[    1.993125] pinctrl-single 44e10800.pinmux: 142 pins, size 568
[    2.662143] pinctrl-single 44e10800.pinmux: Invalid number of rows: 0
[    2.662181] pinctrl-single 44e10800.pinmux: no pins entries for pinmux_bb_usb1_pwr
[    4.073286] pinctrl-single 44e10800.pinmux: pin PIN12 already requested by 481a0000.spi; cannot claim for 481d8000.mmc
[    4.110842] pinctrl-single 44e10800.pinmux: pin-12 (481d8000.mmc) status -22
[    4.147139] pinctrl-single 44e10800.pinmux: could not request pin 12 (PIN12) from group pinmux_emmc_pins  on device pinctrl-single
dmesg | grep gpio-of-helper
lsusb
Bus 001 Device 002: ID 9710:7830 MosChip Semiconductor MCS7830 10/100 Mbps Ethernet adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
END

Also:

~# dmesg | grep -i 481d8000
[    2.487605] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[    4.073286] pinctrl-single 44e10800.pinmux: pin PIN12 already requested by 481a0000.spi; cannot claim for 481d8000.mmc
[    4.110842] pinctrl-single 44e10800.pinmux: pin-12 (481d8000.mmc) status -22
[    4.169466] sdhci-omap 481d8000.mmc: Error applying setting, reverse things back
[    4.184596] sdhci-omap: probe of 481d8000.mmc failed with error -22

With the SPI overlays disabled:

git:/opt/scripts/:[e8ae28ccc34a177e9435a0d24cdf8421e081c19a]
eeprom:[A335BNLTEIA02043SBB07828]
model:[TI_AM335x_BeagleBone_Black]
dogtag:[rcn-ee.net console Debian Image 2017-05-21]
bootloader:[microSD-(push-button)]:[/dev/mmcblk0]:[U-Boot SPL 2019.04-00002-gc9b3922522 (Aug 24 2020 - 16:42:18 -0500)]:[location: dd MBR]
bootloader:[microSD-(push-button)]:[/dev/mmcblk0]:[U-Boot 2019.04-00002-gc9b3922522]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-boneblack-uboot.dts]
UBOOT: Loaded Overlay:[BB-ADC-00A0]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0]
UBOOT: Loaded Overlay:[BB-I2C2-RTC-DS1338]
UBOOT: Loaded Overlay:[BB-UART1-00A0]
UBOOT: Loaded Overlay:[BB-UART4-00A0]
UBOOT: Loaded Overlay:[BB-UART4-RTSCTS-00A0]
UBOOT: Loaded Overlay:[BB-UART5-00A0]
UBOOT: Loaded Overlay:[dev-USB-PWR-CTL-00A1]
kernel:[5.10.41-bone42]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[uboot_overlay_addr0=/lib/firmware/B-I2C1-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr3=/lib/firmware/BB-UART1-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr4=/lib/firmware/BB-UART4-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr5=/lib/firmware/BB-UART5-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr6=/lib/firmware/BB-UART4-RTSCTS-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr7=/lib/firmware/BB-I2C2-RTC-DS1338.dtbo]
uboot_overlay_options:[disable_uboot_overlay_video=1]
uboot_overlay_options:[dtb_overlay=/lib/firmware/dev-USB-PWR-CTL-00A1.dtbo]
pkg check: to individually upgrade run: [sudo apt install --only-upgrade <pkg>]
pkg:[bb-cape-overlays]:[4.14.20210416.0-0~buster+20210416]
pkg:[bb-customizations]:[1.20210708.0-0~buster+20210708]
WARNING:pkg:[bb-usb-gadgets]:[NOT_INSTALLED]
WARNING:pkg:[bb-wl18xx-firmware]:[NOT_INSTALLED]
pkg:[kmod]:[26-1]
WARNING:pkg:[librobotcontrol]:[NOT_INSTALLED]

~# dmesg | grep -i 481d8000
[ 2.453289] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[ 4.036706] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[ 4.108819] mmc1: SDHCI controller on 481d8000.mmc [481d8000.mmc] using External DMA

In both cases only the SD card is detected:

~# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 14.9G  0 disk 
|-mmcblk0p1 179:1    0   96M  0 part 
`-mmcblk0p2 179:2    0  3.5G  0 part /

Yeap, that’s why you lost eMMC…

I’m working on this isssue…

uboot_overlay_options:[uboot_overlay_addr0=/lib/firmware/B-I2C1-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr3=/lib/firmware/BB-UART1-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr4=/lib/firmware/BB-UART4-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr5=/lib/firmware/BB-UART5-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr6=/lib/firmware/BB-UART4-RTSCTS-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr7=/lib/firmware/BB-I2C2-RTC-DS1338.dtbo]

Drop the ‘/lib/firmware/’ part, that way it can pull in the “kernel” specific overlays…

Regards,

Hi Robert,

Thanks for the response, but the eMMC is not detected even when the SPI-enable overlays aren’t loaded - (see the “With the SPI overlays disabled:” section further down in the previous post). If the same SD card is moved to an older BBB, then the eMMC is detected - so it appears to be a combination of the newer Kingston eMMC (which is on the Seeed BBB), and the 5.10.41-bone42 kernel.

Cheers,

Tim.

If there’s nothing immediately obvious on this, then please let me know and I’ll try and work out when the regression occurred (since 4.19.1xx kernels do detect the eMMC on Seeed BBB, and the 5.10.41 kernel does detect the eMMC on older BBB).

This is the issue, i’m working on it… Essentially due to a change in the pinctrl struct, overlays built externally to the kernel are not compatibly with device tree’s built inside the kernel… The change occurred in either 5.8/5.9…

Regards,

OK, thanks.

The problem I had been focussing on was the failure to detect the eMMC on the Seeed BBB. I think this was due to an older MLO (or possibly some other component of the boot process) having been written to the eMMC on the Seeed studio beaglebone, and getting read during the SD card boot sequence.

After booting into the 4.19.x kernel (from sd card), and erasing the eMMC on the Seeed studio beaglebone, and then switching back to the 5.10.41 kernel (still booted from the sd card) was then able to detect the eMMC.

(n.b. this was with the SPI and other overlays disabled).