Build a Bulletproof Portable Packet Radio Node with Pi Zero 2W & LinBPQ


Raspberry Portable Node

As a digital nerd and a craftsman at heart, I believe in one core principle when building systems: Kill complexity first, streamline the process, and then let the technology do the heavy lifting.

If you want to build a portable Packet Radio Node, a Digipeater, and a BBS that runs on battery power out in the field, you don’t need heavy hardware. A Raspberry Pi Zero 2W paired with a Mobilinkd TNC3 via USB is the ultimate minimalist setup. It’s highly efficient, draws minimal power, and gets the job done.

Here is the step-by-step blueprint to build this setup using LinBPQ. No theoretical fluff—just the exact commands and configurations you need to get your node on the air. Gemini AI has been a huge help to me. If you have any questions about the setup, feel free to check it out at Gemini.


Step 1: Laying the Foundation (The OS)

We are using Raspbian Trixie (Debian 13).

Crucial detail: Flash the 32-bit Lite version using the Raspberry Pi Imager. Why not 64-bit? The Pi Zero 2W only has 512 MB of RAM. A 64-bit OS is too “fat” and will quickly max out your memory, causing the system to swap to the slow SD card. We want a lean, mean machine. 32-bit is the perfect tool for this job.

Enable SSH in the Pi Imager so you can access the system remotely from your shack.

Step 2: Preparing the Toolbox

Once your Pi is booted and you are connected via SSH, let’s update the system and install the single tool we need for local node administration: the Telnet client.

sudo apt update && sudo apt upgrade -y
sudo apt install telnet -y

Step 3: Fetching the Materials (LinBPQ)

We need the specific 32-bit ARM binary of LinBPQ. We will create a working directory, download the software, and give it the necessary network permissions so it can run smoothly.

mkdir ~/linbpq
cd ~/linbpq
wget http://www.cantab.net/users/john.wiseman/Downloads/Beta/pilinbpq
chmod +x pilinbpq
sudo setcap "cap_net_admin,cap_net_raw=ep" pilinbpq

Step 4: The Blueprint (Configuration)

This is the heart of your node. We are skipping the bloated configurations and focusing only on what matters: the USB-connected Mobilinkd, a local Telnet access for you (the Sysop), the integrated BBS, and an automatic beacon (Digi ID) that fires every 10 minutes.

Create the configuration file:

nano bpq32.cfg

Paste this exact configuration (make sure to replace DL1GKK with your own callsign and set your personal password):

SIMPLE
NODECALL=DL1GKK-2      ; Your Node Callsign
NODEALIAS=GKKNOD       ; Your Alias
LOCATOR=NONE
LINMAIL                ; The master switch to activate the BBS
IDINTERVAL=10          ; Beacon interval in minutes

IDMSG:
DL1GKK-PiNode-BBS
***

; --- Radio Interface (Mobilinkd via USB) ---
PORT
  PORTNUM=1
  ID=Mobilinkd TNC3 (2m/70cm)
  TYPE=ASYNC
  PROTOCOL=KISS
  COMPORT=/dev/ttyACM0
  SPEED=9600
  MAXFRAME=4
  FRACK=5000
  RESPTIME=1000
  PACLEN=120
  TXDELAY=300
ENDPORT

; --- Local Telnet Access for Administration ---
PORT
  PORTNUM=2
  ID=Telnet Access
  DRIVER=Telnet
  CONFIG
  TCPPORT=8010
  USER=DL1GKK,yourpassword,DL1GKK,,1
ENDPORT

; --- BBS Setup ---
APPLICATION 1,BBS,,DL1GKK-8,GKKBOX,255

Step 5: The Autostart Engine (Systemd)

We don’t want to start the engine manually every time we apply power. We will configure LinBPQ as a background system service.

Create the service file:

sudo nano /etc/systemd/system/linbpq.service

Paste this block:

[Unit]
Description=LinBPQ Packet Radio Node
After=network.target

[Service]
User=pi
WorkingDirectory=/home/pi/linbpq
ExecStart=/home/pi/linbpq/pilinbpq
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Save and exit. Now, enable and start the engine:

sudo systemctl daemon-reload
sudo systemctl enable linbpq
sudo systemctl start linbpq

LinBPQ is now running silently in the background. You can access it anytime by typing telnet 127.0.0.1 8010 in your terminal, logging in with your callsign and password, and typing BBS.

Step 6: The Quick Switches (Bash Aliases)

As a sysop, you’ll occasionally need to stop or restart the node for maintenance. Instead of typing long commands, let’s wire up some shortcuts to your toolbelt.

Open your bash profile:

nano ~/.bashrc

Scroll to the very bottom and add these lines:

# --- LinBPQ Quick Switches ---
alias bpqstart='sudo systemctl start linbpq'
alias bpqstop='sudo systemctl stop linbpq'
alias bpqrestart='sudo systemctl restart linbpq'
alias bpqstatus='sudo systemctl status linbpq'

Save and exit, then reload the profile:

source ~/.bashrc

Now, simply typing bpqrestart in your terminal will reboot the node instantly.

Step 7: Bulletproofing (The Overlay File System)

Since this node is designed for portable operations, the battery might die, or the power cord might get yanked out. A sudden power loss can corrupt a standard SD card. To prevent this, we lock the filesystem.

By enabling the Overlay File System, all write operations are stored in the volatile RAM instead of the physical SD card. The card becomes read-only.

  1. Open the Raspberry Pi configuration tool: sudo raspi-config
  2. Navigate to Performance Options -> Overlay File System.
  3. Select Yes to enable it. (Also select Yes to make the boot partition read-only).
  4. Reboot the Pi.

Note: Because the system is now read-only, any new BBS messages received while out in the field will be lost upon reboot. If you want persistent BBS storage in the future, you can easily mount a separate, non-protected USB thumb drive specifically for the /logs and mail directories. For a purely portable digipeater and drop-in BBS, this bulletproof setup is perfect.

The hardware I use consists of a Quansheng UV-K5, a Raspberry Pi Zero 2W, a power bank and a Mobilinkd TNC3. As an alternative to the Mobilinkd TNC, it also works very well with a radio that has a built-in sound card and Direwolf, or a built-in TNC, such as the Kenwood TH-D75, VRC N76, or similar models. Important: For digital amateur radio, ferrite cores should be installed on all connecting cables to reduce high-frequency radiation.

Your portable Pi Zero 2W node is now fully operational, indestructible, and ready for the field.

Disclaimer: This setup was developed in collaboration with Gemini AI. While we’ve worked hard to make this guide as “bulletproof” as possible, tech is always evolving—errors may occur, or specific functions might need a bit of extra tweaking.

The solution? Don’t hesitate to ask Gemini yourself if you get stuck. Good luck with your build!


Vy 73 de DL1GKK!



Install linbpq raspberry pi zerro