mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 08:21:14 +00:00
92eb867873
7 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
Paweł Owoc
|
9bdaebaff3 |
qualcommax: ipq807x: add support for Linksys MX8500
Hardware specification: ======== SoC: Qualcomm IPQ8072A Flash: 512MB (Fidelix FMND4G08S3J-ID) RAM: 1GB (2x Kingston DDR3L D2516ECMDXGJD) Ethernet: 1x 10/100/1000/2500/5000Mbps (Marvell AQR114C) Ethernet: 4x 10/100/1000Mbps (Qualcomm QCA8075) WiFi1: 6GHz ax 4x4 (Qualcomm QCN9024 + Skyworks SKY85784-11) - channels 33-229 WiFi2: 5GHz ax 4x4 (Qualcomm QCN5054 + Skyworks SKY85755-11) - channels 36-177 WiFi3: 2.4GHz ax 4x4 (Qualcomm QCN5024 + Skyworks SKY8340-11) IoT: Bluetooth 5, Zigbee and Thread (NXP K32W041) LED: 1x RGB status (NXP PCA9633) USB: 1x USB 3.0 Button: WPS, Reset Flash instructions: ======== 1. Manually upgrade firmware using openwrt-qualcommax-ipq807x-linksys_mx8500-squashfs-factory.bin image. More details can be found here: https://www.linksys.com/support-article?articleNum=47547 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-ipq807x-linksys_mx8500-squashfs-factory.bin kernel and in case of 1: - mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq807x-linksys_mx8500-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/mtd21 0 0 - nandwrite -p /dev/mtd21 openwrt-qualcommax-ipq807x-linksys_mx8500-squashfs-factory.bin or in case of 1: - flash_erase /dev/mtd23 0 0 - nandwrite -p /dev/mtd23 openwrt-qualcommax-ipq807x-linksys_mx8500-squashfs-factory.bin After first boot install firmware on second partition: - mtd -r -e kernel -n write openwrt-qualcommax-ipq807x-linksys_mx8500-squashfs-factory.bin kernel or: - mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq807x-linksys_mx8500-squashfs-factory.bin alt_kernel 3. Installation from initramfs image using USB drive: Put the initramfs image on the USB drive: - dd bs=1M if=openwrt-qualcommax-ipq807x-linksys_mx8500-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-ipq807x-linksys_mx8500-squashfs-factory.bin kernel and: - mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq807x-linksys_mx8500-squashfs-factory.bin alt_kernel 4. Back to the OEM firmware: - mtd -e kernel -n write FW_MX8500_1.0.11.208937_prod.img kernel and: - mtd -r -e alt_kernel -n write FW_MX8500_1.0.11.208937_prod.img alt_kernel 5. USB recovery: Put the initramfs image on the USB: - dd bs=1M if=openwrt-qualcommax-ipq807x-linksys_mx8500-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: ======== 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 (AQR-G4_v5.6.5-AQR_WNC_SAQA-L2_GT_ID45287_VER24005.cld) is available in the latest OEM firmware. To load this firmware via u-boot, we need to add the MBN header and update 0:ethphyfw partition. For MBN header we can use script from this repository: https://github.com/testuser7/aqr_mbn_tool - python aqr_mbn_tool.py AQR-G4_v5.6.5-AQR_WNC_SAQA-L2_GT_ID45287_VER24005.cld To update partition we need to install kmod-mtd-rw package first: - insmod mtd-rw.ko i_want_a_brick=1 - mtd -e /dev/mtd26 -n write aqr_fw.mbn /dev/mtd26 Signed-off-by: Paweł Owoc <frut3k7@gmail.com> Link: https://github.com/openwrt/openwrt/pull/14883 Signed-off-by: Robert Marko <robimarko@gmail.com> |
||
Sean Khan
|
849ebc905b |
qualcommax: enhance smp_affinity (log, uci, syntax)
1.) Changed logic of `set_affinity` to now use physical cores rather than knowing the bitmask. Rather than having to know a bitmask, users can provide a numerical instance of one or more CPU cores (numbered 0-63). This is done via function `cpus_to_bitmask`. Functions Added: a.) bitmask_to_cpus - Takes a bitmask of CPUs and returns a list of CPU numbers. (i.e. `bitmask_to_cpus "f"` -> 0,1,2,3) b.) cpus_to_bitmask - Takes a comma/space or range list of CPUs and returns a bitmask. Example: `cpus_to_bitmask "2,3"` -> c `cpus_to_bitmask "0,1,2,3"` -> f `cpus_to_bitmask "1,3"` -> a With or without quotes `cpus_to_bitmask "1 3"` -> a `cpus_to_bitmask 1 3` -> a 2.) Added UCI options: enable - to enable/disable the script from running. [default 1 (on)] enable_log - to enable/disable logging output to `logger`.[default 1 (on)] Log output: ``` Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(87) reo2host-destination-ring1 to CPU 0 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(88) reo2host-destination-ring2 to CPU 1 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(89) reo2host-destination-ring3 to CPU 2 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(90) reo2host-destination-ring4 to CPU 3 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(79) wbm2host-tx-completions-ring1 to CPU 1 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(83) wbm2host-tx-completions-ring2 to CPU 2 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(85) wbm2host-tx-completions-ring3 to CPU 3 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(73) ppdu-end-interrupts-mac1 to CPU 1 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(77) ppdu-end-interrupts-mac2 to CPU 2 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(75) ppdu-end-interrupts-mac3 to CPU 3 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(32) edma_txcmpl to CPU 3 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(33) edma_rxfill to CPU 3 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(35) edma_rxdesc to CPU 3 Mon Apr 8 23:00:01 2024 user.notice smp_affinity: Pinning IRQ(36) edma_misc to CPU 3 ``` Output of `/proc/interrupts`: ``` 69: 0 0 0 0 GIC-0 209 Edge rxdma2host-destination-ring-mac1 70: 0 0 0 0 GIC-0 211 Edge rxdma2host-destination-ring-mac3 71: 0 0 0 0 GIC-0 210 Edge rxdma2host-destination-ring-mac2 72: 2435 0 0 0 GIC-0 321 Edge reo2host-status 73: 268427 8011 0 0 GIC-0 261 Edge ppdu-end-interrupts-mac1 74: 2 0 0 0 GIC-0 255 Edge rxdma2host-monitor-status-ring-mac1 75: 176169 0 4 10035 GIC-0 263 Edge ppdu-end-interrupts-mac3 76: 2 0 0 0 GIC-0 260 Edge rxdma2host-monitor-status-ring-mac3 77: 0 0 0 0 GIC-0 262 Edge ppdu-end-interrupts-mac2 78: 0 0 0 0 GIC-0 256 Edge rxdma2host-monitor-status-ring-mac2 79: 3428 3123 0 0 GIC-0 189 Edge wbm2host-tx-completions-ring1 80: 0 0 0 0 GIC-0 323 Edge reo2ost-exception 81: 178 0 0 0 GIC-0 322 Edge wbm2host-rx-release 82: 0 0 0 0 GIC-0 212 Edge host2rxdma-host-buf-ring-mac1 83: 6524 0 13712 0 GIC-0 190 Edge wbm2host-tx-completions-ring2 84: 4 0 0 0 GIC-0 235 Edge host2rxdma-host-buf-ring-mac3 85: 560 0 0 1979 GIC-0 191 Edge wbm2host-tx-completions-ring3 86: 0 0 0 0 GIC-0 215 Edge host2rxdma-host-buf-ring-mac2 87: 4520 0 0 0 GIC-0 267 Edge reo2host-destination-ring1 88: 2231 2811 0 0 GIC-0 268 Edge reo2host-destination-ring2 89: 2180 0 2512 0 GIC-0 271 Edge reo2host-destination-ring3 90: 1990 0 0 2321 GIC-0 320 Edge reo2host-destination-ring4 ``` 3.) Added `uci-defaults` script `15_smp_affinity` to configure defaults options on first boot. Signed-off-by: Sean Khan <datapronix@protonmail.com> |
||
Paweł Owoc
|
70fd815e57 |
qualcommax: ipq807x: add support for Linksys MX5300
Hardware specification: ======== SoC: Qualcomm IPQ8072A Flash: 512MB (Winbond W29N04GZBIBA) RAM: 1GB (2x Nanya DDR3L NT5CC256M16ER-EK) Ethernet: 5x 10/100/1000Mbps (Qualcomm QCA8075) WiFi1: 5GHz ac 4x4 (Qualcomm QCA9984 + Skyworks SKY85746-11) - channels 100-169 WiFi2: 5GHz ax 4x4 (Qualcomm QCN5054 + Skyworks SKY85755-11) - channels 36-64 WiFi3: 2.4GHz ax 4x4 (Qualcomm QCN5024 + Skyworks SKY8340-11) IoT: Bluetooth 5, Zigbee and Thread (Qualcomm QCA4024 + Skyworks SE2433T-R) IoT Flash: 4MB (Macronix MX25R3235F) RTC: ST M41T00S LED: 1x RGB status (NXP PCA9633) USB: 1x USB 3.0 Button: WPS, Reset Flash instructions: ======== 1. Manually upgrade firmware using openwrt-qualcommax-ipq807x-linksys_mx5300-squashfs-factory.bin image. More details can be found here: https://www.linksys.com/hk/support-article?articleNum=274497 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-ipq807x-linksys_mx5300-squashfs-factory.bin kernel and in case of 1: - mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq807x-linksys_mx5300-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/mtd21 0 0 nandwrite -p /dev/mtd21 openwrt-qualcommax-ipq807x-linksys_mx5300-squashfs-factory.bin or in case of 1: - flash_erase /dev/mtd23 0 0 nandwrite -p /dev/mtd23 openwrt-qualcommax-ipq807x-linksys_mx5300-squashfs-factory.bin After first boot install firmware on second partition: - mtd -r -e kernel -n write openwrt-qualcommax-ipq807x-linksys_mx5300-squashfs-factory.bin kernel or: - mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq807x-linksys_mx5300-squashfs-factory.bin alt_kernel 3. Installation from initramfs image using USB FAT32 formatted drive: Stop u-boot and run: - usb start && fatload usb 0:1 $loadaddr openwrt-qualcommax-ipq807x-linksys_mx5300-initramfs-uImage.itb && bootm $loadaddr Write firmware to the flash from initramfs: - mtd -e kernel -n write openwrt-qualcommax-ipq807x-linksys_mx5300-squashfs-factory.bin kernel and: - mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq807x-linksys_mx5300-squashfs-factory.bin alt_kernel 4. Back to the OEM firmware: - mtd -e kernel -n write FW_MX5300_1.1.9.200251_prod.img kernel and: - mtd -r -e alt_kernel -n write FW_MX5300_1.1.9.200251_prod.img alt_kernel 5. USB recovery: - fw_setenv usbimage 'openwrt-qualcommax-ipq807x-linksys_mx5300-initramfs-uImage.itb' fw_setenv bootusb 'usb start && fatload usb 0:1 $loadaddr $usbimage && bootm $loadaddr' fw_setenv bootcmd 'run bootusb; aq_load_fw && if test $auto_recovery = no; then bootipq; elif test $boot_part = 1; then run bootpart1; else run bootpart2; fi' Notes: ======== IoT device is accesible over spi. Not yet supported. Signed-off-by: Paweł Owoc <frut3k7@gmail.com> Reviewed-by: Robert Marko <robimarko@gmail.com> |
||
Robert Marko
|
ad25cfb6b8
|
qualcommax: add SMP affinity script
By default Linux will default to most IRQ-s being mapped to core 0 which during high loads will completely swamp the core 0, so lets add the widely used script that has been floating around forums for a long time to try and optimize the IRQ mapping a bit. Signed-off-by: Robert Marko <robimarko@gmail.com> |
||
Mohammad Sayful Islam
|
46a2490e8f |
ipq807x: add support for Linksys MX4200 V1 and V2
Linksys MX4200 is a 802.11ax Tri-band router/AP. Specifications: * CPU: Qualcomm IPQ8174 Quad core Cortex-A53 1.4GHz * RAM: 512MB of DDR3 * Storage: 512Mb NAND * Ethernet: 4x1G RJ45 ports (QCA8075) * WLAN: * 2.4GHz: Qualcomm QCN5024 2x2 802.11b/g/n/ax 574 Mbps PHY rate * 5GHz: Qualcomm QCN5054 2x2@80MHz or 2x2@160MHz 802.11a/b/g/n/ac/ax 2402 PHY rate * 5GHz: Qualcomm QCN5054 4x4@80MHz or 2x2@160MHz 802.11a/b/g/n/ac/ax 2402 PHY rate * LED-s: * RGB system led * Buttons: 1x Soft reset 1x WPS * Power: 12V DC Jack Installation instructions: Open Linksys Web UI - http://192.168.1.1/ca or http://10.65.1.1/ca depending on your setup. Login with your admin password. The default password can be found on a sticker under the device. 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. 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. Then you would need to write openwrt to the other partition for it to work - First Check booted partition fw_printenv -n boot_part - Then install Openwrt to the other partition if booted in slot 1: mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq807x-linksys_mx4200v(X)-squashfs-factory.bin alt_kernel - If in slot 2: mtd -r -e kernel -n write openwrt-qualcommax-ipq807x-linksys_mx4200v(X)-squashfs-factory.bin kernel Replace (X) with your model version either 1 or 2 Signed-off-by: Mohammad Sayful Islam <sayf.mohammad01@gmail.com> Reviewed-by: Robert Marko <robimarko@gmail.com> |
||
Isaev Ruslan
|
3763a6a075
|
ipq807x: add support for Yuncore AX880
SPECIFICATION: - Chipset: IPQ8072A +QCN5054+QCN5024+QCA8081*2 - Flash NOR-8MB AND NAND-128MB - RAM 1Gb DDR - IEEE 802.11: 802.11ax/ac/b/g/n - 4*4 2.4G Wi-Fi standard 802.11b/g/n/ax - 4*4 5.8G Wi-Fi Standard 802.11 a/n/ac/ax - 2x 1 Gbps Ethernet (QCA8081) with 802.3at PoE input support - 1x Reset - 1x Bluetooth(optional) - 1x DC Port 12V 3A - 4x Antenna IPEX Connector, 3dBi omni antennas - Data Rate: 3657Mbps ( 2.4G: 1182Mbps (11ax 4x4); 5.8G: 2475Mbps (11ax 4x4)) - RF Power: 2.4g ≤ 20dBm; 5.8g ≤ 19dBm - LED light: Sys; 5.8G wifi; 2.4G wifi; WAN; LAN - Max Power Consumption: ≤ 22W - Size: 198mm * 198mm * 41.02mm BACKUP YOUR STOCK FIRMWARE: ``` export device=ax880 mkdir -p /tmp/fw_dump_$device cd /tmp/fw_dump_$device dmesg > dmesg_$device.log dtc -I fs /sys/firmware/devicetree/base > $device.dts cat /proc/device-tree/model > model cat /proc/mtd > proc_mtd while read p; do mtd_dev=$(echo $p | cut -d: -f1) echo $mtd_dev dd if=/dev/$mtd_dev of=$mtd_dev done < proc_mtd md5sum * > md5sum.log tar -cvzf ../$device.tar.gz . export sum=$(md5sum /tmp/$device.tar.gz | cut -d' ' -f1) mv ../$device.tar.gz /tmp/${device}_${sum}.tar.gz echo fw backup saved to: /tmp/${device}_${sum}.tar.gz ``` Upload your backup via tftp to the safe place. INSTALLATION: 1. stock firmware web ui Rename factory.bin fw image file to factory.ubin. Flash this image like ordinary stock fw upgrade. 2. stock firmware telnet method Enter telnet cli (login: root, password: 476t*_f0%g09y) and upload factory.bin fw image and rename it to factory.ubin `cd /tmp && wget <your_web_server_ip>/factory.ubin` `sysupgrade factory.ubin 3. initramfs method Put openwrt-ipq807x-generic-yuncore_ax880-initramfs-uImage.itb to your TFTP server and rename it to ax880.initram Enable serial console and enter to the u-boot cli. Exec these commands: `tftpboot <your_tftp_server_ip>:ax880.initram` `dhcp` When downloading is finished: `bootm` After booting the device, you need to upload to the device factory.ubi fw image. ``` 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 ``` 4. u-boot factory.ubi image method Put openwrt-ipq807x-generic-yuncore_ax880-squashfs-factory.ubi to your TFTP server and rename it to ax880.ubi Enter u-boot cli and exec these commands: `tftpboot <your_tftp_server_ip>:ax880.ubi` `dhcp` After downloading is finished: `flash rootfs` `flash rootfs_1` `reset` 5. u-boot factory.bin method Put openwrt-ipq807x-generic-yuncore_ax880-squashfs-factory.bin to your TFTP server and rename it to ax880.bin Enter u-boot cli and exec these commands: `tftpboot <your_tftp_server_ip>:ax880.bin` `dhcp` After downloading is finished: `imgaddr=$fileaddr && nand device 0` Erase rootfs memory: `nand erase 0x00000000 0x03400000` Write rootfs: `nand write $fileaddr 0x00000000 $filesize` Erase rootfs_1 memory: `nand erase 0x3c00000 0x3400000` Write rootfs_1 `nand write $fileaddr 0x3c00000 $filesize` `reset` STOCK FIRMWARE RECOVERY: Boot initramfs image. Upload your rootfs mtd partition to the device using scp or download it from the device using wget. Enter device ssh cli and exec: ``` cd /tmp && wget <your_web_server_ip>/mtd21` 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 /tmp/mtd21 ubiformat /dev/${rootfs_1} -y -f /tmp/mtd21 reboot ``` Signed-off-by: Isaev Ruslan <legale.legale@gmail.com> Reviewed-by: Robert Marko <robimarko@gmail.com> |
||
Robert Marko
|
83314c13d0
|
qualcommax: move ipq807x support to subtarget
Now that qualcommax exists as a target and dependencies have been updated let move ipq807x support to subtarget of qualcommax. This is mostly copy/paste with the exception of having to update SSDK and NSS-DP to use CONFIG_TARGET_SUBTARGET. This is a preparation for later addition of IPQ60xx and IPQ50xx support. Signed-off-by: Robert Marko <robimarko@gmail.com> |