BeagleBone Black Industrial – HDMI not working with Yocto or Debian stock image

We have a BeagleBone Black Industrial board purchased from DigiKey.

I am trying to build and run a Yocto Linux image for this board. The Yocto image builds successfully and boots correctly, but the HDMI display is not working.

To determine whether the problem was specific to my Yocto build, I also tested the board using the stock image downloaded from BeagleBoard.org:

BeagleBone Black Debian 13.7 2026-09-20 Xfce (kernel v6.18.x)

However, HDMI does not work with this image either. The system boots successfully, but I do not get any output on the HDMI display.

My questions are:

  1. Does the BeagleBone Black Industrial require any specific kernel configuration or patch to enable HDMI?
  2. Are any device-tree/DTS changes required for HDMI support on the Industrial version?
  3. Is there anything specific I should check to confirm whether the HDMI hardware is being detected and initialized correctly?
  4. Are there any known differences between the standard BeagleBone Black and BeagleBone Black Industrial related to HDMI support?

Any suggestions on what to check next would be greatly appreciated.

Thanks,

sam

On the non-industrial one, you usually have to intentionally disable HDMI. Make sure in /boot/uEnv.txt that the line like #disable_uboot_overlay_video=1 really is commented out (starts with a #).

@rsr_sam let’s check a couple things.. report sudo beagle-version to make sure the board is loading correctly. But most likely your on a RevD board with IT66122 which still has a lot of fun issues thinking DVI screens are HDMI… BBB RevD (and Industrial) IT66122 issues - #93 by RobertCNelson 7.3.x is better for some users, once that becomes an lts it’ll replace our 6.18.x default..

Regards,

Thank you for your reply. I checked the board and confirmed that it has an IT66122 HDMI chip.

rsrsam@BeagleBone:~$ sudo beagle-version
eeprom:[A335BNLTEID02630SBI00220]
model:[TI_AM335x_BeagleBone_Black]
dogtag:[BeagleBoard.org Debian Trixie Xfce Image 2026-09-20]
bootloader:[microSD-(push-button)]:[/dev/mmcblk0]:[U-Boot SPL 2022.04-g5509547b (Jan 22 2026 - 19:56:08 +0000)]:[location: dd MBR]
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot SPL 2022.04-gc6f4cf7d (Apr 24 2025 - 03:22:59 +0000)]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-boneblack-uboot.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-UIO-00A0.kernel]
UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0.kernel]
UBOOT: Loaded Overlay:[BB-HDMI-TDA998x-00A0.kernel]
kernel:[6.18.52-bone54]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[uboot_overlay_pru=AM335X-PRU-UIO-00A0.dtbo]
pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]
pkg:[bb-customizations]:[1.20250808.0-0~trixie+20250808]
pkg:[bb-usb-gadgets]:[1.20260724.0-0~trixie+20260724]
pkg:[bb-wl18xx-firmware]:[1.20230703.0-0~trixie+20240703]
pkg:[kmod]:[34.2-2bbbio1~trixie+20250522]
groups:[rsrsam : rsrsam adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input render netdev i2c gpio bluetooth admin tisdk weston-launch]
cmdline:[console=ttyS0,115200n8 root=/dev/mmcblk0p3 ro rootfstype=ext4 rootwait fsck.repair=yes earlycon coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100]
dmesg | grep remote
[ 2.620177] remoteproc remoteproc0: wkup_m3 is available
[ 6.437686] remoteproc remoteproc0: powering up wkup_m3
[ 6.470879] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[ 6.519556] remoteproc remoteproc0: remote processor wkup_m3 is now up
[ 18.713973] systemd[1]: Reached target remote-fs.target - Remote File Systems.
dmesg | grep pru
dmesg | grep pinctrl-single
[ 2.666871] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
dmesg | grep wlcore
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 222a:0001 ILI Technology Corp. Multi-Touch Screen
END
rsrsam@BeagleBone:~$ uname -r
6.18.52-bone54
rsrsam@BeagleBone:~$ ls -la /sys/class/drm/
total 0
drwxr-xr-x 2 root root 0 Sep 20 15:42 .
drwxr-xr-x 57 root root 0 Jan 1 2000 ..
-r–r–r-- 1 root root 4096 Sep 20 15:42 version
rsrsam@BeagleBone:~$ lsmod
Module Size Used by
snd_seq_dummy 12288 0
snd_hrtimer 12288 1
snd_seq 65536 7 snd_seq_dummy
snd_seq_device 12288 1 snd_seq
snd_soc_simple_card 20480 0
snd_soc_simple_card_utils 28672 1 snd_soc_simple_card
uio_pruss 12288 0
uio 24576 1 uio_pruss
snd_soc_davinci_mcasp 36864 0
snd_soc_ti_udma 12288 1 snd_soc_davinci_mcasp
snd_soc_ti_edma 12288 1 snd_soc_davinci_mcasp
snd_soc_ti_sdma 12288 1 snd_soc_davinci_mcasp
snd_soc_core 245760 6 snd_soc_davinci_mcasp,snd_soc_simple_card_utils,snd_soc_ti_sdma,snd_soc_ti_edma,snd_soc_ti_udma,snd_soc_simple_card
snd_compress 24576 1 snd_soc_core
snd_pcm_dmaengine 16384 1 snd_soc_core
snd_pcm 118784 5 snd_compress,snd_soc_davinci_mcasp,snd_pcm_dmaengine,snd_soc_simple_card_utils,snd_soc_core
snd_timer 36864 3 snd_seq,snd_hrtimer,snd_pcm
snd 86016 8 snd_compress,snd_seq,snd_timer,snd_seq_device,snd_soc_core,snd_pcm
soundcore 16384 1 snd
ti_am335x_adc 12288 0
kfifo_buf 12288 1 ti_am335x_adc
industrialio 90112 2 ti_am335x_adc,kfifo_buf
at24 28672 0
cfg80211 851968 0
rfkill 28672 3 cfg80211
evdev 20480 1
nfnetlink 16384 1
zram 36864 1
ip_tables 20480 0
x_tables 36864 1 ip_tables
rsrsam@BeagleBone:~$ cat /proc/device-tree/model
TI AM335x BeagleBone Black
rsrsam@BeagleBone:~$ cat /proc/cmdline
console=ttyS0,115200n8 root=/dev/mmcblk0p3 ro rootfstype=ext4 rootwait fsck.repair=yes earlycon coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100
rsrsam@BeagleBone:~$
rsrsam@BeagleBone:~$ dmesg | grep -Ei “drm|display|dss|hdmi”
[ 19.633821] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm…
[ 22.509939] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 22.552601] systemd[1]: Finished modprobe@drm.service - Load Kernel Module drm.
rsrsam@BeagleBone:~$ dmesg | grep -Ei
‘tilcdc|tda998|lcdc|4830e000|drm|defer|probe|failed|error’
[ 0.105475] /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0
[ 0.106769] /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0: Fixed dependency cycle(s) with /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70
[ 2.606560] /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0
[ 2.628331] /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0
[ 2.650544] /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0
[ 2.655633] /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0
[ 2.702792] /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0: Fixed dependency cycle(s) with /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70
[ 2.819065] /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0: Fixed dependency cycle(s) with /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70
[ 2.826869] /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0: Fixed dependency cycle(s) with /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70
[ 2.831954] /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0
[ 2.832166] /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0: Fixed dependency cycle(s) with /ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0/tda19988@70
[ 4.362814] cpsw-switch 4a100000.switch: CPTS: ref_clk_freq:250000000 calc_mult:2147483648 calc_shift:29 error:0 nsec/sec
[ 4.429003] ti-sysc 44e31000.target-module: Failed to create device link (0x180) with supplier ocp for /ocp/interconnect@44c00000/segment@200000/target-module@31000/timer@0
[ 4.429057] ti-sysc 48040000.target-module: Failed to create device link (0x180) with supplier ocp for /ocp/interconnect@48000000/segment@0/target-module@40000/timer@0
[ 6.159508] tda998x 0-0070: Error -121 writing to cec:0xff
[ 6.165211] tda998x 0-0070: set_page 000a err -121
[ 6.223482] tda998x 0-0070: set_page 000a err -121
[ 6.283459] tda998x 0-0070: set_page 0001 err -121
[ 6.288374] tda998x 0-0070: set_page 0001 err -121
[ 6.293285] tda998x 0-0070: set_page 0200 err -121
[ 6.298190] tda998x 0-0070: set_page 0201 err -121
[ 6.303182] tda998x 0-0070: set_page 0202 err -121
[ 6.308172] tda998x 0-0070: set_page 0203 err -121
[ 6.313100] tda998x 0-0070: set_page 0204 err -121
[ 6.318004] tda998x 0-0070: set_page 0205 err -121
[ 6.322907] tda998x 0-0070: set_page 020e err -121
[ 6.327814] tda998x 0-0070: set_page 0211 err -121
[ 6.332718] tda998x 0-0070: set_page 0207 err -121
[ 6.337625] tda998x 0-0070: set_page 0208 err -121
[ 6.342528] tda998x 0-0070: set_page 0209 err -121
[ 6.347438] tda998x 0-0070: set_page 020a err -121
[ 6.352340] tda998x 0-0070: set_page 0206 err -121
[ 6.357242] tda998x 0-0070: set_page 0027 err -121
[ 6.362144] tda998x 0-0070: set_page 0000 err -121
[ 6.366985] tda998x 0-0070: failed to read version: -121
[ 6.379124] tda998x 0-0070: probe with driver tda998x failed with error -121
[ 6.388320] tps65217-pmic: Failed to locate of_node [id: -1]
[ 6.394868] tps65217-bl: Failed to locate of_node [id: -1]
[ 11.780857] usb 1-1: can’t set config #1, error -71
[ 18.542073] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
[ 19.509097] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs…
[ 19.633821] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm…
[ 19.788015] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore…
[ 19.997703] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse…
[ 22.419232] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[ 22.464000] systemd[1]: Finished modprobe@configfs.service - Load Kernel Module configfs.
[ 22.509939] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 22.552601] systemd[1]: Finished modprobe@drm.service - Load Kernel Module drm.
[ 22.605667] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
[ 22.644558] systemd[1]: Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.
[ 22.702485] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[ 22.740105] systemd[1]: Finished modprobe@fuse.service - Load Kernel Module fuse.
rsrsam@BeagleBone:~$

I have included some of the relevant log output above. Could you please suggest what I should check next to troubleshoot the HDMI issue

So this is going to cause a world of hurt.. the version on the emmc is loaded by default and it’s pre revd..

On phone, but there is an update script under..

sudo /opt/u-boot/bb-u-boot-am335x-evm/install.sh

Then reboot…

Thank you. Before I run the U-Boot install script, I just want to make sure I understand correctly.
The system I am currently testing is booted from the SD card:

rsrsam@BeagleBone:\~$ lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
NAME           SIZE TYPE FSTYPE MOUNTPOINTS
mmcblk1       14.6G disk
|-mmcblk1p1     36M part vfat
|-mmcblk1p2    512M part swap
`-mmcblk1p3   14.1G part ext4 zram0        240.5M disk swap   [SWAP] mmcblk1boot0     4M disk mmcblk0      119.1G disk |-mmcblk0p1     36M part vfat   /boot/firmware |-mmcblk0p2    512M part swap   [SWAP] `-mmcblk0p3  118.5G part ext4   /
mmcblk1boot1     4M disk
rsrsam@BeagleBone:\~$

If I remove the SD card, the board boots normally from the factory eMMC image, and HDMI works correctly. i can see teminal outputs in HDMI display.

debian@BeagleBone:\~$ sudo beagle-version
eeprom:\[A335BNLTEID02630SBI00220\]
model:\[TI_AM335x_BeagleBone_Black_rev_D\]
dogtag:\[BeagleBoard.org Debian Bookworm Base Image 2025-05-27\]
bootloader:\[eMMC-(default)\]:\[/dev/mmcblk1\]:\[U-Boot SPL 2022.04-gc6f4cf7d (Apr 24 2025 - 03:22:59 +0000)\]:\[location: dd MBR\]
UBOOT: Booted Device-Tree:\[am335x-boneblack-revd.dts\]
kernel:\[6.12.28-bone25\]
/boot/uEnv.txt Settings:
pkg check: to individually upgrade run: \[sudo apt install --only-upgrade \]
WARNING:pkg:\[bb-cape-overlays\]:\[NOT_INSTALLED\]
pkg:\[bb-customizations\]:\[1.20240119.0-0\~bookworm+20240119\]
pkg:\[bb-usb-gadgets\]:\[1.20250523.1-0\~bookworm+20250527\]
pkg:\[bb-wl18xx-firmware\]:\[1.20230703.0-0\~bookworm+20240703\]
pkg:\[kmod\]:\[30+20221128-1\]
WARNING:pkg:\[librobotcontrol\]:\[NOT_INSTALLED\]
pkg:\[firmware-ti-connectivity\]:\[20230210-5\]
groups:\[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input render netdev i2c bluetooth gpio admin tisdk weston-launch\]
cmdline:\[console=ttyS0,115200n8 root=/dev/mmcblk1p3 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet\]
dmesg | grep remote
\[    3.175048\] remoteproc remoteproc0: wkup_m3 is available
\[   12.130070\] systemd\[1\]: Reached target remote-fs.target - Remote File Systems.
\[   35.318149\] remoteproc remoteproc0: powering up wkup_m3
\[   35.336142\] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
\[   35.336417\] remoteproc remoteproc0: remote processor wkup_m3 is now up
\[   44.352086\] remoteproc remoteproc1: 4a334000.pru is available
\[   44.371765\] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pru
\[   44.352086\] remoteproc remoteproc1: 4a334000.pru is available
\[   44.371765\] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pinctrl-single
\[    3.194811\] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
dmesg | grep wlcore
lsusb
Bus 001 Device 003: ID 222a:0001 ILI Technology Corp. Multi-Touch Screen
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
lspci
pcilib: Cannot open /proc/bus/pci
lspci: Cannot find any working access method.
END
debian@BeagleBone:\~$ uname -r
6.12.28-bone25
debian@BeagleBone:\~$ lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
NAME          SIZE TYPE FSTYPE MOUNTPOINTS
mmcblk1      14.6G disk
├─mmcblk1p1    36M part vfat   /boot/firmware
├─mmcblk1p2   512M part swap   \[SWAP\]
└─mmcblk1p3  14.1G part ext4   /
mmcblk1boot0    4M disk
mmcblk1boot1    4M disk
debian@BeagleBone:\~$

could you please help me understand why I need to update the U-Boot on /dev/mmcblk1 (eMMC) as well?
I am hesitant to overwrite the factory eMMC U-Boot because that image currently boots correctly and HDMI is working.
Is updating only the SD-card U-Boot (/dev/mmcblk0) sufficient for this test, or is it necessary for the eMMC and SD card to have the same U-Boot version?

Newer images vs the factory renable uboot_overlay_options:[enable_uboot_overlays=1] in /boot/uEnv.txt i had missed this in the original patch, and you have the industrial, which needs another:

U-Boot SPL 2022.04-gc6f4cf7d (Apr 24 2025 - 03:22:59 →

this commit Fixes hdmi with enable_uboot_overlays=1

All v2022.04-bbb.io builds are a safe drop in..

I’m planning to bump it in forky (Debian 14), but for right now, all Debian 12/13 use v2022.04-bbb.io branch…

Regards,

Thanks for your help. After running the install.sh script and rebooting, the system now boots from the SD card with the GUI working correctly on the HDMI display.

beagle-version now shows the correct HDMI overlay:

rsrsam@BeagleBone:~$ sudo beagle-version | grep Overlay
UBOOT: Loaded Overlay:[AM335X-PRU-UIO-00A0.kernel]
UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0.kernel]
UBOOT: Loaded Overlay:[BB-HDMI-IT66122-00A0.kernel]
rsrsam@BeagleBone:~$

I am also working on a custom Yocto build for this BeagleBone Black Industrial Rev D board. Do you have a recommended U-Boot branch/patch and device-tree/IT66122 patches that I could use to add the same HDMI support to my Yocto build?

Any pointers to the relevant commits or patches would be greatly appreciated.

Thanks again for your help.
Sam

which kernel branch? for device trees every branch here: GitHub - beagleboard/BeagleBoard-DeviceTrees · GitHub kernel changes in this repo/branch: GitHub - RobertCNelson/bb-kernel · GitHub

I was using the Wrynose Yocto build. The Linux version is 6.18.39-yocto-standard and the U-Boot version is also old. I will rebuild pointing to this branch.

Thanks
Sam

so here’s the latest 6.18.x tree: GitHub - RobertCNelson/linux-stable-rcn-ee at 6.18.54-bone56 · GitHub

Cherry pick what you need: Commits · RobertCNelson/linux-stable-rcn-ee · GitHub

Are you using an HDMI to DVI converter? We did and had to update to 7.2 which supports DVI sicne that wasn’t added yet.

We also ran into another issue with 7.2 showing this error.

[    4.569638] it66121 0-004c: supply vrf12 not found, using dummy regulator
[   19.177880] platform sound: deferred probe pending: asoc-simple-card: parse error
[   19.185564] platform 4830e000.lcdc: deferred probe pending: (reason unknown)

This error did not happen on Debian only on buildroot which is comparable to yocto. I can give you the patch to try (I have not gotten around to upstreaming it yet).