ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

openpilot 设备连接指南:comma 3X/4 的串口控制台、SSH 与 ADB 实战

openpilot 设备连接指南:comma 3X/4 的串口控制台、SSH 与 ADB 实战 openpilot 设备连接指南comma 3X/4 的串口控制台、SSH 与 ADB 实战【免费下载链接】openpilotopenpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars.项目地址: https://gitcode.com/GitHub_Trending/op/openpilot本篇基于 openpilot 仓库中的 connect-to-comma 文档 展开系统讲解如何与运行 openpilot 的 comma 硬件设备comma 3X / comma four建立三种调试连接通过 panda 转发的串口控制台、基于 GitHub 公钥的 SSH以及 USB/WiFi 方式的 ADB。读完后你将掌握每种连接方式的启用步骤、完整命令与底层参数实现SshEnabled、AdbEnabled、GithubSshKeys等并能结合 ssh.comma.ai 代理 从任意网络远程接入设备。前置概念comma 设备就是一台普通 Linux 计算机在 openpilot 的架构中comma 设备是一台运行 Agnos Linux 的正常 Linux 计算机它对外暴露两类标准通道SSHSecure Shell端口 22串口控制台serial console。这一基本定位决定了后文所有连接手段都可以用你熟悉的 Linux 远程调试工具完成openpilot 只是在认证与开关控制上做了定制。串口控制台Serial Console串口控制台主要用于设备异常、无法通过网络接入时的底层调试。comma 3X从 OBD-C 口经 panda 转发在 comma 3X 上串口控制台从主机OBD-C 端口引出并通过 panda 转发到 PC 侧。接入方式是在 PC 上执行panda/scripts/som_debug.sh该脚本位于仓库的panda子模块内panda/scripts/som_debug.sh。如果已经配置好 openpilot 的开发环境也可以直接用仓库自带的op.sh包装命令触发同一脚本从 op.sh 的路由逻辑 可以看到som-debug子命令会被转发为op_run_command panda/scripts/som_debug.sh ...op.sh som-debug登录串口控制台接入串口后使用默认用户登录项目值用户名comma密码commacomma fourcomma four 同样暴露串口控制台但走的是机内调试连接器internal debug connector而非 OBD-C 口原文档注明专用调试硬件即将在官方渠道提供。因此对 comma four 而言日常调试更推荐优先使用后文的 SSH 与 ADB 通道。SSH 连接认证机制GitHub 公钥SSH 接入设备需要一个配置了 SSH 公钥的 GitHub 账号。这是 openpilot 特有的认证设计设备不让你手动粘贴密钥而是根据你的 GitHub 用户名自动拉取你账号下所有公钥作为授权密钥。在设备设置Developer 页中完成两步操作对应源码中的两个持久化参数见 params_keys.h 中的AdbEnabled/SshEnabled声明Enable SSH切换SshEnabled参数为真。在 旧版设置页 与 Mici 设置页 中该开关的回调都会执行params.put_bool(SshEnabled, state, blockTrue)填入 GitHub 用户名触发公钥拉取流程。源码视角公钥是如何拉取并下发的公钥拉取逻辑集中在 SshKeyFetcher 中在后台线程执行GET github.com/{username}.keys15 秒超时HTTP_TIMEOUT 15拉取成功后把用户名与公钥文本分别写入两个持久化参数GithubUsernameGithubSshKeys拉取失败超时、HTTP 错误、账号下无密钥时UI 会弹出错误提示如 No SSH keys found for user ...且不写入任何参数。点击 REMOVE清除时SshKeyFetcher.clear()会同时删除GithubUsername与GithubSshKeys两个参数即设备侧的授权立即失效。此外仓库还提供等价的命令行脚本 setup_ssh_keys.py它直接requests.get同一公钥端点后写入相同的三个参数适合在设备上手工执行python tools/scripts/setup_ssh_keys.py github username一个值得注意的细节installer.cc 在安装阶段会预置一个默认的 ed25519 公钥写入GithubSshKeys并开启SshEnabled。这就是后文 Notes 中提到的默认id_rsa密钥能登录的原因——它只在安装前的 setup 状态有效。建立 SSH 连接完成上述设置后通过 USB tethered 网络设备与 PC 直连的局域网设备地址为192.168.43.1连接项目值用户名comma端口22示例命令ssh comma192.168.43.1 -i ~/.ssh/my_github_key对于需要在设备上进行开发clone、push 等 Git 操作的场景原文档推荐使用SSH agent forwarding这样设备端可以复用你 PC 上 agent 中的密钥完成 Git 认证。ADB 连接ADBAndroid Debug Bridge是第三种接入通道适合快速进入 shell 或使用 Android 工具链。操作顺序配合上文设备背部接口图用port 2常电口给设备上电等待开机在设备设置中Enable ADBDeveloper 页的 ADB 开关写入持久化参数AdbEnabled用port 1USB 口将设备连接 PC连接设备USB 方式adb shellWiFi / 网络方式adb connect 地址:5555tethered 连接示例adb connect 192.168.43.1:5555注意ADB over network 的默认端口是5555这与 SSH 的 22 端口相互独立。源码侧可以看到 ADB 开关的额外约束在 developer.py 中Enable ADB 开关设置了enabledui_state.is_offroad即只有在 offroad未上驾驶状态时才允许切换Mici 设置页同样把 ADB 开关放进了onroad_blocked_toggles集合代码位置。如果你发现 ADB 开关灰着先确认设备处于 offroad。注意事项Notes原文档明确了两条容易踩坑的规则均有源码佐证公钥只拉取一次设备只在你填写 GitHub 用户名时抓取一次公钥。若你在 GitHub 账号里增删了密钥需要在设备设置中重新输入你的 GitHub 用户名触发再次拉取即重新执行SshKeyFetcher.fetch流程默认id_rsa密钥的时效性仓库中 common/hardware/comma/id_rsa 对应的默认密钥只在设备处于setup 状态尚未安装软件时有效一旦完成安装该默认密钥会被移除。这也解释了为何安装后必须改用你自己的 GitHub 公钥登录。ssh.comma.ai 远程代理订阅 comma prime 后无需设备在线局域网即可从任意网络通过ssh.comma.ai中转接入设备。推荐写进 SSH 配置将以下配置加入~/.ssh/config后直接ssh comma-{dongleid}即可Host comma-* Port 22 User comma IdentityFile ~/.ssh/my_github_key ProxyCommand ssh %hssh.comma.ai -W %h:%p Host ssh.comma.ai Hostname ssh.comma.ai Port 22 IdentityFile ~/.ssh/my_github_key一次性连接不写配置ssh -i ~/.ssh/my_github_key -o ProxyCommandssh -i ~/.ssh/my_github_key -W %h:%p -p %p %hssh.comma.ai commaffffffffffffffff把ffffffffffffffff替换为你的dongle_id。校验 ssh.comma.ai 主机指纹为避免中间人攻击原文档给出了中转主机的指纹连接时应核对Host key fingerprint is SHA256:X22GOmfjGb9J04IA2egtdaJ7vW9Fbtmpz9/x8/W1X4 ---[RSA 4096]---- | | | | | . | | o | | S ..| | .| | . B | | o * B XE| | .o o OB/| ----[SHA256]-----三种通道速查通道适用场景认证关键参数/命令串口控制台设备无网络、系统异常时兜底默认账户comma/commapanda/scripts/som_debug.sh、op.sh som-debugSSH日常开发、Git 操作GitHub 公钥GithubSshKeysssh comma192.168.43.1SshEnabledADBAndroid 工具链、快速 shellADB 协议adb shell、adb connect 192.168.43.1:5555AdbEnabled仅 offroad 可切换ssh.comma.ai任意网络远程接入需 prime 订阅GitHub 密钥 中转主机ssh comma-{dongleid}排查连接问题时建议按串口确认系统活着→ 检查SshEnabled/AdbEnabled/GithubSshKeys参数 → 核对 GitHub 账号密钥是否更新的顺序定位其中参数读写行为可在 params_keys.h 与 params 测试 中查证各参数的持久化与类型定义。【免费下载链接】openpilotopenpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars.项目地址: https://gitcode.com/GitHub_Trending/op/openpilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表