16 mtd
=$
(find_mtd_chardev
$part)
18 ath10kcal_die
"no mtd device found for partition $part"
20 dd if=$mtd of
=/lib
/firmware
/$FIRMWARE iflag
=skip_bytes bs
=$count skip
=$offset count
=1 2>/dev
/null || \
21 ath10kcal_die
"failed to extract calibration data from $mtd"
24 ath10kcal_ubi_extract
() {
31 .
/lib
/upgrade
/nand.sh
33 ubidev
=$
(nand_find_ubi
$CI_UBIPART)
34 ubi
=$
(nand_find_volume
$ubidev $part)
36 ath10kcal_die
"no UBI volume found for $part"
38 dd if=/dev
/$ubi of
=/lib
/firmware
/$FIRMWARE iflag
=skip_bytes bs
=$count skip
=$offset count
=1 2>/dev
/null || \
39 ath10kcal_die
"failed to extract from $ubi"
42 ath10kcal_patch_mac_crc
() {
50 [ -z "$mac" ] && return
52 xor_fw_mac
=$
(hexdump -v -n 6 -s $mac_offset -e '/1 "%02x"' /lib
/firmware
/$FIRMWARE)
53 xor_fw_mac
="${xor_fw_mac:0:4} ${xor_fw_mac:4:4} ${xor_fw_mac:8:4}"
55 macaddr_2bin
$mac |
dd of
=/lib
/firmware
/$FIRMWARE conv
=notrunc bs
=1 seek
=6 count
=6
58 xor_mac
="${xor_mac:0:4} ${xor_mac:4:4} ${xor_mac:8:4}"
60 xor_fw_chksum
=$
(hexdump -v -n 2 -s $chksum_offset -e '/1 "%02x"' /lib
/firmware
/$FIRMWARE)
61 xor_fw_chksum
=$
(xor
$xor_fw_chksum $xor_fw_mac $xor_mac)
63 printf "%b" "\x${xor_fw_chksum:0:2}\x${xor_fw_chksum:2:2}" | \
64 dd of
=/lib
/firmware
/$FIRMWARE conv
=notrunc bs
=1 seek
=$chksum_offset count
=2
67 ath10kcal_is_caldata_valid
() {
70 magic
=$
(hexdump -v -n 2 -e '1/1 "%02x"' /lib
/firmware
/$FIRMWARE)
71 [[ "$magic" == "$expected" ]]
75 [ -e /lib
/firmware
/$FIRMWARE ] && exit 0
77 .
/lib
/functions
/system.sh
82 "ath10k/cal-pci-0000:01:00.0.bin")
85 ath10kcal_ubi_extract
"ART" 0x9000 0x844
86 ath10kcal_is_caldata_valid
"4408" || ath10kcal_extract
"ART" 0x9000 0x844
87 ath10kcal_patch_mac_crc $
(macaddr_add $
(get_mac_binary
"/sys/bus/i2c/devices/0-0050/eeprom" 0x66) +1)
91 "ath10k/pre-cal-pci-0000:01:00.0.bin")
94 ath10kcal_ubi_extract
"Factory" 0x9000 0x2f20
95 ln -sf /lib
/firmware
/ath10k
/pre-cal-pci-0000\
:00\
:00.0.bin \
96 /lib
/firmware
/ath10k
/QCA9888
/hw2.0
/board.bin
98 avm
,fritzrepeater-3000
)
99 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3D000 -e 0x212 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader0") || \
100 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C800 -e 0x212 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader0") || \
101 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C000 -e 0x212 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader0") || \
102 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3D000 -e 0x212 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader1") || \
103 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C800 -e 0x212 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader1") || \
104 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C000 -e 0x212 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader1")
107 ath10kcal_extract
"ART" 0x9000 0x2f20
108 # OEM assigns 4 sequential MACs
109 ath10kcal_patch_mac_crc $
(macaddr_setbit_la $
(macaddr_add
"$(cat /sys/class/net/eth0/address)" 4))
112 ath10kcal_extract
"0:ART" 0x9000 0x2f20
116 "ath10k/pre-cal-ahb-a000000.wifi.bin")
119 alfa-network
,ap120c-ac |\
123 ath10kcal_extract
"ART" 0x1000 0x2f20
126 ath10kcal_ubi_extract
"Factory" 0x1000 0x2f20
130 ath10kcal_ubi_extract
"Factory" 0x1000 0x2f20
133 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x400 -e 0x207 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader_config")
136 avm
,fritzrepeater-3000
)
137 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader0") || \
138 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C800 -e 0x207 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader0") || \
139 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3D000 -e 0x207 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader0") || \
140 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader1") || \
141 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C800 -e 0x207 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader1") || \
142 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3D000 -e 0x207 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader1")
150 ath10kcal_extract
"0:ART" 0x1000 0x2f20
153 ath10kcal_extract
"ART" 0x1000 0x2f20
154 ath10kcal_patch_mac_crc $
(macaddr_add $
(mtd_get_mac_ascii u-boot-env ethaddr
) +2)
157 ath10kcal_extract
"ART" 0x1000 0x2f20
158 ath10kcal_patch_mac_crc $
(macaddr_add
"$(cat /sys/class/net/eth0/address)" 2)
161 ath10kcal_ubi_extract
"ART" 0x1000 0x2f20
162 ath10kcal_is_caldata_valid
"202f" || ath10kcal_extract
"ART" 0x1000 0x2f20
163 ath10kcal_patch_mac_crc $
(macaddr_add $
(get_mac_binary
"/sys/bus/i2c/devices/0-0050/eeprom" 0x66) +2)
167 ath10kcal_extract
"ART" 0x1000 0x2f20
168 ath10kcal_patch_mac_crc $
(mtd_get_mac_binary dnidata
0x0)
172 ath10kcal_extract
"ART" 0x1000 0x2f20
173 ath10kcal_patch_mac_crc $
(macaddr_add $
(cat /sys
/class
/net
/eth
0/address
) -2)
177 "ath10k/pre-cal-ahb-a800000.wifi.bin")
180 alfa-network
,ap120c-ac |\
184 ath10kcal_extract
"ART" 0x5000 0x2f20
187 ath10kcal_ubi_extract
"Factory" 0x5000 0x2f20
191 ath10kcal_ubi_extract
"Factory" 0x5000 0x2f20
194 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x400 -e 0x208 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader_config")
197 avm
,fritzrepeater-3000
)
198 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader0") || \
199 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3D000 -e 0x208 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader0") || \
200 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C000 -e 0x208 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader0") || \
201 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader1") || \
202 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3D000 -e 0x208 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader1") || \
203 /usr
/bin
/fritz_cal_extract
-i 1 -s 0x3C000 -e 0x208 -l 12064 -o /lib
/firmware
/$FIRMWARE $
(find_mtd_chardev
"urlader1")
211 ath10kcal_extract
"0:ART" 0x5000 0x2f20
214 ath10kcal_extract
"ART" 0x5000 0x2f20
215 ath10kcal_patch_mac_crc $
(macaddr_add $
(mtd_get_mac_ascii u-boot-env ethaddr
) +3)
218 ath10kcal_extract
"ART" 0x5000 0x2f20
219 ath10kcal_patch_mac_crc $
(macaddr_add
"$(cat /sys/class/net/eth0/address)" 3)
222 ath10kcal_ubi_extract
"ART" 0x5000 0x2f20
223 ath10kcal_is_caldata_valid
"202f" || ath10kcal_extract
"ART" 0x5000 0x2f20
224 ath10kcal_patch_mac_crc $
(macaddr_add $
(get_mac_binary
"/sys/bus/i2c/devices/0-0050/eeprom" 0x66) +3)
228 ath10kcal_extract
"ART" 0x5000 0x2f20
229 ath10kcal_patch_mac_crc $
(mtd_get_mac_binary dnidata
0xc)
233 ath10kcal_extract
"ART" 0x5000 0x2f20
234 ath10kcal_patch_mac_crc $
(macaddr_add $
(cat /sys
/class
/net
/eth
0/address
) -1)