Dragon Q6A 远程开发环境:VS Code Remote-SSH + DeepSeek 辅助编码

azouyana 2026-11-10 11:45:12

平台:Qualcomm QCS6490(瑞莎 Dragon Q6A)
定位:一个开发者的学习记录,不是官方教程
一句话:接屏只需要一次,剩下的活全在 PC 上干——VS Code 远程连进板子,AI 在旁边解释报错、查参数。


1. 环境与版本

项目版本 / 型号
板卡瑞莎 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 通了之后,开发体验怎么才算能用"。

2. 接入方式的取舍

工具不是越多越好:

通路能干什么代价什么时候用
串口(UART)系统还没联网、甚至起不来时的唯一窗口要一根 USB 转串口线,还要会读启动日志救砖、看内核卡在哪
SSH 终端一切命令行操作没有文件编辑、不能跳转定义、不能调试改配置、看日志、跑一次性命令
Remote-SSH完整 VS Code + 板端文件系统 + 终端 + 调试器板端要跑 vscode-server,首次要下载日常开发主力
VNC / RDP完整桌面带宽大、延迟高,microSD 上更卡非要看图形界面时
HDMI 接屏首次配网、验证画面输出要显示器 + 键鼠,占工位一两次就够,之后收起来

结论很直白:只有串口和接屏是"必须用一次"的,其余时间应该是远程窗口在跑。 这套流程在犀牛派 X1 上(AidLux 平台)官方论坛帖已经完整写过一遍:https://forum.aidlux.com/t/topic/72138,步骤基本可以直接搬过来,换的就是板端用户名和 IP。

3. Remote-SSH:把板端变成工作区

3.1 安装 Remote - SSH

扩展市场搜 Remote - SSH(Microsoft 官方那个),装完左侧会多出 Remote Explorer 图标。

3.2 配置 SSH 连接

比每次手输 IP 省事,也方便 Remote-SSH 自动识别:

Host q6a
    HostName 192.168.111.214
    User radxa
    # 用户名以镜像为准:Radxa OS 是 radxa,Ubuntu 镜像可能是 ubuntu
    # 上一篇里我把用户名和密码搞混过一次,这里宁可写死

Host 后面的 q6a 是你自己起的别名,后面所有连接都认这个名字。

3.3 首次连接卡在 vscode-server 下载

连上之后左下角会显示 SSH: q6a,说明远程窗口生效了。但第一次连往往卡在 "Setting up SSH Host"——它正在往板端下载 arm64 版的 vscode-server。

VS Code 提示"正在下载 VS Code 服务器"

图 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/<用户名>,否则文件树是空的、或者打开的是 /。

3.4 连上没几分钟就被断开:系统自动挂起

远程窗口刚连上,过一会儿突然断掉,终端里留着这么一段:

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。

4. DeepSeek 接入 Copilot Chat

4.1 扩展安装与两项配置

扩展市场搜 DeepSeek V4 for Copilot Chat 装上(名称以市场实际显示为准)。然后全靠命令面板:

  1. Ctrl+Shift+P → 输入 deepseek → 选 DeepSeek: Open Settings,把 Base Url 填成官方地址:

    https://api.deepseek.com
    

    如果界面上明确要求带版本号,就填 https://api.deepseek.com/v1。

  2. Ctrl+Shift+P → 选 DeepSeek: Set API Key,粘贴自己的密钥,回车保存。

密钥在 DeepSeek 开放平台自助创建:https://platform.deepseek.com/usage。这个 Key 不要写进任何仓库文件、不要出现在截图里。

4.2 连通性验证

在 Chat 里丢一句和板子相关的问题,比如"这台 aarch64 的板子上,nmcli 显示已连接但 ping 不通网关,按可能性从高到低列排查命令"。能正常回、命令能直接跑,就算接通了。

Copilot Chat 在 DeepSeek V4 Pro 模型下正常应答

图 2:接通后的样子——Chat 里能正常应答,输入框下方的模型选择显示 DeepSeek V4 Pro

一句话发出去,回复能带着当前工作区的上下文回来,说明 Key 和 Base Url 都到位了。如果这里报 401,是 Key 的问题;报连接超时或解析失败,先看 4.3 节。

4.3 前置条件:模型 API 需公网可达

Base Url 是公网地址,所以请求必须能出公网。如果你的板子只连局域网、PC 走公司代理,那么"请求到底从哪一端发出去"就成了能不能用的关键。这件事我没法靠猜,做了个对照实验,见下节。

5. 实测数据

测试条件:同一块板、同一张 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.comcurl 看状态码与耗时【待实测】决定 AI 是否依赖 PC 侧

要测的项目我单独列了一份清单,逐条跑完再回填,避免漏项——这些东西漏一条,文章就只能写成"我觉得还行"。

6. 常见问题与排错

现象原因解决
卡在 "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_hostsssh-keygen -R <板子IP> 后重连(上一篇同款坑)
连上了但文件树是空的远程窗口没打开文件夹File → Open Folder → /home/<用户名>
填了 Base Url,对话仍报连接失败请求需出公网;若从板端发出,板子必须能访问 api.deepseek.com先确认地址与 /v1,再用 curl 验板端出网
microSD 上索引器一直转、编辑器卡存储卡随机 IO 慢,索引器吃资源少开大目录、按需排除路径;长期干活换 NVMe

7. 结论:AI 是助教

  • **远程窗口解决"能不能干活",AI 解决"查得快不快"**。前者是基础设施,后者是加速器,顺序不能反。
  • AI 给的命令,必须在板子上自己跑一遍再信。它不知道你这台机器的用户名是 radxa 还是 ubuntu,也不知道你上一次连的是哪个网段——这两条恰好是我上一篇里真踩过的坑。
  • **真正值钱的是"把边界测出来"**:能连、能聊只是及格线,知道它在什么条件下会失败,才敢在客户现场用。

几个我还没答案的问题:

  • 板端只连内网时,AI 请求到底从板端还是 PC 端发出去?。
  • 让它读 dmesg / journalctl 自己定位故障,成功率有多高?目前我只试过让它解释我已经看懂的报错。
...全文
21 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,994

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、IoT、PC 、XR、Auto等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
物联网人工智能开源 企业社区 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧