feat(bluetooth): persist adapter state across sessions - #191
Open
xdvi wants to merge 2 commits into
Open
Conversation
…hell restart Previously, every shell reload (inir restart) recreated the BluetoothStatus singleton and re-forced the last saved adapter state, even if the current state was intentional and unrelated to a reboot. Now the saved state is only re-applied when the system boot id (/proc/sys/kernel/random/boot_id) differs from the last one recorded, i.e. on an actual reboot.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds support for persisting the Bluetooth adapter state (on/off) across system restarts, shutdowns, logouts, and shell reloads.
It introduces configuration keys:
bluetooth.persistState: determines if the state should be saved/restored (defaults totrue).bluetooth.lastState: stores the last state of the default Bluetooth adapter.bluetooth.lastBootId: tracks the system boot (/proc/sys/kernel/random/boot_id) the state was last restored on.It dynamically monitors the default adapter status and updates the configuration in real-time, restoring the last saved state when the Bluetooth service starts up.
Fix: only restore once per boot
Initial version re-forced
lastStateonto the adapter on every shell reload (inir restart), not just on an actual reboot — so if you'd manually toggled Bluetooth after a shell reload happened to be in flight, or just raninir restartfor unrelated reasons, it could get flipped back to whatever was last saved. That's what looked like Bluetooth "turning on by itself."Fix compares the current boot id against the one stored at last restore:
inir restart) → state is left alone.Testing
inir restart && inir logs— no errorsinir restartafter manually toggling Bluetooth off — adapter stayed off, state not re-forcedlastState: true— adapter was correctly force-restored to on,lastBootIdupdated to the real boot id