How to turn your Raspberry Pi into a WiFi router using OpenWrt

LightDarkDarkDark

In this guide, I will be turning a Raspberry Pi into an OpenWrt router. This is good for travel, and it can connect to VPN servers to give you secure VPN internet.

What will you need?

Here is a list of items you will need:

Step 1: Bake the Pi

First, we need to install OpenWrt on the board. To do that, put the MicroSD card into the MicroSD card reader, then plug the MicroSD card reader into the computer.

Now install the Raspberry Pi Imager.

Once that is done, download the proper firmware from this site. Then, once you have the Raspberry Pi Imager open, select, click “Choose OS”. Then scroll down and click “Use Custom”, then select the location of the firmware that you downloaded from the OpenWrt Wiki.

Click “Select Drive”, then click the drive of the SD card reader.

Step 2: Connect to OpenWrt via SSH

Now, plug the ethernet cable into your Raspberry Pi, then plug the other end into your computer. Open Command Prompt, then run:

BATCH

ssh root@192.168.1.1

On the fingerprint prompt, type “yes”.

Step 3: Setting a password

When we used SSH to log in to the OpenWrt session, notice that it did not prompt us for a password. Super insecure. To set one, run the command. This is also how you change the password on any Linux device:

ASH SHELL

passwd root

Follow the prompts.

Step 4: Backing up all of the config files

Run all these commands, in order:

ASH SHELL

cd /etc/config/
cp firewall firewall.bk
cp wireless wireless.bk
cp dhcp dhcp.bk
cp network network.bk

Step 5: Netwok Configuration Settings

Run these commands. I hooked mine up to the LAN interface, if you want to use Wi-Fi, follow the official documentation. These will configure OpenWrt to connect to your network.

ASH SHELL

uci set network.lan.ipaddr=192.168.2.2
uci set network.lan.gateway=192.168.2.1
uci set network.lan.dns=192.168.2.1

uci commit
service network restart

Step 6: Partitioning

Create a partition to store data. We will install fdisk and use it:

opkg update
opkg install fdisk
fdisk /dev/mmcblk0

To create two partitions (one for /home and one for /srv), use the following fdisk commands.

  • p to print the current partition table.
  • n then e to create an extended partition.
  • n then l to create the first partition. When asked for the last sector, type +2G to make it 2GB large.
  • n then l to create the second partition. When asked for the last sector, leave empty to fill the remaining space.
  • w to write the partition table.

And reboot your Raspberry Pi!

Step 7: Creating a filesystem on our partitions

Run these commands:

ASH SHELL

mkfs.ext4 /dev/mmcblk0p5
mkfs.ext4 /dev/mmcblk0p6

Now we can mount the first partition at /home and the second at /srv. Both are on a flash SD card, the noatime flag is important.

ASH SHELL

opkg update
opkg install block-mount
block detect | uci import fstab
uci set fstab.@mount[2].target=/home
uci set fstab.@mount[2].enabled=1
uci set fstab.@mount[2].options=noatime
uci set fstab.@mount[3].target=/srv
uci set fstab.@mount[3].enabled=1
uci set fstab.@mount[3].options=noatime
uci commit

Create the srv mount point, as the other one already exists.

ASH SHELL

mkdir -p /srv

Mount both partitions.

ASH SHELL

block mount

Step 8: Set the hostname

ASH SHELL

uci set system.@system[0].hostname='thetechmaker-good.hi.testing'
uci commit

Step 9: Remove unused packages

OpenWrt was originally a Linux distribution for routers, so it might come with useless networking software you’ve never heard of. You can remove this with the following commands:

ASH SHELL

opkg remove --force-remove --force-removal-of-dependent-packages ppp ppp-mod-pppoe odhcpd-ipv6only dnsmasq hostapd-common luci luci-ssl-openssl luci-base lua luci-app-firewall luci-lib-ip luci-lib-jsonc luci-lib-nixio luci-proto-ipv6 luci-proto-ppp luci-theme-bootstrap uhttpd uhttpd-mod-ubus

Step 10: Done!