7,994
社区成员
发帖
与我相关
我的任务
分享平台:Qualcomm QCS6490(瑞莎 Dragon Q6A)
定位:一个开发者的学习记录,不是官方教程
一句话:接屏只需要一次,剩下的活全在 PC 上干——VS Code 远程连进板子,AI 在旁边解释报错、查参数。
| 项目 | 版本 / 型号 |
|---|---|
| 板卡 | 瑞莎 Dragon Q6A(LPDDR5,microSD 启动) |
| 镜像 | radxa-dragon-q6a_noble_gnome_r2(output_512) |
| 系统 / 内核 | Ubuntu 24.04.4 LTS,内核 6.18.2-3-qcom |
| 板端主机名 / 用户 | radxa-dragon-q6a / radxa |
| 板端架构 | aarch64 |
| PC 侧 | Windows + VS Code(版本号以本机 code --version 为准) |
| 用到的扩展 | Remote - SSH(Microsoft)、DeepSeek V4 for Copilot Chat(扩展名以市场实际显示为准) |
上一篇已经把 SSH 拉起来了(openssh-server + systemctl enable),本篇不重复装服务,只写"SSH 通了之后,开发体验怎么才算能用"。
工具不是越多越好:
| 通路 | 能干什么 | 代价 | 什么时候用 |
|---|---|---|---|
| 串口(UART) | 系统还没联网、甚至起不来时的唯一窗口 | 要一根 USB 转串口线,还要会读启动日志 | 救砖、看内核卡在哪 |
| SSH 终端 | 一切命令行操作 | 没有文件编辑、不能跳转定义、不能调试 | 改配置、看日志、跑一次性命令 |
| Remote-SSH | 完整 VS Code + 板端文件系统 + 终端 + 调试器 | 板端要跑 vscode-server,首次要下载 | 日常开发主力 |
| VNC / RDP | 完整桌面 | 带宽大、延迟高,microSD 上更卡 | 非要看图形界面时 |
| HDMI 接屏 | 首次配网、验证画面输出 | 要显示器 + 键鼠,占工位 | 一两次就够,之后收起来 |
结论很直白:只有串口和接屏是"必须用一次"的,其余时间应该是远程窗口在跑。 这套流程在犀牛派 X1 上(AidLux 平台)官方论坛帖已经完整写过一遍:https://forum.aidlux.com/t/topic/72138,步骤基本可以直接搬过来,换的就是板端用户名和 IP。
扩展市场搜 Remote - SSH(Microsoft 官方那个),装完左侧会多出 Remote Explorer 图标。
比每次手输 IP 省事,也方便 Remote-SSH 自动识别:
Host q6a
HostName 192.168.111.214
User radxa
# 用户名以镜像为准:Radxa OS 是 radxa,Ubuntu 镜像可能是 ubuntu
# 上一篇里我把用户名和密码搞混过一次,这里宁可写死
Host 后面的 q6a 是你自己起的别名,后面所有连接都认这个名字。
连上之后左下角会显示 SSH: q6a,说明远程窗口生效了。但第一次连往往卡在 "Setting up SSH Host"——它正在往板端下载 arm64 版的 vscode-server。

图 1:第一次连 Q6A,右下角一直停在"正在下载 VS Code 服务器...",编辑器空着不动
卡住不动的话,走离线安装。这里有个关键前提:包版本必须和 PC 上的 VS Code 对上,所以按 commit 号下载,而不是随便下个最新版。
第一步:在 PC 上拿到 commit id
code --version
# 1.127.0
# 4fe60c8b1cdac1c4c174f2fb180d0d758272d713 <- 第二行是这个版本的 commit
# arm64
code 不在 PATH 里的话,走菜单 帮助 → 关于,里面同样写着 commit 号。
第二步:按 commit 拼地址,在 PC 上下载 arm64 的 server 包
下载地址的规律就是下面这行,把 <commit> 换成上一步的值,粘进浏览器直接下:
https://update.code.visualstudio.com/commit:<commit>/server-linux-arm64/stable
我这一步下到的是 vscode-server-linux-arm64.tar.gz,1.127.0 的包 172 MB 左右。想用命令行下也行:
$commit = "4fe60c8b1cdac1c4c174f2fb180d0d758272d713" # 换成你自己的
Invoke-WebRequest "https://update.code.visualstudio.com/commit:$commit/server-linux-arm64/stable" `
-OutFile "vscode-server-linux-arm64.tar.gz"
顺带记一笔:还有一个不带版本的地址 https://update.code.visualstudio.com/latest/server-linux-arm64/stable,它给的是最新版。版本和 PC 上的 VS Code 对不上时,板端会"刚装完又被重装一遍",看着像卡死,其实是版本在打架——别图省事。
第三步:传到板子,解压到 bin/<commit> 下
# PC 侧传过去(用户和 IP 换成本机实际值)
scp .\vscode-server-linux-arm64.tar.gz radxa@192.168.111.214:/tmp/
# 板端(commit 换成第一步的值)
mkdir -p ~/.vscode-server/bin/<commit>
tar -xzf /tmp/vscode-server-linux-arm64.tar.gz -C /tmp
mv /tmp/vscode-server-linux-arm64/* ~/.vscode-server/bin/<commit>/
# 能打印出版本号,就说明位置放对了
~/.vscode-server/bin/<commit>/bin/code-server --version
回 PC 重新连接,就不会再卡在 "Setting up SSH Host"。
最后一步别忘了 File → Open Folder 指到 /home/<用户名>,否则文件树是空的、或者打开的是 /。
远程窗口刚连上,过一会儿突然断掉,终端里留着这么一段:
radxa@192.168.112.188's password:
Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 6.18.2-3-qcom aarch64)
Last login: Tue Nov 10 01:21:45 2026 from 192.168.112.135
radxa@radxa-dragon-q6a:~$
Broadcast message from gdm@radxa-dragon-q6a on tty1 (Tue 2026-11-10 03:21:31 UTC):
The system will suspend now!
client_loop: send disconnect: Connection reset
关键在那句 The system will suspend now!。板子跑的是带桌面(GNOME)的镜像,没接显示器、没有键鼠输入,系统判定空闲就进 suspend;板子一睡,SSH 自然断,客户端看到的就是 Connection reset。
把挂起相关 target 全部 mask 掉:
radxa@radxa-dragon-q6a:~$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
[sudo] password for radxa:
Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.
看输出就知道生效了:四条 Created symlink ... → /dev/null,正是把 target 指向空设备,systemd 想进也进不去。之后想复查,systemctl status suspend.target 里会显示 masked。
需要恢复自动挂起时反过来就行:
sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
顺带记一笔这台机器的身份信息,后面查日志对得上:主机名 radxa-dragon-q6a,内核 6.18.2-3-qcom,系统 Ubuntu 24.04.4 LTS。
扩展市场搜 DeepSeek V4 for Copilot Chat 装上(名称以市场实际显示为准)。然后全靠命令面板:
Ctrl+Shift+P → 输入 deepseek → 选 DeepSeek: Open Settings,把 Base Url 填成官方地址:
https://api.deepseek.com
如果界面上明确要求带版本号,就填 https://api.deepseek.com/v1。
Ctrl+Shift+P → 选 DeepSeek: Set API Key,粘贴自己的密钥,回车保存。
密钥在 DeepSeek 开放平台自助创建:https://platform.deepseek.com/usage。这个 Key 不要写进任何仓库文件、不要出现在截图里。
在 Chat 里丢一句和板子相关的问题,比如"这台 aarch64 的板子上,nmcli 显示已连接但 ping 不通网关,按可能性从高到低列排查命令"。能正常回、命令能直接跑,就算接通了。

图 2:接通后的样子——Chat 里能正常应答,输入框下方的模型选择显示 DeepSeek V4 Pro
一句话发出去,回复能带着当前工作区的上下文回来,说明 Key 和 Base Url 都到位了。如果这里报 401,是 Key 的问题;报连接超时或解析失败,先看 4.3 节。
Base Url 是公网地址,所以请求必须能出公网。如果你的板子只连局域网、PC 走公司代理,那么"请求到底从哪一端发出去"就成了能不能用的关键。这件事我没法靠猜,做了个对照实验,见下节。
测试条件:同一块板、同一张 microSD、同一台 PC;AI 对话为冷启动首问。
| 测试项 | 条件 | 结果 | 备注 |
|---|---|---|---|
| Remote-SSH 首次连接 | 板端无 ~/.vscode-server,需下载 | 【待实测】s | 失败则记录卡住位置 |
| 断线后重连 | 已有 vscode-server | 【待实测】s | — |
vscode-server 落盘 | du -sh ~/.vscode-server | 【待实测】 | — |
| 板端可用内存(未连 / 连着远程窗口) | free -h 的 available | 【待实测】/【待实测】 | 看远程窗口吃掉多少 |
| microSD 顺序写 | dd 200 MB,oflag=direct | 【待实测】MB/s | 索引卡顿的根因 |
| AI 生成命令一次跑通率 | 5 条真实任务 | 【待实测】/5 | 判定:粘贴即通、无需人工改 |
板端能否直连 api.deepseek.com | curl 看状态码与耗时 | 【待实测】 | 决定 AI 是否依赖 PC 侧 |
要测的项目我单独列了一份清单,逐条跑完再回填,避免漏项——这些东西漏一条,文章就只能写成"我觉得还行"。
| 现象 | 原因 | 解决 |
|---|---|---|
| 卡在 "Setting up SSH Host" 很久不动 | 板端在下载 arm64 vscode-server | 按第 3.3 节离线装,~/.vscode-server/bin/<commit> |
连上几分钟后突然 Connection reset | 桌面镜像空闲自动挂起,日志里有 The system will suspend now! | 按第 3.4 节 mask 掉 sleep/suspend/hibernate target |
报 REMOTE HOST IDENTIFICATION HAS CHANGED | 重刷系统后 host key 变了,Remote-SSH 走同一个 known_hosts | ssh-keygen -R <板子IP> 后重连(上一篇同款坑) |
| 连上了但文件树是空的 | 远程窗口没打开文件夹 | File → Open Folder → /home/<用户名> |
| 填了 Base Url,对话仍报连接失败 | 请求需出公网;若从板端发出,板子必须能访问 api.deepseek.com | 先确认地址与 /v1,再用 curl 验板端出网 |
| microSD 上索引器一直转、编辑器卡 | 存储卡随机 IO 慢,索引器吃资源 | 少开大目录、按需排除路径;长期干活换 NVMe |
radxa 还是 ubuntu,也不知道你上一次连的是哪个网段——这两条恰好是我上一篇里真踩过的坑。几个我还没答案的问题:
dmesg / journalctl 自己定位故障,成功率有多高?目前我只试过让它解释我已经看懂的报错。