From fc82ec0eb9571c1392f89732378ed7e861e86ad4 Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Mon, 21 Apr 2025 13:25:56 +0200 Subject: [PATCH] feat(revpiconfig): Replace rfkill subprocess calls with sysfs writes Updated Bluetooth and WiFi rfkill handling by replacing subprocess calls to "rfkill" with direct writes to sysfs files. This change simplifies the implementation and improves performance by avoiding external command execution. --- .../dbus_middleware1/system_config/revpi_config.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py b/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py index 5b99432..657038b 100644 --- a/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py +++ b/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py @@ -224,11 +224,13 @@ def configure_bluetooth(action: ConfigActions): if action is ConfigActions.ENABLE: if bt_rfkill_index is not None: - subprocess.call(["rfkill", "unblock", str(bt_rfkill_index)]) + with open(f"/sys/class/rfkill/rfkill{bt_rfkill_index}/soft", "w") as f: + f.write("0") elif action is ConfigActions.DISABLE: if bt_rfkill_index is not None: - subprocess.call(["rfkill", "block", str(bt_rfkill_index)]) + with open(f"/sys/class/rfkill/rfkill{bt_rfkill_index}/soft", "w") as f: + f.write("1") elif action is ConfigActions.STATUS: if bt_rfkill_index is None: @@ -343,12 +345,14 @@ def configure_wifi(action: ConfigActions): if action is ConfigActions.ENABLE: if revpi.with_wifi: wifi_rfkill_index = get_rfkill_index(revpi.class_path_wifi) - subprocess.call(["rfkill", "unblock", str(wifi_rfkill_index)]) + with open(f"/sys/class/rfkill/rfkill{wifi_rfkill_index}/soft", "w") as f: + f.write("0") elif action is ConfigActions.DISABLE: if revpi.with_wifi: wifi_rfkill_index = get_rfkill_index(revpi.class_path_wifi) - subprocess.call(["rfkill", "block", str(wifi_rfkill_index)]) + with open(f"/sys/class/rfkill/rfkill{wifi_rfkill_index}/soft", "w") as f: + f.write("1") elif action is ConfigActions.AVAILABLE: return revpi.with_wifi