一、Ubuntu下的USB设备权限问题解决方法
在Ubuntu中如果给一个USB设备赋予全部权限可以这么做
sudo chmod 777 /dev/ttyUSB0
但是这么做只是一次性的,拔掉再插就需要重新赋权限,下面介绍一个一劳永逸的方法
cd /etc/udev/rules.d
进入 /etc/udev/rules.d 后,ls 查看一下已有的文件,然后可以自己新建一个规则文件
sudo touch my_ttyusb.rules
或者直接
sudo gedit my_ttyusb.rules
打开并编辑,编辑内容如下,这样以后只要是ttyUSB设备,都会自动赋予777全部权限
KERNEL=="ttyUSB*", MODE:="0777", GROUP:="dialout
然后 ctrl+c 保存,ctrl+q退出
下一步将用户添加进dialout用户组
sudo usermod -a -G dialout $USER
接着使其立即生效
sudo udevadm trigger
--------------
运行下面两条命令也可以,重新加载udev,然后再重新运行
sudo service udev reload
sudo service udev restart
搞定!!!!
PS:udev规则当然也可以删除,使用 rm 命令即可,删除完在重新加载启动即可。
二、USB设备起别名方法
以我目前机载电脑连接的pixhawk6c飞控举例子
在上面新建的my_ttyusb.rules文件中写入
KERNEL=="ttyACM*", MODE:="0777", GROUP:="dialout"
KERNELS=="1-1:1.0", SYMLINK+="Pixhawk6c"
说明:
KERNEL==“ttyACM*”, MODE:=“0777”, GROUP:=“dialout” 这行是对全部的ttyACM设备赋予777权限
KERNELS==“1-1:1.0”, SYMLINK+=“Pixhawk6c” 这个是对“1-1:1.0”设备重命名
1-1:1.0是哪里来的呢
首先插上你的设备,然后输入
ls /dev/tty*
得到你的设备是哪一个,比如我的是ttyACM7,接着输入
udevadm info --attribute-walk --name=/dev/ttyACM7
输出以下信息,回到最上面,注意第二个或第三个
“looking at” 的下面一行的"KERNEL==“xxx”
找到“KERNELS==1-1:1.0"(我这里是在第二个looking at就找到了,一般会在第二个和第三个里,看到这个形式的就复制下来a-b:c.d)
OK,到了这里回到你刚刚的my_ttyUSB.rules规则文件
KERNEL=="ttyACM*", MODE:="0777", GROUP:="dialout"
KERNELS=="1-1:1.0", SYMLINK+="Pixhawk6c"
除了上面这种写法,你也可以这样写,这样写的话就是只给“1-1:1.0"这个设备赋权限并起别名,两种都可以
KERNEL=="1-1:1.0", MODE:="0777", GROUP:="dialout", SYMLINK+="Pixhawk6c"
别忘了让修改立即生效哦!!!
sudo udevadm trigger
最后输入以下命令,查看起别名结果
ls -l /dev |grep ttyACM
搞定!!!