blerc

Dependency Versions

This document describes the versions used for development and the process of updating them.

Current Versions (as of 2026-01-08)

Development Tools

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

Target Platform

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

Target OS Compatibility

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.

Updating Dependencies

Rust Toolchain

# 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

Rust Crate Dependencies

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>

Node.js / Yarn

# 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

Webapp Dependencies

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

Docker Images

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

Key Dependencies

Rust (blerc/Cargo.toml)

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

Webapp (webapp/package.json)

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

Version Constraints

Minimum Rust Version (MSRV)

The project requires Rust 1.83+ due to ICU crate dependencies used by reqwest.

To check MSRV compatibility:

cargo msrv --min 1.83.0

BlueZ Compatibility

The bluer crate requires BlueZ 5.50+ for full GATT server support. Check on target:

bluetoothctl --version

Troubleshooting

“GLIBC_X.XX not found” error on Raspberry Pi

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)

“requires rustc X.XX” error

Update Rust:

rustup update stable

Cross-compilation fails on Apple Silicon

Use Docker-based cross-compilation:

cd blerc
make build  # Uses Docker with --platform linux/amd64

Yarn PnP resolution errors

Reinstall dependencies:

cd webapp
rm -rf .yarn/cache .pnp.*
yarn install