其他问题¶
Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.
设备发烫严重怎么办?¶
先确认温度是否真的过高¶
执行以下命令获取设备当前温度:
qpi-config dump temperature
若温度超过80°C,需立即采取降温措施。
定位发热源¶
排查CPU:
# 查看CPU占用率
top -b -n 1 | head -20
# 查看各核心频率(确认是否持续保持在最高频率)
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
# 查看是否启用了performance调度器
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
排查GPU:
cat /sys/class/kgsl/kgsl-3d0/gpu_busy_percentage 2>/dev/null
cat /sys/class/kgsl/kgsl-3d0/max_gpuclk 2>/dev/null
排查存储:
iostat -x 1 3 # 查看%util
软件层面降温措施¶
降低CPU频率:
# 查看可用频率
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
# 设定最大频率(例如1.6 GHz)
echo 1651200 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
切换调度器为schedutil:
echo schedutil > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
降低GPU最高运行频率:
# 查看可用频率
cat /sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies
# 设定最大频率(例如550 MHz)
echo 550000000 > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
检查是否存在异常进程:
ps aux --sort=-%cpu | head -10
物理散热措施¶
确保Quectel Pi H1处于通风良好的环境中;
部署外部主动散热模块,当设备温度超过设定阈值时,风扇将自动提高转速以强化散热。
某个库使用异常怎么办?¶
确认异常现象并定性¶
链接错误:编译时出现 cannot find -lxxx,或运行时出现 cannot open shared object file;
运行时崩溃:抛出 undefined symbol: xxx 或触发 Segmentation fault;
功能异常:库加载成功,但调用特定API时无响应或返回异常错误码。
检查库文件是否存在及其搜索路径¶
1. 查找库文件
find /usr/lib /usr/local/lib /lib -name "libxxx.so*"
# 2. 检查动态链接器是否能够识别该库
ldconfig -p | grep libxxx
# 3. 检查LD_LIBRARY_PATH是否包含该路径
echo $LD_LIBRARY_PATH
若库文件存在于非标准路径,需设置 LD_LIBRARY_PATH 环境变量,或在 /etc/ld.so.conf.d/ 目录中添加对应路径配置文件,并执行 ldconfig 命令以更新缓存。
检查依赖关系(解决“未定义符号”)¶
# 查看该库依赖哪些其他库(比ldd更安全,不会执行代码)
readelf -d /path/to/libxxx.so | grep NEEDED
# 检查某个符号是否存在于该库中
nm -D /path/to/libxxx.so | grep " T " | grep symbol_name
# 或
readelf -s /path/to/libxxx.so | grep symbol_name
若符号未定义,通常表明库版本不匹配或存在缺失的依赖库;若符号存在但应用程序仍报错,则可能是链接顺序问题或ABI不一致所致。
检查库版本与ABI兼容性¶
# 查看库的实际版本字符串
strings /path/to/libxxx.so | grep -i version
# 查看库的SONAME(链接器使用的名字)
readelf -d /path/to/libxxx.so | grep SONAME
若应用程序在构建时链接到 libxxx.so.1,而系统仅提供 libxxx.so.2,即使新版库包含所需符号,ABI不兼容仍可能导致应用程序在运行时崩溃。确认两个库版本的ABI兼容后,可创建符号链接(ln -s libxxx.so.2 libxxx.so.1)作为临时解决方案。长期来看,应安装与应用程序兼容的库版本,或基于系统现有的库重新编译应用程序。
跟踪运行时动态库加载过程(诊断加载失败)¶
# 1. 查看动态链接器加载的库,确认是否加载了错误版本
LD_DEBUG=libs ./your_app 2>&1 | grep libxxx
# 2. 使用strace追踪库文件打开过程
strace -e openat,open ./your_app 2>&1 | grep libxxx
# 3. 若应用程序启动后立即崩溃,使用gdb定位崩溃位置
gdb ./your_app
(gdb) run
(gdb) bt # 崩溃时查看调用栈
如何更新第三方驱动?¶
获取官方SDK,下载方式请参考 镜像构建。
在 sources/quectel-src/kernel 目录下添加第三方驱动源码。
在 sources/quectel-src/kernel/qcom-6.6/arch/arm64/boot/dts/qcom/qcs6490-idp-pi.dts 文件中添加对应外设的设备树节点。
编译系统镜像并将其烧录至Quectel Pi H1,然后进行驱动功能测试。
运行速度慢怎么办?¶
Quectel Pi H1运行性能低下,通常并非由单一因素导致,而是CPU调度、内存压力、存储I/O、温度降频、软件配置等多种因素交织作用的结果。
快速定位瓶颈¶
# 1. 查看系统整体负载(1/5/15 分钟)
uptime
# 如果load average长期 > CPU核心数(8 核 > 8.0),说明CPU资源不足
# 2. 查看CPU使用率分布(用户态/系统态/软中断/空闲)
mpstat -P ALL 1 3
# 3. 查看内存与交换分区(是否用到swap)
free -h
# 如果available < 10%且swap used > 0,说明内存不足
# 4. 查看存储I/O瓶颈(%util接近100%说明磁盘是瓶颈)
iostat -x 1 3
# 5. 查看温度与降频(判断是否发生过热降频)
qpi-config dump temperature
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
关键指标判定标准:
温度 > 80°C:热节流导致降频
free -h 中available极少:内存不足
采取针对性优化措施¶
CPU瓶颈(%us或%sy长期 > 60%)¶
查找占用CPU资源最高的进程;
降低相机等外设的负载;
提升关键线程的实时优先级(如调整调度策略)。
内存瓶颈(available极低,且swap used大于0)¶
查看内存占用排名前10的进程(Top 10);
清理冗余的日志文件;
检查是否存在DMA-BUF或ION内存泄漏。
存储I/O瓶颈(iostat中%util接近100%)¶
查找写入I/O最多的进程;
减少不必要的日志写入;
检查是否存在进程频繁写入文件的情况。
热节流(温度过高导致降频)¶
确认当前是否已触发降频机制;
采取物理或软件层面的主动散热措施。
如何设置开机启动?¶
systemd 是几乎所有主流发行版(包括Yocto构建的系统)的标准init系统。它提供了强大的依赖管理、自动重启、环境变量配置等功能。
创建服务单元文件¶
在 /etc/systemd/system/ 目录下创建.service文件,例如 my-camera.service:
[Unit]
Description=My Camera Service
After=network.target # 在网络启动后启动(按需调整)
[Service]
Type=simple # 或forking, oneshot等
ExecStart=/usr/bin/my_script.sh
Restart=on-failure # 自动重启
User=root # 指定运行用户(通常为root)
WorkingDirectory=/opt/my_app
[Install]
WantedBy=multi-user.target # 在系统进入多用户模式时启动
启用并启动服务¶
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启用开机自启(创建符号链接)
sudo systemctl enable my-camera.service
# 立即启动(可选)
sudo systemctl start my-camera.service
# 查看状态
sudo systemctl status my-camera.service
如何安装第三方驱动?¶
获取驱动模块文件:获取第三方驱动源码,并在与Quectel Pi H1内核版本匹配的环境中进行交叉编译,生成.ko驱动模块文件;
传输驱动文件:将编译好的.ko文件通过scp、adb或U盘等方式传输至Quectel Pi H1。
加载与卸载驱动:
执行 insmod 加载驱动:
insmod your_driver.ko
执行 rmmod 卸载驱动:
rmmod your_driver
执行 lsmod 查看当前系统已加载的所有模块。
lsmod
未找到解决方案怎么办?¶
访问常见问题页面:
https://www.quectel.com.cn/faqs
前往技术论坛提问: