diff mbox series

[1/1] package/wireless-regdb: sysv init script to set regdomain

Message ID 20250118133740.4001841-1-fiona.klute@gmx.de
State New
Headers show
Series [1/1] package/wireless-regdb: sysv init script to set regdomain | expand

Commit Message

Fiona Klute Jan. 18, 2025, 1:37 p.m. UTC
From: "Fiona Klute (WIWA)" <fiona.klute@gmx.de>

This is useful when the tools used to manage the wifi interface do not
support setting the regdomain (e.g. NetworkManager). As long as the
country code is not set in configuration the init script does not
change anything.

Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
---
If this doesn't seem relevant for Buildroot please let me know, I'll
move it to a local package then. On the other hand, if it's merged I
could create a follow-up to allow setting the initial regdomain in the
config file from the Buildroot config.

 package/wireless-regdb/S35wireless-regdb | 39 ++++++++++++++++++++++++
 package/wireless-regdb/wireless-regdb.mk |  7 +++++
 2 files changed, 46 insertions(+)
 create mode 100644 package/wireless-regdb/S35wireless-regdb
diff mbox series

Patch

diff --git a/package/wireless-regdb/S35wireless-regdb b/package/wireless-regdb/S35wireless-regdb
new file mode 100644
index 0000000000..b7bdf3b351
--- /dev/null
+++ b/package/wireless-regdb/S35wireless-regdb
@@ -0,0 +1,39 @@ 
+#!/bin/sh
+DAEMON="wireless-regdb"
+
+# shellcheck source=/dev/null
+[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
+
+if [ -z "$COUNTRY" ]; then
+	echo "Wireless regulatory domain not configured, nothing to do."
+	exit 0
+fi
+
+start() {
+	printf "Setting wireless regulatory domain %s: " "$COUNTRY"
+	/usr/sbin/iw reg set "$COUNTRY"
+	status=$?
+	if [ "$status" -eq 0 ]; then
+		echo "OK"
+	else
+		echo "FAIL"
+	fi
+	return "$status"
+}
+
+case "$1" in
+	start|restart|reload)
+		start
+		;;
+	stop)
+		# set "world" regdomain
+		COUNTRY="00"
+		start
+		;;
+	*)
+		echo "Usage: $0 {start|stop|restart|reload}"
+		exit 1
+		;;
+esac
+
+exit $?
diff --git a/package/wireless-regdb/wireless-regdb.mk b/package/wireless-regdb/wireless-regdb.mk
index 2aec19c507..930addb7c4 100644
--- a/package/wireless-regdb/wireless-regdb.mk
+++ b/package/wireless-regdb/wireless-regdb.mk
@@ -27,4 +27,11 @@  define WIRELESS_REGDB_INSTALL_TARGET_CMDS
 		$(TARGET_DIR)/lib/firmware/regulatory.db.p7s
 endef
 
+ifeq ($(BR2_PACKAGE_IW),y)
+define WIRELESS_REGDB_INSTALL_INIT_SYSV
+	$(INSTALL) -m 0755 -D package/wireless-regdb/S35wireless-regdb \
+		$(TARGET_DIR)/etc/init.d/S35wireless-regdb ;
+endef
+endif
+
 $(eval $(generic-package))