mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 23:12:32 +00:00
f490295bf2
Buffalo WXR-5950AX12 is a 2.4/5 GHz band 11ax (Wi-Fi 6) router, based on IPQ8074A. Specification: - SoC : Qualcomm IPQ8074A - RAM : DDR3 1024 MiB (2x Nanya NT5CC256M16ER-EK) - Flash : RAW NAND 256 MiB (Winbond W29N02GZBIBA) - WLAN : 2.4/5 GHz (IPQ8074A) - Ethernet : 5 ports - WAN : 100/1000/2500/10000 Mbps x1 (AQR113C) - LAN : 100/1000/2500/10000 Mbps x1 (AQR113C), 10/100/1000 Mbps x3 (QCA8075) - LED/Keys : 8x/5x - UART : pin header on PCB (J7) - assignment: 3.3V, GND, TX, RX from disc marking - settings : 115200n8 - Power : 12 VDC, 4 A Flash instruction using initramfs image: 1. Prepare TFTP server with IP address 192.168.11.10 2. Rename OpenWrt initramfs image to "WXR-5950AX12-initramfs.uImage and place it to TFTP directory 3. Hold AOSS (WPS) button and power on WXR-5950AX12 4. WXR-5950AX12 downloads initramfs image from TFTP server and boots with it automatically 5. Upload sysupgrade image to WXR-5950AX12 and perform sysupgrade 6. Wait ~120 seconds to complete flashing Partition layout: 0x000000000000-0x000000100000 : "0:sbl1" 0x000000100000-0x000000200000 : "0:mibib" 0x000000200000-0x000000280000 : "0:bootconfig" 0x000000280000-0x000000300000 : "0:bootconfig1" 0x000000300000-0x000000600000 : "0:qsee" 0x000000600000-0x000000900000 : "0:qsee_1" 0x000000900000-0x000000980000 : "0:devcfg" 0x000000980000-0x000000a00000 : "0:devcfg_1" 0x000000a00000-0x000000a80000 : "0:apdp" 0x000000a80000-0x000000b00000 : "0:apdp_1" 0x000000b00000-0x000000b80000 : "0:rpm" 0x000000b80000-0x000000c00000 : "0:rpm_1" 0x000000c00000-0x000000c80000 : "0:cdt" 0x000000c80000-0x000000d00000 : "0:cdt_1" 0x000000d00000-0x000000d80000 : "0:appsblenv" 0x000000d80000-0x000000e80000 : "0:appsbl" 0x000000e80000-0x000000f80000 : "0:appsbl_1" 0x000000f80000-0x000001000000 : "0:art" 0x000001000000-0x000001080000 : "0:art_1" 0x000001080000-0x000001100000 : "0:orgdata" 0x000001100000-0x000001180000 : "0:orgdata_1" 0x000001180000-0x000005180000 : "rootfs" 0x000005180000-0x000009180000 : "rootfs_recover" 0x000009180000-0x000010000000 : "user_property" Notes: - WXR-5950AX12 has 2x OS images on NAND flash. The 1st image is for normal operation and the 2nd one is for recoverying or firmware upgrading on stock. - Stock U-Boot checks MD5 hashes in "fw_hash" volume in each "root*" partition when booting. This is just a comparation of hash strings. Behaviors: - both "fw_hash" volumes exist, hashes are rootfs == rootfs_recover ---> boot from rootfs - both "fw_hash" volumes exist, hashes are rootfs != rootfs_recover ---> boot from rootfs_recover Note: this behavior is used for firmware upgrading on stock - "fw_hash" volume in rootfs is missing ---> boot from rootfs_recover - "fw_hash" volume in rootfs_recover is missing ---> boot from rootfs - "fw_hash" volumes in both root* partition are missing ---> boot from rootfs_recover Reverting to stock firmware: 1. Decrypt official image by buffalo-enc and remove header example of decryption: $ buffalo-enc -i wxr_5950ax12_jp_305 -o wxr_5950ax12_jp_305.dec \ -d -k olaffuB -O 0xc8 example of removing header (v3.05): - before $ hexdump -n 64 -v -C wxr_5950ax12_jp_305.dec 00000000 57 58 52 2d 35 39 35 30 41 58 31 32 5f 33 2e 30 |WXR-5950AX12_3.0| 00000010 35 5f 31 2e 30 31 5f 4a 50 5f 6a 70 5f 71 63 61 |5_1.01_JP_jp_qca| 00000020 0a 66 69 6c 65 6c 65 6e 3d 34 35 33 35 30 39 31 |.filelen=4535091| 00000030 32 0a 55 42 49 23 01 00 00 00 00 00 00 00 00 00 |2.UBI#..........| 00000040 - after $ hexdump -n 64 -v -C wxr_5950ax12_jp_305.ubi 00000000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............| 00000010 00 00 08 00 00 00 10 00 78 cf c4 91 00 00 00 00 |........x.......| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 3d 2a 64 fd |............=*d.| 00000040 2. Boot WXR-5950AX12 with OpenWrt initramfs image 3. Upload modified stock image to WXR-5950AX12 4. Find partitions "rootfs" and "rootfs_recover" example: root@OpenWrt:/# cat /proc/mtd dev: size erasesize name ... mtd22: 04000000 00020000 "rootfs" mtd23: 04000000 00020000 "rootfs_recover" ... in this case, "rootfs" is mtd22 and "rootfs_recover" is mtd23 5. Format "rootfs"/"rootfs_recover" partition with the uploaded image example: ubiformat /dev/mtd22 -f /tmp/wxr_5950ax12_jp_305.ubi ubiformat /dev/mtd23 -f /tmp/wxr_5950ax12_jp_305.ubi 6. Remove "rootfs"/"rootfs_data" volume from user_property partition example: . /lib/upgrade/nand.sh UBI=$(nand_attach_ubi user_property) ubirmvol /dev/$UBI -N rootfs ubirmvol /dev/$UBI -N rootfs_data 7. Reboot MAC addresses: LAN : 50:C4:DD:xx:xx:28 (0:APPSBLENV, ethaddr (text)) WAN : 50:C4:DD:xx:xx:28 (0:APPSBLENV, ethaddr (text)) 2.4 GHz: 50:C4:DD:xx:xx:30 (0:APPSBLENV, wlan0addr (text)) 5 GHz : 50:C4:DD:xx:xx:38 (0:APPSBLENV, wlan1addr (text)) Reviewed-by: Robert Marko <robimarko@gmail.com> Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
157 lines
5.8 KiB
Makefile
157 lines
5.8 KiB
Makefile
include $(TOPDIR)/rules.mk
|
|
include $(INCLUDE_DIR)/version.mk
|
|
|
|
PKG_NAME:=ipq-wifi
|
|
PKG_RELEASE:=1
|
|
PKG_FLAGS:=nonshared
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
|
|
define Build/Prepare
|
|
mkdir -p $(PKG_BUILD_DIR)
|
|
endef
|
|
|
|
define Build/Compile
|
|
endef
|
|
|
|
# Use ath10k-bdencoder from https://github.com/qca/qca-swiss-army-knife.git
|
|
# to generate the board-* files here.
|
|
#
|
|
# This is intended to be used on an interim basis until device-specific
|
|
# board data for new devices is available through the upstream compilation
|
|
#
|
|
# Please send a mail with your device-specific board files upstream.
|
|
# You can find instructions and examples on the linux-wireless wiki:
|
|
# <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>
|
|
|
|
ALLWIFIBOARDS:= \
|
|
aruba_ap-365 \
|
|
buffalo_wxr-5950ax12 \
|
|
devolo_magic-2-wifi-next \
|
|
dynalink_dl-wrx36 \
|
|
edgecore_eap102 \
|
|
edgecore_ecw5410 \
|
|
edgecore_oap100 \
|
|
edimax_cax1800 \
|
|
extreme-networks_ws-ap3915i \
|
|
glinet_gl-a1300 \
|
|
glinet_gl-ap1300 \
|
|
glinet_gl-s1300 \
|
|
linksys_ea8300 \
|
|
linksys_whw03v2 \
|
|
p2w_r619ac \
|
|
pakedge_wr-1 \
|
|
qnap_301w \
|
|
qxwlan_e2600ac-c1 \
|
|
qxwlan_e2600ac-c2 \
|
|
redmi_ax6 \
|
|
sony_ncp-hg100-cellular \
|
|
teltonika_rutx \
|
|
xiaomi_ax3600 \
|
|
xiaomi_ax9000 \
|
|
zte_mf18a \
|
|
zte_mf289f \
|
|
zyxel_nbg7815
|
|
|
|
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
|
|
|
|
define Package/ipq-wifi-default
|
|
SUBMENU:=ath10k Board-Specific Overrides
|
|
SECTION:=firmware
|
|
CATEGORY:=Firmware
|
|
DEPENDS:=@(TARGET_ipq40xx||TARGET_ipq806x||TARGET_ipq807x)
|
|
TITLE:=Custom Board
|
|
endef
|
|
|
|
define ipq-wifi-install-one-to
|
|
$(INSTALL_DIR) $(2)/lib/firmware/ath10k/$(3)/
|
|
$(INSTALL_DATA) $(1) $(2)/lib/firmware/ath10k/$(3)/board-2.bin
|
|
endef
|
|
|
|
define ipq-wifi-install-ath11-one-to
|
|
$(INSTALL_DIR) $(2)/lib/firmware/ath11k/$(3)/
|
|
$(INSTALL_DATA) $(1) $(2)/lib/firmware/ath11k/$(3)/board-2.bin
|
|
endef
|
|
|
|
define ipq-wifi-install-one
|
|
$(if $(filter $(suffix $(1)),.QCA4019 .qca4019),\
|
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA4019/hw1.0),\
|
|
$(if $(filter $(suffix $(1)),.QCA9888 .qca9888),\
|
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9888/hw2.0),\
|
|
$(if $(filter $(suffix $(1)),.QCA9889 .qca9889),\
|
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9887/hw1.0),\
|
|
$(if $(filter $(suffix $(1)),.QCA9984 .qca9984),\
|
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9984/hw1.0),\
|
|
$(if $(filter $(suffix $(1)),.QCA99X0 .qca99x0),\
|
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA99X0/hw2.0),\
|
|
$(if $(filter $(suffix $(1)),.IPQ8074 .ipq8074),\
|
|
$(call ipq-wifi-install-ath11-one-to,$(1),$(2),IPQ8074/hw2.0),\
|
|
$(if $(filter $(suffix $(1)),.QCN9074 .qcn9074),\
|
|
$(call ipq-wifi-install-ath11-one-to,$(1),$(2),QCN9074/hw1.0),\
|
|
$(error Unrecognized board-file suffix '$(suffix $(1))' for '$(1)')\
|
|
)))))))
|
|
|
|
endef
|
|
# Blank line required at end of above define due to foreach context
|
|
|
|
define generate-ipq-wifi-package
|
|
define Package/ipq-wifi-$(1)
|
|
$(call Package/ipq-wifi-default)
|
|
TITLE:=board-2.bin Overrides for $(2)
|
|
CONFLICTS:=$(PREV_BOARD)
|
|
endef
|
|
|
|
define Package/ipq-wifi-$(1)/description
|
|
The $(2) requires board-specific, reference ("cal") data
|
|
that is not yet present in the upstream wireless firmware distribution.
|
|
|
|
This package supplies board-2.bin file(s) that, in the interim,
|
|
overwrite those supplied by the ath10k-firmware-* packages.
|
|
|
|
This is package is only necessary for the $(2).
|
|
|
|
Do not install it for any other device!
|
|
endef
|
|
|
|
define Package/ipq-wifi-$(1)/install-overlay
|
|
$$$$(foreach IPQ_WIFI_BOARD_FILE,$$$$(wildcard board-$(1).*),\
|
|
$$$$(call ipq-wifi-install-one,$$$$(IPQ_WIFI_BOARD_FILE),$$(1)))
|
|
endef
|
|
|
|
PREV_BOARD+=ipq-wifi-$(1)
|
|
endef
|
|
|
|
# Add board name to ALLWIFIBOARDS
|
|
# Place files in this directory as board-<devicename>.<qca4019|qca9888|qca9889|qca9984|qca99x0|ipq8074>
|
|
# Add $(eval $(call generate-ipq-wifi-package,<devicename>,<display name>))
|
|
|
|
$(eval $(call generate-ipq-wifi-package,aruba_ap-365,Aruba AP-365))
|
|
$(eval $(call generate-ipq-wifi-package,buffalo_wxr-5950ax12,Buffalo WXR-5950AX12))
|
|
$(eval $(call generate-ipq-wifi-package,devolo_magic-2-wifi-next,devolo Magic 2 WiFi next))
|
|
$(eval $(call generate-ipq-wifi-package,dynalink_dl-wrx36,Dynalink DL-WRX36))
|
|
$(eval $(call generate-ipq-wifi-package,edgecore_eap102,Edgecore EAP102))
|
|
$(eval $(call generate-ipq-wifi-package,edgecore_ecw5410,Edgecore ECW5410))
|
|
$(eval $(call generate-ipq-wifi-package,edgecore_oap100,Edgecore OAP100))
|
|
$(eval $(call generate-ipq-wifi-package,edimax_cax1800,Edimax CAX1800))
|
|
$(eval $(call generate-ipq-wifi-package,extreme-networks_ws-ap3915i,Edgecore OAP100))
|
|
$(eval $(call generate-ipq-wifi-package,glinet_gl-a1300,GL.iNet GL-A1300))
|
|
$(eval $(call generate-ipq-wifi-package,glinet_gl-ap1300,GL.iNet GL-AP1300))
|
|
$(eval $(call generate-ipq-wifi-package,glinet_gl-s1300,GL.iNet GL-S1300))
|
|
$(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300))
|
|
$(eval $(call generate-ipq-wifi-package,linksys_whw03v2,Linksys WHW03 V2))
|
|
$(eval $(call generate-ipq-wifi-package,p2w_r619ac,P&W R619AC))
|
|
$(eval $(call generate-ipq-wifi-package,pakedge_wr-1,Pakedge WR-1))
|
|
$(eval $(call generate-ipq-wifi-package,qnap_301w,QNAP 301w))
|
|
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c1,Qxwlan E2600AC C1))
|
|
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c2,Qxwlan E2600AC C2))
|
|
$(eval $(call generate-ipq-wifi-package,redmi_ax6,Redmi AX6))
|
|
$(eval $(call generate-ipq-wifi-package,sony_ncp-hg100-cellular,Sony NCP-HG100/Cellular))
|
|
$(eval $(call generate-ipq-wifi-package,teltonika_rutx,Teltonika RUTX))
|
|
$(eval $(call generate-ipq-wifi-package,xiaomi_ax3600,Xiaomi AX3600))
|
|
$(eval $(call generate-ipq-wifi-package,xiaomi_ax9000,Xiaomi AX9000))
|
|
$(eval $(call generate-ipq-wifi-package,zte_mf18a,ZTE MF18A))
|
|
$(eval $(call generate-ipq-wifi-package,zte_mf289f,ZTE MF289F))
|
|
$(eval $(call generate-ipq-wifi-package,zyxel_nbg7815,Zyxel NBG7815))
|
|
|
|
$(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
|