rock5b plus 折腾记录

从淘宝上了个 rock5b+ 的板子, 16G内存, 买了七彩虹的固态 256G, 129 RMB.

踩坑一:

镜像无法从U盘刷, 以前windows 我都是直接通过 软碟通把系统镜像直接刷入u盘, 但rock5b+ 貌似不支持这么干. 无奈我买了个读卡器加SD卡, 我的板子到了 这个读卡器和SD卡都还没到, 又需要等两天.

tips: 貌似固态也是可以用来刷写镜像的, 但是需要硬盘盒这种连接设备

装备都到了

ok 今天装备都齐了, 一个 sd卡, 一个读卡器, 这两个用来装系统, 一个固态硬盘,一个风扇, 一个 rock5b+板子.

如图

img_11

下载系统镜像.

从 第三方下载 ubuntu 镜像.

1
https://joshua-riek.github.io/ubuntu-rockchip-download/boards/rock-5b-plus.html

我选择的是这个镜像.

img_11

开工把, 刷系统.

  1. 按照 官方文档 下载 SPL Loader, SPI Image. 还有 balenaEtcher-Setup-1.18.11.exe

  2. 打开 balendEtcher, 选择ubuntu 镜像文件, 然后我们的 SD卡, 然后点击烧录,显示正在烧录中, 界面如下:

img_11

等了大概7,8分钟, 显示如下界面:

img_11

看来烧录镜像估计要 10分钟左右, 我的机器是 windows 11, 32G内存, 512G rom, 处理器是 intel Ultra5 125H, 这颗U 相当于 i5-13500H 的性能, 这个配置下, 烧录系统镜像需要10分钟.

img_11

ok, fine, 太好了, 烧录好了.

自我怀疑

按开机键发现没有任务反应, 风扇也不转. 我甚至想退货了, 买到了坏的板子.
然后还是按照官方的文档, 发现没有插sd卡到主板上, 插上sd卡后,发现主板的等从绿色变成了蓝色. 然后再按开机键,过了几秒,指示灯从蓝灯变成了蓝绿交替, 进入系统了, 然后进入了熟悉的图形界面 Ubuntu 的界面,简单设置了语言, 时区, 账密后,进入了系统。

参考 https://docs.radxa.com/rock5/rock5b/getting-started/interface-usage/fan
后面问客服了解到需要温度达到60度风扇才转. 好吧 再忍一忍,起码线上能进入系统了, 说明1000大洋没买废铁。

踩坑二:

我简单安装了 zsh, vim 等工具后, 就去吃饭了, 也正常关机了。 但是第二次开机, 就有了如下报错, 进入不到系统了。
显示如下

img_11

下载官方镜像

https://docs.radxa.com/rock5/rock5b/download

ROCK 5B+ 系统镜像: rock-5b-plus_bookworm_kde_b2

然后正常玩了一个下午 开启了 openssh 可以远程连接。 发现又突然黑屏了。然后启动就启动不了了, 并且期间还重启了一次。坑爹啊。

下载armbian 试试。

https://www.armbian.com/rock-5b-plus/
https://www.armbian.com/rock-5b/

重装了一下,是个server版系统, 用了一下,还不错,好像还挺稳定的。开启了 ssh-server, 远程连接。 就是感觉cpu 和主板 有点发烫.

然后我按照 radxa 官方的教程 执行语句将风扇调至最高档

https://docs.radxa.com/rock5/rock5b/getting-started/interface-usage/fan

1
sudo cp /sys/class/thermal/cooling_device5/max_state /sys/class/thermal/cooling_device5/cur_state

但是只转了两三秒就停了。

于是问了下 chatgpt, 应该是控温策略导致的。温度还没有达到60度。

但是我还是觉得有点烫。于是写了个bash 脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
# 临时全速风扇脚本
# 持续将风扇设置为最大状态,直到手动停止
# 适用于 /sys/class/thermal/cooling_device4

# 获取最大风扇状态
MAX_STATE=$(cat /sys/class/thermal/cooling_device5/max_state)

echo "最大风扇状态: $MAX_STATE"

# 持续循环设置风扇
while true; do
# 写入当前状态
echo $MAX_STATE | sudo tee /sys/class/thermal/cooling_device5/cur_state > /dev/null

# 可选:打印当前 CPU 温度
TEMP=$(cat /sys/class/thermal/thermal_zone0/temp)
echo "CPU 温度: $((TEMP/1000))°C | 风扇状态: $MAX_STATE"

# 每秒刷新一次
sleep 1
done

img_11

可以看到 温度确实降下来了, 于是我关闭了 bash 脚本, 风扇依然再转。 很奇怪. 转吧 总比不转好.

ok 看看系统使用

1
df -lh

img_11

20250928
烧录系统后,SD卡内存变小的解决
https://blog.csdn.net/u010994456/article/details/117119317?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-15-117119317-blog-145263778.235%5Ev43%5Epc_blog_bottom_relevance_base5&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-15-117119317-blog-145263778.235%5Ev43%5Epc_blog_bottom_relevance_base5&utm_relevant_index=22

20250929
通过ssh 远程链接, 刷的radxa 的官方镜像, 系统长时间不用
会返回
Broadcast message from gdm@rockpi-4cplus on tty1 (Sun 2025-01-19 10:19:10 UTC):
The system will suspend now!

20260323 更新
我用一根其他的type c 的线插上 rock5b+, 发现只亮绿灯, 换上小米线后亮蓝色灯。 看来还是要充电头和充电线过关才行.

给出目前我在用的 rock5b+ 让风扇转起来脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/bash
# smart_fan_control.sh

TEMP_THRESHOLD=30000 # 30度(注意:通常是毫摄氏度)
FAN_ON_STATE=4
FAN_OFF_STATE=0
CHECK_INTERVAL=1

echo "智能风扇温度控制启动"
echo "温度阈值: 30°C"
echo "检查间隔: ${CHECK_INTERVAL}秒"
echo "按 Ctrl+C 停止"

while true; do
# 获取当前温度(尝试不同的温度传感器)
CURRENT_TEMP=""

# 尝试常见的温度传感器路径
for temp_file in /sys/class/thermal/thermal_zone*/temp; do
if [ -f "$temp_file" ]; then
temp=$(cat "$temp_file")
if [ ! -z "$temp" ] && [ "$temp" -gt 0 ]; then
CURRENT_TEMP=$temp
break
fi
fi
done

# 如果没找到温度文件,使用 sensors 命令
if [ -z "$CURRENT_TEMP" ]; then
CURRENT_TEMP=$(sensors 2>/dev/null | grep -E "Core 0|Package id 0|temp1" | head -1 | awk '{print $3}' | sed 's/[+°C]//g' | awk -F. '{print $1}')
# 转换为毫摄氏度
if [ ! -z "$CURRENT_TEMP" ]; then
CURRENT_TEMP=$((CURRENT_TEMP * 1000))
fi
fi

# 转换为摄氏度显示
if [ ! -z "$CURRENT_TEMP" ] && [ "$CURRENT_TEMP" -gt 1000 ]; then
TEMP_C=$((CURRENT_TEMP / 1000))
else
TEMP_C=$CURRENT_TEMP
fi

# 温度控制逻辑
if [ ! -z "$CURRENT_TEMP" ] && [ "$CURRENT_TEMP" -gt $TEMP_THRESHOLD ]; then
# 温度超过阈值,开启风扇
echo $FAN_ON_STATE | sudo tee /sys/class/thermal/cooling_device4/cur_state > /dev/null
FAN_STATE="开启"
else
# 温度低于阈值,关闭风扇
echo $FAN_OFF_STATE | sudo tee /sys/class/thermal/cooling_device4/cur_state > /dev/null
FAN_STATE="关闭"
fi

# 显示状态
clear
echo "=== 智能风扇控制 ==="
echo "当前温度: ${TEMP_C}°C"
echo "风扇状态: ${FAN_STATE}"
echo "阈值: 30°C"
echo "下次检查: ${CHECK_INTERVAL}秒后"
echo "按 Ctrl+C 停止"

sleep $CHECK_INTERVAL
done