aboutsummaryrefslogtreecommitdiff
path: root/target/linux/qualcommax/files/arch/arm64/boot
Commit message (Collapse)AuthorAge
* qualcommax: ipq6018: remove unused reserved memoryCoia Prant2025-07-30
| | | | | | | | Deleted useless content, since it is the same as the mainline kernel Signed-off-by: Coia Prant <coiaprant@gmail.com> Link: https://github.com/openwrt/openwrt/pull/19300 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: cleanup device tree for GL-B3000Chukun Pan2025-07-30
| | | | | | | | | Remove extra blank lines. Fixes typo for label and status. Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> Link: https://github.com/openwrt/openwrt/pull/19400 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: fix tsens node status to enable thermal sensorShubham Vishwakarma2025-07-28
| | | | | | | | | | The tsens node had an extra space in the "okay" status string, preventing thermal sensors from being properly registered. This patch corrects it to enable proper thermal monitoring support. Signed-off-by: Shubham Vishwakarma <shubhamvis98@fossfrog.in> Link: https://github.com/openwrt/openwrt/pull/19564 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: Add support for Yuncore AX830Shubham Vishwakarma2025-06-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Specifications: SOC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz) Memory: 512MB DDR3L Standard: 802.11ax/ac/b/g/n Flash: SPI NOR 8MB (Winbond W25Q64DW) + NAND 128MB (Winbond W25N01GWZEIG) 2.4G Frequency: 2.4GHz - 2.484GHz 2.4G Wi-Fi standard: 802.11b/g/n/ax 5.8G Frequency: 4.9~5.9G 5.8G Wi-Fi Standard: 802.11 a/n/ac/ax Interface: Optional 1(Without 8081): 1 * 10/100 /1000Mbps RJ45 WAN Port and PoE port; 1* Gigabit Console port; Optional 2(With 8081): 1 * 10/100/1000/2500Mbps RJ45 WAN port and PoE port, 1*10/100/1000Mbps LAN port Buttons: 1 * Reset button, press 10 seconds to revert to default setting Antenna: Build in 4*4dBi dual band MIMO Antenna Data Rate: 3000Mbps (2.4G 600Mbps, 5.8G 2400Mbps) End Users: 128+ 2.4G RF Power: ≤ 23dBm 5.8G RF Power: ≤ 23dBm DC: 12V----2A PoE: 48V (IEEE 802.3at) LED Light: Sys, WAN, LAN Power Consumption: ≤ 20W BACKUP YOUR STOCK FIRMWARE: - Put openwrt-*-initramfs-uImage.itb to your TFTP server and rename it to initramfs.bin - Enable serial console and enter to u-boot cli and exec these commands: ``` tftpboot <your_tftp_server_ip>:initramfs.bin bootm ``` - Once boot completed and you get the openwrt shell execute below commands: ``` device=ax830 mkdir -p /tmp/fw_backup; cd /tmp/fw_backup rootfs=$(cat /proc/mtd | grep \"rootfs\" | cut -d: -f1) rootfs_1=$(cat /proc/mtd | grep \"rootfs_1\" | cut -d: -f1) dd if=/dev/${rootfs} of=rootfs_${rootfs} bs=1M dd if=/dev/${rootfs_1} of=rootfs_1_${rootfs_1} bs=1M cp /sys/firmware/fdt fdt.dtb md5sum * > md5sum tar -cvzf /tmp/${device}.tar.gz . sum=$(md5sum /tmp/${device}.tar.gz | cut -d' ' -f1) mv /tmp/${device}.tar.gz /tmp/${device}_${sum}.tar.gz echo "stock fw backup saved to: /tmp/${device}_${sum}.tar.gz" ``` - Upload/save your backup to a safe place. STOCK FIRMWARE RECOVERY: - Boot initramfs image - Upload your backed-up stock fw tarball to the device using scp or download it from the device using wget. - Enter device ssh cli or tty and exec: ``` cd /tmp && wget <your_web_server_ip>/${stock_fw_backup}.tar.gz` tar -xpzf ${stock_fw_backup}.tar.gz rootfs=$(cat /proc/mtd | grep \"rootfs\" | cut -d: -f1) rootfs_1=$(cat /proc/mtd | grep \"rootfs_1\" | cut -d: -f1) ubiformat /dev/${rootfs} -y -f /tmp/rootfs_${rootfs} ubiformat /dev/${rootfs_1} -y -f /tmp/rootfs_1_${rootfs_1} reboot ``` INSTALLATION: 1. initramfs method - Put openwrt-*-initramfs-uImage.itb to your TFTP server and rename it to initramfs.bin - Enable serial console and enter to u-boot cli and exec these commands: ``` tftpboot <your_tftp_server_ip>:initramfs.bin bootm ``` - Once boot completed and you get the openwrt shell execute below commands: ``` cd /tmp && wget <your_web_server_ip>/factory.ubi` export rootfs=$(cat /proc/mtd | grep rootfs | cut -d: -f1) export rootfs_1=$(cat /proc/mtd | grep rootfs_1 | cut -d: -f1) ubiformat /dev/${rootfs} -y -f factory.ubi ubiformat /dev/${rootfs_1} -y -f factory.ubi reboot ``` 2. u-boot factory.ubi image method - Put factory.ubi to your TFTP server and enter u-boot cli and exec these commands: ``` tftpboot <your_tftp_server_ip>:factory.ubi #After downloading is finished: flash rootfs flash rootfs_1 reset ``` Signed-off-by: Shubham Vishwakarma <shubhamvis98@fossfrog.in> Link: https://github.com/openwrt/openwrt/pull/18968 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: Add support for Xiaomi AX6000George Moussalem2025-06-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for Xiaomi AX6000. Speficiations: * SoC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz) * Memory: Etrontech EM6HE16EWAKG 512 MiB DDR3L-933 * Serial Port: 1v8 TTL 115200n8 * Wi-Fi: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax - up to 574 Mbps) QCN9024 (4x4 5 Ghz 802.11an/ac/ax - up to 4804 Mbps) QCA9887 (1x1 5 Ghz 802.11ac/n - up to 433 Mbps) * Ethernet: IPQ5018 integrated virtual switch connected to: - external QCA8337 switch (3 LAN Ports 10/100/1000) - QCA8081 Phy WAN port (10/100/1000/2500) * Flash: Either of: - Gigadevice GD5F1GQ4RE9IGD (128 MiB) - ESMT F50D1G41LB (128 MiB) * LEDs: 1x WLAN Link (GPIO 23 Active High) 1x System Blue (GPIO 24 Active High) 1x System Yellow (GPIO 25 Active High) 1x WAN Link Blue (GPIO 26 Active High) 1x WAN Link Yellow (GPIO 27 Active High) 1x Green - Unused(GPIO 28 Active High) 3x LAN Phy Green 1x WAN Phy Green * Buttons: 1x Reset (GPIO 38 Active Low) Known issue: - QCA9887 doesn't come up (possibly due to 1-lane PCIe phy not coming up or missing method to drive power), hence the host PCIe controller is disabled in the DTS. Flash instructions: Download XMIR Patcher: https://github.com/openwrt-xiaomi/xmir-patcher First flash a ubinized OpenWrt initramfs that will serve as the intermediate step, since OpenWrt uses unified rootfs in order to fully utilize NAND and provide enough space for packages, through either of the below two methods: Installation via XMIR Patcher: 1. Load the initramfs image: openwrt-qualcommax-ipq50xx-xiaomi_ax6000-initramfs-factory.ubi Installation via ubiformat method, through SSH: 1. If needed, enable SSH using XMIR Patcher. 2. Copy the file openwrt-qualcommax-ipq50xx-xiaomi_ax6000-initramfs-factory.ubi to the /tmp directory 3. Open an SSH shell to the router 4. Check which rootfs partition is your router booted in (0 = rootfs | 1 = rootfs_1): nvram get flag_boot_rootfs 5. Find the rootfs and rootfs_1 mtd indexes respectively: cat /proc/mtd Please confirm if mtd18 and mtd19 are the correct indexes from above! 6. Use the command ubiformat to flash the opposite mtd with UBI image: If nvram get flag_boot_rootfs returned 0: ubiformat /dev/mtd19 -y -f /tmp/openwrt-qualcommax-ipq50xx-xiaomi_ax6000-initramfs-factory.ubi && nvram set flag_boot_rootfs=1 && nvram set flag_last_success=1 && nvram commit otherwise: ubiformat /dev/mtd18 -y -f /tmp/openwrt-qualcommax-ipq50xx-xiaomi_ax6000-initramfs-factory.ubi && nvram set flag_boot_rootfs=0 && nvram set flag_last_success=0 && nvram commit 7. Reboot the device by: reboot Continue in order to pernamently flash OpenWrt: 1. Upload the sysupgrade image to /tmp/ using SCP: scp -O <path to image> root@192.168.1.1:/tmp/ 2. Open an SSH shell to 192.168.1.1 from a PC within the same subnet 3. Use sysupgrade to flash the sysupgrade image: sysupgrade -n -v /tmp/openwrt-qualcommax-ipq50xx-xiaomi_ax6000-squashfs-sysupgrade.bin Device will reboot with OpenWrt, and then sysupgrade can be used to upgrade the device when desired. Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/19004 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: add support for I-O DATA WN-DAX3000GRINAGAKI Hiroshi2025-06-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I-O DATA WN-DAX3000GR is a 2.4/5 GHz band 11ax (Wi-Fi 6) router, based on IPQ5018. Specification: - SoC : Qualcomm IPQ5018 - RAM : DDR3 512 MiB - Flash : SPI-NAND 128 MiB (Macronix MX35UF1G24AD-Z4I) - WLAN : 2.4/5 GHz 2T2R - 2.4 GHz : Qualcomm IPQ5018 (SoC) - 5 GHz : Qualcomm Atheros QCN6102 - Ethernet : 5x 10/100/1000 Mbps - wan (phy) : Qualcomm IPQ5018 (SoC) - lan (switch) : Qualcomm Atheros QCA8337 - LEDs/Keys (GPIO): 7x/5x - UART : through-hole on PCB (J3) - assignment : 3.3V, TX, RX, NC, GND from tri-angle marking - settings : 115200n8 - USB : USB 2.0 Type-A (through-hole on PCB, "J6") - Power : 12 VDC, 1A (Typ. 930 mA) Flash instruction using factory.bin image: 1. Boot WN-DAX3000GR with router mode 2. Access to the WebUI ("http://192.168.0.1/") on the device and open the firmware update page ("ファームウェア") 3. Select the OpenWrt factory.bin image and click update ("更新") button 4. Wait ~120 seconds to complete flashing Switching to the stock firmware: 1. Load the elecom.sh script . /lib/upgrade/elecom.sh 2. Check the current index of rootfs bootconfig_rw_index 0:bootconfig rootfs 3. Set the index to inverted value bootconfig_rw_index 0:bootconfig rootfs <value> bootconfig_rw_index 0:bootconfig1 rootfs <value> example: - step2 returned "0": bootconfig_rw_index 0:bootconfig rootfs 1 bootconfig_rw_index 0:bootconfig1 rootfs 1 - step2 returned "1": bootconfig_rw_index 0:bootconfig rootfs 0 bootconfig_rw_index 0:bootconfig1 rootfs 0 4. Reboot Partition Layout (Stock FW, bootconfig(rootfs)=1): 0x000000000000-0x000000080000 : "0:SBL1" 0x000000080000-0x000000100000 : "0:MIBIB" 0x000000100000-0x000000140000 : "0:BOOTCONFIG" 0x000000140000-0x000000180000 : "0:BOOTCONFIG1" 0x000000180000-0x000000280000 : "0:QSEE" 0x000000280000-0x000000380000 : "0:QSEE_1" 0x000000380000-0x0000003c0000 : "0:DEVCFG" 0x0000003c0000-0x000000400000 : "0:DEVCFG_1" 0x000000400000-0x000000440000 : "0:CDT" 0x000000440000-0x000000480000 : "0:CDT_1" 0x000000480000-0x000000500000 : "0:APPSBLENV" 0x000000500000-0x000000640000 : "0:APPSBL" 0x000000640000-0x000000780000 : "0:APPSBL_1" 0x000000780000-0x000000880000 : "0:ART" 0x000000880000-0x000000900000 : "0:TRAINING" 0x000000900000-0x000003c40000 : "rootfs_1" 0x000003c40000-0x000003fc0000 : "Config" 0x000003fc0000-0x000007300000 : "rootfs" 0x000007300000-0x000007680000 : "Config_2" 0x000007680000-0x000007700000 : "idmkey" 0x000007700000-0x000007c00000 : "Reserved" 0x000007c00000-0x000007c80000 : "FWHEADER" 0x000007c80000-0x000007d00000 : "Factory" Known Issues: - This device has a Macronix MX35UF1G24AD SPI-NAND chip registered as oobsize=128 in Linux Kernel. But using BCH8 breaks I/O on the chip with the following errors, so this support uses BCH4 instead. [ 1.542261] 0x000000480000-0x000000500000 : "0:appsblenv" [ 1.547959] 1 fixed-partitions partitions found on MTD device 0:appsblenv [ 1.551265] Creating 1 MTD partitions on "0:appsblenv": [ 1.558096] 0x000000000000-0x000000040000 : "env-data" [ 1.627282] u-boot-env-layout 79b0000.qpic-nand:flash@0:partitions:partition-0-appsblenv:partition@0:nvmem-layout: probe with driver u-boot-env-layout failed with error -74 root@OpenWrt:~# strings /dev/mtdblock10 [ 77.806720] mtdblock: MTD device '0:appsblenv' is NAND, please consider using UBI block devices instead. [ 77.807554] I/O error, dev mtdblock10, sector 0 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 0 [ 77.815977] I/O error, dev mtdblock10, sector 8 op 0x0:(READ) flags 0x80700 phys_seg 3 prio class 0 [ 77.824721] I/O error, dev mtdblock10, sector 16 op 0x0:(READ) flags 0x80700 phys_seg 2 prio class 0 [ 77.834095] I/O error, dev mtdblock10, sector 24 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0 [ 77.843278] I/O error, dev mtdblock10, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 77.851577] Buffer I/O error on dev mtdblock10, logical block 0, async page read Notes: - This device has dual-boot feature and it's managed by the index in the 0:bootconfig and 0:bootconfig1 partitions. - There are through-holes on PCB for USB 2.0, but it cannot be accessed without disassembly of the housing. So it's not enabled in this support. - WN-DAX3000GR has the "bt_fw" volume in the firmware UBI in addition to the volumes that will be removed in the section of ELECOM WRC-X3000GS2 in /lib/upgrade/platform.sh. That volume is unnecessary for OpenWrt and add `remove_oem_ubi_volume bt_fw` to remove that volume when sysupgrade. (that function doesn't anything without errors if no specified volume) MAC Addresses: LAN : 50:41:B9:xx:xx:64 (0:APPSBLENV, "ethaddr"/"eth1addr" (text)) WAN : 50:41:B9:xx:xx:66 (0:APPSBLENV, "eth0addr" (text)) 2.4 GHz: 50:41:B9:xx:xx:64 (0:APPSBLENV, "wifi0" (text)) 5 GHz : 50:41:B9:xx:xx:65 (0:APPSBLENV, "wifi1" (text)) Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com> Link: https://github.com/openwrt/openwrt/pull/19053 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: correct fw memory mode for ipq5018 and qcn6122 wifiGeorge Moussalem2025-06-12
| | | | | | | | | | | | The reason fwmode 2 was used for ipq5018 and qcn6122 wifi was that coldboot calibration doesn't work and causes the firmware to crach during wifi bringup. Since coldboot calibration is now disabled in the driver, all boards can now use their respective firmware memory mode, so let's the property in all board DTS files accordingly. Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/19083 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: prepare for UNIPHY reset fixGeorge Moussalem2025-06-02
| | | | | | | | | | | | | Ahead of the actual fix in both the GCC and QCA-SSDK, add the required AHB reset so it can be picked up by updated QCA-SSDK. This is needed as the SSDK needs to use different resets depending on the link architecture. If it's a fixed link, AHB needs to be reset. In a phy to phy link setup (such as QCA8081), SYS, RX, and TX need to be reset using one reset with a bitmask in the GCC (GCC_UNIPHY_SOFT_RESET). Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18774 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: update patches for IPQ5018 GE PHYGeorge Moussalem2025-06-02
| | | | | | | | | | | | | | | Use latest patches sent upstream for review for IPQ5018 GE PHY support: - Move enablement of the LDO controller to the mdio-ipq4019 driver away from the CMN PLL driver - Remove the different patches to add CDT, MSE, AZ, and DAC support they are all contained in the upstreamed driver. Accordingly, also set the right property in the DTS for Linksys SPNMX56 to set the right DAC values to accommodate for the short cable length. Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18774 Signed-off-by: Robert Marko <robimarko@gmail.com>
* ipq60xx: add support for ALFA Network AP120C-AXPiotr Dymacz2025-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ALFA Network AP120C-AX is a dual-band ceiling AP, based on Qualcomm IPQ6000 + QCN5021 + QCN5052 + QCA8072 chipsets bundle. Specifications: - SOC: Qualcomm IPQ6000 (quad-core Cortex-A53 1.2 GHz) - DRAM: DDR3 512 MB (Micron MT41K256M16TW-107) - Flash: 16 MB SPI NOR (Macronix MX25U12832F, boot device) 128 MB NAND (Macronix MX30UF1G18AC, dual-firmware) - Ethernet: 2x 10/100/1000 Mbps Ethernet (QCA8072) 802.3at/af PoE input in WAN port - Wi-Fi: 2x2 2.4 GHz Wi-Fi 6 (QCN5021 + RFFM8227 FEM) 2x2 5 GHz Wi-Fi 6 (QCN5152 + QPF4568 FEM) - Antenna: for indoor version: dual-band, internal 2x (or 4x) U.FL antenna connectors on the PCB - LED: for indoor/outdoor versions: 5x on external module (status, 2x Wi-Fi, 2x Ethernet), PoE LED on-board 8-pin on-board header for LED module (1.27 mm pitch, J14) - Button: 1x button (reset) - USB: 1x 4-pin on-board header for USB 2.0 (2.54 mm pitch, J22) - UART: 1x micro USB Type-B for system console (Holtek HT42B534) 1x 4-pin on-board header (2.54 mm pitch, J11) - Power: 802.3at/af PoE or 12 V DC/2 A (DC jack) - Other: 8-pin and 4-pin on-board headers for external Bluetooth module (1.27 mm pitch, J15, J16, unavailable, thus untested) MAC addresses: - WAN: 00:c0:ca:xx:xx:6c (art 0x0, device's label -2) - LAN: 00:c0:ca:xx:xx:6d (art 0x6, device's label -1) - 2.4 GHz (IPQ6000): 00:c0:ca:xx:xx:6e (art 0xc, device's label) - 5 GHz (IPQ6000): 00:c0:ca:xx:xx:6f (device's label + 1) Flash instructions: Due to the lack of direct GUI based update capability and dual-firmware partition configuration, it is recommended to use TFTP + serial console based approach (console is available in micro USB connector): 1. Set a static IP 192.168.1.1/24 on PC and start TFTP server with the '...-factory.ubi' image renamed to 'firmware.bin'. 2. Make sure you can access board's serial console over micro USB. 3. Power up the device, hit any key to enter U-Boot CLI and issue below commands. 3.1 Restore U-Boot's environment to default values (double check first the '0:APPSBLENV' partition offset using 'smem' command): sf probe sf erase 0x510000 0x10000 saveenv 3.2 Download and install OpenWrt in both partitions and reset the board: tftpb 0x44000000 firmware.bin flash rootfs flash rootfs_1 reset Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* treewide: strip trailing whitespaceMieczyslaw Nalewaj2025-05-20
| | | | | | | | | | | | Strip trailing whitespace in all code: find . -type f | grep "\.c$" | xargs sed -i 's/[ \t]\+$//' find . -type f | grep "\.h$" | xargs sed -i 's/[ \t]\+$//' find . -type f | grep "\.dts$" | xargs sed -i 's/[ \t]\+$//' find . -type f | grep "\.dtsi$" | xargs sed -i 's/[ \t]\+$//' Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com> Link: https://github.com/openwrt/openwrt/pull/18626 Signed-off-by: Robert Marko <robimarko@gmail.com>
* treewide: dts: trim "#size-cells" from "gpio-export" nodeShiji Yang2025-05-18
| | | | | | | | | | The "gpio-export" driver doesn't require a "reg" property in the device tree, hence we don't need to use the "#size-cells" property to describe the size of "reg". Signed-off-by: Shiji Yang <yangshiji66@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18290 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: dts: fix missing or empty reg property warningPaweł Owoc2025-05-15
| | | | | | | | | Remove property 'status = "disabled"' for partitions in Zyxel NBG7815. This option is mainly used for NAND memory and here we have SPI memory. Signed-off-by: Paweł Owoc <frut3k7@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18787 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: dts: fix property has invalid length warningPaweł Owoc2025-05-15
| | | | | | | | | | Fix "property has invalid length" warning for two devices: - TP-Link EAP620 HD v1 - Zyxel NBG7815 Signed-off-by: Paweł Owoc <frut3k7@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18787 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq60xx: add TP-Link EAP625-Outdoor HD v1 supportAlexandru Gagniuc2025-05-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TP-Link EAP625-Outdoor HD is a 802.11ax AP claiming AX1800 support. It is wall or pole mountable, and rated for outdoor use. It can only be powered via PoE. Hardware-wise, it is very similar to the older EAP610-Outdoor model. Software-wise, I couldn't find a difference other than the board data files, and device name. For this reason, the majority of the devicetree from the EAP610-Outdoor is reused. This device currently comes in a "v1", and "v1.6" version. The "support-list" of the vendor firmware does not have a distinction between these versions. This commit was tested on a 'V1.6" device. Specifications: --------------- * CPU: Qualcomm IPQ6018 Quad core Cortex-A53 * RAM: 512 MB * Storage: 128MB NAND * Ethernet: * Gigabit RJ45 port with PoE input * WLAN: * 2.4GHz/5GHz * LEDs: * Multi-color System LED (Green/Amber) * Buttons: * 1x Reset * UART: 4-pin unpopulated header * 1.8 V level, Pinout 1 - TX, 2 - RX, 3 - GND, 4 - 1.8V Installation: ============= Web UI method ------------- Set up the device using the vendor's web UI. After that go to Management->SSH and enable the "SSH Login" checkbox. Select "Save". The connect to the machine via SSH: ssh -o hostkeyalgorithms=ssh-rsa <ip_of_device> Disable signature verification: cliclientd stopcs Rename the "-web-ui-factory" image to something less than 63 characters, maintaining the ".bin" suffix. * Go to System -> Firmware Update. * Under "New Firmware File", click "Browse" and select the image * Select "Update" and confirm by clicking "OK". If the update fails, the web UI should show an error message. Otherwise, the device should reboot into OpenWRT. NOTE: If ssh continues to complain that "no matching host key type found. Their offer: ssh-rsa,ssh-dss" it likely means that yor distro has completely disabled deprecated siphers in ssh. In that case, run the ssh command from a docker container of an older distro. TFTP method ----------- To flash via tftp, first place the initramfs image on the TFTP server. setenv serverip <ip of tftp server> setenv ipaddr <ip in same subnet as tftp server> tftpboot tplink_eap625-outdoor-hd-v1-initramfs-uImage.itb bootm This should boot OpenWRT. Once booted, flash the sysupgrade.bin image using either luci or the commandline. Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18584 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq60xx: eap6xx-outdoor: add PHY reset pinctrlAlexandru Gagniuc2025-05-14
| | | | | | | | | It was suggested that the pinctrl property of the mdio node should include the PHY reset GPIO. Add them in. Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18584 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq60xx: split eap610-outdoor devicetreeAlexandru Gagniuc2025-05-14
| | | | | | | | | | | I have an EAP625-Outdoor HD v1 that is very similar with the EAP610 Outdoor. It works with the EAP610 initramfs, without any obvious loss of functionality. In order to prepare for supporting the EAP625, move the common parts into a shared .dtsi. Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18584 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: fix PCIe card wifi node addressRobert Marko2025-05-13
| | | | | | | | | | | | | | Unlike other buses, for PCIe child nodes we should not use "wifi@1,0" as the bus adress since for PCI devices the actual device adress on the bus is actually set via the "reg" property and the node name is unused completely. Though, it will cause DTC to throw warnings, so after investigation and similar issue upstream[1] simply set the nodes to "wifi@0,0" instead. [1] https://lists.infradead.org/pipermail/linux-arm-kernel/2021-August/680846.html Link: https://github.com/openwrt/openwrt/pull/18789 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: remove PCIe bridge nodesRobert Marko2025-05-13
| | | | | | | | PCIe bridge nodes are now present in the SoC DTSI, so drop our downstream ones as otherwise ath1*k BDF matching will fail. Link: https://github.com/openwrt/openwrt/pull/18789 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: fix NAND ECC for ELECOM WRC-X3000GS2INAGAKI Hiroshi2025-05-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Specify 4-bit ECC strength instead of 8-bit, to resolve NAND I/O errors on ELECOM WRC-X3000GS2. ELECOM WRC-X3000GS2 has a Macronix MX35UF1G24AD SPI-NAND chip as a flash storage. That chip is registered as a chip that has 128 bytes OOB and requires 8-bit ECC, and described as the same in the Macronix's datasheet. But on WRC-X3000GS2, 8-bit ECC breaks NAND I/O on mtdblock devices with the following errors and 4-bit ECC needs to be used to resolve this issue. current (ECC strength=8): ``` [ 1.401566] 0x000000480000-0x000000500000 : "0:appsblenv" [ 1.407128] 1 fixed-partitions partitions found on MTD device 0:appsblenv [ 1.410663] Creating 1 MTD partitions on "0:appsblenv": [ 1.417359] 0x000000000000-0x000000040000 : "env-data" [ 1.479865] u-boot-env-layout: probe of 79b0000.qpic-nand:flash@0:partitions:partition-0-appsblenv:partition@0:nvmem-layout failed with error -74 root@OpenWrt:~# strings /dev/mtdblock10 [ 55.693754] mtdblock: MTD device '0:appsblenv' is NAND, please consider using UBI block devices instead. [ 55.694660] I/O error, dev mtdblock10, sector 0 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 2 [ 55.703147] I/O error, dev mtdblock10, sector 8 op 0x0:(READ) flags 0x80700 phys_seg 3 prio class 2 [ 55.711884] I/O error, dev mtdblock10, sector 16 op 0x0:(READ) flags 0x80700 phys_seg 2 prio class 2 [ 55.720778] I/O error, dev mtdblock10, sector 24 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2 [ 55.730310] I/O error, dev mtdblock10, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2 [ 55.738607] Buffer I/O error on dev mtdblock10, logical block 0, async page read ``` after fixing (ECC strength=4): ``` [ 1.402301] 0x000000480000-0x000000500000 : "0:appsblenv" [ 1.407909] 1 fixed-partitions partitions found on MTD device 0:appsblenv [ 1.411370] Creating 1 MTD partitions on "0:appsblenv": [ 1.418075] 0x000000000000-0x000000040000 : "env-data" (no error) root@OpenWrt:~# strings /dev/mtdblock10 [ 39.131008] mtdblock: MTD device '0:appsblenv' is NAND, please consider using UBI block devices instead. bootcmd=bootipq baudrate=115200 wifi2=7C:F8:54:01:BD:F3 CRASH_COUNT=0 ... ``` Fixes: 01b72ce61e ("qualcommax: ipq50xx: remove ECC user config from board files") Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18770 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: remove ECC user config from board filesGeorge Moussalem2025-05-08
| | | | | | | | | | | With the spi-qpic-snand driver now supporting reading ECC requirements from the NAND chip itself, there's no need to set those in the DTS anymore avoiding issues with devices of the same revision using different NAND types with varying ECC requirements. Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18723 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: fix DTB warning in USB node of Linksys MR5500George Moussalem2025-05-01
| | | | | | | | | Fix DTB warning when compiling an image by adding the missing hash sign of adress-cells in the usb_dwc node. Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18672 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: fix ECC strength for Linksys MR5500George Moussalem2025-05-01
| | | | | | | | | | | | Commit fc3ff2af0c57504a2e03d635692396c5bb099f17 introduced reading ECC strength from the device tree. Linksys MR5500 uses the mx-base dtsi which was originally developed for Linksys MX2000 and MX5500 where the ECC strength is set to 8. Correct this and set it to strength of 4 as per the NAND specs for Gigadevice GD5F2GQ5REYIH. Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18672 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq60xx: LED mapping update for Netgear WAX610 and WAX610YErik Servili2025-04-29
| | | | | | | | Fix swapped WLAN LEDs and move to blue LEDs to match stock behavior. Add LAN LED mappings. Signed-off-by: Erik Servili <serverror@serverror.com> Link: https://github.com/openwrt/openwrt/pull/18624 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: fix ECC strength of SPI-NAND flash on GL-iNet GL-B3000INAGAKI Hiroshi2025-04-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix nand-ecc-strength property in the spi-nand node of GL-iNet GL-B3000 to 4, to solve the following ECC error on that spi-nand chip. [ 1.551618] ubi0: attaching mtd11 [ 1.552331] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry [ 1.554455] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry [ 1.565931] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry [ 1.576568] ubi0 error: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read 64 bytes [ 1.587146] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.6.87 #0 [ 1.597153] Hardware name: GL.iNet GL-B3000 (DT) [ 1.602881] Call trace: [ 1.607739] dump_backtrace+0xa0/0xe0 [ 1.609910] show_stack+0x18/0x24 [ 1.613728] dump_stack_lvl+0x48/0x60 [ 1.617027] dump_stack+0x18/0x24 [ 1.620672] ubi_io_read+0x11c/0x32c [ 1.623972] ubi_io_read_ec_hdr+0x50/0x1f0 [ 1.627618] ubi_attach+0x35c/0x133c [ 1.631524] ubi_attach_mtd_dev+0x494/0xaf4 [ 1.635257] ubi_init_attach+0xac/0x2e4 [ 1.639163] do_one_initcall+0x6c/0x1fc [ 1.642983] kernel_init_freeable+0x204/0x2e4 [ 1.646803] kernel_init+0x28/0x1dc [ 1.651316] ret_from_fork+0x10/0x20 The GL-B3000 has a Winbond W25N01GW and the spare size (oobsize) of it is 64. So the maximum available ECC strength with the qpic-snand driver is 4 but not 8. The "nand-ecc-strength" property was not used before the commit fc3ff2af0c ("qualcommax: allow overriding ECC strength for qpic-snand") and calculated from the registered spare size in the Linux Kernel. As a result, we had no issues on the GL-B3000 with the wrong ECC strength value. Fixes: 3307fe8ee4 ("qualcommax: ipq50xx: add support for GL.iNET GL-B3000") Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18595 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: add support for ELECOM WRC-X3000GS2INAGAKI Hiroshi2025-04-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ELECOM WRC-X3000GS2 is a 2.4/5 GHz band 11ax (Wi-Fi 6) router, based on IPQ5018. Specification: - SoC : Qualcomm IPQ5018 - RAM : DDR3 256 MiB (Zentel A3T2GF40CBF-HP) - Flash : SPI-NAND 128 MiB (Macronix MX35UF1G24AD-Z4I) - WLAN : 2.4/5 GHz 2T2R - 2.4 GHz : Qualcomm IPQ5018 (SoC) - 5 GHz : Qualcomm Atheros QCN6102 - Ethernet : 5x 10/100/1000 Mbps - wan (phy) : Qualcomm IPQ5018 (SoC) - lan (switch) : Qualcomm Atheros QCA8337 - LEDs/Keys (GPIO): 8x/3x - UART : through-hole on PCB, 4pins near the barcode - assignment : 3.3V, TX, RX, NC, GND from the barcode side - settings : 115200n8 - Power : 12 VDC, 1 A (Max. 11.5W) Flash instruction using initramfs-factory.bin image: 1. Boot WRC-X3000GS2 normally with router mode 2. Access to the WebUI ("http://192.168.2.1/") on the device and open the firmware update page ("ファームウェア更新") 3. Select the OpenWrt factory.bin image and click apply ("適用") button 4. Wait ~120 seconds to complete flashing Switching to the stock firmware: 1. Load the elecom.sh script . /lib/upgrade/elecom.sh 2. Check the current index of rootfs bootconfig_rw_index 0:bootconfig rootfs 3. Set the index to inverted value bootconfig_rw_index 0:bootconfig rootfs <value> bootconfig_rw_index 0:bootconfig1 rootfs <value> example: - step2 returned "0": bootconfig_rw_index 0:bootconfig rootfs 1 bootconfig_rw_index 0:bootconfig1 rootfs 1 - step2 returned "1": bootconfig_rw_index 0:bootconfig rootfs 0 bootconfig_rw_index 0:bootconfig1 rootfs 0 4. Reboot Partition Layout (Stock FW): 0x000000000000-0x000000080000 : "0:SBL1" 0x000000080000-0x000000100000 : "0:MIBIB" 0x000000100000-0x000000140000 : "0:BOOTCONFIG" 0x000000140000-0x000000180000 : "0:BOOTCONFIG1" 0x000000180000-0x000000280000 : "0:QSEE" 0x000000280000-0x000000380000 : "0:QSEE_1" 0x000000380000-0x0000003c0000 : "0:DEVCFG" 0x0000003c0000-0x000000400000 : "0:DEVCFG_1" 0x000000400000-0x000000440000 : "0:CDT" 0x000000440000-0x000000480000 : "0:CDT_1" 0x000000480000-0x000000500000 : "0:APPSBLENV" 0x000000500000-0x000000640000 : "0:APPSBL" 0x000000640000-0x000000780000 : "0:APPSBL_1" 0x000000780000-0x000000880000 : "0:ART" 0x000000880000-0x000000900000 : "0:TRAINING" 0x000000900000-0x000003c40000 : "rootfs" 0x000003c40000-0x000003fc0000 : "Config" 0x000003fc0000-0x000007300000 : "rootfs_1" 0x000007300000-0x000007680000 : "Config_2" 0x000007680000-0x000007b80000 : "Reserved" 0x000007b80000-0x000007c00000 : "FWHEADER" 0x000007c00000-0x000007c80000 : "Factory" Known Issues: - All Wi-Fi related peripherals are disabled. This device has only 256 MiB RAM and it's too few for ath11k. To prevent OOM when using LuCI or other softwares, disable Wi-Fi related peripherals in device tree at the moment. - This device has a Macronix MX35UF1G24AD SPI-NAND chip registered as oobsize=128 in Linux Kernel. But using BCH8 breaks I/O on the chip with the following errors, so this support uses BCH4 instead. root@OpenWrt:~# strings /dev/mtdblock10 [26427.133154] mtdblock: MTD device '0:appsblenv' is NAND, please consider using UBI block devices instead. [26427.134125] I/O error, dev mtdblock10, sector 0 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 2 [26427.142240] I/O error, dev mtdblock10, sector 8 op 0x0:(READ) flags 0x80700 phys_seg 3 prio class 2 [26427.151427] I/O error, dev mtdblock10, sector 16 op 0x0:(READ) flags 0x80700 phys_seg 2 prio class 2 [26427.160440] I/O error, dev mtdblock10, sector 24 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2 [26427.169619] I/O error, dev mtdblock10, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2 [26427.178083] Buffer I/O error on dev mtdblock10, logical block 0, async page read Notes: - This device has dual-boot feature and it's managed by the index in the 0:bootconfig and 0:bootconfig1 partitions. MAC Addresses: LAN : 38:97:A4:xx:xx:60 (0:APPSBLENV, "eth1addr"/"ethaddr" (text)) WAN : 38:97:A4:xx:xx:63 (0:APPSBLENV, "eth0addr" (text)) 2.4 GHz: 38:97:A4:xx:xx:61 (0:APPSBLENV, "wifi0" (text)) 5 GHz : 38:97:A4:xx:xx:62 (0:APPSBLENV, "wifi1" (text)) Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18543 Signed-off-by: Robert Marko <robimarko@gmail.com>
* Qualcommax: IPQ807x: Add support for TP-Link Deco X80-5Gjonathan brophy2025-04-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The TP-link Deco X80-5G is a AX WIFI router with a single 1G (LAN) and 1 2.5G (WAN) port with a built in Quectel 5G modem. Specifications: Architecture ARMv8-A (aarch64 Cortex A53, 4 cores) Vendor Qualcomm Bootloader U-Boot (2016) System-On-Chip Qualcomm IPQ8074A (Networking Pro 1210 platform) CPU/Speed 2.2GHZ Flash-Chip ESMT F59D1G81MB-45TI 1G-bit NAND Flash MB 128MB (1Gbit) RAM-chip 2* ESMT M15T4G16256A-DEBG2G 2Gb DDR3L (32bit) RAM MB 512MB (4Gbit) WLan System-On-Chip (5g) Qualcomm QCN5054 WLan Front end modules (5g) 8* Qorvo QPF4588 WLAN (5G) A/N/AC/AX WLAN Antenna (int) 8* (4 shared with 2.5G) WLan System-On-Chip (2.4G) Qualcomm QCN5024 WLan Front end modules (2.4G) 4* Skyworks SKY85340-11 WLAN (2.4G) B/G/N/AX WLAN Antenna (int) 4* (shared with 5g) Eithernet-phy (1Gbit) Qualcomm (Atheros) AR8033-AL1A Ethernet (1Gbit) 1* Eithernet-phy (2.5Gbit) Qualcomm QCA8081 Ethernet (2.5Gbit) 1* Switch Embedded in the SOC? Serial 1.8v 8n1 (testpoints) Modem System-On-Chip Qualcomm 5G RG50xQ (Snapdragon X55 platform) 5G modem capability 5000Mbps down 900Mbps up 5G modem bands N1/N3/N5/N7/N8/N20/N28/N38/N40/N41/N77/N78/N79 4G modem capability 4.5G LTE-Advanced Pro (Cat20 down 2Gbps) (Cat18 up 200Mbps) 4G modem FDD bands B1/B3/B5/B7/B8/B18/B19/B20/B26/B28 4G modem TDD bands B34/B38/B39/B40/B41/B42/B43 Modem antenna (int) 8* (5G/4G use) Modem antenna (ext) 2* SMA connectors (5G/4G use) SIM type 1* Nano SIM Telephony 1* POTS RJ11 (see wiki for more info:) https://openwrt.org/inbox/toh/tp-link/x80-5g_v1 Notes: Installation Instructions: Between antennas 7 and 8 on the PCB with the RGB harness there are three test pads labelled TP1 TP2 and TP3 connections are as follows: |TP2|-- RX |TP1|-- TX |TP3|-- GND RX requires an external pullup to operate somewhere around 5 K ohm but your luck may vary the Uart is 1.8v Set a static IP and set up a tftpserver and terminal. power the router and quickly type the magic string “tpl” and press enter to break into u-boot in the shell set the environment variables to enable tftp booting setenv ipaddr (routerIP) setenv serverip (server IP) load you initramfs: tftpboot 0x44000000 (serverIP):openwrt-qualcommax-ipq807x-tplink_x80-5g-initramfs-uImage.itb boot your initramfs bootm upload your factory image to /tmp format and install the factory image: ubiformat /dev/mtd12 -y -f /tmp/openwrt-qualcommax-ipq807x-tplink_x80-5g-squashfs-factory.ubi Note as this device swaps root partitions upon update your boot partition may be set as mtd13 Update script to mount factory tplink partition's for MAC recovery and device data. Capture Labelmac from Factory_data partition. Patch LAN from Labelmac. Patch ART from Labelmac. Set GPIO to make modem operational from boot. GPIO fan tables work like the stock device with three fan maps high active idle with a top fan speed of 6800 RPM. High temp 70 deg speeds 6-8 Active temp 50 deg speeds 2-5 low temp 25 degree speed 0-1 Signed-off-by: jonathan brophy <professor_jonny@hotmail.com> Link: https://github.com/openwrt/openwrt/pull/16329 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: add support for GL.iNET GL-B3000Scott Mercer2025-04-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for GL.iNET (AX3000) B3000. Speficiations: * SoC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz) * Memory: Winbond W634GU6NQB-11 (512 MiB DDR3-933) * Serial Port: 3v3 TTL 115200n8 * Wi-Fi: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax) * Wi-Fi: QCN6102 (2x2:2 5 Ghz 802.11an/ac/ax) * Ethernet: IPQ5018 integrated virtual switch connected to an external QCA8337 switch (3 Ports 10/100/1000 GBASE-T) * Flash: Winbond W25N01GWZEIG (128 MiB) * LEDs: 1x single-color blue LED (GPIO 24 Active High) 1x single-color white LED (GPIO 23 Active High) * Buttons: 1x Reset (GPIO 27 Active Low) Flash Instructions: *** The .img files are now universal ! *** Openwrt --> openwrt-qualcommax-ipq50xx-glinet_gl-b3000-squashfs-factory.img GL.iNet OEM --> openwrt-b3000-4.5.18-0731-1722397535.img Either file can be flashed, in any of the available upgrade options, in both Firmwares. Pick a file .. pick a method .. and SEND IT !! Signed-off-by: Scott Mercer <TheRootEd24@gmail.com> Link: https://github.com/openwrt/openwrt/pull/17903 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: eap623od-hd-v1: fix phy node and LED configYang Xiwen2025-04-11
| | | | | | | | | | | | The reason phy fails to probe without explicitly overrided phy id is that the reset timing fails to match. Fix it with proper `reset-delay-us` and `reset-post-delay-us`. While at it, change LED settings to match EAP610-Outdoor. Signed-off-by: Yang Xiwen <forbidden405@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18450 Signed-off-by: Robert Marko <robimarko@gmail.com>
* ipq60xx: add support for TP-Link EAP623-Outdoor HD v1Yang Xiwen2025-04-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Specifications: * SoC: Qualcomm IPQ6018 (64-bit Quad-core Arm Cortex-A53 @ 1800MHz) * Memory: 1 GiB * Serial Port: 3v3 TTL 115200n8 * Wi-Fi: QCN9074 (4x4 5 GHz 802.11ax) * Wi-Fi: IPQ6018 (4x4 2.4 GHz 802.11b/g/n/ax) * Ethernet: RTL8211F (10/100/1GBASE-T) * Flash: ESMT F59D1G81MB (128 MiB) * LEDs: 1x Green Status (GPIO 37 Active High), 1x Yellow Status (GPIO 32 Active High) and an LED global control GPIO (GPIO 36 Active High, set up by U-Boot) * Buttons: 1x Reset (GPIO 9 Active Low) Installation Instructions (Serial+TFTP): 1. Solder 4 pin header to the pads near T32 and T31. 2. Connect 3V3 TTL port to TX, RX, and GND, which are pad T31, T32 and the pad near T31 respectively. Be sure not to connect VCC and crossover TX and RX. 3. Copy RAM firmware image openwrt-qualcommax-ipq60xx-tplink_eap623od-hd-v1-initramfs-uImage.itb to TFTP server root, available at 192.168.0.1. 4. Connect PoE ethernet cable to the RJ45 port and hold Ctrl+B in the serial console (115200 baud) until autoboot is halted. 5. Run the following commands in the U-boot prompt: # setenv serverip 192.168.0.1 # setenv ipaddr 192.168.0.99 # tftpboot 0x44000000 openwrt-qualcommax-ipq60xx-tplink_eap623od-hd-v1-initramfs-uImage.itb # bootm You may need to type Ctrl+C and Enter before running these commands to clear invisible characters from the buffer. 6. Run the following command in a terminal to copy the sysupgrade image to be installed (check IP address): $ scp openwrt-qualcommax-ipq60xx-tplink_eap623od-hd-v1-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/ 7. Activate the OpenWrt serial console and run the following commands: # cd /tmp # sysupgrade -n openwrt-qualcommax-ipq60xx-tplink_eap623od-hd-v1-squashfs-sysupgrade.bin 8. The AP will reboot and OpenWrt will be successfully installed. Signed-off-by: Yang Xiwen <forbidden405@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18389 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq60xx: add support for Netgear WAX610 and WAX610YErik Servili2025-04-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Netgear WAX610 / WAX610Y is a 802.11ax AP claiming AX1800 support. Specifications: --------------- * CPU: Qualcomm IPQ6018 Quad core Cortex-A53 * RAM: 512MB * Storage: Winbond W29N01HZBINF 128MB NAND * Ethernet: * 2.5GbE RJ45 port with PoE input * WLAN: * 2.4GHz/5GHz * LEDs: * Power: Dual-color LED (Green / Orange), Single-color LED (Blue) * Ethernet: Dual-color LED (Green / Orange) * 2.4Ghz WiFi: 2x Single-color LED (Blue, Green) * 5Ghz WiFi: 2x Single-color LED (Blue, Green) * Buttons: * 1x Reset * UART: 4-pin populated header * Pinout 1 - VCC, 2 - GND, 3 - TX, 4 - RX Installation: ============= Web UI method ------------- Set up the device using the stock web UI in local management mode. Download the ui-factory.tar image. * Enter the Management tab * Select Maintenance->Upgrade->Firmware Upgrade * Ensure the "Upgrade Options" field has "Local" selected * Click "Browse File" and select the image * Click "Upgrade" (NOT "Upgrade Now") at the bottom of the page The device will install the image but reboot back into the vendor firmware. Return the to Firmware Upgrade page as above and select "Boot up Backup Firmware". The device should reboot into OpenWRT. TFTP method ----------- To flash via tftp, first place the initramfs image on the TFTP server. setenv serverip <ip of tftp server> setenv ipaddr <ip in same subnet as tftp server> tftpboot netgear_wax610-initramfs-uImage.itb bootm This should boot OpenWRT. Once booted, flash the sysupgrade.bin image using either luci or the command line. Signed-off-by: Erik Servili <serverror@serverror.com> Link: https://github.com/openwrt/openwrt/pull/18377 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq60xx: add Linksys MR7500 supportWeikai Kong2025-03-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Codename: Divo Hardware specification: ======== SoC: Qualcomm IPQ6018 RAM: 512MB (2x ESMT 256MB DDR3L M15T2G16128A–DEBG2R) NAND Flash: 512MB (Macronix MX30UF4G18AC or SK Hynix H27S4G8F2EDA-BC) Ethernet: 1x 10/100/1000/2500/5000Mbps (Marvell AQR114C-B0) Ethernet: 4x 10/100/1000Mbps (Qualcomm QCA8075) WiFi1: 6GHz ax 4x4@20/40/160 MHz (Qualcomm QCN9024 + Skyworks SKY85784-11) - channels 33-229 WiFi2: 5GHz ax 2x2@20/40/80 MHz (Qualcomm QCN5052 + Skyworks SKY85755-11) - channels 36-177 WiFi3: 2.4GHz ax 2x2@20/40 MHz (Qualcomm QCN5022 + Skyworks SKY8340-11) IoT: Bluetooth 5 (CSR8811) - not implemented LED: 1x RGB status + USB Blue (PWM) USB: 1x USB 3.0 Button: WPS, Reset Flash instructions (Without Serial): ======== Open Linksys Web UI - http://192.168.1.1/ca or http://linksysxxxxx.lan/ca depending on your setup. xxxxx is the last 5 digits from the SN found on a sticker under the device. Click on the Linksys Logo to by-pass smart app registration. Login with your admin password. The default password can be found on the same sticker. To enter into the support mode, click on the “CA” link and the bottom of the page. Open the “Connectivity” menu and upload the squash-factory image with the “Choose file” button. Click start. Ignore all the prompts and warnings by click “yes” in all the popups. Flash instructions (With Serial): ======== 1. Installation using serial connection from OEM firmware (default login: root, password: admin): - fw_printenv -n boot_part In case of 2: - flash_erase /dev/mtd13 0 0 - nandwrite -p /dev/mtd13 openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin or in case of 1: - flash_erase /dev/mtd15 0 0 - nandwrite -p /dev/mtd15 openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin After first boot install firmware on second partition: - mtd -r -e kernel -n write openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin kernel or: - mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin alt_kernel 2. Installation from initramfs image using USB drive: Put the initramfs image on the USB drive: - dd bs=1M if=openwrt-qualcommax-ipq60xx-linksys_mr7500-initramfs-uImage.itb of=/dev/sda Stop u-boot and run: - usb start && usbboot $loadaddr 0 && bootm $loadaddr Write firmware to the flash from initramfs: - mtd -e kernel -n write openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin kernel and: - mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin alt_kernel 3. Back to the OEM firmware: - mtd -e kernel -n write FW_MR7500_1.1.12.211919_prod.img kernel and: - mtd -r -e alt_kernel -n write FW_MR7500_1.1.12.211919_prod.img alt_kernel 4. USB recovery: Put the initramfs image on the USB: - dd bs=1M if=openwrt-qualcommax-ipq60xx-linksys_mr7500-initramfs-uImage.itb of=/dev/sda Set u-boot env: - fw_setenv bootusb 'usb start && usbboot $loadaddr 0 && bootm $loadaddr' - fw_setenv bootcmd 'run bootusb; if test $auto_recovery = no; then bootipq; elif test $boot_part = 1; then run bootpart1; else run bootpart2; fi' AQR firmware: ======== 0. Firmware extracting: To extract the firmware, use unblob (unblob.org) 1. Firmware loading: To properly load the firmware and initialize AQR PHY, we must use the u-boot aq_load_fw function. To do this, you need to modify u-boot env: With USB recovery: - fw_setenv bootcmd 'aq_load_fw; run bootusb; if test $auto_recovery = no; then bootipq; elif test $boot_part = 1; then run bootpart1; else run bootpart2; fi' and without: - fw_setenv bootcmd 'aq_load_fw; if test $auto_recovery = no; then bootipq; elif test $boot_part = 1; then run bootpart1; else run bootpart2; fi' 2. Firmware updating: Newer firmware (AQR114C.cld) is available in the latest OEM firmware (https://downloads.linksys.com/support/assets/firmware/FW_MR7500_1.1.12.211919_prod.img). Copy AQR114C.cld to /lib/firmware/marvell Link: openwrt#17428 Signed-off-by: Weikai Kong <priv@pppig236.com> Link: https://github.com/openwrt/openwrt/pull/18185 Signed-off-by: Robert Marko <robimarko@gmail.com>
* ipq6018-ess: Add dp5-syn nodeWeikai Kong2025-03-28
| | | | | | | | Linksys MR7500 features 4x QSGMII QCA8075 and 1x USXGMII (1/2.5/5 GbE) Signed-off-by: Weikai Kong <priv@pppig236.com> Link: https://github.com/openwrt/openwrt/pull/18185 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: mr7350: switch to ascii-eq-delim-envWeikai Kong2025-03-26
| | | | | | | | | | | | | | Using the pending ascii-eq-delim-env4 driver is a better way to read mac addresses since no extra config is required The change is like eacc4d8c9b31ac17df034d2140558bdaaa56c16b, except for using smem for devinfo thanks to @musashino205 for pointing out the simplification that removes the extra partition Signed-off-by: Weikai Kong <priv@pppig236.com> Link: https://github.com/openwrt/openwrt/pull/18186 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq60xx: add GL.iNet GL-AX1800/AXT1800 supportChukun Pan2025-03-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | Specifications: SoC: Qualcomm IPQ6000 RAM: 512 MiB Flash: 128 MiB NAND ETH: Qualcomm QCA8075 WLAN1: 2.4GHz 802.11b/g/n/ax 2x2 WLAN2: 5GHz 802.11a/n/ac/ax 2x2 Button: Reset, Switch USB: 1x 3.0 SD slot: 1 in GL-AXT1800 Install via stock firmware: Upload factory.bin in stock firmware's upgrade page, do not preserve settings. Install via uboot web failsafe: Push the reset button for 5 seconds, then use broswer to access http://192.168.1.1, and upload factory.ubi. Afterwards upgrade can use sysupgrade image. Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> Link: https://github.com/openwrt/openwrt/pull/14950 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: backport cpufreq patch for ipq60xxChukun Pan2025-03-24
| | | | | | | | | Make cpufreq work on different IPQ60xx SoC. Also rebase ipq6018-cp-cpu.dtsi for mp5496. Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> Link: https://github.com/openwrt/openwrt/pull/14950 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: backport sdhci patches for ipq60xxChukun Pan2025-03-24
| | | | | | | | Refresh device tree, remove the useless sdhc2 aliases. Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> Link: https://github.com/openwrt/openwrt/pull/14950 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: backport some upstream dts changesChukun Pan2025-03-24
| | | | | | | | | This is the minimal change for the upcoming patches. Refresh the device tree of ipq807x at the same time. Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> Link: https://github.com/openwrt/openwrt/pull/14950 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: fap650: fix dtc warnings on partitionsWeikai Kong2025-03-07
| | | | | | | | | This commit adds the missing properties to address the following warnings: Warning (reg_format): /soc@0/spi@78b5000/flash@0/partitions/partition@x:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)" Signed-off-by: Weikai Kong <priv@pppig236.com> Link: #18180 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: Add support for Linksys MR5500George Moussalem2025-03-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for Linksys MR5500 (Hydra 6 Pro). Speficiations: * SoC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz) * Memory: Kingston D2516ECMDXGJD (512 MiB) * Serial Port: 3v3 TTL 115200n8 * Wi-Fi: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax) QCN9024 (4x4:4 5 Ghz 802.11an/ac/ax) * Ethernet: IPQ5018 integrated virtual switch connected to an external QCA8337 switch (4 Ports 10/100/1000 GBASE-T) * Flash: Gigadevice GD5F2GQ5REYIH (256 MiB) * LEDs: 1x multi-color PWM LED 1x blue led for USB (GPIO 19 Active High) * Buttons: 1x WPS (GPIO 27 Active Low) 1x Reset (GPIO 28 Acive Low) 5x ethernet port LEDs (amber for activity & green for link up) * Peripherals: 1x USB2 (powered by GPIO 17 Active Low) support for USB3 will be added in a separate PR * FCC ID: 2AYRA-03734 Flash instructions: 1. On OEM firmware, login to the device (typically at http://192.168.1.1) and click 'CA' in the bottom right corner -> Connectivity -> Manual Upgrade. Alternatively, browse to http://<router IP>/fwupdate.html. Upgrade firmware using openwrt-qualcommax-ipq50xx-linksys_mr5500-squashfs-factory.bin image. Optionally install on second partition, after first boot check actual partition: fw_printenv -n boot_part and install firmware on second partition using command in case of 2: mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_mr5500-squashfs-factory.bin kernel and in case of 1: mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_mr5500-squashfs-factory.bin alt_kernel 2. Installation using serial connection from OEM firmware (default login: root, password: admin): fw_printenv -n boot_part In case of 2: flash_erase /dev/mtd12 0 0 nandwrite -p /dev/mtd12 openwrt-qualcommax-ipq50xx-linksys_mr5500-squashfs-factory.bin or in case of 1: flash_erase /dev/mtd14 0 0 nandwrite -p /dev/mtd14 openwrt-qualcommax-ipq50xx-linksys_mr5500-squashfs-factory.bin After first boot install firmware on second partition: mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_mr5500-squashfs-factory.bin kernel or: mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_mr5500-squashfs-factory.bin alt_kernel 3. Back to the OEM firmware. Download firmware from OEM website: MR5500: https://support.linksys.com/kb/article/207-en/ From serial or SSH: fw_printenv boot_part in case of 1: mtd -r -e alt_kernel -n write FW_MR5500_1.1.2.209598_prod.img alt_kernel else in case of 2: mtd -r -e kernel -n write FW_MR5500_1.1.2.209598_prod.img kernel 4. Boot from USB This allows you loading an OpenWrt image into RAM and is meant for recovery scenarios only. Enable loading image from USB in u-boot. From serial or SSH: fw_setenv bootusb 'usb start && usbboot &loadaddr && bootm $loadaddr' fw_setenv bootcmd 'run bootusb; if test $auto_recovery = no; then bootipq; elif test $boot_part = 1; then run bootpart1; else run bootpart2; fi' Copy OpenWrt initramfs image to USB: dd bs=1M if=openwrt-qualcommax-ipq50xx-linksys_mr5500-initramfs-uImage.itb of=/dev/sda Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/17958 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: Linksys MX remove superfluous properties and fix ↵George Moussalem2025-02-20
| | | | | | | | | | | | | | | | | | | indentation On the ipq50xx platform, the internal GE PHY at phy address 7 on mdio0 must be enabled as it's used to detect the virtual switch in qca-ssdk. This is a platform wide condition and is therefore part of the dtsi. However, by enabling the mdio0 bus in board-specific dts files, the ge_phy is implicitly enabled. So, let's remove the superfluous status property in the dts files for Linksys MX2000 and MX5500. While at it, remove the redundant phy-mode property as it's set to sgmii by default in the ipq5018-ess.dtsi file and fix indentation in the firmware property of the q5v6_wcss node. Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18029 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: use ascii-env driver to set mac address for Linksys MX ↵George Moussalem2025-02-20
| | | | | | | | | | | devices The ascii-env driver enables reading name pair values from nand in ascii layout. So, let's pick up and set the mac address accordingly. Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18029 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: add support for Linksys SPNMX56George Moussalem2025-02-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The SPNMX56 is an ISP-branded and distributed device similar to the MX5500 with the same Wifi chips (IPQ5018 for 2.4G and QCN9074 for 5G) but has an additional QCA8081 PHY providing a 2.5gbps ethernet WAN port. Speficiations: * SoC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz) * Memory: Winbond W634GU6NB-11 (512 MiB DDR3-933) * Serial Port: 3v3 TTL 115200n8 * Wi-Fi: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax) QCN9024 (4x4:4 5 Ghz 802.11an/ac/ax) * Ethernet: IPQ5018 integrated virtual switch connected to an external QCA8337 switch (3 Ports 10/100/1000 GBASE-T) and a QCA8081 phy (up to 2.5 Gbps) * Flash: Gigadevice GD5F2GM7RExxG (256 MiB) * LEDs: 1x multi-color PWM LED * Buttons: 1x WPS (GPIO 27 Active Low) 1x Reset (GPIO 28 Acive Low) Flash instructions: 1. On OEM firmware, login to the device (typically at http://192.168.1.1) and click 'CA' in the bottom right corner -> Connectivity -> Manual Upgrade. Alternatively, browse to http://<router IP>/fwupdate.html Upload openwrt-qualcommax-ipq50xx-linksys_spnmx56-squashfs-factory.bin Optionally flash 2nd partition, after first boot check actual partition: fw_printenv -n boot_part and install firmware on second partition using command in case of 2: mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_spnmx56-squashfs-factory.bin kernel and in case of 1: mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_spnmx56-squashfs-factory.bin alt_kernel 2. Installation using serial connection from OEM firmware hit Enter once booted and enter credentials (login: root, password: admin) fw_printenv -n boot_part In case of 2: flash_erase /dev/mtd12 0 0 nandwrite -p /dev/mtd12 openwrt-qualcommax-ipq50xx-linksys_spnmx56-squashfs-factory.bin or in case of 1: flash_erase /dev/mtd14 0 0 nandwrite -p /dev/mtd14 openwrt-qualcommax-ipq50xx-linksys_spnmx56-squashfs-factory.bin After first boot install firmware on second partition: mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_spnmx56-squashfs-factory.bin kernel or: mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_spnmx56-squashfs-factory.bin alt_kernel 3. Back to the OEM firmware. Download firmware from OEM website: Firmware for this device cannot be searched for on the Linksys website. Instead, we'd have to use serial to intercept the URL of the firmware while it's trying to update. Firmware is ISP specific: Toob (UK): http://download.linksys.com/updates/20241125t080737/FW_MX56TB_1.0.1.216218_prod.img The intention is to collect URLs for different ISPs on a wiki page. From serial or SSH: fw_printenv boot_part in case of 1: mtd -r -e alt_kernel -n write FW_MX56TB_1.0.1.216218_prod.img alt_kernel else in case of 2: mtd -r -e kernel -n write FW_MX56TB_1.0.1.216218_prod.img kernel Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/17968 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: add support for Aliyun AP8220Chukun Pan2025-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Aliyun AP8220 is an AP manufactured by Edgecore. (Very similar to Edgecore EAP102) Hardware specifications: SoC: Qualcomm IPQ8071A RAM: 1GB of DDR4 600MHz Flash1: MX25U3235F 4MB Flash2: MX30UF1G18AC 128MB Ethernet: 2x 2.5G RJ45 port USB: 2x USB-A 2.0 port WiFi1: QCN5024 2.4GHz WiFi2: QCN5054 5GHz Power: DC 12V / PoE Flash instructions: 1. Connect the router via serial port 2. Keep pressing @ until uboot is interrupted 3. Download the initramfs image, rename it to initramfs.bin, host it with tftp server 4. Run these commands: tftpboot initramfs.bin bootm 5. After openwrt boots up, use scp or luci to upload sysupgrade.bin to upgrade. Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> Link: https://github.com/openwrt/openwrt/pull/17970 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq50xx: add support for Linksys MX2000 and MX5500George Moussalem2025-02-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for Linksys MX2000 (Atlas 6) and MX5500 (Atlas 6 Pro). These devices are completely identical except for the secondary wifi chip used for 5Ghz: QCN6102 is used on MX2000 while QCN9024 is used on MX5500 Speficiations: * SoC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz) * Memory: Winbond W634GU6NB-11 (512 MiB DDR3-933) * Serial Port: 3v3 TTL 115200n8 * Wi-Fi: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax) * Wi-Fi: MX2000: QCN6102 (2x2:2 5 Ghz 802.11an/ac/ax) MX5500: QCN9024 (4x4:4 5 Ghz 802.11an/ac/ax) * Ethernet: IPQ5018 integrated virtual switch connected to an external QCA8337 switch (4 Ports 10/100/1000 GBASE-T) * Flash: Macronix MX35UF2GE4AD (256 MiB) * LEDs: 1x multi-color PWM LED * Buttons: 1x WPS (GPIO 27 Active Low) 1x Reset (GPIO 28 Acive Low) Flash instructions (in case of MX2000, else replace with MX5500 images): 1. On OEM firmware, login to the device (typically at http://192.168.1.1) and click 'CA' in the bottom right corner -> Connectivity -> Manual Upgrade. Alternatively, browse to http://<router IP>/fwupdate.html. Upgrade firmware using openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin image. Optionally install on second partition, after first boot check actual partition: fw_printenv -n boot_part and install firmware on second partition using command in case of 2: mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin kernel and in case of 1: mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin alt_kernel 2. Installation using serial connection from OEM firmware (default login: root, password: admin): fw_printenv -n boot_part In case of 2: flash_erase /dev/mtd12 0 0 nandwrite -p /dev/mtd12 openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin or in case of 1: flash_erase /dev/mtd14 0 0 nandwrite -p /dev/mtd14 openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin After first boot install firmware on second partition: mtd -r -e kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin kernel or: mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq50xx-linksys_mx2000-squashfs-factory.bin alt_kernel 3. Back to the OEM firmware. Download firmware from OEM website: MX2000: https://support.linksys.com/kb/article/585-en/ MX5500: https://support.linksys.com/kb/article/587-en/ From serial or SSH: fw_printenv boot_part in case of 1: mtd -r -e alt_kernel -n write FW_MX2000_1.1.7.210469_prod.img alt_kernel else in case of 2: mtd -r -e kernel -n write FW_MX2000_1.1.7.210469_prod.img kernel Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/17182 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: add ipq50xx targetGeorge Moussalem2025-02-06
| | | | | | | | | | | | | | | | | | | | Introduce support for the Qualcomm IPQ50xx SoC. This series adds support for the following components: - minimal boot support: GCC/pinctrl/watchdog/CPUFreq/SDI (upstreamed) - USB2 (upstreamed) - Thermal/Tsens - PCIe gen2 1&2-lane PHY and controller - PWM and PWM LED - QPIC SPI NAND controller - CMN PLL Block (provider of fixed rate clocks to GCC/ethernet/more.) - Ethernet: IPQ5018 Internal GE PHY (1 gbps) - Remoteproc MPD driver for IPQ5018 (2.4G) & QCN6122 (5/6G) Wifi Co-developed-by: Ziyang Huang <hzyitc@outlook.com> Signed-off-by: Ziyang Huang <hzyitc@outlook.com> Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/17182 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: add missing WAN LED support to Spectrum SAX1V1K routersIvan Deng2025-01-24
| | | | | | | | | | | | | | | Fixed an issue where both WAN LEDs light up before plugging in the ethernet cable and no blinking regardless of WAN network activity. Updated the LED configuration to reflect proper status: Green indicates 2.5Gb connection speed. Yellow indicates other connection speed and traffic activity. This resolves inconsistent WAN LED behavior on Spectrum SAX1V1K routers. Signed-off-by: Ivan Deng <hongba@rocketmail.com> Link: https://github.com/openwrt/openwrt/pull/17623 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: dl-wrx36: fix 2.5G port LED-sRobert Marko2025-01-18
| | | | | | | | | | | | | | | | | Currently, 2.5G port LED-s on Dynalink are incorrectly configured and thus they will light up all of the time. So, lets fix this by: 1. Current green LED is actually yellow, change the color 2. Fix its polarity as its actually active-low 3. The yellow LED that was registered as being connected to LED_1 pin on the PHY is not actually connected at all, so remove it. 4. The actual green LED is connected to LED_2 on the PHY so add it. Fixes: 75ad5c24142a ("qualcommax: switch to qca8081 upstream PHY driver") Fixes: #14502 Link: https://github.com/openwrt/openwrt/pull/17656 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq807x: add support for Linksys HomeWRKPaweł Owoc2025-01-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hardware specification: ======== SoC: Qualcomm IPQ8174 Flash: 1GB (Micron MT29F8G08ABBCAH4 or AMD/Spansion S34MS08G2) RAM: 2GB (2x Kingston B5116ECMDXGJD or ESMT M15T2G16128A DDR3L) Ethernet: 4x 10/100/1000Mbps (Qualcomm QCA8075) WiFi1: 5GHz ax 2x2 (Qualcomm QCN5054 + Skyworks SKY85755-11) - channels 36-64 (low band) WiFi2: 2.4GHz ax 2x2 (Qualcomm QCN5024 + Skyworks SKY85340-11) WiFi3: 5GHz ax 4x4 (Qualcomm QCN5054 + Skyworks SKY85755-11) - channels 100-177 (high band) LED: 1x RGB status (NXP PCA9633) USB: 1x USB 3.0 Button: WPS, Reset Flash instructions: ======== 1. Installation from initramfs image using USB drive: Put the initramfs image on the USB drive: - dd bs=1M if=openwrt-qualcommax-ipq807x-linksys_homewrk-initramfs-uImage.itb of=/dev/sdX Connect serial console (JST PH 6-pin connector): - 1 - GND, 2 - TX, 4 - RX (115200, 8N1, 3.3V) Stop u-boot and run: - usb start && usbboot 44000000 0 && bootm 44000000 Write firmware to the flash from initramfs: - sysupgrade -n openwrt-qualcommax-ipq807x-linksys_homewrk-squashfs-sysupgrade.bin or - ubiformat /dev/mtd22 -y -f openwrt-qualcommax-ipq807x-linksys_homewrk-squashfs-factory.ubi 2. USB recovery: Put the initramfs image on the USB: - dd bs=1M if=openwrt-qualcommax-ipq807x-linksys_homewrk-initramfs-uImage.itb of=/dev/sdX Set u-boot env: - fw_setenv bootusb 'usb start && usbboot 44000000 0 && bootm 44000000' - fw_setenv bootcmd 'run bootusb; bootipq' Signed-off-by: Paweł Owoc <frut3k7@gmail.com> Link: https://github.com/openwrt/openwrt/pull/17463 Signed-off-by: Robert Marko <robimarko@gmail.com>
* qualcommax: ipq60xx: add TP-Link EAP610-Outdoor supportAlexandru Gagniuc2025-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TP-Link EAP610-Outdoor is a 802.11ax AP claiming AX1800 support. It is wall or pole mountable, and rated for outdoor use. It can only be powered via PoE. Specifications: --------------- * CPU: Qualcomm IPQ6018 Quad core Cortex-A53 * RAM: 512 MB * Storage: ESMT PSR1GA30DT 128MB NAND * Ethernet: * Gigabit RJ45 port with PoE input * WLAN: * 2.4GHz/5GHz * LEDs: * Multi-color System LED (Green/Amber) * Buttons: * 1x Reset * UART: 4-pin unpopulated header * 1.8 V level, Pinout 1 - TX, 2 - RX, 3 - GND, 4 - 1.8V Installation: ============= Web UI method ------------- Set up the device using the vendor's web UI. After that go to Management->SSH and enable the "SSH Login" checkbox. Select "Save". The connect to the machine via SSH: ssh -o hostkeyalgorithms=ssh-rsa <ip_of_device> Disable signature verification: cliclientd stopcs Rename the "-web-ui-factory" image to something less than 63 characters, maintaining the ".bin" suffix. * Go to System -> Firmware Update. * Under "New Firmware File", click "Browse" and select the image * Select "Update" and confirm by clicking "OK". If the update fails, the web UI should show an error message. Otherwise, the device should reboot into OpenWRT. TFTP method ----------- To flash via tftp, first place the initramfs image on the TFTP server. setenv serverip <ip of tftp server> setenv ipaddr <ip in same subnet as tftp server> tftpboot tplink_eap610-outdoor-initramfs-uImage.itb bootm This should boot OpenWRT. Once booted, flash the sysupgrade.bin image using either luci or the commandline. The tplink2022 image format ============================ The vendor images of this device are packaged in a format that does not match any previous tplink formats. In order for flashing to work from the vendor's web UI, firmware updates need to be packaged in this format. The `tplink-mkimage-2022.py` is provided for this purpose. This script can also analyze vendor images, and extract the required "support" string. This string is checked by the vendor firmware, and images with a missing or incorrect string are rejected. Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Link: https://github.com/openwrt/openwrt/pull/14922 Signed-off-by: Robert Marko <robimarko@gmail.com>