mirror of
https://github.com/iiab/iiab.git
synced 2025-03-09 15:40:17 +00:00
WiFi firmware fixing w/o local_vars, cleaner w/ explanations
This commit is contained in:
parent
8279f64a26
commit
1a3f386065
8 changed files with 138 additions and 108 deletions
|
@ -83,7 +83,7 @@
|
||||||
- name: IIAB-ADMIN
|
- name: IIAB-ADMIN
|
||||||
include_role:
|
include_role:
|
||||||
name: iiab-admin
|
name: iiab-admin
|
||||||
#when: iiab-admin_install | bool # Flag might be created in future?
|
#when: iiab_admin_install | bool # Flag might be created in future?
|
||||||
|
|
||||||
- name: OPENVPN
|
- name: OPENVPN
|
||||||
include_role:
|
include_role:
|
||||||
|
|
33
roles/firmware/tasks/download.yml
Normal file
33
roles/firmware/tasks/download.yml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- name: Back up original e.g. OS-provided firmware (for RPi internal WiFi)
|
||||||
|
copy:
|
||||||
|
src: "/lib/firmware/brcm/{{ item }}"
|
||||||
|
dest: "/lib/firmware/brcm/{{ item }}.orig"
|
||||||
|
with_items:
|
||||||
|
- brcmfmac43430-sdio.bin
|
||||||
|
- brcmfmac43455-sdio.bin
|
||||||
|
- brcmfmac43455-sdio.clm_blob
|
||||||
|
|
||||||
|
- name: Download high-capacity older firmware (for RPi internal WiFi, per https://github.com/iiab/iiab/issues/823#issuecomment-662285202)
|
||||||
|
get_url:
|
||||||
|
url: "{{ item.url }}"
|
||||||
|
dest: "{{ item.dest }}"
|
||||||
|
with_items:
|
||||||
|
- { url: 'http://d.iiab.io/packages/brcmfmac43430-sdio.bin_2018-09-11_7.45.98.65', dest: '/lib/firmware/brcm/brcmfmac43430-sdio.bin.iiab' }
|
||||||
|
- { url: 'http://d.iiab.io/packages/brcmfmac43430-sdio.clm_blob_2018-09-11_7.45.98.65', dest: '/lib/firmware/brcm/brcmfmac43430-sdio.clm_blob.iiab' }
|
||||||
|
- { url: 'http://d.iiab.io/packages/brcmfmac43455-sdio.bin_2015-03-01_7.45.18.0_ub19.10.1', dest: '/lib/firmware/brcm/brcmfmac43455-sdio.bin.iiab' }
|
||||||
|
- { url: 'http://d.iiab.io/packages/brcmfmac43455-sdio.clm_blob_2018-02-26_rpi', dest: '/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob.iiab' }
|
||||||
|
|
||||||
|
|
||||||
|
# RECORD firmware AS DOWNLOADED
|
||||||
|
|
||||||
|
- name: "Set 'firmware_downloaded: True'"
|
||||||
|
set_fact:
|
||||||
|
firmware_downloaded: True
|
||||||
|
|
||||||
|
- name: "Add 'firmware_downloaded: True' to {{ iiab_state_file }}"
|
||||||
|
lineinfile:
|
||||||
|
path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml
|
||||||
|
regexp: '^firmware_downloaded'
|
||||||
|
line: 'firmware_downloaded: True'
|
||||||
|
|
||||||
|
# SEE ALSO firmware_installed in install.yml
|
|
@ -1,32 +1,35 @@
|
||||||
# check the timestamps, might want to preserve the old ones
|
- name: Back up originals then download firmware (for RPi internal WiFi)
|
||||||
- name: Back up OS-provided firmware (for RPi's internal WiFi)
|
include_tasks: download.yml
|
||||||
copy:
|
when: firmware_downloaded is undefined # SEE ALSO firmware_installed below
|
||||||
src: "/lib/firmware/brcm/{{ item }}"
|
|
||||||
dest: "/lib/firmware/brcm/{{ item }}.orig"
|
|
||||||
with_items:
|
|
||||||
- brcmfmac43430-sdio.bin
|
|
||||||
- brcmfmac43455-sdio.bin
|
|
||||||
- brcmfmac43455-sdio.clm_blob
|
|
||||||
|
|
||||||
- name: Download older firmware (for RPi high-capacity internal WiFi)
|
- name: 'Install from template: check-firmware.service, iiab-check-firmware & fw_warn.sh'
|
||||||
get_url:
|
template:
|
||||||
url: "{{ item.url }}"
|
src: "{{ item.src }}"
|
||||||
dest: "{{ item.dest }}"
|
dest: "{{ item.dest }}"
|
||||||
|
mode: "{{ item.mode }}"
|
||||||
with_items:
|
with_items:
|
||||||
- { url: 'http://d.iiab.io/packages/brcmfmac43430-sdio.bin_2018-09-11_7.45.98.65', dest: '/lib/firmware/brcm/brcmfmac43430-sdio.bin.iiab' }
|
- { src: 'check-firmware.service', dest: '/etc/systemd/system/', mode: '0644' }
|
||||||
- { url: 'http://d.iiab.io/packages/brcmfmac43430-sdio.clm_blob_2018-09-11_7.45.98.65', dest: '/lib/firmware/brcm/brcmfmac43430-sdio.clm_blob.iiab' }
|
- { src: 'iiab-check-firmware', dest: '/usr/sbin/', mode: '0755' }
|
||||||
- { url: 'http://d.iiab.io/packages/brcmfmac43455-sdio.bin_2015-03-01_7.45.18.0_ub19.10.1', dest: '/lib/firmware/brcm/brcmfmac43455-sdio.bin.iiab' }
|
- { src: 'fw_warn.sh', dest: '/etc/profile.d/', mode: '0644' }
|
||||||
- { url: 'http://d.iiab.io/packages/brcmfmac43455-sdio.clm_blob_2018-02-26_rpi', dest: '/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob.iiab' }
|
|
||||||
|
- name: Enable & (Re)Start check-firmware.service (also runs on each boot)
|
||||||
|
systemd:
|
||||||
|
name: check-firmware.service
|
||||||
|
daemon_reload: yes
|
||||||
|
state: restarted
|
||||||
|
enabled: yes
|
||||||
|
|
||||||
|
|
||||||
# RECORD RPi Firmware AS DOWNLOADED
|
# RECORD firmware AS INSTALLED
|
||||||
|
|
||||||
- name: "Set 'rpi_firmware_downloaded: True'"
|
- name: "Set 'firmware_installed: True'"
|
||||||
set_fact:
|
set_fact:
|
||||||
rpi_firmware_downloaded: True
|
firmware_installed: True
|
||||||
|
|
||||||
- name: "Add 'firmware_retrieved: True' to {{ iiab_state_file }}"
|
- name: "Add 'firmware_installed: True' to {{ iiab_state_file }}"
|
||||||
lineinfile:
|
lineinfile:
|
||||||
path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml
|
path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml
|
||||||
regexp: '^rpi_firmware_downloaded'
|
regexp: '^firmware_installed'
|
||||||
line: 'rpi_firmware_downloaded: True'
|
line: 'firmware_installed: True'
|
||||||
|
|
||||||
|
# SEE ALSO firmware_downloaded above & in download.yml
|
||||||
|
|
|
@ -1,35 +1,17 @@
|
||||||
- name: Back up/Download firmware (for RPi internal WiFi)
|
# Please set 'wifi_hotspot_capacity_rpi_fix: True' in /etc/iiab/local_vars.yml
|
||||||
|
# to restores support for 30-32 WiFi client devices on any Raspberry Pi that
|
||||||
|
# has internal WiFi. This installs firmware 7.45.18.0 for Zero W and RPi 3
|
||||||
|
# and firmware 7.45.98.65 for RPi 3 B+ and RPi 4. Capacity testing writeup:
|
||||||
|
# https://github.com/iiab/iiab/issues/823#issuecomment-662285202
|
||||||
|
|
||||||
|
- name: Install firmware (for RPi internal WiFi)
|
||||||
include_tasks: install.yml
|
include_tasks: install.yml
|
||||||
when: rpi_firmware_downloaded is undefined
|
#when: firmware_installed is undefined
|
||||||
|
|
||||||
- name: 'Install from template: check-firmware.service, check-firmware.sh & fw_warn.sh'
|
# Two variable are placed in /etc/iiab/iiab_state.yml:
|
||||||
template:
|
#
|
||||||
src: "{{ item.src }}"
|
# - firmware_downloaded (set in download.yml) is used in install.yml
|
||||||
dest: "{{ item.dest }}"
|
#
|
||||||
mode: "{{ item.mode }}"
|
# - firmware_installed (set in install.yml) isn't acted upon programmatically.
|
||||||
with_items:
|
# It serves as a very helpful rapid reminder in iiab_state.yml in the same
|
||||||
- { src: 'check-firmware.service', dest: '/etc/systemd/system/', mode: '0644' }
|
# way as roles like: sshd, iiab-admin, pylibs, www_base, www_options.
|
||||||
- { src: 'check-firmware.sh', dest: '/usr/sbin/', mode: '0755' }
|
|
||||||
- { src: 'fw_warn.sh', dest: '/etc/profile.d/', mode: '0644' }
|
|
||||||
|
|
||||||
- name: Enable & (Re)start check-firmware.service
|
|
||||||
systemd:
|
|
||||||
name: check-firmware.service
|
|
||||||
daemon_reload: yes
|
|
||||||
state: restarted
|
|
||||||
enabled: yes
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# RECORD firmware AS INSTALLED
|
|
||||||
|
|
||||||
- name: "Set 'firmware_installed: True'"
|
|
||||||
set_fact:
|
|
||||||
firmware_installed: True
|
|
||||||
|
|
||||||
- name: "Add 'firmware_installed: True' to {{ iiab_state_file }}"
|
|
||||||
lineinfile:
|
|
||||||
path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml
|
|
||||||
regexp: '^firmware_installed'
|
|
||||||
line: 'firmware_installed: True'
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ Before=clone-wifi.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=/usr/sbin/check-firmware.sh
|
ExecStart=/usr/sbin/iiab-check-firmware
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
FW_MODE=$(grep wifi_hotspot_capacity_rpi_fix /etc/iiab/local_vars.yml| grep True)
|
|
||||||
WARN=0
|
|
||||||
DATE=$(date +%F-%T)
|
|
||||||
if [ -z "$FW_MODE" ]; then
|
|
||||||
echo "FW marker not found"
|
|
||||||
else
|
|
||||||
echo "$FW_MODE"
|
|
||||||
if ! $(diff -q /lib/firmware/brcm/brcmfmac43455-sdio.bin.iiab /lib/firmware/brcm/brcmfmac43455-sdio.bin); then
|
|
||||||
mv /lib/firmware/brcm/brcmfmac43455-sdio.bin /lib/firmware/brcm/brcmfmac43455-sdio.bin.$DATE
|
|
||||||
cp /lib/firmware/brcm/brcmfmac43455-sdio.bin.iiab /lib/firmware/brcm/brcmfmac43455-sdio.bin
|
|
||||||
echo "replacing firmware"
|
|
||||||
WARN=1
|
|
||||||
fi
|
|
||||||
if ! $(diff -q /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob.iiab /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob); then
|
|
||||||
mv /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob.$DATE
|
|
||||||
cp /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob.iiab /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob
|
|
||||||
echo "replacing firmware"
|
|
||||||
WARN=1
|
|
||||||
fi
|
|
||||||
if ! $(diff -q /lib/firmware/brcm/brcmfmac43430-sdio.bin.iiab /lib/firmware/brcm/brcmfmac43430-sdio.bin); then
|
|
||||||
mv /lib/firmware/brcm/brcmfmac43430-sdio.bin /lib/firmware/brcm/brcmfmac43430-sdio.bin.$DATE
|
|
||||||
cp /lib/firmware/brcm/brcmfmac43430-sdio.bin.iiab /lib/firmware/brcm/brcmfmac43430-sdio.bin
|
|
||||||
cp /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob.iiab /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob
|
|
||||||
echo "replacing firmware"
|
|
||||||
WARN=1
|
|
||||||
fi
|
|
||||||
if ! $(diff -q /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob.iiab /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob); then
|
|
||||||
mv /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob.$DATE
|
|
||||||
cp /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob.iiab /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob
|
|
||||||
echo "replacing firmware"
|
|
||||||
WARN=1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ "$WARN" = "1" ]; then
|
|
||||||
echo -e " \033[31;5mFirmware has been replaced\033[0m"
|
|
||||||
echo -e " \033[31;5mReboot is required to activate\033[0m"
|
|
||||||
touch /.fw_replaced
|
|
||||||
#echo "rebooting..."
|
|
||||||
#reboot
|
|
||||||
else
|
|
||||||
echo -e " Firmware check \033[32;5mPASSED\033[0m"
|
|
||||||
if [ -f /.fw_replaced ]; then
|
|
||||||
rm /.fw_replaced
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
exit 0
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
if [ -f /.fw_replaced ]; then
|
|
||||||
echo -e " \033[31;5mFirmware has been replaced\033[0m"
|
|
||||||
echo -e " \033[31;5mReboot is required to activate\033[0m"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
if [ -f /.fw_replaced ]; then
|
||||||
|
echo -e "\n \033[31;5mWiFi Firmware has been replaced, per iiab/iiab#823.\033[0m"
|
||||||
|
echo -e " \033[31;5mReboot is required to activate.\033[0m\n"
|
||||||
|
fi
|
||||||
|
|
59
roles/firmware/templates/iiab-check-firmware
Normal file
59
roles/firmware/templates/iiab-check-firmware
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
WARN=0
|
||||||
|
DATE=$(date +%F-%T)
|
||||||
|
|
||||||
|
if grep -q '^wifi_hotspot_capacity_rpi_fix: False' /etc/iiab/local_vars.yml ; then
|
||||||
|
echo "'wifi_hotspot_capacity_rpi_fix: False' found in /etc/iiab/local_vars.yml"
|
||||||
|
echo "...so WiFi firmware will NOT be checked or replaced."
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "'wifi_hotspot_capacity_rpi_fix: True' presumed..."
|
||||||
|
echo -e "...in /etc/iiab/local_vars.yml (or /opt/iiab/iiab/vars/default_vars.yml ?)\n"
|
||||||
|
|
||||||
|
if ! $(diff -q /lib/firmware/brcm/brcmfmac43455-sdio.bin.iiab /lib/firmware/brcm/brcmfmac43455-sdio.bin); then
|
||||||
|
mv /lib/firmware/brcm/brcmfmac43455-sdio.bin /lib/firmware/brcm/brcmfmac43455-sdio.bin.$DATE
|
||||||
|
cp /lib/firmware/brcm/brcmfmac43455-sdio.bin.iiab /lib/firmware/brcm/brcmfmac43455-sdio.bin
|
||||||
|
echo "Replacing /lib/firmware/brcm/brcmfmac43455-sdio.bin"
|
||||||
|
WARN=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $(diff -q /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob.iiab /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob); then
|
||||||
|
mv /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob.$DATE
|
||||||
|
cp /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob.iiab /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob
|
||||||
|
echo "Replacing /lib/firmware/brcm/brcmfmac43455-sdio.clm_blob"
|
||||||
|
WARN=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $(diff -q /lib/firmware/brcm/brcmfmac43430-sdio.bin.iiab /lib/firmware/brcm/brcmfmac43430-sdio.bin); then
|
||||||
|
mv /lib/firmware/brcm/brcmfmac43430-sdio.bin /lib/firmware/brcm/brcmfmac43430-sdio.bin.$DATE
|
||||||
|
cp /lib/firmware/brcm/brcmfmac43430-sdio.bin.iiab /lib/firmware/brcm/brcmfmac43430-sdio.bin
|
||||||
|
cp /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob.iiab /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob
|
||||||
|
echo "Replacing /lib/firmware/brcm/brcmfmac43430-sdio.bin"
|
||||||
|
WARN=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $(diff -q /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob.iiab /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob); then
|
||||||
|
mv /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob.$DATE
|
||||||
|
cp /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob.iiab /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob
|
||||||
|
echo "Replacing /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob"
|
||||||
|
WARN=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$WARN" = "1" ]; then
|
||||||
|
echo -e "\n \033[31;5mWiFi Firmware has been replaced, per iiab/iiab#823.\033[0m"
|
||||||
|
echo -e " \033[31;5mReboot is required to activate.\033[0m\n"
|
||||||
|
touch /.fw_replaced
|
||||||
|
#echo "rebooting..."
|
||||||
|
#reboot
|
||||||
|
else
|
||||||
|
echo -e " WiFi Firmware check \033[32;5mPASSED\033[0m, per iiab/iiab#823."
|
||||||
|
echo -e " (Assuming you've rebooted since it was replaced!)\n"
|
||||||
|
if [ -f /.fw_replaced ]; then
|
||||||
|
rm /.fw_replaced
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# exit 0
|
Loading…
Add table
Add a link
Reference in a new issue