This project contains a web user interface for controlling a CATS Radio device, consisting of a Raspberry Pi with a RF4463 hat.
- Show incoming packets, and store them in the sqlite database
cats-radio-node.db
- Allow the user to send custom packets
- Configure igate and other settings, stored in
node-config.toml
To get cats-radio-node running on your raspberry pi
- Prepare an SD card with latest Raspberry Pi OS, and boot your pi with it
- using
raspi-config
, enable the SPI Interface mkdir cats-radio-node
andcd cats-radio-node
wget https://mpb.li/pv/cats-radio-node-20240128.tar.gz
tar -xf cats-radio-node-20240128.tar.gz
sudo ./cats-radio-node
- And connect to it through HTTP on port 3000
If you want to compile it yourself:
- Do
sudo apt update
, installgit
- Install most recent rust compiler with rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Careful when installing Rust on a Raspberry Pi with a 64-bit kernel running a 32-bit userland:
rustup
will want to install the aarch64 toolchain, but that one doesn't work! - If that happens, be sure to install the
stable-arm-unknown-linux-gnueabihf
toolchain. - You either have to log out and log in again or source the env as instructed by
rustup
to have the Rust compiler in your $PATH
git clone https://mpb.li/git/cats-radio-node/
cd cats-radio-node
cargo build --bin cats-radio-node
sudo target/debug/cats-radio-node
Configuration read/write through UI is done.
RF4463 integration, message decoding and presentation, UI to send messages.
Tunnel IP packets through Arbitrary whiskers, using TUN.
Live update of incoming packets using WebSocket, in the 'Chat' window.
- Nicer UI for presenting incoming packets. For now it just shows the Comment whisker.
- igate integration
- Regular beacon transmission
If no radio is available, frames can be sent and received over UDP for debugging. cats-radio-node receives on 127.0.0.1:9073, and transmits to 127.0.0.1:9074.
The fake-radio
binary can be used to inject frames for that, and decodes those sent by cats-radio-node.
Build with cargo build --bin fake-radio