Files
euri-iso/airootfs/usr/bin/broadcom-wl_detect.sh
T

91 lines
3.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Detect Broadcom PCI WiFi chipset support for broadcom-wl and confirm before running install script
LOG_FILE="$HOME/broadcom-wl-check.log"
touch "$LOG_FILE"
# Log function
log() {
echo -e "$1" | tee -a "$LOG_FILE"
}
supported_ids=(
"02d0:4345" "0846:9011" "0846:9020" "0a5c:bd17" "0a5c:bd1d" "1eda:2410" "14e4:0576" "14e4:4311" "14e4:4312" "14e4:4313" "14e4:4315" "14e4:4328" "14e4:4329" "14e4:432a" "14e4:432b" "14e4:432c" "14e4:432d" "14e4:4331" "14e4:4353" "14e4:4357" "14e4:4358" "14e4:4359" "14e4:4360" "14e4:4365" "14e4:43a0" "14e4:43b1" "14e4:4727" "14e4:a8d6" "14e4:a99d" "14e4:0619"
)
chip_names=(
"BCM4311" "BCM4312" "BCM4313" "BCM4321" "BCM4322" "BCM43222" "BCM43224" "BCM43225" "BCM43227" "BCM43228" "BCM43229" "BCM43231" "BCM43236" "BCM43241" "BCM43242" "BCM4330" "BCM4331" "BCM4334" "BCM4335" "BCM4339" "BCM4345" "BCM43421" "BCM43430" "BCM43455" "BCM4350" "BCM4352" "BCM4354" "BCM4356" "BCM4358" "BCM4359" "BCM4360" "BCM43602" "BCM4365" "BCM4366" "BCM4716" "BCM4717" "BCM4718"
)
wifi_devices=$(lspci -nn | grep -iP 'network|wireless' | grep 'Broadcom')
[ -e broadcom.txt ] && wifi_devices=$(< broadcom.txt) # TESTING!!!
if [[ -z "$wifi_devices" ]]; then
# No devices, just log and silently exit
log "No Broadcom WLAN device found, nothing changed."
log "==== lspci -nn network devices start ===="
lspci -nn | grep -iP 'network|wireless' | tee -a "$LOG_FILE"
log "==== lspci -nn network devices end ===="
exit 1
fi
log "Detected Broadcom WLAN devices:"
log "$wifi_devices"
log ""
supported_found=0
while read -r line; do
id=$(echo "$line" | grep -oP '[K[0-9a-f]{4}:[0-9a-f]{4}(?=])')
log "Detected PCI ID: $id"
if [[ -n "$id" ]]; then
if [[ " ${supported_ids[*]} " == *" $id "* ]]; then
log "=> This device is SUPPORTED by broadcom-wl."
supported_found=1
else
log "=> Not listed as supported PCI ID."
fi
else
log "=> No PCI ID detected, skipping ID check."
fi
chip=$(echo "$line" | sed -E 's|.* (BCM[0-9]+) .*|\1|')
if printf "%s\n" "${chip_names[@]}" | grep -q "$chip" ; then
log "=> Hint: Detected chip name \"$chip\" in device string."
fi
log ""
if [[ $supported_found -eq 1 ]]; then
break
fi
done <<<"$wifi_devices"
if [[ $supported_found -eq 1 ]]; then
log "Broadcom-wl compatible device found."
log "==== inxi -Naz output start ===="
inxi -Naz | tee -a "$LOG_FILE"
log "==== inxi -Naz output end ===="
# Ask user with YAD dialog
WICON="/usr/share/antergos/antergos-icon.png"
[ -e $WICON ] || WICON="dialog-information" # fallback
YAD=(yad --window-icon="$WICON" --center --title='Broadcom wireless device management')
if "${YAD[@]}" --image=dialog-question --text="Broadcom-wl compatible device [$id] found.\nDo you want to run the install script?\n"; then
log "User confirmed. Running install script..."
/usr/bin/broadcom-wl_enable.sh >>"$LOG_FILE" 2>&1
"${YAD[@]}" --image=dialog-information --text="Script executed successfully (check $LOG_FILE for details)."
log "Install script finished."
else
log "User declined. No changes made."
"${YAD[@]}" --image=dialog-information --text="Operation cancelled by user. Nothing changed."
fi
else
# No supported device, just log, no yad window
log "No compatible device found, nothing changed."
log "==== lspci -nn network devices start ===="
lspci -nn | grep -iP 'network|wireless' | tee -a "$LOG_FILE"
log "==== lspci -nn network devices end ===="
exit 1
fi