sample DTB extraction from Totolink X6000R firmware CS_C8380R_X6000R_IP04499_MT7981_SPI_16M256M_V9.4.0cu.652_B20230116_ALL.web
binwalk CS_C8380R_X6000R_IP04499_MT7981_SPI_16M256M_V9.4.0cu.652_B20230116_ALL.web
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 device tree image (dtb)
232 0xE8 LZMA compressed data, properties: 0x6D, dictionary size: 8388608 bytes, uncompressed size: 8464392 bytes
2840856 0x2B5918 device tree image (dtb)
2883584 0x2C0000 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 11274846 bytes, 2663 inodes, blocksize: 262144 bytes, created: 2023-01-16 05:20:57
now we need to extract dtb from right part of the firmware
dd if=CS_C8380R_X6000R_IP04499_MT7981_SPI_16M256M_V9.4.0cu.652_B20230116_ALL.web of=dtb.bin skip=2840856 count=42729 bs=1
and convert it to text form
dtc -f -I dtb -O dts dtb.bin
Personally I've failed dtb extractions on firmware with linux kernel 2.6 .binwalk didn't show below entry at any point .Even when I was able to extract it using binwalk -e
device tree image (dtb)