I'm working with the RK3328 SOM (RK3328-SOM-EVB) and official bookworm downloaded from https://images.olimex.com/release/RK3328-SOM/RK3328-SOM-bookworm-minimal-20241127-120000.img.7z
I'm trying to enable UART1 but it's not working.
Here's what I have tried so far:
Enabled UART1 using armbian-config → rebooted, but the UART did not appear.
Created a custom Device Tree overlay targeting /serial@ff120000 and set the pinmux for GPIO3_A4/6 to function 5 → rebooted, but the UART still does not appear.
I created a dts inspired by the pinout in the datasheet
/dts-v1/;
/plugin/;
/ {
compatible = "rockchip,rk3328";
fragment@0 {
target-path = "/serial@ff120000";
__overlay__ {
status = "okay";
};
};
fragment@1 {
target = <&pinctrl>;
__overlay__ {
uart1_pins: uart1_pins {
rockchip,pins = <
3 4 5 /* TX -> GPIO3_A4, mode 5 */
3 6 5 /* RX -> GPIO3_A6, mode 5 */
>;
function = "uart";
};
};
};
};
Then compiled
dtc -@ -I dts -O dtb -o /boot/dtb/rockchip/rk3328-uart1-olimex.dtbo rk3328-uart1-olimex.dts
added mine in the file /boot/armbianEnv.txt
fdt_overlays=rockchip-rk3328-uart1-olimex
instead of the standard one that was
fdt_overlays=rockchip-rk3328-uart1
but nothing...
various diagnostic commands returns always the same result
ls /sys/firmware/devicetree/base | grep serial@
output:
serial@ff110000
serial@ff120000
serial@ff130000
executed:
cat /sys/firmware/devicetree/base/serial@ff120000/status
Output: disabled
Instead
cat /sys/firmware/devicetree/base/serial@ff130000/status
give me the result okay (I suppose that this is the serial console uart, tested and working)
The command
dmesg | grep ttyS
return always
[ 0.000000] Kernel command line: root=UUID=3440d0ff-bb26-49a0-92cb-65352124c942 rootwait rootfstype=ext4 splash=verbose console=ttyS2,1500000 consoleblank=0 loglevel=1 ubootpart=ec32f700-01 usb-storage.quirks=0x2537:0x1066:u,0x2537:0x1068:u cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory
[ 0.865993] printk: console [ttyS2] disabled
[ 0.866687] ff130000.serial: ttyS2 at MMIO 0xff130000 (irq = 21, base_baud = 1500000) is a 16550A
[ 0.866814] printk: console [ttyS2] enabled
[ 6.976456] systemd[1]: Expecting device dev-ttyS2.device - /dev/ttyS2...
[ 9.592381] systemd[1]: Found device dev-ttyS2.device - /dev/ttyS2.
Output shows only ff130000.serial: ttyS2 (console/debug).
Despite these attempts, /dev/ttyS* does not show UART1, and the status of serial@ff120000 remains disabled.
Could you please confirm:
Which node corresponds to UART1 on the Olimex RK3328 SOM?
The correct pinmux/function settings for GPIO3_A4 (TX) and GPIO3_A6 (RX) for UART1.
Any known issues or additional steps needed to enable UART1 under Armbian?
Thank you very much for your help!
You can change configuration from the device tree files. Probably easier to edit using the Armbian tools. First notice that there are only 3 UARTs in this chip. Refer to page 414 of this document:
https://rockchip.fr/Rockchip%20RK3328%20TRM%20V1.1%20Part1.pdf
UART0 is used for the Ethernet, so you can't use it.
UART1 is free to use.
UART2 is the serial debug UART.
To enable the free UART1:
1. Do armbian-config
2. Go to system
3. Select DTC
4. In the nano editor press ctrl + W (to search) and find:
serial 130000000{
In the line where it says status = "disabled" change it to "okay"
5. Now save and exit with X and confirm to save the changes and to reboot the board. The serial should be enabled after reboot. I tested with simple wire between RX and TX of UART1 to see if I get echo - I do.