In the webpage Using Device Tree Overlays, example on BeagleBone Cape add-on boards - BeagleBoard
it says:
This is exactly what Device Tree Overlays are about. For example, in /lib/firmware
, the Debian image shipped by BeagleBoard.org contains compiled Device Tree Overlays (DTBO) for the extension boards (also known as capes in the BeagleBoard world) they support, such as:
BBORG_COMMS-00A2.dtbo BBORG_DISPLAY18-00A2.dtbo BBORG_DISPLAY70-00A2.dtbo BBORG_GAMEPUP-00A2.dtbo BBORG_MOTOR-00A2.dtbo BBORG_PROTO-00A2.dtbo BBORG_RELAY-00A2.dtbo BBORG_TECHLAB-00A2.dtbo
Then, at boot time, all you have to do is load the main DTB for your board, and then override it using the DTBOs corresponding to the capes which are currently mounted. Kernel contributors have also worked on solutions to load the DTBOs dynamically in the live system, but this solution is not mature yet. Therefore, the bootloader based solution at boot time remains so far the best one.
When I search /lib/firmware on my Beaglebone Black I get no file that starts with BBORG upper or lower case)
I had screwed up the fstab and had to reload the OS. I used the
AM335x 11.7 2023-09-02 4GB eMMC IoT Flasher
And it does not have the CAPE files in the /lib/firmware
I have the BeagleBone Comms Cape A2
And the BBORG_COMMS-00A2.dtbo file was not in the directory.
I reread the text and it said it was in the image sent with the board. They could not have included it in the factory load, but not in the download would they? That is exactly what they did. Fortunately, I had another BeagleBone Black that had not been reflashed. And sure enough it had the file. So I copied the file to the /lib/firmware directory and opened up the /boot/uEnv.txt file and changed it to:
debian@acu:/boot$ cat uEnv.txt
#Docs: Beagleboard:U-boot partitioning layout 2.0 - eLinux.org
uname_r=5.10.168-ti-r72
#uuid=
#dtb=
###U-Boot Overlays###
###Documentation: Beagleboard:BeagleBoneBlack Debian - eLinux.org
###Master Enable
enable_uboot_overlays=1
###Overide capes with eeprom
#uboot_overlay_addr0=.dtbo
#uboot_overlay_addr1=.dtbo
#uboot_overlay_addr2=.dtbo
#uboot_overlay_addr3=.dtbo
###Additional custom capes
uboot_overlay_addr4=/lib/firmware/BBORG_COMMS-00A2.dtbo
#uboot_overlay_addr5=.dtbo
#uboot_overlay_addr6=.dtbo
#uboot_overlay_addr7=.dtbo
###Custom Cape
#dtb_overlay=.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
##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=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet
#In the event of edid real failures, uncomment this next line:
#cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet video=HDMI-A-1:1024x768@60e
#Use an overlayfs on top of a read-only root filesystem:
#cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet overlayroot=tmpfs
##enable Generic eMMC Flasher:
#cmdline=init=/usr/sbin/init-beagle-flasher
I think when it installs correctly you should see it in the ifconfig command
However when I use ifconfig -a both can0: and can1: interfaces show up.
What am I doing wrong? I How do I know if it installed correctly?