Skip to content

net/starlink-dish: add Starlink dish gRPC client#28890

Open
bigmalloy wants to merge 1 commit intoopenwrt:masterfrom
bigmalloy:add-starlink-dish
Open

net/starlink-dish: add Starlink dish gRPC client#28890
bigmalloy wants to merge 1 commit intoopenwrt:masterfrom
bigmalloy:add-starlink-dish

Conversation

@bigmalloy
Copy link

Description

Adds starlink-dish, a native Rust gRPC client for the Starlink dish API (192.168.100.1:9200). It replaces the common workaround of installing the heavyweight grpcurl binary.

Commands:

  • starlink-dish [addr] dish — outputs full dish telemetry as JSON
  • starlink-dish [addr] reboot — reboots the dish

Why Rust / why not grpcurl:

  • grpcurl requires gRPC server reflection; the Starlink dish supports it but the binary is ~15 MB
  • This binary is ~1.4 MB stripped, statically linked (musl), no runtime deps
  • Uses the starlink-grpc-client crate which has the Starlink proto definitions

Build notes

  • Source tarball includes all vendored Cargo dependencies for offline builds
  • Requires protobuf/host for protoc (used by starlink-grpc-client's build.rs to generate code from .proto files)
  • Build/Prepare writes .cargo/config.toml pointing cargo at the vendor directory
  • PROTOC=$(STAGING_DIR_HOST)/bin/protoc is forwarded to the cargo build environment

Testing

Tested on GL-iNet Beryl AX (MT3000, aarch64, OpenWrt 25.12.0-rc5).

Related

Will be followed by a PR to openwrt/luci adding luci-app-starlink-panel which depends on this package.

Native Rust gRPC client for the Starlink dish API at 192.168.100.1:9200.
Outputs JSON telemetry and supports dish reboot. Used by
luci-app-starlink-panel but can also be called from scripts.

- Source tarball includes vendored Cargo dependencies (offline build)
- Requires rust/host + protobuf/host for compilation
- Binary stripped, ~1.4 MB, supports all RUST_ARCH_DEPENDS targets

Signed-off-by: bigmalloy
bigmalloy pushed a commit to bigmalloy/luci that referenced this pull request Mar 19, 2026
Adds luci-app-starlink-panel, a LuCI dashboard for monitoring a
Starlink dish. Provides dish telemetry (state, latency, drop rate,
throughput, SNR, obstructions), GPS/alignment/attitude stats, alerts,
IPv6 connectivity info, router traffic stats, and a reboot button.

Depends on the starlink-dish package (openwrt/packages#28890) for
gRPC communication with the dish at 192.168.100.1:9200.

Signed-off-by: Michael Eiberg <berghotspot@gmail.com>
@bluewavenet
Copy link
Contributor

@bigmalloy
It will be worth turning off draft mode as it blocks CI tests from running.
CI will give you a list of things to fix. Most reviewers will not look until all CI tests have passed.
Right now, the Formalities test will fail for example.
CI will also test building on a list of architectures also very useful to see.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants