Jetson Nano串口ttyTHS1永久修改权限

最近要用到Jetson Nano串口ttyTHS1与底盘通信,可每次打开底盘节点都会出现串口权限报错,原因是我的用户没有权限。

解决方法就是chmod给权限,可每次开机启动都要这么做,很麻烦,所以用了一个一劳永逸的方法。

  sudo usermod -aG dialout $USER

  $USER是你的用户名。ubuntu中dialout是操作串口的用户,添加这个用户组里,你的用户就有权限了。然后可以用groups $USER查看你的用户是否加入dialout组。

  本来到这里就结束了,但是做了没效果,这就很奇怪了。找了半天发现还是权限问题。查看ttyTHS1的权限时,发现它和ttyTHS2的权限还不一样:

  crw--w---- root tty /dev/ttyTHS1

  crw-rw---- root dialout /dev/ttyTHS2

  ttyTHS1是tty组了,而ttyTHS2是dialout组,明显有问题,猜测ttyTHS1用做了另图,发现是nvgetty.sh将ttyTHS1用作终端了。如果你没有用这个串口登录终端,一般来说也不会用,解决很简单,将其注掉就好了,如下图所示。

!/bin/bash

Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.

if [ -e "/proc/device-tree/compatible" ]; then
CHIP="$(tr -d '\0' < /proc/device-tree/compatible)"
if [[ "${CHIP}" =~ "tegra194" ]]; then
setsid /sbin/getty -L 115200 ttyTHS0
elif [[ "${CHIP}" =~ "tegra210" ]]; then
#setsid /sbin/getty -L 115200 ttyTHS1
fi
fi

  然后重启,因为我已经添加进dialout组了,直接启动节点,不会报错。最后权限如下图所示。

  crw-rw---- 1 root dialout 238, 1 6月   9 16:55 /dev/ttyTHS1
  crw-rw---- 1 root dialout 238, 2 6月   9 16:55 /dev/ttyTHS2

  我尝试过用udev的方式,修改权限,但没有成功,udev是针对热拔插设备,此处是固定串口,所以不适用。
posted @ 2025-06-09 17:48  嵌入式看法  阅读(162)  评论(0)    收藏  举报