wittrup Posted March 3, 2025 Posted March 3, 2025 Hello I want to disable console on /dev/ttyS2 on a Radxa ROCK 4C+ running rock@rockpi-4cplus:/boot$ cat /etc/os-release | grep -v URL PRETTY_NAME="Armbian 25.5.0-trunk.40 noble" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian UBUNTU_CODENAME=noble LOGO="armbian-logo" ARMBIAN_PRETTY_NAME="Armbian 25.5.0-trunk.40 noble" There are posts and other information out there. For instance: https://docs.armbian.com/User-Guide_Fine-Tuning/#how-to-toggle-boot-output which leads to http://redsymbol.net/linux-kernel-boot-parameters/ rock@rockpi-4cplus:/boot$ grep console armbianEnv.txt console=both The information found so far, implies there are options like: none, serial, both, and another But what is the another option? So that I can disable console on /dev/ttyS2 and use that for other purposes. Without compromising the Docs reccomandation: To disable console entirely (not recommended) set console to none 0 Quote
SteeMan Posted March 3, 2025 Posted March 3, 2025 moved to correct forum and added the proper tag 0 Quote
wittrup Posted March 3, 2025 Author Posted March 3, 2025 Thanks @SteeMan Made me stumble upon something similar. Found armbianmonitor rock@rockpi-4cplus:~$ sudo armbianmonitor -u Checked the log. [ 2.614818] ff180000.serial: ttyS0 at MMIO 0xff180000 (irq = 35, base_baud = 1500000) is a 16550A [ 2.616480] ff1a0000.serial: ttyS2 at MMIO 0xff1a0000 (irq = 36, base_baud = 1500000) is a 16550A Changed armbianEnv.txt from: console=both To: console=ttyS0 Then a reboot. That didn't work. So changing the boot.cmd from: setenv console "both" To: setenv console "ttyS0" Then mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr and reboot. ttyS2 console are still enabled. Connections are verified by reading the connected pins after forcing communication root@rockpi-4cplus:/home/rock# stty -F /dev/ttyS2 115200 cs8 -parenb -cstopb root@rockpi-4cplus:/home/rock# while true; do echo -n "A" > /dev/ttyS2; sleep 0.25; done Connected pins 8 & 10: And log still says: [ 2.615671] ff180000.serial: ttyS0 at MMIO 0xff180000 (irq = 35, base_baud = 1500000) is a 16550A [ 2.616076] serial serial0: tty port ttyS0 registered [ 2.617411] ff1a0000.serial: ttyS2 at MMIO 0xff1a0000 (irq = 36, base_baud = 1500000) is a 16550A [ 2.617621] printk: legacy console [ttyS2] enabled What would be the next step here? 0 Quote
wittrup Posted March 3, 2025 Author Posted March 3, 2025 Continuing ... root@rockpi-4cplus:~# cp /boot/dtb/rockchip/rk3399-rock-4c-plus.dtb rk3399-rock-4c-plus.dtb.backup root@rockpi-4cplus:~# dtc -I dtb -O dts -o rk3399-rock-4c-plus.dts rk3399-rock-4c-plus.dtb.backup rk3399-rock-4c-plus.dts: Warning (unit_address_vs_reg): /usb@fe800000: node has a unit name, but no reg or ranges property rk3399-rock-4c-plus.dts: Warning (unit_address_vs_reg): /usb@fe900000: node has a unit name, but no reg or ranges property rk3399-rock-4c-plus.dts: Warning (avoid_unnecessary_addr_size): /dsi@ff960000: unnecessary #address-cells/#size-cells without "ranges", "dma-ranges" or child "reg" property rk3399-rock-4c-plus.dts: Warning (avoid_unnecessary_addr_size): /dsi@ff968000: unnecessary #address-cells/#size-cells without "ranges", "dma-ranges" or child "reg" property rk3399-rock-4c-plus.dts: Warning (unique_unit_address): /pcie@f8000000: duplicate unit-address (also used in node /pcie-ep@f8000000) root@rockpi-4cplus:~# root@rockpi-4cplus:~# vi rk3399-rock-4c-plus.dts rk3399-rock-4c-plus.dts is attached. Here is the relevant sections I've found: / { model = "Radxa ROCK 4C+"; aliases { serial2 = "/serial@ff1a0000"; }; serial@ff1a0000 { compatible = "rockchip,rk3399-uart\0snps,dw-apb-uart"; reg = <0x00 0xff1a0000 0x00 0x100>; clocks = <0x08 0x53 0x08 0x162>; clock-names = "baudclk\0apb_pclk"; interrupts = <0x00 0x64 0x04 0x00>; reg-shift = <0x02>; reg-io-width = <0x04>; pinctrl-names = "default"; pinctrl-0 = <0x49>; status = "okay"; phandle = <0xe7>; }; __symbols__ { uart2 = "/serial@ff1a0000"; }; }; What should I do to disable /dev/ttyS2 console? rk3399-rock-4c-plus.dts 0 Quote
IBV Posted March 4, 2025 Posted March 4, 2025 Hi, in general you can set status = "disabled"; in a dts to disable a component. 0 Quote
wittrup Posted March 4, 2025 Author Posted March 4, 2025 Thanks. Would this disable the ttyS2 entirely, or disable the console on ttyS2? 0 Quote
IBV Posted March 4, 2025 Posted March 4, 2025 This would disable it entirely, which is probably not what you want... It looks like the the the kernel is not picking up the console parameter: Kernel command line: root=UUID=d0636019-ca11-404a-9874-04e6cbfedf37 rootwait rootfstype=ext4 splash plymouth.ignore-serial-consoles console=ttyS2,1500000 console=tty1 consoleblank=0 loglevel=1 ubootpart=8dc56fe2-01 usb-storage.quirks=0x2537:0x1066:u,0x2537:0x1068:u cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory [ 0.000000] Unknown kernel command line parameters "splash ubootpart=8dc56fe2-01 cgroup_enable=memory cgroup_memory=1", will be passed to user space. Maybe post here the boot.cmd and armbianEnv.txt 0 Quote
wittrup Posted March 4, 2025 Author Posted March 4, 2025 Well spotted, thanks armbianEnv.txt verbosity=1 bootlogo=true console=ttyS0 overlay_prefix=rockchip rootdev=UUID=d0636019-ca11-404a-9874-04e6cbfedf37 rootfstype=ext4 usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u boot.cmd (complete file attached): rock@rockpi-4cplus:~$ grep -i console /boot/boot.cmd setenv console "ttyS0" if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=tty1"; fi if test "${console}" = "serial" || test "${console}" = "both"; then setenv consoleargs "console=ttyS2,1500000 ${consoleargs}"; fi if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; fi setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" setenv consoleargs "splash=verbose ${consoleargs}" setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}" boot.cmd 0 Quote
IBV Posted March 4, 2025 Posted March 4, 2025 It looks like if you set console="display" in armbianEnv.txt then the console kernel param will be set to tty1. This might resolve your problem. 0 Quote
wittrup Posted March 4, 2025 Author Posted March 4, 2025 Thanks Marked as solution. To answer my question wider; The console option, that are not specified in Armbian Documentation are: display All four options listed below: console=both console=serial console=display console=none To disable console entirely (not recommended) set console to none. 0 Quote
wittrup Posted March 8, 2025 Author Posted March 8, 2025 Forgive me. I apparently don't test thoroughly enough. Now: rock@rockpi-4cplus:~$ cat /boot/armbianEnv.txt verbosity=1 bootlogo=true console=display overlay_prefix=rockchip rootdev=UUID=d0636019-ca11-404a-9874-04e6cbfedf37 rootfstype=ext4 usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u rock@rockpi-4cplus:~$ sudo mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr Image Name: Created: Sat Mar 8 18:21:32 2025 Image Type: ARM Linux Script (uncompressed) Data Size: 3843 Bytes = 3.75 KiB = 0.00 MiB Load Address: 00000000 Entry Point: 00000000 Contents: Image 0: 3835 Bytes = 3.75 KiB = 0.00 MiB rock@rockpi-4cplus:~$ sudo reboot Broadcast message from root@rockpi-4cplus on pts/1 (Sat 2025-03-08 18:22:02 UTC): The system will reboot now! rock@rockpi-4cplus:~$ Remote side unexpectedly closed network connection Even so, I can see my communication with Waveshare SIM7020E NB-IoT HAT are interrupted by console login request. How do I fulfill the disable ttyS2 console? rock@rockpi-4cplus:~$ sudo picocom /dev/ttyS2 picocom v3.1 Terminal ready *** local echo: yes *** *** baud: 115200 *** baud: 115200 *** AT AT OK rockpi-4cplus login: 0 Quote
Igor Posted March 8, 2025 Posted March 8, 2025 28 minutes ago, wittrup said: How do I fulfill the disable ttyS2 console? Check if getty is running on ttyS2 and stop it: sudo systemctl stop getty@ttyS2 0 Quote
wittrup Posted March 8, 2025 Author Posted March 8, 2025 Thanks rock@rockpi-4cplus:~$ picocom /dev/ttyS2 --baud 115200 --echo picocom v3.1 Terminal ready AT AT OK ockpi-4cplus login: ERROR Terminating... Thanks for using picocom rock@rockpi-4cplus:~$ sudo systemctl status getty@ttyS2 ○ getty@ttyS2.service - Getty on ttyS2 Loaded: loaded (/usr/lib/systemd/system/getty@.service; disabled; preset: enabled) Active: inactive (dead) Docs: man:agetty(8) man:systemd-getty-generator(8) https://0pointer.de/blog/projects/serial-console.html For reasons I cannot explain, I see getty@ttyS2 inactive at systemctl. Still it interrupts the UART. Also tried this: rock@rockpi-4cplus:~$ sudo systemctl status getty@ttyS2 [sudo] password for rock: ○ getty@ttyS2.service - Getty on ttyS2 Loaded: loaded (/usr/lib/systemd/system/getty@.service; disabled; preset: enabled) Active: inactive (dead) Docs: man:agetty(8) man:systemd-getty-generator(8) https://0pointer.de/blog/projects/serial-console.html rock@rockpi-4cplus:~$ sudo systemctl stop getty@ttyS2 rock@rockpi-4cplus:~$ sudo systemctl disable getty@ttyS2 rock@rockpi-4cplus:~$ sudo systemctl status getty@ttyS2 ○ getty@ttyS2.service - Getty on ttyS2 Loaded: loaded (/usr/lib/systemd/system/getty@.service; disabled; preset: enabled) Active: inactive (dead) Docs: man:agetty(8) man:systemd-getty-generator(8) https://0pointer.de/blog/projects/serial-console.html 0 Quote
Solution IBV Posted March 9, 2025 Solution Posted March 9, 2025 Hi, check the status of serial-getty@ttyS2.service and disable it. systemctl status serial-getty@ttyS2.service systemctl disable serial-getty@ttyS2.service Also can you please post your kernel command line again to check the console= param: cat /proc/cmdline According to the doc (https://0pointer.de/blog/projects/serial-console.html) systemd will spawn a serial getty for the console specified in the kernel command line. 1 Quote
wittrup Posted March 9, 2025 Author Posted March 9, 2025 Summary: /boot/armbianEnv.txt console=display systemctl disable getty@ttyS2 Maybe not necessary ... ? systemctl disable serial-getty@ttyS2.service Thanks everyone 0 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.