OpenWRT作为一款开源固件,可广泛应用于市售路由器设备。该固件不仅为老旧硬件提供了性能升级方案,也为新型设备解锁了定制化与高级功能特性。通过官方网站(https://openwrt.org/)可获取完整项目资源与文档支持。
相较于树莓派官方系统镜像(通常超过1.7GB),OpenWRT的精简设计(仅176MB)使其完美适配老旧树莓派硬件,在运行速度和内存占用方面表现卓越。对于家庭和小型办公场景,OpenWRT能实现多种创新网络解决方案,例如将树莓派改造为无线接入点或配置为WLAN桥接设备。但需注意:树莓派自带的WiFi硬件性能无法媲美专业路由器设备。
本教程基于国外开发者的实践验证,核心内容包括:
在树莓派Model B上完整部署OpenWRT的详细流程
树莓派常用功能扩展指南(软件安装、GPIO控制、I2C配置等)
系统方案对比分析
在开启树莓派OpenWRT项目前,需明确其与标准树莓派操作系统的差异定位。
OpenWRT核心优势(对比Raspbian/Raspberry PI OS)
专为低端CPU优化,在有限内存环境下仍保持高速运行
聚焦网络功能强化
系统启动速度显著提升
占用存储空间极小,兼容老旧4GB SD卡(2GB卡可运行但软件扩展受限)
OpenWRT功能限制
无X-window图形桌面环境
缺乏类似raspi-config的便捷系统配置工具
初始安装为最小化系统,需手动安装基础工具(如Bash、Nano)
部分软件安装过程较复杂(例如Node-Red)
系统部署指南
虽然OpenWRT主要面向路由器设备,但在树莓派上运行具备独特优势:
设备变砖风险极低(传统路由器刷机常遇此问题)
SD/microSD卡提供比家用路由器更大的存储空间
HDMI接口支持本地直连操作(适合入门调试)
访问OpenWRT官方资源站获取树莓派专用镜像: https://openwrt.org/toh/raspberry_pi_foundation/raspberry_pi
推荐使用树莓派官方镜像工具(Raspberry Pi Imager)烧录SD卡。Linux系统可通过以下命令安装:
sudo apt update && sudo apt install rpi-imager
完成SD卡烧录后,可通过多种方式启动OpenWRT系统,以下是详细操作流程:
1. HDMI直连配置
连接显示器与键盘启动设备,在命令行界面设置静态局域网地址:
# 根据实际网络环境修改网关/DNS
uci set network.lan.proto="static"
uci set network.lan.ipaddr="192.168.0.140"
uci set network.lan.netmask="255.255.255.0"
uci set network.lan.gateway="192.168.0.1"
uci set network.lan.dns="192.168.0.1"
uci commit network
若需自动获取IP地址,执行:
# 启用DHCP并检查分配地址
uci set network.lan.proto="dhcp"
uci commit network
2. 网络接入配置
用网线连接树莓派与笔记本,重启设备。此时可通过两种方式管理:
访问OpenWRT网页管理界面
使用SSH命令行连接(推荐初始配置)
使用SSH连接示例(静态IP场景):
$ ssh root@192.168.0.140
首次登录将显示系统信息与安全警告:
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
OpenWrt 22.03.3, r20028-43d71ad93e
-----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:~#
3. 基础软件安装
初始OpenWRT为最小化系统,需手动安装基础工具包(注意:使用opkg而非apt):
# 更新软件源列表
opkg update
# 安装Bash与Nano编辑器
opkg install bash nano
# 安装Python3及pip管理工具
opkg install python3 python3-pip
# 安装GPIO控制工具
opkg install gpioctl-sysfs gpiod-tools
这些基础组件将显著提升树莓派项目开发效率。
LuCI网页管理界面
系统运行后,可通过LuCI界面配置网络接口与安装扩展软件。许多软件包包含对应的LuCI插件模块。
在LuCI状态页面可实时监控内存与存储空间使用情况,这对规划软件安装至关重要:
USB无线网卡配置
树莓派3/4代的内置WiFi可直接识别,但早期型号或需使用USB网卡的项目需手动配置:
1. 安装USB工具包
opkg update
opkg install usbutils
2. 识别设备信息
使用lsusb查看设备信息(以Realtek RTL8187B为例):
root@OpenWrt_Pi1:~# lsusb
Bus 001 Device 004: ID 0bda:8189 Realtek RTL8187B_WLAN_Adapter
Bus 001 Device 003: ID 0424:ec00
Bus 001 Device 002: ID 0424:9512
Bus 001 Device 001: ID 1d6b:0002 Linux 5.10.176 dwc_otg_hcd DWC OTG Controller
3. 安装驱动
通过LuCI的"System->Software"界面搜索安装对应无线驱动:
启用无线网卡后,可实现多种网络部署模式:
客户端模式:标准无线连接
接入点模式:创建独立无线网络
桥接模式:扩展现有无线网络
配置流程:进入LuCI的"Network->Wireless"扫描网络,编辑SSID配置时需同时勾选lan和wwan接口以确保有线/无线双接入:
SFTP远程文件管理
仅依赖SSH和Web界面操作效率较低,安装SFTP服务器可大幅提升文件管理效率:
opkg update
opkg install openssh-sftp-server
安装后可使用FileZilla等图形化工具进行远程文件管理,支持文件关联编辑(如Python脚本关联IDLE编辑器):
树莓派3功能验证实例
本测试在树莓派3上实现完整功能验证,重点测试USB电源控制(仅支持3/4代)、GPIO、I2C功能集成,最终通过uhttpd服务器展示控制界面。
GPIO配置流程
安装基础控制包:
opkg update
opkg install gpioctl-sysfs gpiod-tools
引脚初始化示例(以GPIO4为例):
# 创建GPIO4定义
echo 4 | tee /sys/class/gpio/export
# 设置输出模式
echo "out" > /sys/class/gpio/gpio4/direction
# 引脚置高
echo 1 > /sys/class/gpio/gpio4/value
# 读取状态
cat /sys/class/gpio/gpio4/value
# 删除定义
echo 4 | tee /sys/class/gpio/unexport
I2C功能配置
安装驱动与工具:
opkg update
opkg install kmod-i2c-bcm2835 i2c-tools
编辑启动配置文件:
nano /boot/config.txt
文件末尾添加:
dtparam=i2c1=on
dtparam=spi=on
dtparam=i2s=on
重启后使用i2cdetect检测设备:
i2cdetect -y 1
BME280传感器集成
安装支持库:
opkg update
opkg install python3 python3-pip python3-smbus
pip install bme280
读取数据:
read_bme280 --i2c-address 0x77
USB电源控制
安装控制工具:
opkg install usbutils uhubctl
控制命令(树莓派3/4适用):
# 开启端口2电源
uhubctl -l 1-1 -p 2 -a on
# 关闭电源
uhubctl -l 1-1 -p 2 -a off
# 切换状态
uhubctl -l 1-1 -p 2 -a toggle
Web控制界面开发
OpenWRT内置uhttpd服务器除支持LuCI外,还可用于自定义应用开发。将CGI脚本存放于/www/cgi-bin目录,并设置执行权限:
chmod +x /www/cgi-bin/mycgifile
网页控制实例
使用Pimoroni Explorer HAT Pro的LED控制示例:
#!/bin/bash
# setgpio - GPIO初始化脚本
for pin in 4 17 27 5
do
gpiodev=/sys/class/gpio/
gpiodev+=$pin
echo $pin | tee /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio$pin/direction
done
网页交互脚本:
#!/bin/bash
# toggle - CGI控制脚本
set -e
# GPIO控制逻辑
if [[ "$QUERY_STRING" =~ "gpio" ]]; then
pin=$QUERY_STRING
if [ "$(cat /sys/class/gpio/$pin/value)" == 1 ]; then
echo 0 > /sys/class/gpio/$pin/value
else
echo 1 > /sys/class/gpio/$pin/value
fi
fi
# USB电源控制
if [[ "$QUERY_STRING" =~ "usb" ]]; then
uhubctl -l 1-1 -p 2 -a toggle &> /dev/null
fi
# 传感器数据读取
data=$(read_bme280 --i2c-address 0x77)
# HTML页面输出
echo "Content-type: text/html"
echo ""
echo "<html><head><meta charset='UTF-8'><title>OpenWRT控制面板</title></head>
<body>
<h1>OpenWRT硬件控制中心</h1>
<h3>设备控制</h3>
<hr>
<button style='background-color:skyblue;' onclick='location.href=\"?gpio4\"'>LED1 (GPIO4)</button><br>
<button style='background-color:yellow;' onclick='location.href=\"?gpio17\"'>LED2 (GPIO17)</button><br>
<button style='background-color:red;' onclick='location.href=\"?gpio27\"'>LED3 (GPIO27)</button><br>
<button style='background-color:green;' onclick='location.href=\"?gpio5\"'>LED4 (GPIO5)</button><br><br>
<button style='background-color:white;' onclick='location.href=\"?usb\"'>USB电源切换</button><br>
<hr>
<h3>环境传感器</h3>
<b>$data</b>
</body></html>"
exit 0
访问地址:http://[树莓派IP]/cgi-bin/toggle 控制界面效果:
方案总结
OpenWRT能有效提升老旧树莓派硬件性能,实际测试显示运行效率显著改善
习惯树莓派OS的用户初期可能不适应缺少预装软件和图形界面的环境
部分软件(如Node-Red)的安装需要额外配置
欢迎在评论区分享您在树莓派上使用OpenWRT的实践经验和创新应用!
参考技术来源:https://funprojects.blog/2023/04/19/openwrt-on-pi-light-os-with-network-features/