91 lines
3.6 KiB
Bash
91 lines
3.6 KiB
Bash
#!/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
|