net/starlink-dish: add Starlink dish gRPC client#29302
Conversation
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#29302) for gRPC communication with the dish at 192.168.100.1:9200. Signed-off-by: Michael Eiberg <berghotspot@gmail.com>
| PKG_BUILD_FLAGS:=no-mips16 | ||
|
|
||
| include $(INCLUDE_DIR)/package.mk | ||
| include $(TOPDIR)/feeds/packages/lang/rust/rust-package.mk |
There was a problem hiding this comment.
Why don't use this one?
| include $(TOPDIR)/feeds/packages/lang/rust/rust-package.mk | |
| include ../../lang/rust/rust-package.mk |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a new OpenWrt package (net/starlink-dish) that builds and installs a small, statically linked Rust gRPC CLI for querying/rebooting the Starlink dish.
Changes:
- Introduces
net/starlink-dish/Makefiledefining source, license, and Rust/protobuf host build dependencies. - Adds a vendored-crates Cargo configuration during
Build/Preparefor offline/reproducible builds. - Builds and installs the
starlink-dishCLI into/usr/bin.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| PROTOC=$(STAGING_DIR_HOST)/bin/protoc \ | ||
| cargo build \ | ||
| --manifest-path $(PKG_BUILD_DIR)/Cargo.toml \ | ||
| --locked \ |
| +$(CARGO_PKG_VARS) \ | ||
| PROTOC=$(STAGING_DIR_HOST)/bin/protoc \ | ||
| cargo build \ | ||
| --manifest-path $(PKG_BUILD_DIR)/Cargo.toml \ |
| --manifest-path $(PKG_BUILD_DIR)/Cargo.toml \ | ||
| --locked \ | ||
| --release \ | ||
| $(if $(filter -j%,$(PKG_JOBS)),$(PKG_JOBS),-j1) |
| define Build/Prepare | ||
| $(call Build/Prepare/Default) | ||
| $(INSTALL_DIR) $(PKG_BUILD_DIR)/.cargo | ||
| printf '[source.crates-io]\nreplace-with = "vendored-sources"\n\n[source.vendored-sources]\ndirectory = "vendor/"\n' \ | ||
| > $(PKG_BUILD_DIR)/.cargo/config.toml | ||
| endef |
There was a problem hiding this comment.
Why do you need to have this Build/Prepare at all? I don't think this is right and also why use printf instead of sed?
BKPepe
left a comment
There was a problem hiding this comment.
This still requires more polishing.
| define Package/starlink-dish/install | ||
| $(INSTALL_DIR) $(1)/usr/bin | ||
| $(INSTALL_BIN) \ | ||
| $(PKG_BUILD_DIR)/target/$(RUST_TARGET)/release/starlink-dish \ |
There was a problem hiding this comment.
Are you sure this is right? Most rust packages in this repository are using PKG_INSTALL_DIR. Feel free to check it out. For example packages: bottom, aardvark-dns, procs, etc.
|
Thanks for the detailed review, @BKPepe! I've pushed a fix commit addressing all the points:
Jobs logic — removed.
Install step — switched to |
| --profile $(CARGO_PKG_PROFILE) \ | ||
| --root $(PKG_INSTALL_DIR) \ | ||
| --path "$(PKG_BUILD_DIR)" \ | ||
| $(if $(filter --jobserver%,$(PKG_JOBS)),,-j1) \ |
|
Good catch — the right fix is to not override CARGO_PKG_VARS += PROTOC=$(STAGING_DIR_HOST)/bin/protocUpdated now — the custom |
|
I'm genuinely wondering why the replies sound like they were written by an AI. It also really surprised me that when something is already released—meaning it's tagged and officially in the releases—you overwrite the existing tag. That is a huge faux pas and simply terrible practice. Now you have to squash all those changes and force push to your branch. |
|
I'm still learning the ins and out's of github ;) |
|
Bumped to v0.1.1 — same tarball contents, just a proper new release instead of overwriting the old one. PKG_VERSION and PKG_HASH updated. |
|
re: LICENSE — yeah, v0.1.0 didn't have it. Bumped to v0.1.1 which includes it in the tarball. re: |
|
Pushed an update that drops the custom Re Also bumped to v0.1.1 — LICENSE is now in the source tarball. |
|
Well, I'm glad I basically read the exact same thing in all three comments. This is a perfect example of how AI shouldn't be used, which is a shame because AI is a powerful tool. My question was about why there was a dependency on protobuf when it wasn't being used, and yes, thanks to |
|
sorry for the reply spam — won't happen again. on |
|
fair point, sorry about that. will squash and force push. |
|
And it happened again. 🤣 |
14a2b29 to
73a06a7
Compare
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 (~15 MB) with a ~1.4 MB statically linked binary.
Commands:
Why Rust / why not grpcurl:
Source tarball (`starlink-dish-0.1.1.tar.gz`) includes vendored Rust dependencies for offline builds. `protoc` is used at build time via `protobuf/host`.
Changes vs PR #28890