Olimex Support Forum

OLinuXino Android / Linux boards and System On Modules => RK3188 => Topic started by: cybernox on August 29, 2025, 12:19:11 PM

Title: [RK3328-SOM-EVB] Using UART1
Post by: cybernox on August 29, 2025, 12:19:11 PM
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!
Title: Re: [RK3328-SOM-EVB] Using UART1
Post by: LubOlimex on August 29, 2025, 01:26:38 PM
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.