如何在Termux环境中实现串口通信 解决node-red串口无法识别问题
解决方案
1 先确认Termux侧已识别USB设备
- 插入FT232R设备时,安卓系统弹出的USB外设授权窗口选择允许Termux访问该设备,禁止选择仅充电模式
- 在Termux终端执行命令
termux-usb -l,确认有输出USB设备路径,格式类似/dev/bus/usb/xxx/xxx。如果无输出,优先排查OTG转接头、C转mini 5pin线是否正常,确认FT232R为正品(山寨FT232芯片安卓系统默认不识别)
2 重新编译安装serialport原生依赖
node-red-node-serialport默认从Node-RED面板安装时,不会适配Termux的aarch64架构编译原生组件,需要手动重新安装:
- 先卸载原有插件:在Node-RED面板的插件管理页移除
node-red-node-serialport,停止Node-RED进程 - 在Termux中执行以下命令安装编译依赖:
pkg install -y python make clang libusb-dev - 进入Node-RED配置目录,手动编译安装插件:
cd ~/.node-red npm install node-red-node-serialport --unsafe-perm - 安装完成后重启Node-RED即可看到串口节点
3 手动指定串口路径(不需要等待自动搜索)
Termux下不会生成常规Linux的/dev/ttyUSB0路径,自动搜索功能默认扫描该路径因此会显示无设备,需要手动映射串口路径后填写:
- 执行命令给对应USB设备授予读写权限:
termux-usb -r 你之前用termux-usb -l查到的设备路径 - 执行映射命令将USB设备映射为pty串口设备,获取映射后的路径(格式类似
/data/data/com.termux/files/home/ttyUSB0) - 在Node-RED的串口节点配置页,直接手动填写上述映射后的路径,配置对应波特率即可正常使用
4 高版本安卓权限补充
如果是安卓10及以上系统,selinux默认拦截Termux的USB访问:
- 有root权限可执行
su -c setenforce 0临时关闭selinux测试 - 无root权限可在系统设置中给Termux开放所有权限,包括存储权限、USB相关权限后重试
内容的提问来源于stack exchange,提问作者강호진
相关产品推荐
相关产品推荐

