From 4e92b3ebf5410a7030cbee80f985d9f9012e60b3 Mon Sep 17 00:00:00 2001 From: garywill Date: Wed, 4 Oct 2023 11:21:00 +0800 Subject: [PATCH] -c will not fallback automatically --- lnxrouter | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/lnxrouter b/lnxrouter index e329f89..f5dddcd 100755 --- a/lnxrouter +++ b/lnxrouter @@ -88,7 +88,7 @@ Options: Using this you can't use same wlan interface for both Internet and AP --virt-name Set name of virtual interface - -c Channel number (default: 1) + -c Specify channel (default: use current one, or 1 / 36) --country Set two-letter country code for regularity (example: US) --freq-band Set frequency band: 2.4 or 5 (default: 2.4) @@ -1571,14 +1571,6 @@ check_wifi_settings() { exit 1 fi - if [[ $CHANNEL == default ]]; then - if [[ $FREQ_BAND == 2.4 ]]; then - CHANNEL=1 - else - CHANNEL=36 - fi - fi - if [[ $FREQ_BAND != 5 && $CHANNEL -gt 14 ]]; then echo "Channel number is greater than 14, assuming 5GHz frequency band" FREQ_BAND=5 @@ -1697,20 +1689,21 @@ prepare_wifi_interface() { if [[ $NO_VIRT -eq 0 ]]; then ## Will generate virtual wifi interface + + # TODO move this to check_wifi_settings() ? if is_interface_wifi_connected ${WIFI_IFACE}; then WIFI_IFACE_FREQ=$(iw dev ${WIFI_IFACE} link | grep -i freq | awk '{print $2}') WIFI_IFACE_CHANNEL=$(ieee80211_frequency_to_channel ${WIFI_IFACE_FREQ}) - echo "${WIFI_IFACE} already in channel ${WIFI_IFACE_CHANNEL} (${WIFI_IFACE_FREQ} MHz)" - if is_5ghz_frequency $WIFI_IFACE_FREQ; then - FREQ_BAND=5 - else - FREQ_BAND=2.4 - fi - if [[ $WIFI_IFACE_CHANNEL -ne $CHANNEL ]]; then - echo "Channel fallback to ${WIFI_IFACE_CHANNEL}" + + echo "${WIFI_IFACE} already working in channel ${WIFI_IFACE_CHANNEL} (${WIFI_IFACE_FREQ} MHz)" + + if [[ $CHANNEL == default ]]; then + echo "Use wifi adapter current channel $WIFI_IFACE_CHANNEL as target channel" CHANNEL=$WIFI_IFACE_CHANNEL - else - echo + fi + + if [[ $WIFI_IFACE_CHANNEL -ne $CHANNEL ]]; then + echo "WARN: Wifi adapter already working in channel ${WIFI_IFACE_CHANNEL}, which is different than target channel $CHANNEL" >&2 fi fi @@ -1736,6 +1729,15 @@ prepare_wifi_interface() { else # no virtual wifi interface, use wifi device interface itself AP_IFACE=${WIFI_IFACE} fi + + if [[ $CHANNEL == default ]]; then + echo "Channel not specified, use default" + if [[ $FREQ_BAND == 2.4 ]]; then + CHANNEL=1 + else + CHANNEL=36 + fi + fi } decide_subnet_interface() {