飞牛NAS图灵智显版小主机屏幕驱动详细教程
飞牛系统开机自启+虚拟环境版完整部署流程
图文为购买设备粉丝提供 教程所有权 @Smoke

最早我是按照教程:
https://club.fnnas.com/forum.php?mod=viewthread&tid=42152
以及Github上面的主程序来设置的:https://github.com/mathoudebine/turing-smart-screen-python
但是,教程并没有说明在安装的时候出现的问题。实际上,这个教程不是很可靠,没有说明在全局python环境的诸多限制(比如要绕过绕过系统的 PEP 668 限制),导致有的时候程序是无法运行的。有人还在咸鱼上问我怎么搞,后来专门找了块时间来弄一弄,发现真的挺麻烦。不过既然搞过了,想着就把该填的坑填一下,也方便其他人少踩坑少走弯路。
我是将程序下载到home目录,即/home/turing-smart-screen-python。在步骤2的时候,安装环境依赖最好挂个梯子,否则很有可能安装失败。以下内容已适0.9.3系统测试完毕,包含问题修复和避坑点:

一、推荐工具
所有支持SSH的工具都可以,我是用MobaXterm。先到飞牛设置- SSH打开SSH功能。
获取系统权限:执行sudo -i命令并再次输入管理员密码,即可切换至root用户。
二、完整部署步骤
步骤 1:创建并激活 Python 虚拟环境(隔离依赖)
# 安装虚拟环境依赖(若未安装)
apt update && apt install -y python3-venv python3-full bash dos2unix
# 进入项目目录
cd /home/turing-smart-screen-python
# 创建虚拟环境(命名为turing-venv)
python3 -m venv turing-venv
# 激活虚拟环境
source turing-venv/bin/activate
激活后终端前缀会显示(turing-venv),表示进入虚拟环境。
步骤 2:安装项目依赖
# 虚拟环境内安装
requirements.txt依赖
pip install -r requirements.txt
# 退出虚拟环境(后续由脚本自动激活)
deactivate
步骤 3:创建启动脚本(解决换行符 / 路径问题)
# 删除可能存在的旧脚本(避免残留问题)
rm -f /home/turing-smart-screen-python/start_turing.sh
# 新建启动脚本(纯Linux格式,路径绝对正确)
cat > /home/turing-smart-screen-python/start_turing.sh << EOF
#!/usr/bin/bash
# 定义虚拟环境和项目路径(绝对路径,不可改~)
VENV_PATH="/home/turing-smart-screen-python/turing-venv"
PROJECT_PATH="/home/turing-smart-screen-python"
# 激活虚拟环境 + 运行主程序(.代替source,兼容所有bash)
. ${VENV_PATH}/bin/activate
cd ${PROJECT_PATH}
python3 main.py
EOF
# 添加可执行权限
chmod 755 /home/turing-smart-screen-python/start_turing.sh
# 转换为Linux换行符(清除Windows的r)
dos2unix /home/turing-smart-screen-python/start_turing.sh
步骤 4:创建 systemd 服务(开机自启核心)
# 新建服务文件
nano /etc/systemd/system/turing-screen.service
粘贴以下内容:
[Unit]
Description=Turing Smart Screen Auto Start
After=network.target
Wants=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/turing-smart-screen-python# 用系统bash显式调用脚本(避免shebang解析问题)
ExecStart=/usr/bin/bash /home/turing-smart-screen-python/start_turing.sh
Restart=on-failure # 程序崩溃自动重启
RestartSec=5 # 重启间隔5秒
StandardOutput=journal+console # 日志输出到系统日志
[Install]
WantedBy=multi-user.target
保存退出:Ctrl+O → 回车 → Ctrl+X。
步骤 5:启用并测试服务
# 重新加载systemd配置
systemctl daemon-reload
# 设置开机自启
systemctl enable turing-screen.service
# 启动服务(测试运行)
systemctl start turing-screen.service
# 查看服务状态(正常显示active (running))
systemctl status turing-screen.service
到这儿设置就结束了,这种方法百分百成功,不会有任何问题。
三、常用命令
功能命令
启动服务
systemctl start turing-screen.service
停止服务
systemctl stop turing-screen.service
重启服务
systemctl restart turing-screen.service
关闭开机自启
systemctl disable turing-screen.service
查看实时日志(排错)
journalctl -u turing-screen.service -f
检查服务是否自启
systemctl is-enabled turing-screen.service
手动运行脚本(测试)
/usr/bin/bash /home/turing-smart-screen-python/start_turing.sh
四、常见问题修复(避坑指南)
1.报错:cannot execute: required file not found
a. 原因:脚本 shebang 路径错 / 换行符问题;
b. 修复:步骤 3 已用/usr/bin/bash+dos2unix解决,无需额外操作。
2.报错:$'r': command not found
a. 原因:脚本有 Windows 换行符;
b. 修复:执行dos2unix 脚本路径。
3.报错:/xxx/activate: No such file or directory
a. 原因:虚拟环境路径写错 / 截断;
b. 修复:确认VENV_PATH是绝对路径,且目录存在(ls /home/turing-smart-screen-python/turing-venv/bin/activate)。
4.服务状态显示 failed
a. 排查:执行journalctl -u turing-screen.service -f看实时日志,常见原因:main.py 路径错(比如实际是examples/4.0inch.py,需改脚本里的python3 main.py);
i. 串口权限不足:执行usermod -aG dialout root,重启服务;
ii. 依赖缺失:重新激活虚拟环境source turing-venv/bin/activate,执行pip install -r requirements.txt。
5.报错 OSError: [Errno 13] Permission denied: '/dev/ttyACM0' 等等类似的情况。
一般这种错误是是用全局环境出现的权限被拒绝的错误,建议用虚拟环境的方法来进行设置,也就是教程里的方法。如果你非要是用全局环境来设置,尝试:
a. 将文件权限更改为具有读写权限
sudo chmod 666 /dev/ttyACM0
b. 在 /etc/udev/rules.d 目录下创建一条规则,用于设置设备的权限。
sudo vi /etc/udev/rules.d/turing-rules
添加以下代码行并保存:
KERNEL==”ttyACM0″, MODE=”0666″
c. 重启NAS
shutdown -r now
还不行的话,你就自生自灭吧。
五、关键注意事项
1. 所有路径必须用绝对路径(不可用~代替/home/xxx);
2. 虚拟环境创建后不可移动目录,否则路径失效;
3. 若屏幕型号非默认,需修改脚本里的python3 main.py为对应型号脚本(如python3 examples/5.0inch.py);测试时先手动执行/usr/bin/bash /home/turing-smart-screen-python/start_turing.sh,确认程序能运行再配置服务;
4. 系统需安装 bash(which bash输出/usr/bin/bash),否则执行apt install bash。
至此,这块屏幕就是自动运行状态了,飞牛重启,屏幕也会自动亮起。该流程已规避所有踩过的坑(换行符、shebang 路径、权限、路径截断等),按步骤执行即可实现开机自动运行(屏幕的主题是你设置过的默认主题,更换主题后,按照上面的命令重启服务即可),无需手动操作。

值友6933424335
校验提示文案
值友6933424335
校验提示文案