How can I enable the 5 UARTs of the beaglebone AI-64?

Ok had trouble getting UART5 RX working, so ended up using an alternative pin.

So the below dts file enables 5 uarts and sets up the symlinks

/dev/bone/uart/2
/dev/bone/uart/4
/dev/bone/uart/5
/dev/bone/uart/6
/dev/bone/uart/8

I have tested this on my AI64, with only this overlay loaded and they are all working.

dts file

/dts-v1/;
/plugin/;

#include <dt-bindings/pinctrl/k3.h>
#include <dt-bindings/board/k3-j721e-bone-pins.h>

&{/chosen} {
	overlays {
		BONE-UART_X5 = __TIMESTAMP__;
	};
};

&main_pmx0 {

	uartx5_2_pins_default:uartx5_2-pins-default {
		pinctrl-single,pins = <
		P9_24A(PIN_OUTPUT, 3) /* UART2 TX */
		P9_26A(PIN_INPUT, 3)  /* UART2 RX */
		P9_24B(PIN_INPUT, 7)
		P9_26B(PIN_INPUT, 7)
		>;
	};
	uartx5_4_pins_default:uartx5_4-pins-default {
		pinctrl-single,pins = <
		P9_37B(PIN_INPUT, 8)   /* UART4 RX */
		P9_38B(PIN_OUTPUT, 8)  /* UART4 TX */
		P9_37A(PIN_INPUT, 7)
		P9_38A(PIN_INPUT, 7)
		>;
	};
	uartx5_5_pins_default:uartx5_5-pins-default {
		pinctrl-single,pins = <
		P8_31B(PIN_INPUT, 14)  /* UART5 RX */
		P8_37A(PIN_OUTPUT, 3) /* UART5 TX */
		P8_31A(PIN_INPUT, 7)
		P8_37B(PIN_INPUT, 7)
		>;
	};
	uartx5_6_pins_default:uartx5_6-pins-default {
		pinctrl-single,pins = <
		P9_16(PIN_OUTPUT, 3)  /* UART6 TX */
		P9_14(PIN_INPUT, 3)   /* UART6 RX */
		>;
	};
	uartx5_8_pins_default:uartx5_8-pins-default {
		pinctrl-single,pins = <
		P8_29(PIN_OUTPUT, 14)  /* UART8 TX */
		P8_28(PIN_INPUT, 14)   /* UART8 RX */
		>;
	};

};

&main_uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&uartx5_2_pins_default>;
	symlink = "bone/uart/2";
	status = "okay";
};

&main_uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&uartx5_4_pins_default>;
	symlink = "bone/uart/4";
	status = "okay";
};

&main_uart5 {
	pinctrl-names = "default";
	pinctrl-0 = <&uartx5_5_pins_default>;
	symlink = "bone/uart/5";
	status = "okay";
};

&main_uart6 {
	pinctrl-names = "default";
	pinctrl-0 = <&uartx5_6_pins_default>;
	symlink = "bone/uart/6";
	status = "okay";
};

&main_uart8 {
	pinctrl-names = "default";
	pinctrl-0 = <&uartx5_8_pins_default>;
	symlink = "bone/uart/8";
	status = "okay";
};


Copy this file to your AI64. The extact path will depend on your kernel version.
On mine it is

/opt/source/dtb-5.10-ti/src/arm64/overlays/

Then from /opt/source/dtb-5.10-ti/ - ( sudo only needed if not root)

make && sudo make install

Add the overlay to your extlinux.conf file

fdtoverlays /overlays/uartx5.dtbo

Reboot and you should be up and running

1 Like