mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 09:12:39 +00:00
c904875562
Hardware: ========= SOC: Qualcomm IPQ4019 WiFi 1: QCA4019 IEEE 802.11b/g/n WiFi 2: QCA4019 IEEE 802.11a/n/ac WiFi 3: QCA9886 IEEE 802.11a/n/ac Bluetooth: Qualcomm CSR8510 (A10) Zigbee: Silicon Labs EM3581 NCP + Skyworks SE2432L Ethernet: Qualcomm Atheros QCA8072 (2-port) Flash: Samsung KLM4G1FEPD (4GB eMMC) RAM (NAND): 512MB LED Controller: NXP PCA9633 (I2C) Buttons: Single reset button (GPIO). Ethernet: ========= The device has 2 ethernet ports, configured as follows by default: - left port: WAN - right port: LAN Wifi: ===== The Wifi radios are turned off by default. To configure the router, you will need to connect your computer to the LAN port of the device. Bluetooth and Zigbee: ===================== Configuration included but not tested. Storage: ======== For compatibility with stock firmware, all of OpenWrt runs in a 136 MiB eMMC partition (of which there are two copies, see below). You can also use partition /dev/mmcblk0p19 "syscfg" (3.4 GiB) any way you see fit. During very limited tests, stock firmware did not mount this partition. However, backing up its stock content before use is recommended anyway. Firmware: ========= The device uses a dual firmware mechanism: it automatically reverts to the previous firmware after 3 failed boot attempts. You can switch to the inactive firmware copy by changing the "boot_part" U-Boot environment variable. You can also do it by turning on the device for a couple of seconds and then back off, 3 times in a row. Installation: ============= OpenWrt's "factory" image can be installed via the stock web UI: 1. Login to the UI. (The default password is printed on the label.) 2. Enter support mode by clicking on the "CA" link at the bottom. 3. Click "Connectivity", "Choose file", "Start", and ignore warnings. This port is based on work done by flipy (https://github.com/flipy). Signed-off-by: Rodrigo Balerdi <lanchon@gmail.com> Link: https://github.com/openwrt/openwrt/pull/15345 Signed-off-by: Robert Marko <robimarko@gmail.com>
295 lines
9.8 KiB
Bash
295 lines
9.8 KiB
Bash
#!/bin/sh
|
|
|
|
[ -e /lib/firmware/$FIRMWARE ] && exit 0
|
|
|
|
. /lib/functions/caldata.sh
|
|
|
|
board=$(board_name)
|
|
|
|
case "$FIRMWARE" in
|
|
"ath10k/cal-pci-0000:01:00.0.bin")
|
|
case "$board" in
|
|
meraki,mr33 |\
|
|
meraki,mr74)
|
|
caldata_extract_ubi "ART" 0x9000 0x844
|
|
caldata_valid "4408" || caldata_extract "ART" 0x9000 0x844
|
|
;;
|
|
esac
|
|
;;
|
|
"ath10k/pre-cal-pci-0000:01:00.0.bin")
|
|
case "$board" in
|
|
asus,map-ac2200)
|
|
caldata_extract_ubi "Factory" 0x9000 0x2f20
|
|
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
|
|
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
|
|
;;
|
|
asus,rt-ac42u)
|
|
caldata_extract_ubi "Factory" 0x9000 0x2f20
|
|
;;
|
|
avm,fritzrepeater-3000)
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
|
|
;;
|
|
linksys,ea8300 |\
|
|
linksys,mr8300)
|
|
caldata_extract "ART" 0x9000 0x2f20
|
|
# OEM assigns 4 sequential MACs
|
|
ath10k_patch_mac $(macaddr_setbit_la $(macaddr_add "$(cat /sys/class/net/eth0/address)" 4))
|
|
;;
|
|
linksys,whw03)
|
|
caldata_extract_mmc "0:ART" 0x9000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add "$(cat /sys/class/net/eth0/address)" 3)
|
|
;;
|
|
netgear,rbr40|\
|
|
netgear,rbs40|\
|
|
netgear,rbr50|\
|
|
netgear,rbs50|\
|
|
netgear,srr60|\
|
|
netgear,srs60)
|
|
caldata_extract_mmc "0:ART" 0x9000 0x2f20
|
|
ath10k_patch_mac $(mmc_get_mac_binary ARTMTD 0x12)
|
|
;;
|
|
esac
|
|
;;
|
|
"ath10k/pre-cal-ahb-a000000.wifi.bin")
|
|
case "$board" in
|
|
asus,map-ac2200|\
|
|
asus,rt-ac42u|\
|
|
asus,rt-ac58u)
|
|
caldata_extract_ubi "Factory" 0x1000 0x2f20
|
|
;;
|
|
avm,fritzbox-4040)
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
|
|
;;
|
|
avm,fritzbox-7530 |\
|
|
avm,fritzrepeater-1200 |\
|
|
avm,fritzrepeater-3000)
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
|
|
;;
|
|
cellc,rtl30vw)
|
|
caldata_extract "0:ART" 0x1000 0x2f20
|
|
;;
|
|
devolo,magic-2-wifi-next)
|
|
caldata_extract "ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(mtd_get_mac_ascii APPSBLENV WiFiMacAddress0)
|
|
;;
|
|
dlink,dap-2610)
|
|
caldata_extract "ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac)
|
|
;;
|
|
engenius,emd1)
|
|
caldata_extract "0:ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(mtd_get_mac_ascii 0:APPSBLENV wlanaddr)
|
|
;;
|
|
engenius,emr3500)
|
|
caldata_extract "0:ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(mtd_get_mac_ascii 0:APPSBLENV ethaddr)
|
|
;;
|
|
engenius,ens620ext)
|
|
caldata_extract "ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) 2)
|
|
;;
|
|
extreme-networks,ws-ap3915i |\
|
|
extreme-networks,ws-ap391x)
|
|
caldata_extract "ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(mtd_get_mac_ascii CFG1 RADIOADDR0)
|
|
;;
|
|
linksys,ea8300 |\
|
|
linksys,mr8300)
|
|
caldata_extract "ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add "$(cat /sys/class/net/eth0/address)" 2)
|
|
;;
|
|
linksys,whw03)
|
|
caldata_extract_mmc "0:ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add "$(cat /sys/class/net/eth0/address)" 1)
|
|
;;
|
|
meraki,mr33 |\
|
|
meraki,mr74)
|
|
caldata_extract_ubi "ART" 0x1000 0x2f20
|
|
caldata_valid "202f" || caldata_extract "ART" 0x1000 0x2f20
|
|
;;
|
|
mikrotik,cap-ac |\
|
|
mikrotik,hap-ac2 |\
|
|
mikrotik,hap-ac3 |\
|
|
mikrotik,hap-ac3-lte6-kit |\
|
|
mikrotik,wap-ac |\
|
|
mikrotik,wap-ac-lte |\
|
|
mikrotik,wap-r-ac)
|
|
wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data"
|
|
( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x0 0x2f20 ) || \
|
|
( [ -d "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data/data_0" 0x0 0x2f20 )
|
|
;;
|
|
netgear,rbr40|\
|
|
netgear,rbs40|\
|
|
netgear,rbr50|\
|
|
netgear,rbs50|\
|
|
netgear,srr60|\
|
|
netgear,srs60)
|
|
caldata_extract_mmc "0:ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(mmc_get_mac_binary ARTMTD 0x0)
|
|
;;
|
|
pakedge,wr-1)
|
|
caldata_extract "0:ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add $(get_mac_label) 2)
|
|
;;
|
|
teltonika,rutx10|\
|
|
teltonika,rutx50)
|
|
caldata_extract "0:ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary "0:CONFIG" 0x0) 2)
|
|
;;
|
|
sony,ncp-hg100-cellular)
|
|
caldata_extract_mmc "0:ART" 0x1000 0x2f20
|
|
;;
|
|
zyxel,nbg6617 |\
|
|
zyxel,wre6606)
|
|
caldata_extract "ART" 0x1000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
|
|
;;
|
|
esac
|
|
;;
|
|
"ath10k/pre-cal-ahb-a800000.wifi.bin")
|
|
case "$board" in
|
|
asus,map-ac2200|\
|
|
asus,rt-ac58u)
|
|
caldata_extract_ubi "Factory" 0x5000 0x2f20
|
|
;;
|
|
avm,fritzbox-4040)
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
|
|
;;
|
|
avm,fritzbox-7530 |\
|
|
avm,fritzrepeater-1200 |\
|
|
avm,fritzrepeater-3000)
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
|
|
;;
|
|
cellc,rtl30vw)
|
|
caldata_extract "0:ART" 0x5000 0x2f20
|
|
;;
|
|
devolo,magic-2-wifi-next)
|
|
caldata_extract "ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(mtd_get_mac_ascii APPSBLENV WiFiMacAddress1)
|
|
;;
|
|
dlink,dap-2610)
|
|
caldata_extract "ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac_a)
|
|
;;
|
|
engenius,emd1)
|
|
caldata_extract "0:ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii 0:APPSBLENV wlanaddr) 1)
|
|
;;
|
|
engenius,emr3500)
|
|
caldata_extract "0:ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii 0:APPSBLENV ethaddr) 1)
|
|
;;
|
|
engenius,ens620ext)
|
|
caldata_extract "ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) 3)
|
|
;;
|
|
extreme-networks,ws-ap3915i |\
|
|
extreme-networks,ws-ap391x)
|
|
caldata_extract "ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(mtd_get_mac_ascii CFG1 RADIOADDR1)
|
|
;;
|
|
linksys,ea8300 |\
|
|
linksys,mr8300)
|
|
caldata_extract "ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add "$(cat /sys/class/net/eth0/address)" 3)
|
|
;;
|
|
linksys,whw03)
|
|
caldata_extract_mmc "0:ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add "$(cat /sys/class/net/eth0/address)" 2)
|
|
;;
|
|
meraki,mr33 |\
|
|
meraki,mr74)
|
|
caldata_extract_ubi "ART" 0x5000 0x2f20
|
|
caldata_valid "202f" || caldata_extract "ART" 0x5000 0x2f20
|
|
;;
|
|
mikrotik,cap-ac |\
|
|
mikrotik,hap-ac2 |\
|
|
mikrotik,hap-ac3 |\
|
|
mikrotik,hap-ac3-lte6-kit |\
|
|
mikrotik,sxtsq-5-ac |\
|
|
mikrotik,wap-ac |\
|
|
mikrotik,wap-ac-lte |\
|
|
mikrotik,wap-r-ac)
|
|
wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data"
|
|
( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x8000 0x2f20 ) || \
|
|
( [ -d "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data/data_2" 0x0 0x2f20 )
|
|
;;
|
|
netgear,rbr40|\
|
|
netgear,rbs40|\
|
|
netgear,rbr50|\
|
|
netgear,rbs50|\
|
|
netgear,srr60|\
|
|
netgear,srs60)
|
|
caldata_extract_mmc "0:ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(mmc_get_mac_binary ARTMTD 0xc)
|
|
;;
|
|
pakedge,wr-1)
|
|
caldata_extract "0:ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add $(get_mac_label) 4)
|
|
;;
|
|
teltonika,rutx10|\
|
|
teltonika,rutx50)
|
|
caldata_extract "0:ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary "0:CONFIG" 0x0) 3)
|
|
;;
|
|
sony,ncp-hg100-cellular)
|
|
caldata_extract_mmc "0:ART" 0x5000 0x2f20
|
|
;;
|
|
zyxel,nbg6617 |\
|
|
zyxel,wre6606)
|
|
caldata_extract "ART" 0x5000 0x2f20
|
|
ath10k_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
|
|
;;
|
|
esac
|
|
;;
|
|
"ath10k/QCA4019/hw1.0/board-ahb-a000000.wifi.bin")
|
|
case "$board" in
|
|
mikrotik,cap-ac |\
|
|
mikrotik,hap-ac2 |\
|
|
mikrotik,hap-ac3 |\
|
|
mikrotik,hap-ac3-lte6-kit |\
|
|
mikrotik,wap-ac |\
|
|
mikrotik,wap-ac-lte |\
|
|
mikrotik,wap-r-ac)
|
|
wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data"
|
|
( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x2f20 0x2f20 ) || \
|
|
( [ -d "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data/data_0" 0x2f20 0x2f20 )
|
|
;;
|
|
esac
|
|
;;
|
|
"ath10k/QCA4019/hw1.0/board-ahb-a800000.wifi.bin")
|
|
case "$board" in
|
|
mikrotik,cap-ac |\
|
|
mikrotik,hap-ac2 |\
|
|
mikrotik,hap-ac3 |\
|
|
mikrotik,hap-ac3-lte6-kit |\
|
|
mikrotik,sxtsq-5-ac |\
|
|
mikrotik,wap-ac |\
|
|
mikrotik,wap-ac-lte |\
|
|
mikrotik,wap-r-ac)
|
|
wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data"
|
|
( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0xaf20 0x2f20 ) || \
|
|
( [ -d "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data/data_2" 0x2f20 0x2f20 )
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
exit 1
|
|
;;
|
|
esac
|