Device Tree Overlay for BeagleBone-AI

Could i use overlay (Device Tree) in BeagleBone AI?
Could i know how to use overlay (DT) in BeagleBone AI?

First, I dont know to modify uEnv.txt ?
I don’t know what to edit in uEnv.txt.

Can I know which part I need to fix?

Either start with this image (unless you need xorg)

Here is the list of overlays:


What is the difference between kenel overlay (device tree) and u-boot overlay?
Are they the same thing?

I have succeeded with u-boot overlay.
How do I get the kernel overlay (dtb_overlay) to load successfully?

I add my uEnv.txt for loading kernel overlay(dtb_overlay).

2020년 9월 14일 (월) 오후 6:26, 어지수 <>님이 작성:

uEnv.txt (732 Bytes)

I'm sorry, v4.14.x-ti in your /boot/uEnv.txt is NOT compatible with
overlays for BBAI, this is brand new for the BBAI..

YOU much start with:

(v4.19.x-ti based kernel..)





Hi! Thanks for this update! I’ve been playing around in the device trees for a little while in the AI, basing myself on the am5729-beagleboneai-roboticscape.dts and the v4.14 kernel iot image. I have a hardware application that requires me to use two ENC28J60 ethernet adapters and the SPI 2 pins (I need two chip selects and due to potential pin conflicts I need to use SPI2). After struggling with the v4.14 kernel/image, I decided to try upgrading to the 4.19 kernel/image provided in this discussion. I was wondering if this was possible by modifying some of the overlay files provided in:

Inspecting BeagleBoard-DeviceTrees/v4.19.x-ti-overlays/src/arm/bbai-bone-buses.dtsi, I could only find the bone_spi_0 and bone_spi_1 groups. Does anyone have any pointers on enabling spi2?



Here is the mapping:


Thanks for the reply Robert! Just a quick update, today I was able to configure some spi2 pins to interface with an ENC28J60-H development board (SPI to Ethernet) with the following dts file:


#include <dt-bindings/interrupt-controller/irq.h>
* Helper to show loaded overlays under: /proc/device-tree/chosen/overlays/
&{/chosen} {
overlays {

* Update the default pinmux of the pins.
* See these files for the phandles (&P9_* & &P8_)
* BeagleBoard-DeviceTrees/v4.19.x-ti-overlays/src/arm/am572x-bone-common-univ.dtsi
&ocp {
P9_17_pinmux { pinctrl-0 = <&P9_17_spi_cs_pin>; }; /* CS0 /
//P9_23_pinmux { pinctrl-0 = <&P9_23_spi_cs_pin>; }; /
CS1 /
P9_21_pinmux { pinctrl-0 = <&P9_21_spi_pin>; }; /
P9_18_pinmux { pinctrl-0 = <&P9_18_spi_pin>; }; /
P9_22_pinmux { pinctrl-0 = <&P9_22_spi_sclk_pin>; }; /
P8_07_pinmux {status = “disabled”;}; __/
gpios reserved for RESET and INTERRUPT pins */__
P8_09_pinmux {status = “disabled”;};
P8_08_pinmux {status = “disabled”;};
P8_10_pinmux {status = “disabled”;};

* See these files for the phandles (&bone_) and other bone bus nodes
* BeagleBoard-DeviceTrees/v4.19.x-ti-overlays/src/arm/bbb-bone-buses.dtsi
status = “okay”;
#address-cells = <1>;
#size-cells = <0>;

channel@0 {
reg = <0>;
compatible = “microchip,enc28j60”;
pinctrl-names = “default”;
pinctrl-0 = <&P8_09_default_pin>, <&P8_07_gpio_pin> ;
//reg = <0x0>; /* Use chip select 0 */
interrupt-parent = <&gpio6>; /* Interrupt on GPIO6[18] */
interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
symlink = “bone/spi/2.0”;
spi-max-frequency = <16000000>;

I still need to make use of the CS1 pin mode on P9_23. However, I see in BeagleBoard-DeviceTrees/v4.19.x-ti-overlays/src/arm/am572x-bone-common-univ.dtsi,
there is no entry for P9_23_spi_cs_pin. I tried adding the following lines to the bone-common-univ.dtsi:

P9_23_spi_cs_pin: pinmux_P9_23_spi_cs_pin { pinctrl-single,pins = <
P9_23( PIN_OUTPUT_PULLUP | INPUT_EN | MUX_MODE3)>; }; /* spi2_cs1.spi2_cs1, */

But even after a make clean, make all, the resulting dtbo will brick my device…

I was wondering if you had any pointers/ideas as to how I could make this work? Eventually, I would like to run both channels with different interrupt,chip select and rest pins as defined above.

Thanks again,


If anybody else stuck with a similar issue please follow the proper installation steps provided on the official site for compatibility Layer project →

Some updates might not be available directly and you have to install them with these additional steps,

  1. git clone
  2. cd BeagleBoard-DeviceTrees
  3. sudo make install

Thanks for the great project, Deepak! Made my life a lot easier.

One small issue: The compatibility layer works beautifully but I consistently (tried three times) loose the “ad hoc” WLAN network of the BBBAI upon rebooting after the bootloader update. Funny thing is I can still log in the BBAI through the usbc port and connect to a wifi network. Any idea what might be wrong or how I could restore it? I have tried through connman, with no success.

Hardware: BBAI REV A1
Image: am57xx-eMMC-debian-10.3-iot-tidl-armhf-2020-04-06-6gb.img
Kernel: Linux beaglebone 4.19.94-ti-r55 #1buster SMP PREEMPT Tue Oct 27 21:48:45 UTC 2020 armv7l GNU/Linux

sudo /opt/scripts/tools/

dogtag:[ Debian Buster IoT TIDL Image 2020-04-06]
UBOOT: Booted Device-Tree:[am5729-beagleboneai.dts]
UBOOT: Loaded Overlay:[BONE-I2C3]
UBOOT: Loaded Overlay:[BONE-SPI1_0]
UBOOT: Loaded Overlay:[BONE-SPI1_1]
UBOOT: Loaded Overlay:[BONE-UART5]
/boot/uEnv.txt Settings:
pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal bluetooth netdev i2c gpio pwm eqep remoteproc admin spi iio docker tisdk weston-launch xenomai cloud9ide]
cmdline:[console=ttyS0,115200n8 root=/dev/mmcblk1p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 rng_core.default_quality=100 quiet]

What should be done after step 3.

I am trying to implement the 4d CAPE overlay. Does anyone have a shell uEnv.txt file a beginner can work off of? On the Black, the necessary cape was auto loaded. That is not what I am getting with the compatibility layer installed and these github cloned.


Hey m.xilo…,

I had the same issue as well, turns out it was a bug in the image. It has been addressed here:

Run an apt update, apt upgrade, reboot and it should come back! Thanks to Robert C Nelson for the quick response!



Thanks a lot, Doug! And thank you Robert Nelson for addressing the issue.
Have a great weekend.

All the best,

Hey, the link apparently doesnt seem to work, can u send me the image please, I urgently needed it for my project.

Hi @Shahbaaz_Ali what link do you need, this is a 2 year old thread?

Better yet, what type of image do you need?


I recently got my Beaglebone AI and it came with kernel 4.14 and I needed an image with kernel 4.19. I checked in Beaglebone wiki but the link doesnt seem to work. Also the link that you mentioned in one of the earlier threads also does not open. So wondering if you got the image stored in your pc and if u could give it to me