This document describes the versions used for development and the process of updating them.
| Tool | Version | Purpose |
|---|---|---|
| Rust | 1.92.0 | Backend binary compilation |
| Cargo | 1.92.0 | Rust package manager |
| Node.js | 24.12.0 | Webapp build tooling |
| Yarn | 4.12.0 (Berry) | Webapp package manager |
| Docker | 29.1.3 | Cross-compilation containers |
| Component | Version | Notes |
|---|---|---|
| Raspberry Pi OS | Bullseye or Bookworm | Target OS (glibc 2.31+) |
| BlueZ | 5.50+ | Bluetooth stack |
| Target arch | armv7-unknown-linux-gnueabihf | RPi 3B+ |
| glibc | 2.31+ | Required for cross-compiled bin |
| OS Version | glibc | Supported |
|---|---|---|
| Raspbian Buster (Debian 10) | 2.28 | ❌ No |
| RPi OS Bullseye (Debian 11) | 2.31 | ✅ Yes |
| RPi OS Bookworm (Debian 12) | 2.36 | ✅ Yes |
| Debian Trixie (Debian 13) | 2.40 | ✅ Yes |
Note: If using Raspbian Buster, you must upgrade to Bullseye or newer.
# Update to latest stable
rustup update stable
# Verify version
rustc --version
cargo --version
# Add cross-compilation target (if not present)
rustup target add armv7-unknown-linux-gnueabihf
cd blerc
# Check for outdated dependencies
cargo outdated
# Update all dependencies (respects semver in Cargo.toml)
cargo update
# Update a specific crate to latest
cargo update <crate-name>
# Update Node.js (using nvm)
nvm install --lts
nvm use --lts
# Update Yarn (corepack)
corepack enable
corepack prepare yarn@stable --activate
# Verify
node --version
yarn --version
cd webapp
# Check for outdated packages
yarn outdated
# Update all packages
yarn up
# Update a specific package
yarn up <package-name>
# Interactive upgrade
yarn upgrade-interactive
cd blerc
# Build cross-compile image for Bullseye (default, most compatible)
make docker-build-bullseye
# Build cross-compile image for Bookworm
make docker-build-bookworm
# Clean and rebuild
docker rmi blerc-cross-bullseye blerc-cross-bookworm 2>/dev/null
make docker-build
| Crate | Purpose | Min Version |
|---|---|---|
bluer |
BlueZ bindings | 0.17 |
tokio |
Async runtime | 1.x |
serde |
Serialization | 1.x |
clap |
CLI parsing | 4.x |
reqwest |
HTTP client | 0.12 |
tracing |
Logging | 0.1 |
| Package | Purpose | Min Version |
|---|---|---|
vite |
Build tool | 7.x |
typescript |
Type checking | 5.x |
vite-plugin-pwa |
PWA support | 1.x |
@types/web-bluetooth |
BLE types | 0.0.x |
The project requires Rust 1.83+ due to ICU crate dependencies used by reqwest.
To check MSRV compatibility:
cargo msrv --min 1.83.0
The bluer crate requires BlueZ 5.50+ for full GATT server support. Check on target:
bluetoothctl --version
This error means your Pi’s glibc is older than required. Check your OS version:
cat /etc/*release
Solution: Upgrade to Raspberry Pi OS Bullseye or Bookworm. Buster is not supported.
Alternatively, rebuild targeting the same OS version as your Pi:
cd blerc
make build-bullseye # For RPi OS Bullseye (Debian 11)
make build-bookworm # For RPi OS Bookworm (Debian 12)
make build-trixie # For Debian Trixie (Debian 13)
Update Rust:
rustup update stable
Use Docker-based cross-compilation:
cd blerc
make build # Uses Docker with --platform linux/amd64
Reinstall dependencies:
cd webapp
rm -rf .yarn/cache .pnp.*
yarn install