From 549321159c91e254a437a1355943417fc9cb7c21 Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Sat, 29 Jun 2024 22:24:38 +0200 Subject: [PATCH] Add support for multiple wireless devies at firstlogin --- .../common/usr/lib/armbian/armbian-firstlogin | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/bsp/common/usr/lib/armbian/armbian-firstlogin b/packages/bsp/common/usr/lib/armbian/armbian-firstlogin index 7a777e5960ed..a316218328ac 100755 --- a/packages/bsp/common/usr/lib/armbian/armbian-firstlogin +++ b/packages/bsp/common/usr/lib/armbian/armbian-firstlogin @@ -284,13 +284,29 @@ set_timezone_and_locales() { done if [[ "${response}" =~ ^(Y|y)$ ]]; then + # We could have multiple devices + if (( $(grep -c . <<<"$WIFI_DEVICE") > 1 )); then + scanning=0 + while [[ ${scanning} -lt 3 ]]; do + scanning=$(( scanning + 1 )) + echo -e "\nMultiple wireless adaptors detected. Choose primary:\n" + WIFI_DEVICES=($(printf '%s\n' "${WIFI_DEVICE[@]}" | sed 's/^[ \t]*//' | sed 's/"//g' | sed 's/ESSID://' | awk 'BEGIN{FS=OFS=","} {$NF=++count OFS $NF} 1')) + for str in ${WIFI_DEVICES[@]}; do echo $str | sed "s/,/ \t /g"; done + echo "" + read -r -p "Enter a number of wireles adaptor: " input + if [[ "$input" =~ ^[0-9]{,2}$ && -n "$input" ]] ; then break; fi + done + [[ -z $input ]] && input=1 + WIFI_DEVICE=$(echo ${WIFI_DEVICES[$input-1]} | cut -d"," -f2) + fi + # get list of wireless networks scanning=0 broken=1 while [[ ${scanning} -lt 3 ]]; do sleep 0.5 scanning=$(( scanning + 1 )) - ARRAY=($(iwlist ${WIFI_DEVICE} scanning 2> /dev/null | egrep 'ESSID' | sed 's/^[ \t]*//' | sed 's/"//g' | sed 's/ESSID://' | awk 'BEGIN{FS=OFS=","} {$NF=++count OFS $NF} 1')) + ARRAY=($(iwlist ${WIFI_DEVICE} scanning 2> /dev/null | egrep 'ESSID' | sed 's/^[ \t]*//' | sed 's/"//g' | sed 's/ESSID://' | sed '/^$/d' | sort | uniq | awk 'BEGIN{FS=OFS=","} {$NF=++count OFS $NF} 1')) if [[ $? == 0 ]]; then broken=0; break; fi done # wifi can also fail