先说清:这个程序能干什么
它的活很简单——把一块 GNSS 模块变成一台能自己跑起来的 RTK 基准站。 从模块的串口读出 RTCM 3 差分数据,通过网络推给你的 Caster,野外的手簿、无人机、农机、测绘杆就能用上了。
具体做的事有这些:
- 读模块、转出去。支持 CH340、CP2102、FT232 这类 USB 转串口,也支持原生 USB 的模块。
- 三个出口,可以同时开。推到云端 NTRIP Caster;盒子里自带一台本地 Caster 服务局域网;或者把差分打进数传电台。
- 把基站坐标修准。标定功能会自己驱动模块走完一整套命令,接 CORS、等固定解、取平均、写回,失败了还会把模块恢复原样。
- 失败自动回滚。哪一步出问题,模块回到标定前的状态,不会留在半残配置里。
- 一个网页管全部。配置、坐标、卫星、日志、固件检查,全在浏览器里点,不用登终端。
三种运行模式,搭建阶段你只会用到第一种:
| 模式 | 作用 | 什么时候用 |
|---|---|---|
serial | 从串口读模块,通过 NTRIP 分发出去 | 基准站的正常运行状态 |
relay | 从别人的 Caster 拉一路流,再重新转发 | 手头还没模块,或给已有基站做备份。见中继模式 |
none | 只读模块在本地显示,不对外输出 | 台面测模块好坏。见看到这些,站就已经在干活了 |
整条链路只有五段,中间那台盒子并不参与计算:
要看见天空
吐 RTCM 3
功耗 3~5 W
或电台
农机 / 测量杆
容易搞错的一点:算坐标的是模块,盒子只负责搬字节。 RTCM 里的基站坐标是模块自己广播的,盒子既不改也不猜。所以主机要求低得很——1 GHz 的 ARM、512 MB 内存就够。
搭建流程:四步
按顺序来,每一步都能自己验证,不用回头猜。
+ USB 线 + 天线
天线放出室外
一条命令
保存重启
RTCM 在推
| 步骤 | 做什么 | 在哪做 |
|---|---|---|
| ① 准备材料 | 凑齐盒子、模块、线、天线,盒子事先刷好 Armbian | 桌面 |
| ② 接线、架天线 | 按图连起来加电,天线放到能看见天空的地方 | 桌面 + 窗外 |
| ③ 装 2RTK Server | 盒子上粘一条命令,装完就开机自启 | 盒子终端 |
| ④ 网页配置 | 选串口、填 Caster,保存重启,看状态页 | 浏览器 |
唯一的前置条件:盒子里得先有 Linux。出厂安卓是跑不了这个程序的。 如果你的盒子还是原厂系统,先看附篇一:把盒子刷成 Armbian,刷完回来接着做①(材料和接线不冲突,可以同时干)。
第一步:准备材料
就四样东西,摊开拍一张:
| 器件 | 挑的时候注意什么 |
|---|---|
| 机顶盒 | 能刷 Armbian 的型号,1 GB 内存、8 GB 存储(TF 卡或 eMMC)就够。树莓派、香橙派也一样 |
| RTK 模块 | 必须能设成基准站模式。LG290P 是本程序唯一做过真机验证的型号 |
| USB 线 | 必须是数据线,只供电的充电线插上去系统里看不到串口 |
| 天线 | 临时测试:四臂螺旋 + 磁吸底座。永久固定:换 GNSS 测量蘑菇头 + 立杆,见天线怎么固定 |
| 供电 | 5 V 稳压电源。劣质电源会让盒子反复重启,模块跟着重新搜星 |
临时测试 vs 长期跑,材料不一样
| 临时测试(当天验证) | 长期跑(固定站) | |
|---|---|---|
| 天线 | 四臂螺旋,带磁吸底座 | GNSS 测量蘑菇头,带扼流圈更好 |
| 放哪 | 吸在窗外,或者伸出去的窗台上 | 楼顶或开阔地带的立杆顶端 |
| 馈线 | 自带短线即可 | 50 Ω 低损耗同轴,越短越好,接头做防水 |
| 坐标 | 模块自收敛的够用,先跑通再说 | 用标定定准,见坐标怎么定准 |
第二步:连起来,把天线放到室外
先确认一件事:模块得是基准站模式
这一步最容易被跳过,但它决定了后面有没有数据。模块出厂默认多半是流动站, 得先切成基准站模式、给它一个准确坐标,它才会往外吐 RTCM 差分数据。 否则盒子读到的是一串位置报文,Caster 那边什么都收不到。
两种做法,挑一种:
- 官方工具测坐标、设模式。用模块厂家给的配置软件(Quectel 的 QGNSS、 u-blox 的 u-center 这类)连上模块,先让它收敛出一个坐标,再把工作模式设成基地站 / Base, 输出选 RTCM 3.x。具体菜单照厂家手册走,各家不一样。
- 用本程序一键标定。懒得翻手册就走这条:装好程序之后打开标定页, 选一个方式点开始,程序会自己切模式、取坐标、写回模块,完事模块就是配好的基准站。 前提是程序已经装好(第三步、第四步),所以这条路要等装完再回来做。做法见附篇三:坐标怎么定准(一键标定)。
两条路的区别就一点:官方工具是你自己动手,看得见每一步在干什么; 本程序的标定是它替你改,还能顺手把坐标存进系统里。坐标精度取决于你等多久—— 十几分钟是分米级,要到厘米级得靠 CORS 或长一点的观测。
模块设成基准站以后再接线、上电。接线只有一根主线,模块自带 Type-C 口的, 一根 USB 数据线直接捅到盒子上就行:
┌──────────────┐ USB 数据线 ┌─────────────┐
│ Armbian 盒 │ ─────────────► │ GNSS 模块 │
│ │ │ (LG290P) │
└──────────────┘ └──────┬──────┘
│ SMA
▼
┌─────────────┐
│ 室外天线 │
│ 窗外 / 楼顶 │
└─────────────┘
模块没有 USB 口怎么办?那就需要一个 USB 转串口(CH340、CP2102、FT232 都行):
模块断电状态下接线,TX → RX、RX → TX、GND → GND,
VCC 供电按模块数据手册来,接好再把转接头插进盒子的 USB 口。
买转接板的时候顺手确认一下它是 3.3 V 电平,别把模块的串口烧了。
-
天线先放好,再开盒子
模块要能「看见」卫星才出得了数据。天线放桌上的话,卫星只收到七八颗、还挤在一个方向, 程序里会一直显示「有卫星、没位置」——新手最容易在这里怀疑软件。
临时测试:磁吸底座吸在窗外,或者伸出去的窗台、空调外机上,四周别有大面积墙体反光。
要长期跑:到楼顶或开阔地带立杆固定,具体做法见附篇:天线怎么固定在室外。 -
USB 线接模块,模块接盒子
模块自带 Type-C 或 Micro-USB 口的,找一根数据线,一头插模块、一头插盒子的 USB 口, 就这么简单。天线馈线拧到模块的 SMA 座上,拧到底,别只搭上。
模块没有 USB 口的(只有排针或 GH 座),才需要 USB 转串口板, 接线见上面那个注记。
顺手在盒子上确认系统认得这个口:
shell · 看串口有没有出来ls -l /dev/ttyUSB* /dev/ttyACM*
输出示例crw-rw---- 1 root dialout 188, 0 Nov 11 05:20 /dev/ttyUSB0
ttyUSB0是 USB 转串口芯片(CH340、CP2102 这类);ttyACM0是模块自己带 USB 接口、 直接枚举出来的。两个名字都正常,记住是哪个。什么都没有,按顺序排查:换根数据线(很多充电线只有电源两根芯)、换个 USB 口、 用
dmesg | tail -20看插上那一刻系统有没有反应。 -
最后插网线和电源
盒子上电,网线插上(或者连好 Wi-Fi)。等一两分钟,从路由器后台找到它的 IP, 待会儿配置页面要用。
放窗外只用来验证程序通不通,不能当长期方案。磁吸底座夹在窗框上,风一吹就挪位置, 玻璃和墙体还会挡掉一大片低仰角卫星,卫星数上不去、固定解时有时无。
长期使用必须把天线挪到楼顶或开阔地带,立杆固定死。换位置以后,之前标定的坐标全部作废, 要在新位置重新测一次,见附篇三:坐标怎么定准。
第三步:在盒子上一条命令装好
项目开源在 gitcode.com/rampump/NTRIPserver, 国内访问比 GitHub 稳,脚本里也做了 GitHub 回退。SSH 登进盒子,或者接个键盘显示器打开终端,粘这一行:
sudo apt-get install -y git && sudo rm -rf /tmp/2rtk-install && (sudo git clone --depth 1 https://gitcode.com/rampump/NTRIPserver.git /tmp/2rtk-install || (sudo rm -rf /tmp/2rtk-install && sudo git clone --depth 1 https://github.com/Rampump/2RTKserver.git /tmp/2rtk-install)) && sudo bash /tmp/2rtk-install/install.sh
脚本会依次做完这些事,中途不用管:
- 装系统依赖(
python3、python3-venv、python3-pip)。 - 在
/opt/2RTKserver/venv建虚拟环境,按requirements.txt装依赖。 - 把程序复制到
/opt/2RTKserver/。 - 注册并启动
2rtkserver的 systemd 服务——装完就开机自启,不用你手动拉。
想确认服务真的起来了,跑一句:
systemctl status 2rtkserver
看到 active (running) 就往下走。failed 的话先看 journalctl -u 2rtkserver -n 50,
常见原因是 Python 版本太低——Debian 11 / Ubuntu 22.04 以上基本不会遇到。
第四步:打开网页,配串口和 Caster
在同一个网络里的电脑或手机上,浏览器打开:
- Web 界面
http://盒子的IP:5757- 固定地址
http://2rtk.local:5757(安卓手机不认.local,用 IP)- 默认账号
admin/admin—— 登录后立刻改
admin / admin,登录后第一件事就是改密码。登录后进左侧的 Settings(运行设置),页面地址是 /config。往下按顺序填四块。
① 模式选 serial
none,所以什么都没动。serial 的意思是:从串口读模块,通过 NTRIP 分发出去。这是基准站唯一要用的模式。
② 选串口
点「扫描串口」,程序会枚举系统里所有串口设备,识别到的直接填进下拉框:
知道端口也可以直接手填 /dev/ttyUSB0 或 /dev/ttyACM0,就是第二步里 ls 看到的那个。
③ 填波特率
/dev/ttyUSB0 + 115200,也就是盒子上插着的那个口。| 模块 | 常见波特率 |
|---|---|
| Quectel LG290P | 115200 或 460800 |
| u-blox ZED-F9P | 38400(走原生 USB 口时不看这个值) |
| Unicore UM980 | 115200 |
| Quectel LC29H | 115200 |
不确定就填 115200。正常出数据时这个值必须对,填错了状态页里一个字节都不会动。
④ 填云端 Caster
同一页往下滚,找到 NTRIP Caster Upload 这一块。要填的就是五项:
| 字段 | 填什么 |
|---|---|
| 地址 | Caster 的域名或 IP。自己搭的填自己服务器;用 RTK2GO 就填它给的地址 |
| 端口 | 一般是 2101,少数服务会另指一个,按对方给的填 |
| 挂载点 | 你的基站在 Caster 上叫什么名字。流动站就是靠这个名字找基站 |
| 用户名 / 密码 | Caster 给你开的源账号,不是流动站账号,权限不一样,别搞混 |
| 上传间隔 | 多少秒推一次。默认值就够,除非 Caster 那边明确要求 |
没有 Caster 可推?两种办法:先用 2RTK 的免费测试服务器试通链路, 或者自己搭一台,见 NTRIP Caster 搭建。只给局域网用的话,也可以开盒子里自带的本地 Caster,见附篇。
⑤ 保存重启,看数字动起来
填完拉到底点保存,页面会重启服务。然后回到状态页(首页 /),10~20 秒内应该看到:
- 卫星数往上涨,一般二三十颗;
- 位置解算出来,经纬度有了具体数值;
- RTCM 输出区列出
1005、1074、1094、1114、1124、1134这些报文类型; - Caster 那一栏的连接状态亮起来。
看到这些,站就已经在干活了
状态页是这个程序的主视图,平时看它就够了。模式、串口、卫星数、位置、RTCM 输出、运行时长都在上面, 走 WebSocket 推送,数字会自己跳,不用刷新。
serial、卫星数几十颗、位置有了、RTCM 在播发。
| 现象 | 先查什么 |
|---|---|
| 卫星数是 0 | 串口或波特率错了。回第四步②③,两次都填对才算数 |
| 有卫星、没位置 | 天线被挡了。搬到窗外或楼顶,等一两分钟重新搜星 |
| 有位置、Caster 不亮 | 地址 / 端口 / 挂载点 / 源账号有一项不对,或者在 Caster 上这个挂载点已被别人占用 |
| 全部正常但流动站拿不到固定解 | 流动站连的挂载点不对,或者它离基站太远(超过 20~30 km 精度会掉) |
到这儿主线就完了。坐标现在还是模块自己算的粗值,精度在分米到米级—— 给农机自动驾驶、放样这种要求厘米级的活,得把坐标定准,见下一节。
附篇
附篇一:天线怎么固定在室外
RTK 基站的天线跟电视天线不一样:它要的是整片天空,不是某个方向。 所以判断位置好不好,只看三条:
- 仰角 10° 以上没有遮挡。墙、树、广告牌、光伏板都算遮挡。
- 装上之后不会动。天线挪一厘米,基站的坐标就错一厘米,而且是永久的。
- 离金属和大功率设备远一点。屋顶水箱、空调外机、避雷针都会影响信号。
楼顶的规范做法
-
找承重结构,别找栏杆
女儿墙内侧、楼梯间外墙、水箱支架这类固定的混凝土或实心砖结构。栏杆、彩钢瓦、通风管一律不要 ——风一大它们自己就在晃。
-
立杆垂直,膨胀螺丝打进墙里
直径 40~50 mm 的镀锌钢管或铝管,长度一米到一米五。用膨胀螺丝配支架固定,别用抱箍夹在管子上。 立杆顶端要高出女儿墙至少半米,不然低仰角的卫星还是被墙挡着。
-
天线拧上去,螺纹涂防水胶
蘑菇头天线的底面有个 5/8 英寸或 M8 的螺纹孔,拧到立杆顶端的转接头上。螺纹和接头全部做防水, 户外基站的头号杀手是进水,不是软件。
-
馈线下来,做滴水弯
馈线从天线往下走的时候,在进入室内之前绕一个向下的弯(滴水弯),雨水就不会顺着线灌进屋。 改用 LMR400 这类低损耗同轴,长度尽量控制在 10 米以内,接头全做防水。
-
避雷和接地
天线高于周围建筑时,必须做接闪:加同轴避雷器,外壳接地,接地电阻尽量做到 4 Ω 以下。 嫌麻烦也至少做到——打雷时把馈线拔下来,比什么都管用。
天线高:量的是什么
这里有个必须搞清楚的概念:RTCM 里的坐标不是立杆底部、不是楼顶地面, 而是天线的相位中心(Antenna Phase Centre,APC)——一个在天线内部、跟着信号入射角会飘几毫米的虚拟点。
| 你手上的坐标是 | 怎么换到相位中心 |
|---|---|
| 地面控制点(标石中心) | 加天线高:从控制点量到天线参考点(ARP),再加天线厂给的相位中心偏移 |
| 立杆顶端(天线底面) | 加厂家规格书里的相位中心高度,一般几厘米 |
| 别人用流动站直接测的天线位置 | 已经是相位中心,直接用 |
量垂直高,别量斜高。量斜高再乘余弦,多一步换算就多一个出错的机会。 量两次、换个人复核一次——几厘米的差错,在 RTK 里就是几厘米的系统误差,而且事后补救不回来。
附篇二:把盒子刷成 Armbian
盒子出厂是安卓,而 2RTK Server 只能跑在 Linux 上。只要刷成功,后面全是点鼠标, 所以这一步值得多花点时间挑对镜像。
1. 确认型号,找对镜像
拆开看主控丝印,或者查盒子型号对应的 SoC。拿到 SoC 之后去 Armbian 官网的 Download 页找板型。 玩客云(OneCloud,S805)这类没有官方板型的,用社区维护的 Armbian 镜像; 树莓派最省事,官方 Raspberry Pi OS 64-bit 也行——2RTK Server 只要求 Debian 系 + Python 3.8 以上。
2. 烧录
用 balenaEtcher 或 Rufus 把 .img 写进 SD 卡或 U 盘,比命令行 dd 少踩坑。
部分 Amlogic 盒子要走厂商的 USB 烧录工具线刷,或者先短接进刷机模式——这一步照社区帖子做,
同型号的教程基本通用。
3. 首次开机
插卡、接网线、上电。等两三分钟,从路由器后台找到它的 IP,SSH 进去(Armbian 首次登录会要求改 root 密码、建普通用户)。 然后确认三件事:
uname -m # 应该是 aarch64 或 armv7l python3 --version # 3.8 以上 df -h / # 至少留 2 GB 空余 free -m # 512 MB 也能跑,1 GB 更稳
三项都对,就可以回去做第一步:准备材料了。
刷坏了怎么办?Amlogic 的盒子几乎都能救回来:重新短接进刷机模式,用 USB_Burning_Tool 线刷。 别急着扔,先搜型号 + 「救砖」。
附篇三:坐标怎么定准(一键标定)
到第四步为止,站已经在出数据了,但它报出去的坐标多半不准——可能是模块自收敛出来的米级值, 也可能是原厂软件里随手填的。基站坐标差一米,每个流动站的结果就差一米,事后没有软件补救得回来。
这就是 2RTK Server 相比「用原厂软件配好模块就完事」多出来的功能:程序自己驱动模块走完一整套命令, 切流动站、连 CORS、等固定解、取平均、写回、切回基准站,失败还会把模块恢复原样。你只需要在网页上选一种方式、点开始。
先分清两件事。「把模块设成基准站」是模式问题——模块是 Base 还是 Rover;
「标定」是坐标问题——基准站对外宣称自己站在哪个点上。
标定只管后者。模式在第四步已经用 serial 解决了。
顺序上很自由。可以现在做,也可以先让站带着粗坐标跑几天,回头再来标。 唯一的要求:做的时候天线已经固定牢,整个过程中不能动。
四种方式,挑一个
/calibrate)的四种方式。选完点开始,程序自己跑完整个流程。四种方式的差别,说到底是「坐标从哪儿来」:从 CORS 来、从模块自己长时间平均来、 从别人测好的结果来,还是你自己写进去。走完动作都一样——把坐标写进模块,再把模块切回基准站。
| 方式 | 坐标来源 | 适用 | 精度 |
|---|---|---|---|
| ① CORS 一键固定 | 已知 CORS / NTRIP 服务的差分解 | 模块支持 Rover + Base 双模式(如 LG290P) | 厘米级,精度与坐标系由 CORS 决定 |
| ② 仅测量 Survey-in | 模块自己长时间静态平均 | 任何能单独做流动站的模块,没有 CORS 账号 | 分米级,秒到十几分钟 |
| ③ 外部坐标 | 别的模块、别的站已经标定好的结果 | 手上有同点多测的已知坐标,或多台模块共用一点 | 等于所引用坐标的精度 |
| ④ 手动写入 | 你自己填的数 | 坐标来自测绘图、控制点成果表 | 取决于数据本身,填错就全错 |
① CORS 一键固定:程序替你走完一整轮
这是最准的方式,也是本程序跑得最完整的一条路。前提是模块同时支持流动站和基准站两种工作模式, LG290P 就是这种,也是目前唯一做过真机验证的型号。程序实际做的动作是这样的:
准备吃差分
订阅挂载点
收敛到 Fixed
厘米级点位
开始发 RTCM
所以要你准备的只有一样东西:一个能用的 CORS 账号,或者一个 NTRIP Caster 的站点信息—— 地址、端口、账号、密码、挂载点。测出来的精度和坐标系,完全由这套校准数据决定: 连的是 CGCS2000 的省级 CORS,结果就是 CGCS2000 的厘米级坐标;连的是某个虚拟参考站服务, 结果跟着那个服务走。程序不参与判断,它只是把 CORS 给的答案搬进模块。
没有 CORS 账号也能曲线救国:第四步里配置的那个云端 Caster,如果上游本来就是差分源,同样可以拿来当校准参考。 不过最省事的还是本地或省级 CORS,账号申请一次能用很久。
② 仅测量 Survey-in:不连任何服务,靠自己熬时间
没有 CORS 账号、或者模块只能当流动站不能切基准站的时候用这个。思路和 ① 前半段一样—— 也是把模块当流动站、在固定点上做静态观测——区别是没有外部差分数据, 模块靠自己的载波相位长时间平均,一点点把随机误差压下去。
程序做的事少一些:让模块进入 Survey-in 模式,等它跑够时长、达到收敛门限,把结果坐标记录到本地, 然后写进配置。这里的关键是「记录到本地」——这份坐标存下来以后, 可以给别的模块直接用,也就是下面第 ③ 种方式的数据来源。
时间换精度。几分钟出的是米级到分米级,想稳到分米以内,得让它安静地跑十几分钟到一小时以上, 中间天线不能动、不能断电。这也是为什么它排在 ① 后面——同样的等待,连上 CORS 早就 Fixed 了。
③ 外部坐标:一次测量,多台模块共用
这个点是给「已经有人替你测过」的情况准备的。基站天线位置一旦定死,坐标就是个常量, 没必要每换一台模块就重新测一遍——把上一次的结果拿来用就行。典型场景:
- 先用 ① 或 ② 把这一点测准(比如拿一台 LG290P 走 CORS 固定),结果存在系统里;
- 之后换模块、换机器,甚至拿一台只能当基准站、切不了流动站的模块来顶班,直接引用这条已有坐标;
- 同一根立杆上装了两套设备做冗余,共用一份坐标,不会出现两个基准站报出两个点的情况。
程序会读出本地已保存的坐标记录,你确认用哪一条,它写进模块并切基准站,不再走扫描、收敛那一套。 代价也很清楚:精度就等于那条被引用的坐标,天线只要挪过位置,这条记录立刻作废, 必须回到 ① 或 ② 重测。
④ 手动写入:你说了算
坐标已经在手上,就别绕圈子了——测绘图上的控制点、成果表里的已知点、甲方给的点位, 直接填进去最快。程序只做两件事:校验格式、写进模块并切基准站,顺手存一条记录备查。
它是四种方式里的兜底:模块不被支持、CORS 连不上、Survey-in 收敛不了,最后都能落到这里。 但也是唯一一种没有任何校验的方式——填错一个数字,站照样正常出数据, 只是每个流动站的结果都跟着错,而且错得很安静。填之前把度分秒和十进制小数确认一遍,别混着用。
只有 LG290P 做过真机验证。用其他型号时,建议先用流动站模式把天线坐标测出来、存进系统(②或③), 再拿这个坐标把模块设成基准站。这样即使自动标定在某个型号上不灵,你手上也有一份真坐标。
实际操作:点几下就完事
先重申那个前提:天线已经固定牢、能看见天空,整个过程中不能动。坐标就是天线的位置, 天线一动,测出来的数立刻不是这个点的了。
四种方式的界面流程一样,只在「方式」和参数卡上有差别。以 CORS 为例,从头到尾是这几下:
- 打开
/calibrate,点扫描串口,等它列出/dev/ttyUSB0或/dev/ttyACM0; - 点识别模块,程序读出型号、固件、当前模式,确认认得出这颗模块;
- 选CORS 一键固定,填服务商给的地址、端口、账号、密码、挂载点;
- 点开始,剩下的交给它——扫描、切模式、等固定解、取平均、写回、切 Base。
换成 ② ③ ④,区别只是第 3 步换成对应选项、参数卡少填几项。全程不用干预。
标定失败了?页面会把失败在哪一步写出来,模块也会被恢复到标定前的状态,站不会因此停掉。 常见原因:CORS 账号不对、天线被挡收不到固定解、模块型号不被支持。
附篇四:中继模式,把别人的基站搬过来
relay 模式不是从模块读数据,而是从另一个 Caster 拉一路流,再重新分发出去。
三种情况用得上:
- 手里还没模块。拿公开流把 Caster、防火墙、流动站这几段链路先打通。
- 给已有基站做备份。上游断了,下游还能从别处拿数据。
- 一路流分发给多个消费方。不用让每个人都去连原始 Caster。
relay,下方会出现上游 Caster 的填写区域。
附篇五:打开内置本地 Caster
程序自己就是一台 Caster,监听 2102 端口,挂载点固定叫 2RTK。
适合局域网内使用,或者你完全不想依赖外部服务的时候。前提是流动站和盒子在同一个网里。
流动站连 http://盒子的IP:2102/2RTK 就行,不需要额外的账号。
附篇六:接数传电台
通过第二个串口接一台透传电台,把 RTCM 打到空中。适合完全没网的野外,或者测绘队习惯用电台的场合。 电台那一端配对好之后,流动站直接收,不用连任何服务器。
附篇七:出问题了先看这几条
| 现象 | 原因 | 怎么办 |
|---|---|---|
浏览器打不开 :5757 | IP 找错了,或者服务没起来 | 路由器后台核 IP;盒子上 systemctl status 2rtkserver |
2rtk.local 打不开,IP 能开 | 本机代理(Clash、v2rayN、VPN)劫走了 .local | 把 *.local 加进直连列表,或者干脆一直用 IP |
| 卫星数一直是 0 | 串口或波特率不对 | 重新扫一次串口;确认填的是 ls 看到的那个口 |
| 有卫星、没有位置 | 天线被挡 | 搬到窗外或楼顶,重启一下服务重新搜星 |
| Caster 一直连不上 | 地址 / 端口 / 账号 / 挂载点有一项不对 | 先在本机 curl -s --max-time 10 http://Caster地址:2101/ 试试通不通 |
| 跑着跑着数据停了 | USB 供电不稳,或模块被电源波动搞挂了 | 换带独立供电的 USB Hub,或者换 5 V 电源 |
| 坐标每天都在慢慢漂 | 自收敛得到的坐标,精度本来就在分米级 | 正常现象。要准就做一键标定 |
大部分「玄学问题」都能被一个动作解决:断电,等十秒,再上电。 模块需要完整重新捕获一遍,很多「Caster 坏了」的报告其实是模块状态机没清干净。
不要把 5757 和 2102 端口直接暴露到公网。
这套 Web 界面是给可信局域网用的。要远程访问请走 VPN,或者用反向代理加一层认证。