七千二百袋水泥
七千二百袋水泥
Published on 2025-06-08 / 0 Visits

树莓派安装OpenWRT完整指南:让旧设备变身专业路由器的45步实操教程

OpenWRT作为一款开源固件,可广泛应用于市售路由器设备。该固件不仅为老旧硬件提供了性能升级方案,也为新型设备解锁了定制化与高级功能特性。通过官方网站(https://openwrt.org/)可获取完整项目资源与文档支持。

Image

相较于树莓派官方系统镜像(通常超过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状态页面可实时监控内存与存储空间使用情况,这对规划软件安装至关重要: Image

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"界面搜索安装对应无线驱动: Image

启用无线网卡后,可实现多种网络部署模式:

  • 客户端模式:标准无线连接

  • 接入点模式:创建独立无线网络

  • 桥接模式:扩展现有无线网络

配置流程:进入LuCI的"Network->Wireless"扫描网络,编辑SSID配置时需同时勾选lan和wwan接口以确保有线/无线双接入: Image

SFTP远程文件管理

仅依赖SSH和Web界面操作效率较低,安装SFTP服务器可大幅提升文件管理效率:

opkg update
opkg install openssh-sftp-server

安装后可使用FileZilla等图形化工具进行远程文件管理,支持文件关联编辑(如Python脚本关联IDLE编辑器): Image

树莓派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 控制界面效果: Image

方案总结

  • OpenWRT能有效提升老旧树莓派硬件性能,实际测试显示运行效率显著改善

  • 习惯树莓派OS的用户初期可能不适应缺少预装软件和图形界面的环境

  • 部分软件(如Node-Red)的安装需要额外配置

欢迎在评论区分享您在树莓派上使用OpenWRT的实践经验和创新应用!

参考技术来源:https://funprojects.blog/2023/04/19/openwrt-on-pi-light-os-with-network-features/