跳到主要内容

常见问题 FAQ

安装部署

Q: RTKHUB 需要安装吗?

A: 不需要。下载后直接运行即可,所有依赖已静态链接。

Q: 支持 Linux 吗?

A: 部分支持。需要使用 CMake 自行编译。

Q: 可以在云服务器上部署吗?

注意

在云服务器上部署时,必须将监听地址修改为 0.0.0.0(通过环境变量 RTKHUB_WEB_BIND=0.0.0.0 或启动参数),并配置防火墙规则只开放必要端口。

A: 可以。注意修改监听地址为 0.0.0.0,并配置防火墙。

Q1: 首次启动后找不到管理员密码怎么办?

A: 首次启动时,系统会在控制台打印随机生成的管理员密码,格式如下:

[INFO] Created default admin user: admin
[INFO] Default admin password: Abc123XyZ789

如果错过了密码输出,可以:

  1. 停止 RTKHUB
  2. 删除 database/rtkhub_users.db
  3. 重新启动 RTKHUB,系统会重新生成管理员账号和密码

Q2: 访问 Web 界面显示 401 Unauthorized 怎么办?

A: 这表示未登录或会话已过期。解决方法:

  1. 访问 http://127.0.0.1:5426/ 会自动跳转到登录页面
  2. 使用管理员账号(admin)和密码登录
  3. 如果忘记密码,参考 Q1 重置数据库

Q3: 端口 5426 或 5427 被占用怎么办?

A: 检查端口占用情况:

# Windows
netstat -ano | findstr :5426
netstat -ano | findstr :5427

# 结束占用进程(替换 <PID> 为实际进程 ID)
taskkill /PID <PID> /F

或者修改配置文件中的端口号(需要修改源码重新编译)。

Q4: 启动后浏览器无法访问 Web 界面?

A: 检查以下几点:

  1. 确认 RTKHUB 已成功启动(控制台显示 [INFO] HTTP server started on port 5426
  2. 确认防火墙未阻止端口 5426
  3. 尝试使用 http://127.0.0.1:5426/ 而不是 localhost
  4. 检查浏览器版本是否符合要求(Chrome 90+、Firefox 88+、Edge 90+)

功能使用

Q: 最多支持多少条基线?

信息

默认支持 500 条基线(MAX_CHANNEL=500)。如果需要更多基线,可以修改源码中的 MAX_CHANNEL 宏定义并重新编译。增加基线数量会相应增加内存和 CPU 占用。

A: 默认 500 条。可以修改源码中的 MAX_CHANNEL 重新编译。

Q: 可以导出定位结果吗?

A: 可以。结果保存在 result/ 目录,格式为 RTKLIB 标准 pos 文件。

Q: 支持多用户同时访问吗?

A: 支持。内置完整的用户认证和权限管理系统。

Q: 可以修改 Web 端口吗?

A: 可以。使用 -w 参数:

.\rtkhub.exe -s -k conf\rtkhub.list -w 8080

Q5: 如何添加新的 RTK 网络或基线?

A: 编辑 conf/rtkhub.list 文件,添加新的网络块:

[NewNetwork]
dir=./result/%Y/%n/
netllh=纬度,经度,高度
./conf/NewNetwork/station1.conf,站点名称,纬度,经度,高度,参考纬度,参考经度,参考高度

然后重启 RTKHUB 或使用控制台命令重新加载配置。

Q6: STRHUB 和 RTKHUB 有什么区别?

A:

  • RTKHUB:多网络 RTK 监控系统,负责 RTK 解算、监控、Web 界面、用户管理
  • STRHUB:轻量级流转发工具,仅负责 GNSS/NTRIP/RTCM 数据流的转发,不做 RTK 解算

两者可以独立运行,也可以配合使用(STRHUB 转发数据给 RTKHUB)。

Q7: 支持哪些 GNSS 系统?

A: 支持以下系统(取决于 RTKLIB demo5 配置):

  • GPS(美国)
  • GLONASS(俄罗斯)
  • Galileo(欧盟)
  • BDS/北斗(中国)
  • QZSS(日本)
  • NavIC/IRNSS(印度)

可以通过配置文件或命令行参数 -sys 选择启用的系统。

Q8: 如何重置管理员密码?

A: 有两种方法:

  1. 通过管理员账号:登录后进入"用户管理"页面,点击"重置密码"
  2. 删除数据库:停止 RTKHUB,删除 database/rtkhub_users.db,重启后会重新生成

性能相关

提示

小规模部署(1-10 条基线)对硬件要求很低,普通 PC 即可胜任。大规模部署(100+ 条基线)建议使用多核 CPU 和充足内存,并逐步增加基线以观察资源变化趋势。

Q: 单条基线占用多少资源?

A:

  • 启动时:约 14MB 内存
  • 稳定运行:约 5.6MB 内存
  • CPU:单核心 < 5%(1Hz 采样率)

Q: 100 条基线需要什么配置?

A: 推荐配置:

  • CPU:16 核 3.5GHz+
  • 内存:16GB+
  • 磁盘:5GB+

Q15: 支持多少条基线?(详细)

A: 系统设计上限为 500 条基线(由 src/main/hubcmn.h 中的 MAX_CHANNELMAX_NET 宏定义决定)。

实际支持数量取决于硬件配置和数据采样率:

基线数量推荐配置
1-5 条双核 CPU + 2GB 内存
6-20 条四核 CPU + 4GB 内存
21-50 条八核 CPU + 8GB 内存
51-100 条十六核 CPU + 16GB 内存
100+ 条更高配置 + 32GB+ 内存

如需支持超过 500 条基线,可修改 hubcmn.h 中的宏定义并重新编译:

#define MAX_CHANNEL 1000 // 最大通道数
#define MAX_NET 1000 // 最大网络数

Q16: 如何提高 RTK 解算性能?

A:

  1. 使用更快的 CPU(RTK 解算是 CPU 密集型)
  2. 优化配置文件(降低采样率、减少历史数据保留)
  3. 关闭不必要的调试输出(-t 0
  4. 使用 Release 编译版本而非 Debug 版本

Q17: Web 界面可以从其他电脑访问吗?

A: 默认只监听 127.0.0.1(本机)。如需局域网访问:

  1. 修改源码中的监听地址为 0.0.0.0
  2. 重新编译
  3. 配置防火墙允许端口 5426
安全风险

公网暴露 Web 端口存在安全风险。建议配置强密码并限制访问 IP,或使用 VPN、堡垒机等安全接入方式。

安全相关

Q: 如何修改管理员密码?

A:

  1. 登录 Web 控制台
  2. 点击右上角用户图标
  3. 选择"修改密码"

Q: 忘记密码怎么办?

A: 删除用户数据库,重启后会重新生成:

Remove-Item database\rtkhub_users.db
.\rtkhub.exe -s -k conf\rtkhub.list
注意

此操作会删除所有用户账号和审计日志!

Q: 如何禁用外网访问?

A: 默认只监听 127.0.0.1,外网无法访问。

定位问题

Q: 无法获取固定解(FIX)?

A: 可能原因:

  1. 基线过长 - RTK 有效距离通常 < 20km
  2. 差分数据延迟 - Age 应 < 5 秒
  3. 卫星数不足 - 需要 ≥ 5 颗卫星
  4. 环境遮挡 - 改善天线环境
  5. 配置问题 - 检查频率和导航系统设置

详见 故障排查

Q: Age 持续很大怎么办?

A:

  • < 5s:正常
  • 5-30s:可用但精度降低
  • > 30s:数据过时,检查数据源

排查:检查基准站连接、网络延迟、NTRIP 账号

Q: Ratio 很低怎么办?

A: 改善方法:

  1. 增加观测时长
  2. 改善天线环境
  3. 使用多频多系统
  4. 检查周跳处理

EPHUB / STRHUB

Q: EPHUB 和 RTKHUB 是什么关系?

A: EPHUB 负责从多个 NTRIP 源汇集广播星历,经去重和质量控制后通过 TCP Server 输出。RTKHUB 可以连接 EPHUB 的输出端口获取稳定星历数据。两者独立运行,通过 TCP 连接集成。

Q: EPHUB 默认端口是多少?

A: EPHUB Web 管理界面默认端口 5428,可通过 -web 参数修改。输出流端口由配置决定,如 tcpsvr://:10010

Q: 如何在 Docker 中同时运行 RTKHUB 和 EPHUB?

A: 在 docker-compose.yml 中添加 EPHUB 服务,映射端口 5428 和输出端口,挂载 conf/ephub_conf/ 目录。详见 Docker 部署

开发集成

Q: 可以用 API 集成到自己的系统吗?

A: 可以。RTKHUB 提供完整的 RESTful API,详见 API 文档

Q: 前端可以定制吗?

A: 可以。修改 public/ 目录下的文件。

Q: 如何贡献代码?

A: Fork 仓库并提交 Pull Request。

故障排查

Q: 启动失败 - 端口被占用

错误:Cannot start web server on port 5426

解决:
1. 查看端口占用:netstat -ano | findstr 5426
2. 换端口:.\rtkhub.exe -w 8080

Q: 浏览器无法访问

检查清单:

  • RTKHUB 是否运行
  • 地址是否正确
  • 防火墙是否阻止
  • 是否使用 IE(不支持)

Q9: NTRIP 连接失败怎么办?

A: 检查以下几点:

  1. 确认 NTRIP 服务器地址、端口、挂载点正确
  2. 确认用户名和密码正确
  3. 检查网络连接(ping NTRIP 服务器)
  4. 查看日志文件(logs/ 目录)获取详细错误信息
  5. 尝试使用 -t 3 参数启动以获取调试跟踪输出

Q10: 数据库锁定错误怎么办?

A: SQLite 数据库被锁定通常是因为:

  1. 多个 RTKHUB 实例同时运行(检查并关闭其他实例)
  2. 数据库文件损坏(备份后删除 database/rtkhub_users.db,重启重建)
  3. 权限问题(确保 database/ 目录有写权限)

Q11: Web 界面显示数据但图表不更新?

A: 可能的原因:

  1. 浏览器控制台有 JavaScript 错误(按 F12 查看)
  2. 数据刷新率设置过低(在"系统配置"页面调整)
  3. 浏览器缓存问题(按 Ctrl+F5 强制刷新)
  4. 后端数据流中断(检查 RTK 通道状态)

Q12: 日志文件在哪里?

A:

  • 审计日志database/rtkhub_audit.db(按 event_date 查询)
  • 调试跟踪:启动时使用 -t <level> 参数指定输出文件
  • RTKLIB 日志:根据配置文件中的 file-tracefile 设置

Q13: EPHUB 添加无效输入/输出流后,为什么控制台不再持续打印 open failed?

A: 这是预期行为。EPHUB 控制台只保留命令交互结果,输入/输出流后台打开失败、重连失败和恢复过程写入 trace。启动时加 -x 1 即可查看输入/输出打开失败、重连、Web 启停等生命周期日志,例如:

.\ephub\x64\Debug\ephub.exe -k conf\ephub_conf\ephub.conf -x 1

Q14: EPHUB Web 页面中"当前告警"和"完好性事件"有什么区别?

A: "当前告警"来自 /api/active-alerts,表示仍未恢复的输入/输出或星历完好性问题;"完好性事件"来自 /api/alerts,是历史事件记录,包含已恢复的异常、源切换、输入/输出启动停止等事件。

还有问题?