--- /dev/null
+#!/bin/sh
+
+# This must run before 10-wifi-detect
+
+[ "${ACTION}" = "add" ] || return
+
+. /lib/functions.sh
+
+check_kernel()
+{
+ local kernel_current=$(uname -r)
+ if [ ${kernel_current//./} -lt "6600" ]; then
+ return 1
+ fi
+}
+
+do_migrate_radio()
+{
+ local cfg="$1" from="$2" to="$3"
+
+ config_get path "$cfg" path
+
+ [ "$path" = "$from" ] || return
+
+ uci set "wireless.${cfg}.path=${to}"
+ WIRELESS_CHANGED=true
+
+ logger -t wifi-migrate "Updated path of wireless.${cfg} from '${from}' to '${to}'"
+}
+
+check_path()
+{
+ local config
+ config="$1"
+
+ config_get path "$config" path
+
+ to=${path/soc\//soc@0\/}
+
+ # Checks if kernel version is less than 6.6.0, if it is and the path is using the new format,
+ # then path should be migrated to the old format. This would allow users on platforms with two partitions,
+ # to test 6.1 and 6.6.
+ check_kernel || to=${path/soc@0\//soc\/}
+
+ [ "$path" = "$to" ] || do_migrate_radio "$config" "$path" "$to"
+}
+
+migrate_radio()
+{
+ config_load wireless
+
+ # Check if there is already a section with the target path: In this case, the system
+ # was already upgraded to a version without this migration script before; better bail out,
+ # as we can't be sure we don't break more than we fix.
+ config_foreach check_path wifi-device
+}
+
+WIRELESS_CHANGED=false
+
+case "$(board_name)" in
+*)
+ migrate_radio
+ ;;
+esac
+
+$WIRELESS_CHANGED && uci commit wireless
+
+exit 0