PRUs not initializing on boot for Debian 13.7v6.18 image on BBB revC

What do I need to do to activate the PRUs?
The remoteproc entries are not being created on boot.

Installed this latest image but could not get the PRUs to come up.
am335x-debian-13.6-base-v6.18-armhf-2026-07-24-4gb.img.xz

BBB RevC Debian 13.7 v6.18 2026-10-09

The remoteproc entries are not created on boot
/sys/class/remoteproc/remoteproc1 and 2 are missing

This overlay is enabled in uEnv.txt
uboot_overlay_pru=AM335X-PRU-UIO-00A0.dtbo

Is there some other setup magic I need to do to bring the PRUs up?
The same setup worked when I tested the 13.6 v6.18 image a while back.

$ beagle-version
eeprom:[A335BNLTEIA02312SBI06472]
model:[TI_AM335x_BeagleBone_Black]
dogtag:[BeagleBoard.org Debian Trixie Base Image 2026-10-09]
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot SPL 2022.04-g5509547b (Jan 22 2026 - 19:56:08 +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-I2C1-RTC-DS3231.kernel]
UBOOT: Loaded Overlay:[BB-PRU-PIN2-CONFIG.kernel]
kernel:[6.18.56-bone58]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[uboot_overlay_addr4=BB-I2C1-RTC-DS3231.dtbo]
uboot_overlay_options:[uboot_overlay_addr5=/lib/firmware/BB-PRU-PIN2-CONFIG.dtbo]
uboot_overlay_options:[disable_uboot_overlay_video=1]
uboot_overlay_options:[disable_uboot_overlay_audio=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:[beagle : beagle 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/mmcblk1p3 ro rootfstype=ext4 rootwait fsck.repair=yes earlycon coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 omap_wdt.early_enable=1]
dmesg | grep remote
[ 2.637798] remoteproc remoteproc0: wkup_m3 is available
[ 5.506764] remoteproc remoteproc0: powering up wkup_m3
[ 5.555872] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[ 5.590198] remoteproc remoteproc0: remote processor wkup_m3 is now up
[ 16.733776] systemd[1]: Reached target remote-fs.target - Remote File Systems.
dmesg | grep pru
dmesg | grep pinctrl-single
[ 2.684909] 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
END

Do you want to use remoteproc or uio? They are different drivers…

voodoo@23-am335x-bbb:~$ uname -r    
6.18.55-bone57

uio (uboot_overlay_pru=AM335X-PRU-UIO-00A0.dtbo)

voodoo@23-am335x-bbb:~$ lsmod | grep uio
uio_pruss              12288  0
uio                    24576  1 uio_pruss
voodoo@23-am335x-bbb:/sys/class/uio$ tree .
.
|-- uio0 -> ../../devices/platform/ocp/4a000000.interconnect/4a000000.interconnect:segment@0/4a326000.target-module/4a300000.pruss/uio/uio0
|-- uio1 -> ../../devices/platform/ocp/4a000000.interconnect/4a000000.interconnect:segment@0/4a326000.target-module/4a300000.pruss/uio/uio1
|-- uio2 -> ../../devices/platform/ocp/4a000000.interconnect/4a000000.interconnect:segment@0/4a326000.target-module/4a300000.pruss/uio/uio2
|-- uio3 -> ../../devices/platform/ocp/4a000000.interconnect/4a000000.interconnect:segment@0/4a326000.target-module/4a300000.pruss/uio/uio3
|-- uio4 -> ../../devices/platform/ocp/4a000000.interconnect/4a000000.interconnect:segment@0/4a326000.target-module/4a300000.pruss/uio/uio4
|-- uio5 -> ../../devices/platform/ocp/4a000000.interconnect/4a000000.interconnect:segment@0/4a326000.target-module/4a300000.pruss/uio/uio5
|-- uio6 -> ../../devices/platform/ocp/4a000000.interconnect/4a000000.interconnect:segment@0/4a326000.target-module/4a300000.pruss/uio/uio6
`-- uio7 -> ../../devices/platform/ocp/4a000000.interconnect/4a000000.interconnect:segment@0/4a326000.target-module/4a300000.pruss/uio/uio7

9 directories, 0 files

remoteproc

voodoo@23-am335x-bbb:~$ lsmod | grep pru
pru_rproc              28672  0
irq_pruss_intc         16384  0
pruss                  20480  1 pru_rproc
voodoo@23-am335x-bbb:/sys/class/remoteproc$ tree .
.
|-- remoteproc0 -> ../../devices/platform/ocp/44c00000.interconnect/44c00000.interconnect:segment@100000/44d00000.target-module/44d00000.cpu/remoteproc/remoteproc0
|-- remoteproc1 -> ../../devices/platform/ocp/4a000000.interconnect/4a000000.interconnect:segment@0/4a326000.target-module/4a300000.pruss/4a334000.pru/remoteproc/remoteproc1
`-- remoteproc2 -> ../../devices/platform/ocp/4a000000.interconnect/4a000000.interconnect:segment@0/4a326000.target-module/4a300000.pruss/4a338000.pru/remoteproc/remoteproc2

4 directories, 0 files

Side note

CONFIG_UIO_PRUSS=m was just ā€˜reenabled’ in v6.18.48-bone51.1 (Aug 28) so if you were using pru before Aug 28th on 6.18.x you were using remoteproc..

so for example: am335x-debian-13.6-base-v6.18-armhf-2026-07-24-4gb.img.xz was using remoteproc and the AM335X-PRU-UIO-00A0.dtbo did not do anything..

Thanks that was the answer I needed.
Yes I am trying to use remoteproc to run assembly code in the PRUs.
I disabled the uboot overlay for the UIO mode
in uEnv.txt and now the remoteproc mode is working.
#uboot_overlay_pru=AM335X-PRU-UIO-00A0.dtbo

I did seem strange that the UIO overlay was not listed as active on 13.6
even though it was an enabled overlay in uEnv.txt

At least I have until 2038 to upgrade my old BBBs.