IPQ5018: Support for Linksys MX2000 Atlas 6 & MX5500 Atlas 6 Pro

Which device is that log from?

From my mx5500 with openwrt FW.

1 Like

How could we go back to the Stock Firmware from openwrt?
My Mx5500 have no TTL.
Somebody can help me?
Thank you.

Kernel 4.4 says that’s not openwrt, is this a qsdk compile or something?

A qsdk compile,I think.

hello everyone. i just wanted to note that i'm working now on the same chipset on my side. i have a mr5500 now working including nss support on kernel 6.6 the mr5500 is similar from the mx5500. the only thing which is outstanding, is that i cannot get the ipq5018 internal wifi to work. the wifi firmware simple crashes. i dont know if there was any progress here which could be helpfull to me.

3 Likes

git repo ?

just a hint for the ahb/ipq5018 wifi problem. the caldb / regdb offsets defined in dts are never taked and not initialized in ath11k because a patch is missing. this patch is 211-ath11k-Support-reading-board_id-from-devicetree.patch can canb e found in hzyitc 's tree. since the default values are all wrong, they should be upstreamed

1 Like

additional note. the ath11k support for ipq5018 is broken too. which is a second cause if found for startup crash (register writes to nirvana). not hard to fix. most of the fixes are available downstream from codelinaro. the way its ported to upstream was just wrong

2 Likes

hi @hzyitc, back from a busy period at work and the summer break, am giving it a go again on this device. Did you manage to send out these PRs (for loading rproc RPD driver and the DMA issues on qca-nss-dp)?

@BrainSlayer: I've taken a lot of your fixes in dd-wrt to try and get ipq5018 wifi to work on both MX2000 and MX5500, such as the q6 and wcss clocks in the GCC and switching from the MPD to WCSS remoteproc driver.
And although I'm getting much further in loading the driver, I get a timeout on coldboot calibration:

[   12.198219] ath11k c000000.wifi: ipq5018 hw1.0
[   12.198273] ath11k c000000.wifi: FW memory mode: 1
[   12.254326] ath11k c000000.wifi: ath11k_ahb_setup_smp2p_handle() completed..
[   12.254459] ath11k c000000.wifi: ath11k_ahb_srng_init() completed..
[   12.260831] ath11k c000000.wifi: ath11k_ahb_alloc_pipes() completed..
[   12.266575] ath11k c000000.wifi: ath11k_ahb_init_qmi_ce_completed() completed..
[   12.273065] ath11k c000000.wifi: ath11k_core_get_rproc() completed..
[   12.280547] remoteproc remoteproc0: powering up cd00000.remoteproc
[   12.287131] remoteproc remoteproc0: Booting fw image ath11k/IPQ5018/hw1.0/q6_fw.mdt, size 1820
[   12.399901] remoteproc remoteproc0: remote processor cd00000.remoteproc is now up
[   12.400009] ath11k c000000.wifi: ath11k_core_init() completed..
[   12.408996] ath11k c000000.wifi: ath11k_ahb_config_irq() completed..
[   12.412119] ath11k c000000.wifi: trigger fwreset from cold boot..
[   12.418813] ath11k c000000.wifi: wait for cold boot done
[   74.725365] ath11k c000000.wifi: Coldboot Calibration timed out

Do you have any idea what might cause this? I've tried loading different board-2.bin files (from the device itself, from your repo, codelinaro), but to no avail.

which ath11k firmware is beeing in use by you? the firmware reset problem i had was caused by drivers/clk problems. and also check my changes in remoteproc. but this is only based on mx5500 and mr5500. i cannot check mx2000. so all calibration timeout is not related to board-2 thats what i can say. its always clock problems with the clock driver

using 2.7.0.1-01744. Will have another look at the clocks, check clk_summary on stock and compare to the openwrt build and report back

another thing. check also for the reserved memory areas in dts. if something is wrong there, nothing will work. this memory is used by firmware, nss etc. for calibration data and must be excluded from kernel use.

not sure if this is relevant to your board but it don't see it posted here anywhere ...

reserved-memory {
	#ifdef __IPQ_MEM_PROFILE_256_MB__
	/*		   256 MB Profile
	 * +==========+==============+=========================+
	 * |	  |	      |			 |
	 * |  Region  | Start Offset |	  Size	   |
	 * |	  |	      |			 |
	 * +----------+--------------+-------------------------+
	 * |    NSS   |  0x40000000  |	   8MB	   |
	 * +----------+--------------+-------------------------+
	 * |   Linux  |  0x40800000  | Depends on total memory |
	 * +----------+--------------+-------------------------+
	 * |   uboot  |  0x4A600000  |	   4MB	   |
	 * +----------+--------------+-------------------------+
	 * |    SBL   |  0x4AA00000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * |   smem   |  0x4AB00000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * |    TZ    |  0x4AC00000  |	   4MB	   |
	 * +----------+--------------+-------------------------+
	 * |    Q6    |	      |			 |
	 * |   code/  |  0x4B000000  |	  20MB	   |
	 * |   data   |	      |			 |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |	      |			 |
	 * |   data   |  0x4C400000  |	  13MB	   |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |	      |			 |
	 * |  M3 Dump |  0x4D100000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |	      |			 |
	 * |   QDSS   |  0x4D200000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|	      |			 |
	 * |   data   |  0x4D300000  |	  13MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|	      |			 |
	 * |  M3 Dump |  0x4E000000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|	      |			 |
	 * |   QDSS   |  0x4E100000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|	      |			 |
	 * |   data   |  0x4E200000  |	  13MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|	      |			 |
	 * |  M3 Dump |  0x4EF00000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|	      |			 |
	 * |   QDSS   |  0x4F000000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * |						   |
	 * |	    Rest of the memory for Linux	   |
	 * |						   |
	 * +===================================================+
	 */
	/*		 512MB/1GB Profiles
	 * +==========+==============+=========================+
	 * |	  |	      |			 |
	 * |  Region  | Start Offset |	  Size	   |
	 * |	  |	      |			 |
	 * +----------+--------------+-------------------------+
	 * |    NSS   |  0x40000000  |	  16MB	   |
	 * +----------+--------------+-------------------------+
	 * |   Linux  |  0x41000000  | Depends on total memory |
	 * +----------+--------------+-------------------------+
	 * |   uboot  |  0x4A600000  |	   4MB	   |
	 * +----------+--------------+-------------------------+
	 * |    SBL   |  0x4AA00000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * |   smem   |  0x4AB00000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * |    TZ    |  0x4AC00000  |	   4MB	   |
	 * +----------+--------------+-------------------------+
	 * |    Q6    |	      |			 |
	 * |   code/  |  0x4B000000  |	  20MB	   |
	 * |   data   |	      |			 |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |	      |			 |
	 * |   data   |  0x4C400000  |	  13MB	   |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |	      |			 |
	 * |  M3 Dump |  0x4D100000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |	      |			 |
	 * |   QDSS   |  0x4D200000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |	      |			 |
	 * |  Caldb   |  0x4D300000  |	   2MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|	      |			 |
	 * |   data   |  0x4D500000  |	  13MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|	      |			 |
	 * |  M3 Dump |  0x4E200000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|	      |			 |
	 * |   QDSS   |  0x4E300000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|	      |			 |
	 * |  Caldb   |  0x4E400000  |	   5MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|	      |			 |
	 * |   data   |  0x4E900000  |	  13MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|	      |			 |
	 * |  M3 Dump |  0x4F600000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|	      |			 |
	 * |   QDSS   |  0x4F700000  |	   1MB	   |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|	      |			 |
	 * |  Caldb   |  0x4F800000  |	   5MB	   |
	 * +----------+--------------+-------------------------+
	 * |						   |
	 * |	    Rest of the memory for Linux	   |
	 * |						   |
	 * +===================================================+
	 */
		

this is from the original glinet-b3000 dts, which is an ipq5018 soc also.

Have push to Github

great stuff, ipq5018 wifi is working now!

the IPQ5018 wifi shows up as 'Generic MAC80211 802.11ax/b/g/n':
image
how do we change/correct that?

Another question I have is about setting the mac address. I set the mac address to the lan and wan interfaces in 02_network:

ipq50xx_setup_macs()
{
	local board="$1"
	local lan_mac=""
	local wan_mac=""
	local label_mac=""

	case "$board" in
		linksys,mx2000|\
		linksys,mx5500)
			label_mac=$(mtd_get_mac_ascii devinfo hw_mac_addr)
			lan_mac=$label_mac
			wan_mac=$label_mac
		;;
	esac

	[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
	[ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
	[ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
}

Luci reports the mac addresses are overridden, perhaps as they don't match the ethernet adapter's address? How does one set the mac address of the underlying eth adapter / switch?

1 Like

great work !! working on 6.6 ?

Yes, ethernet and ipq5018 wifi are working on 6.6.47. Still working on qcn6122 wifi based on @hzyitc’s repo, but am unable to get it to work so far with rproc crashing due to a stalled initialization..

1 Like