test: add legacy D80 firmware for issue 58

This commit is contained in:
Shen Mintao
2026-07-21 19:59:51 +08:00
parent 388a0192c7
commit bff42860ff
18 changed files with 103 additions and 505 deletions
+2
View File
@@ -0,0 +1,2 @@
fw/aic8800D80/*.txt text eol=lf
fw/aic8800D80/*.bin binary
-117
View File
@@ -1,117 +0,0 @@
# AIC POWERLIMIT 2025/0623/1700
# Max tx power reference: Linux wireless regulatory database for CRDA
# https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/tree/db.txt
# If loss_value in aic_userconfig.txt is enabled, the power value in this document will be subtracted from loss_value in actual judgment
# Table 1:
## 2.4G, 20M,#6#
## START
## SRRC FCC ETSI JP KCC UNSET
CH01 16 14 14 16 16 15
CH02 16 14 14 16 16 16
CH03 16 14 14 16 16 16
CH04 16 14 14 16 16 16
CH05 16 14 14 16 16 16
CH06 16 14 14 16 16 16
CH07 16 14 14 16 16 16
CH08 16 14 14 16 16 16
CH09 16 14 14 16 16 16
CH10 16 14 14 16 16 16
CH11 16 14 14 16 16 16
CH12 15 14 14 16 16 12
CH13 13 14 14 16 16 12
CH14 NA NA NA 16 NA 12
## END
# Table 2:
## 2.4G, 40M,#6#
## START
## SRRC FCC ETSI JP KCC UNSET
CH01 NA NA NA NA NA NA
CH02 NA NA NA NA NA NA
CH03 16 13 14 16 16 16
CH04 16 13 14 16 16 16
CH05 16 13 14 16 16 16
CH06 16 13 14 16 16 16
CH07 16 13 14 16 16 16
CH08 16 13 14 16 16 16
CH09 16 11 14 16 16 16
CH10 16 11 14 16 16 16
CH11 16 11 14 16 16 16
CH12 NA NA NA NA NA NA
CH13 NA NA NA NA NA NA
CH14 NA NA NA NA NA NA
## END
# Table 3:
## 5G, 20M,#6#
## START
## SRRC FCC ETSI JP KCC UNSET
# 5G Band 1
CH36 15 16 16 16 16 15
CH40 15 16 16 16 16 15
CH44 15 16 16 16 16 15
CH48 15 16 16 16 16 15
# 5G Band 2
CH52 15 16 16 16 16 15
CH56 15 16 16 16 16 15
CH60 15 16 16 16 16 15
CH64 15 16 16 16 16 15
# 5G Band 3
CH100 NA 16 16 16 16 15
CH104 NA 16 16 16 16 15
CH108 NA 16 16 16 16 15
CH112 NA 16 16 16 16 15
CH116 NA 16 16 16 16 15
CH120 NA 16 16 16 16 15
CH124 NA 16 16 16 16 15
CH128 NA 16 16 16 16 15
CH132 NA 16 16 16 16 15
CH136 NA 16 16 16 16 15
CH140 NA 16 16 16 16 15
CH144 NA NA 16 16 16 15
# 5G Band 4
CH149 20 16 8 NA 20 11
CH153 20 16 8 NA 20 11
CH157 20 16 8 NA 20 11
CH161 20 16 8 NA 20 11
CH165 20 16 8 NA 20 11
## END
# Table 4:
## 5G, 40M,#6#
## START
## SRRC FCC ETSI JP KCC UNSET
# 5G Band 1
CH38 15 16 16 16 20 15
CH46 15 16 16 16 20 15
# 5G Band 2
CH54 15 16 16 16 20 15
CH62 15 16 16 16 20 15
# 5G Band 3
CH102 NA 16 16 16 20 15
CH110 NA 16 16 16 20 15
CH118 NA 16 16 16 20 15
CH126 NA 16 16 16 20 15
CH134 NA 16 16 16 20 15
CH142 NA 16 NA 16 20 15
# 5G Band 4
CH151 16 15 8 NA 18 11
CH159 17 16 8 NA 17 11
## END
# Table 5:
## 5G, 80M,#6#
## START
## SRRC FCC ETSI JP KCC UNSET
# 5G Band 1
CH42 15 16 16 16 20 15
# 5G Band 2
CH58 15 16 16 16 20 15
# 5G Band 3
CH106 NA 16 16 16 20 15
CH122 NA 16 16 16 20 15
CH138 NA 16 NA NA 20 15
# 5G Band 4
CH155 15 14 8 NA 16 11
## END
+2 -16
View File
@@ -67,23 +67,9 @@ lvl_11ax_mcs9_5g=13
lvl_11ax_mcs10_5g=12
lvl_11ax_mcs11_5g=12
# txpwr_lvl_adj
lvl_adj_enable=0
lvl_adj_2g4_chan_1_4=0
lvl_adj_2g4_chan_5_9=0
lvl_adj_2g4_chan_10_13=0
lvl_adj_5g_chan_42=0
lvl_adj_5g_chan_58=0
lvl_adj_5g_chan_106=0
lvl_adj_5g_chan_122=0
lvl_adj_5g_chan_138=0
lvl_adj_5g_chan_155=0
# txpwr_loss
loss_enable_2g4=0
loss_value_2g4=2
loss_enable_5g=0
loss_value_5g=5
loss_enable=0
loss_value=2
# txpwr_ofst
ofst_enable=0
@@ -1,124 +0,0 @@
# AIC USERCONFIG 2022/0803/1707
# txpwr_lvl
enable=1
lvl_11b_11ag_1m_2g4=20
lvl_11b_11ag_2m_2g4=20
lvl_11b_11ag_5m5_2g4=20
lvl_11b_11ag_11m_2g4=20
lvl_11b_11ag_6m_2g4=20
lvl_11b_11ag_9m_2g4=20
lvl_11b_11ag_12m_2g4=20
lvl_11b_11ag_18m_2g4=20
lvl_11b_11ag_24m_2g4=20
lvl_11b_11ag_36m_2g4=19
lvl_11b_11ag_48m_2g4=18
lvl_11b_11ag_54m_2g4=17
lvl_11n_11ac_mcs0_2g4=20
lvl_11n_11ac_mcs1_2g4=20
lvl_11n_11ac_mcs2_2g4=20
lvl_11n_11ac_mcs3_2g4=20
lvl_11n_11ac_mcs4_2g4=20
lvl_11n_11ac_mcs5_2g4=19
lvl_11n_11ac_mcs6_2g4=18
lvl_11n_11ac_mcs7_2g4=17
lvl_11n_11ac_mcs8_2g4=17
lvl_11n_11ac_mcs9_2g4=16
lvl_11ax_mcs0_2g4=20
lvl_11ax_mcs1_2g4=20
lvl_11ax_mcs2_2g4=20
lvl_11ax_mcs3_2g4=20
lvl_11ax_mcs4_2g4=20
lvl_11ax_mcs5_2g4=19
lvl_11ax_mcs6_2g4=18
lvl_11ax_mcs7_2g4=17
lvl_11ax_mcs8_2g4=17
lvl_11ax_mcs9_2g4=16
lvl_11ax_mcs10_2g4=15
lvl_11ax_mcs11_2g4=15
lvl_11a_6m_5g=19
lvl_11a_9m_5g=19
lvl_11a_12m_5g=19
lvl_11a_18m_5g=18
lvl_11a_24m_5g=18
lvl_11a_36m_5g=18
lvl_11a_48m_5g=18
lvl_11a_54m_5g=18
lvl_11n_11ac_mcs0_5g=19
lvl_11n_11ac_mcs1_5g=19
lvl_11n_11ac_mcs2_5g=19
lvl_11n_11ac_mcs3_5g=18
lvl_11n_11ac_mcs4_5g=18
lvl_11n_11ac_mcs5_5g=18
lvl_11n_11ac_mcs6_5g=18
lvl_11n_11ac_mcs7_5g=17
lvl_11n_11ac_mcs8_5g=15
lvl_11n_11ac_mcs9_5g=15
lvl_11ax_mcs0_5g=19
lvl_11ax_mcs1_5g=19
lvl_11ax_mcs2_5g=19
lvl_11ax_mcs3_5g=18
lvl_11ax_mcs4_5g=18
lvl_11ax_mcs5_5g=18
lvl_11ax_mcs6_5g=18
lvl_11ax_mcs7_5g=17
lvl_11ax_mcs8_5g=15
lvl_11ax_mcs9_5g=15
lvl_11ax_mcs10_5g=13
lvl_11ax_mcs11_5g=13
# txpwr_lvl_adj
lvl_adj_enable=0
lvl_adj_2g4_chan_1_4=0
lvl_adj_2g4_chan_5_9=0
lvl_adj_2g4_chan_10_13=0
lvl_adj_5g_chan_42=0
lvl_adj_5g_chan_58=0
lvl_adj_5g_chan_106=0
lvl_adj_5g_chan_122=0
lvl_adj_5g_chan_138=0
lvl_adj_5g_chan_155=0
# txpwr_loss
loss_enable_2g4=0
loss_value_2g4=2
loss_enable_5g=0
loss_value_5g=5
# txpwr_ofst
ofst_enable=0
ofst_2g4_11b_chan_1_4=0
ofst_2g4_11b_chan_5_9=0
ofst_2g4_11b_chan_10_13=0
ofst_2g4_ofdm_highrate_chan_1_4=0
ofst_2g4_ofdm_highrate_chan_5_9=0
ofst_2g4_ofdm_highrate_chan_10_13=0
ofst_2g4_ofdm_lowrate_chan_1_4=0
ofst_2g4_ofdm_lowrate_chan_5_9=0
ofst_2g4_ofdm_lowrate_chan_10_13=0
ofst_5g_ofdm_lowrate_chan_42=0
ofst_5g_ofdm_lowrate_chan_58=0
ofst_5g_ofdm_lowrate_chan_106=0
ofst_5g_ofdm_lowrate_chan_122=0
ofst_5g_ofdm_lowrate_chan_138=0
ofst_5g_ofdm_lowrate_chan_155=0
ofst_5g_ofdm_highrate_chan_42=0
ofst_5g_ofdm_highrate_chan_58=0
ofst_5g_ofdm_highrate_chan_106=0
ofst_5g_ofdm_highrate_chan_122=0
ofst_5g_ofdm_highrate_chan_138=0
ofst_5g_ofdm_highrate_chan_155=0
ofst_5g_ofdm_midrate_chan_42=0
ofst_5g_ofdm_midrate_chan_58=0
ofst_5g_ofdm_midrate_chan_106=0
ofst_5g_ofdm_midrate_chan_122=0
ofst_5g_ofdm_midrate_chan_138=0
ofst_5g_ofdm_midrate_chan_155=0
# xtal cap
xtal_enable=0
xtal_cap=24
xtal_cap_fine=31
@@ -1,124 +0,0 @@
# AIC USERCONFIG 2022/0803/1707
# txpwr_lvl
enable=1
lvl_11b_11ag_1m_2g4=18
lvl_11b_11ag_2m_2g4=18
lvl_11b_11ag_5m5_2g4=18
lvl_11b_11ag_11m_2g4=18
lvl_11b_11ag_6m_2g4=18
lvl_11b_11ag_9m_2g4=18
lvl_11b_11ag_12m_2g4=18
lvl_11b_11ag_18m_2g4=18
lvl_11b_11ag_24m_2g4=18
lvl_11b_11ag_36m_2g4=18
lvl_11b_11ag_48m_2g4=18
lvl_11b_11ag_54m_2g4=17
lvl_11n_11ac_mcs0_2g4=20
lvl_11n_11ac_mcs1_2g4=20
lvl_11n_11ac_mcs2_2g4=20
lvl_11n_11ac_mcs3_2g4=20
lvl_11n_11ac_mcs4_2g4=20
lvl_11n_11ac_mcs5_2g4=19
lvl_11n_11ac_mcs6_2g4=18
lvl_11n_11ac_mcs7_2g4=18
lvl_11n_11ac_mcs8_2g4=17
lvl_11n_11ac_mcs9_2g4=16
lvl_11ax_mcs0_2g4=20
lvl_11ax_mcs1_2g4=20
lvl_11ax_mcs2_2g4=20
lvl_11ax_mcs3_2g4=20
lvl_11ax_mcs4_2g4=20
lvl_11ax_mcs5_2g4=19
lvl_11ax_mcs6_2g4=18
lvl_11ax_mcs7_2g4=18
lvl_11ax_mcs8_2g4=17
lvl_11ax_mcs9_2g4=17
lvl_11ax_mcs10_2g4=16
lvl_11ax_mcs11_2g4=16
lvl_11a_6m_5g=18
lvl_11a_9m_5g=18
lvl_11a_12m_5g=18
lvl_11a_18m_5g=18
lvl_11a_24m_5g=18
lvl_11a_36m_5g=18
lvl_11a_48m_5g=18
lvl_11a_54m_5g=18
lvl_11n_11ac_mcs0_5g=20
lvl_11n_11ac_mcs1_5g=19
lvl_11n_11ac_mcs2_5g=19
lvl_11n_11ac_mcs3_5g=18
lvl_11n_11ac_mcs4_5g=18
lvl_11n_11ac_mcs5_5g=18
lvl_11n_11ac_mcs6_5g=18
lvl_11n_11ac_mcs7_5g=17
lvl_11n_11ac_mcs8_5g=16
lvl_11n_11ac_mcs9_5g=16
lvl_11ax_mcs0_5g=20
lvl_11ax_mcs1_5g=19
lvl_11ax_mcs2_5g=19
lvl_11ax_mcs3_5g=18
lvl_11ax_mcs4_5g=18
lvl_11ax_mcs5_5g=18
lvl_11ax_mcs6_5g=18
lvl_11ax_mcs7_5g=17
lvl_11ax_mcs8_5g=16
lvl_11ax_mcs9_5g=16
lvl_11ax_mcs10_5g=15
lvl_11ax_mcs11_5g=15
# txpwr_lvl_adj
lvl_adj_enable=0
lvl_adj_2g4_chan_1_4=0
lvl_adj_2g4_chan_5_9=0
lvl_adj_2g4_chan_10_13=0
lvl_adj_5g_chan_42=0
lvl_adj_5g_chan_58=0
lvl_adj_5g_chan_106=0
lvl_adj_5g_chan_122=0
lvl_adj_5g_chan_138=0
lvl_adj_5g_chan_155=0
# txpwr_loss
loss_enable_2g4=0
loss_value_2g4=2
loss_enable_5g=0
loss_value_5g=5
# txpwr_ofst
ofst_enable=0
ofst_2g4_11b_chan_1_4=0
ofst_2g4_11b_chan_5_9=0
ofst_2g4_11b_chan_10_13=0
ofst_2g4_ofdm_highrate_chan_1_4=0
ofst_2g4_ofdm_highrate_chan_5_9=0
ofst_2g4_ofdm_highrate_chan_10_13=0
ofst_2g4_ofdm_lowrate_chan_1_4=0
ofst_2g4_ofdm_lowrate_chan_5_9=0
ofst_2g4_ofdm_lowrate_chan_10_13=0
ofst_5g_ofdm_lowrate_chan_42=0
ofst_5g_ofdm_lowrate_chan_58=0
ofst_5g_ofdm_lowrate_chan_106=0
ofst_5g_ofdm_lowrate_chan_122=0
ofst_5g_ofdm_lowrate_chan_138=0
ofst_5g_ofdm_lowrate_chan_155=0
ofst_5g_ofdm_highrate_chan_42=0
ofst_5g_ofdm_highrate_chan_58=0
ofst_5g_ofdm_highrate_chan_106=0
ofst_5g_ofdm_highrate_chan_122=0
ofst_5g_ofdm_highrate_chan_138=0
ofst_5g_ofdm_highrate_chan_155=0
ofst_5g_ofdm_midrate_chan_42=0
ofst_5g_ofdm_midrate_chan_58=0
ofst_5g_ofdm_midrate_chan_106=0
ofst_5g_ofdm_midrate_chan_122=0
ofst_5g_ofdm_midrate_chan_138=0
ofst_5g_ofdm_midrate_chan_155=0
# xtal cap
xtal_enable=0
xtal_cap=24
xtal_cap_fine=31
@@ -1,124 +0,0 @@
# AIC USERCONFIG 2022/0803/1707
# txpwr_lvl
enable=1
lvl_11b_11ag_1m_2g4=20
lvl_11b_11ag_2m_2g4=20
lvl_11b_11ag_5m5_2g4=20
lvl_11b_11ag_11m_2g4=20
lvl_11b_11ag_6m_2g4=20
lvl_11b_11ag_9m_2g4=20
lvl_11b_11ag_12m_2g4=20
lvl_11b_11ag_18m_2g4=20
lvl_11b_11ag_24m_2g4=20
lvl_11b_11ag_36m_2g4=19
lvl_11b_11ag_48m_2g4=18
lvl_11b_11ag_54m_2g4=17
lvl_11n_11ac_mcs0_2g4=20
lvl_11n_11ac_mcs1_2g4=20
lvl_11n_11ac_mcs2_2g4=20
lvl_11n_11ac_mcs3_2g4=20
lvl_11n_11ac_mcs4_2g4=20
lvl_11n_11ac_mcs5_2g4=19
lvl_11n_11ac_mcs6_2g4=18
lvl_11n_11ac_mcs7_2g4=17
lvl_11n_11ac_mcs8_2g4=17
lvl_11n_11ac_mcs9_2g4=16
lvl_11ax_mcs0_2g4=20
lvl_11ax_mcs1_2g4=20
lvl_11ax_mcs2_2g4=20
lvl_11ax_mcs3_2g4=20
lvl_11ax_mcs4_2g4=20
lvl_11ax_mcs5_2g4=19
lvl_11ax_mcs6_2g4=18
lvl_11ax_mcs7_2g4=17
lvl_11ax_mcs8_2g4=17
lvl_11ax_mcs9_2g4=16
lvl_11ax_mcs10_2g4=15
lvl_11ax_mcs11_2g4=15
lvl_11a_6m_5g=19
lvl_11a_9m_5g=19
lvl_11a_12m_5g=19
lvl_11a_18m_5g=18
lvl_11a_24m_5g=18
lvl_11a_36m_5g=18
lvl_11a_48m_5g=18
lvl_11a_54m_5g=18
lvl_11n_11ac_mcs0_5g=19
lvl_11n_11ac_mcs1_5g=19
lvl_11n_11ac_mcs2_5g=19
lvl_11n_11ac_mcs3_5g=18
lvl_11n_11ac_mcs4_5g=18
lvl_11n_11ac_mcs5_5g=18
lvl_11n_11ac_mcs6_5g=18
lvl_11n_11ac_mcs7_5g=17
lvl_11n_11ac_mcs8_5g=15
lvl_11n_11ac_mcs9_5g=15
lvl_11ax_mcs0_5g=19
lvl_11ax_mcs1_5g=19
lvl_11ax_mcs2_5g=19
lvl_11ax_mcs3_5g=18
lvl_11ax_mcs4_5g=18
lvl_11ax_mcs5_5g=18
lvl_11ax_mcs6_5g=18
lvl_11ax_mcs7_5g=17
lvl_11ax_mcs8_5g=15
lvl_11ax_mcs9_5g=15
lvl_11ax_mcs10_5g=14
lvl_11ax_mcs11_5g=14
# txpwr_lvl_adj
lvl_adj_enable=0
lvl_adj_2g4_chan_1_4=0
lvl_adj_2g4_chan_5_9=0
lvl_adj_2g4_chan_10_13=0
lvl_adj_5g_chan_42=0
lvl_adj_5g_chan_58=0
lvl_adj_5g_chan_106=0
lvl_adj_5g_chan_122=0
lvl_adj_5g_chan_138=0
lvl_adj_5g_chan_155=0
# txpwr_loss
loss_enable_2g4=0
loss_value_2g4=2
loss_enable_5g=0
loss_value_5g=5
# txpwr_ofst
ofst_enable=0
ofst_2g4_11b_chan_1_4=0
ofst_2g4_11b_chan_5_9=0
ofst_2g4_11b_chan_10_13=0
ofst_2g4_ofdm_highrate_chan_1_4=0
ofst_2g4_ofdm_highrate_chan_5_9=0
ofst_2g4_ofdm_highrate_chan_10_13=0
ofst_2g4_ofdm_lowrate_chan_1_4=0
ofst_2g4_ofdm_lowrate_chan_5_9=0
ofst_2g4_ofdm_lowrate_chan_10_13=0
ofst_5g_ofdm_lowrate_chan_42=0
ofst_5g_ofdm_lowrate_chan_58=0
ofst_5g_ofdm_lowrate_chan_106=0
ofst_5g_ofdm_lowrate_chan_122=0
ofst_5g_ofdm_lowrate_chan_138=0
ofst_5g_ofdm_lowrate_chan_155=0
ofst_5g_ofdm_highrate_chan_42=0
ofst_5g_ofdm_highrate_chan_58=0
ofst_5g_ofdm_highrate_chan_106=0
ofst_5g_ofdm_highrate_chan_122=0
ofst_5g_ofdm_highrate_chan_138=0
ofst_5g_ofdm_highrate_chan_155=0
ofst_5g_ofdm_midrate_chan_42=0
ofst_5g_ofdm_midrate_chan_58=0
ofst_5g_ofdm_midrate_chan_106=0
ofst_5g_ofdm_midrate_chan_122=0
ofst_5g_ofdm_midrate_chan_138=0
ofst_5g_ofdm_midrate_chan_155=0
# xtal cap
xtal_enable=0
xtal_cap=24
xtal_cap_fine=31
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+99
View File
@@ -0,0 +1,99 @@
# Issue #58: legacy firmware test for D80 MCU revision 1
This branch is an experimental build for
[issue #58](https://github.com/shenmintao/aic8800d80/issues/58). It is intended
only for AIC8800D80 devices reported as:
```text
chip_id=7, chip_mcu_id=1
```
Do not merge this branch as a general firmware downgrade. It replaces the
complete `fw/aic8800D80` firmware set so that an affected device can test one
specific hypothesis. Firmware for D80N, D80X2, DC, and other variants is not
changed.
## Hypothesis
The affected device times out when an FMAC upload reaches address `0x170400`.
With an upload base of `0x120000`, this suggests that the old MCU revision has
an FMAC RAM window of about `0x50400` (328,704) bytes.
| Firmware | Size | End address (exclusive) | Result relative to `0x170400` |
| --- | ---: | ---: | ---: |
| Current V5 FMAC | 358,072 bytes | `0x1776B8` | 29,368 bytes over |
| Legacy V3 FMAC in this branch | 327,037 bytes | `0x16FD7D` | 1,667 bytes free |
This branch uses the complete matching D80 firmware set from Radxa SDK V3,
fixed at upstream commit
[`254d47e6a131dbed5ba32131972f4719f3e1c7fe`](https://github.com/radxa-pkg/aic8800/commit/254d47e6a131dbed5ba32131972f4719f3e1c7fe).
The normal FMAC file has SHA-256
`1ec680c2b63dcaa0e5d33c5fb6d1857d030f8145c05c385e243760388a61a0da`.
## Install the test branch
From an existing clone:
```bash
git fetch origin
git switch test/issue-58-mcu1-legacy-fw
sudo ./install.sh
```
Disconnect and reconnect the USB device after installation. Reboot if the
device does not re-enumerate cleanly.
## Verify
First save the complete kernel log and confirm that firmware upload passes the
old failure address without a command timeout:
```bash
sudo dmesg -C
# Disconnect and reconnect the device, then wait for initialization.
sudo dmesg | tee issue58-legacy-fw-dmesg.txt
sudo dmesg | grep -iE 'aic|chip_id|chip_mcu_id|fmacfw|bin upload|cmd timed-out'
```
Please report all of the following, even if an earlier item fails:
1. The `chip_id` and `chip_mcu_id` lines, and whether firmware upload completes.
2. Whether nearby SSIDs can be scanned.
3. Whether Wi-Fi association succeeds.
4. Whether the interface receives an address by DHCP.
5. Whether the gateway and an Internet address can be pinged, and whether real
traffic works.
6. Whether Bluetooth still enumerates and works through the kernel's standard
`btusb` driver. This test does not install or use `aic_btusb`.
Useful commands:
```bash
iw dev
nmcli device wifi list
ip address
ip route
ping -c 4 "$(ip route | awk '/default/ {print $3; exit}')"
ping -c 4 1.1.1.1
lsusb -t
bluetoothctl list
```
If NetworkManager is unavailable, identify the interface with `iw dev`, then
replace `wlan0` below with that interface name:
```bash
sudo iw dev wlan0 scan | grep SSID
```
## Return to the current V5 firmware
The installer replaces the firmware under `/lib/firmware`, so merely switching
Git branches is not enough. Reinstall after returning to `main`:
```bash
git switch main
git pull --ff-only
sudo ./install.sh
sudo reboot
```