Web user interface for controlling a CATS Radio node

Overview

CATS Radio Node

This project contains a web user interface for controlling a CATS Radio device, consisting of a Raspberry Pi with a RF4463 hat.

Goals

  1. Show incoming packets, and store them in the sqlite database cats-radio-node.db
  2. Allow the user to send custom packets
  3. Configure igate and other settings, stored in node-config.toml

Installation

To get cats-radio-node running on your raspberry pi

  1. Prepare an SD card with latest Raspberry Pi OS, and boot your pi with it
  2. using raspi-config, enable the SPI Interface
  3. mkdir cats-radio-node and cd cats-radio-node
  4. wget https://mpb.li/pv/cats-radio-node-20240128.tar.gz
  5. tar -xf cats-radio-node-20240128.tar.gz
  6. sudo ./cats-radio-node
  7. And connect to it through HTTP on port 3000

If you want to compile it yourself:

  1. Do sudo apt update, install git
  2. 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
  1. git clone https://mpb.li/git/cats-radio-node/
  2. cd cats-radio-node
  3. cargo build --bin cats-radio-node
  4. sudo target/debug/cats-radio-node

Current state of the project

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.

TODO:

  • Nicer UI for presenting incoming packets. For now it just shows the Comment whisker.
  • igate integration
  • Regular beacon transmission

Additional tools

fake-radio

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

You might also like...
Simple Multi-User Chat

4at Simple Multi-User Chat. The code has fallen to "Rewrite it in Rust" disease. You can find the legacy Go version in ./legacy-go-version if you stil

Polkadot Node Implementation

Polkadot Implementation of a https://polkadot.network node in Rust based on the Substrate framework. NOTE: In 2018, we split our implementation of "Po

⋰·⋰ Feeless is a Nano cryptocurrency node, wallet, tools, and Rust crate.

⋰·⋰ Feeless What is Feeless? Feeless is a Nano cryptocurrency node, wallet, tools, and Rust crate. This is not the official project for Nano, only an

Statemint Node Implementation

Statemint Implementation of Statemint, a blockchain to support generic assets in the Polkadot and Kusama networks. Statemint will allow users to: Depl

Basilisk node - cross-chain liquidity protocol built on Substrate

Basilisk node Local Development Follow these steps to prepare a local Substrate development environment 🛠️ Simple Setup Install all the required depe

A node API for the dprint TypeScript and JavaScript code formatter

dprint-node A node API for the dprint TypeScript and JavaScript code formatter. It's written in Rust for blazing fast speed. Usage Pass a file path an

Substrate Node for Anmol Network
Substrate Node for Anmol Network

Anmol Substrate Node 🖼 🛠️ 👷 Anmol is the First Cross-Chain NFT Toolkit, on Polkadot. Introducing: Moulds NFT Breeding Multi-Chain NFT Migration ink

Manager for single node Rancher clusters

Bovine Manage single node Rancher clusters with a single binary, bovine. % bovine run Pulling [rancher/rancher:latest], this may take awhile... Ranche

Minimal Substrate node configured for smart contracts via pallet-contracts.

substrate-contracts-node This repository contains Substrate's node-template configured to include Substrate's pallet-contracts ‒ a smart contract modu

Owner
Matthias P. Braendli
Maintainer of the Opendigitalradio ODR-mmbTools www.opendigitalradio.org
Matthias P. Braendli
Simple node and rust script to achieve an easy to use bridge between rust and node.js

Node-Rust Bridge Simple rust and node.js script to achieve a bridge between them. Only 1 bridge can be initialized per rust program. But node.js can h

Pure 5 Apr 30, 2023
Sample lightning node command-line app built on top of Ldk Node (similar to ldk-sample).

ldk-node-sample Sample lightning node command-line app built on top of Ldk Node (similar to ldk-sample ). Installation git clone https://github.com/op

optout 3 Nov 21, 2023
A blazingly fast and memory safe password cracker with user interface.

HashVat A blazingly fast and memory safe password cracker with user interface. HashVat runs with user interface and is capable of cracking the 1.000.0

JBLDSKY 2 Dec 6, 2022
Cross-platform user interface framework for Rust.

Viewbuilder Examples Cross-platform user interface framework for Rust. This crate provides an HTML-like render API for the backend of a UI. It's built

null 18 Sep 26, 2023
EXPERIMENTAL: Bitcoin Core Prometheus exporter based on User-Space, Statically Defined Tracing and eBPF.

bitcoind-observer An experimental Prometheus metric exporter for Bitcoin Core based on Userspace, Statically Defined Tracing and eBPF. This demo is ba

0xB10C 24 Nov 8, 2022
Unified directories for different use cases of an application, providing standard directories for local development, when run as service or when run by a user.

UniDirs Unified directories for different use cases of an application, providing standard directories for local development, when run as service or wh

Dominik Nakamura 3 Sep 30, 2022
LibreAuth is a collection of tools for user authentication.

LibreAuth is a collection of tools for user authentication. Features Password / passphrase authentication no character-set limitation reason

Rodolphe Bréard 252 Dec 28, 2022
User-friendly secure computation engine based on secure multi-party computation

CipherCore If you have any questions, or, more generally, would like to discuss CipherCore, please join the Slack community. See a vastly extended ver

CipherMode Labs 356 Jan 5, 2023
MevWallet is a smart contract wallet that allows the user to capture MEV from Searchers, or create MEV on purpose.

MevWallet MevWallet is a smart contract wallet that allows the user to capture MEV from Searchers, or create MEV on purpose. This repo contains the so

Blunt Instruments 94 Jan 26, 2023
Fast & reliable user space NAT64

protomask A user space NAT64 implementation. Protomask started as a challenge to create a NAT64 implementation in a weekend. The goal of protomask is

Evan Pratten 6 Aug 4, 2023