Adding Support for Verizon CR1000A

The MX8500 has the same problem. The 6GHz network is not visible on the image built from the latest sources. This is not a BDF/firmware issue.

@hurrian 6GHz network is not visible after this commit: wifi-scripts: enable ucode scripts by default

hostapd configuration differences:

diff hostapd-phy2.conf hostapd-phy2.conf.ucode -y --suppress-common-lines
							|	#Setupinterface:phy2-ap0
							<
							<
							<
							<
#macaddr_base=				<
ap_isolate=1				|	acs_exclude_dfs=0
auth_algs=1					|	airtime_mode=0
							>	ap_isolate=0
chanlist=37					<
							>	dtim_period=2
he_6ghz_reg_pwr_type=0		<
							>	he_twt_required=0
multi_ap=0					|	mbssid=0
							>	min_tx_power=0
							>	noscan=0
							>	rnr=1
							>	rrm_beacon_report=1
							>	rrm_neighbor_report=1
sae_password_file=/var/run/hostapd-phy2-ap0.sae		|	rssi_ignore_probe_request=0
							>	rssi_reject_assoc_rssi=0
ssid=6g						|	spectrum_mgmt_required=0
							>	ssid2="6g"
vlan_naming=1				<
vlan_no_bridge=1			<
wds_bridge=					<
							>	wpa_psk_file=/var/run/hostapd-phy2-ap0.psk

After adding this option the radio works again:

config wifi-device 'radio2'
	list hostapd_options 'he_6ghz_reg_pwr_type=0'

From the hostapd documentation:

# 6 GHz Access Point type
# This config is to set the 6 GHz Access Point type. Possible options are:
# 0 = Indoor AP
# 1 = Standard power AP
# 2 = Very low power AP (default)
# 3 = Indoor enabled AP
# 4 = Indoor standard power AP
# This has no impact for operation on other bands.
# See IEEE P802.11-REVme/D4.0, Table E-12 (Regulatory Info subfield encoding)
# for more details.

PR with fix: https://github.com/openwrt/openwrt/pull/20682

Could you repost latest BDF? i’m getting with 6.12


[   42.040243] ath11k_pci 0000:01:00.0: chip_id 0x0 chip_family 0x0 board_id 0xff soc_id 0xffffffff
[   42.040294] ath11k_pci 0000:01:00.0: fw_version 0x290c8569 fw_build_timestamp 2023-03-25 06:50 fw_build_id 
[   42.075612] ath11k_pci 0000:01:00.0: failed to fetch board data for bus=pci,qmi-chip-id=0,qmi-board-id=255 from ath11k/QCN9074/hw1.0/board-2.bin
[   42.075676] ath11k_pci 0000:01:00.0: failed to fetch board data for bus=pci,qmi-chip-id=0,qmi-board-id=255 from ath11k/QCN9074/hw1.0/board-2.bin
[   42.087711] ath11k_pci 0000:01:00.0: failed to fetch board.bin from QCN9074/hw1.0
[   42.100648] ath11k_pci 0000:01:00.0: qmi failed to fetch board file: -12
[   42.108007] ath11k_pci 0000:01:00.0: failed to load board data file: -12

BDF files from firmware 3.6.0.2: https://filebin.net/u8pm31hkggy9ndfq
Variant name: verizon-cr1000a
These files do not require any modifications, they are almost the latest versions of BDF with the latest regdb database.

I’m still missing something. any hints?

5GHz radio seems to work, 6GHz one still fails. (I’ve updated .dts to

&wifi {
	status = "okay";
	qcom,ath11k-calibration-variant = "verizon-cr1000a";
};

[   38.010087] remoteproc remoteproc0: powering up cd00000.q6v5_wcss
[   38.014066] remoteproc remoteproc0: Booting fw image IPQ8074/q6_fw.mdt, size 668
[   38.745620] remoteproc remoteproc0: remote processor cd00000.q6v5_wcss is now up
[   38.789823] ath11k c000000.wifi: qmi fail to get qcom,m3-dump-addr, ignore m3 dump mem req
[   38.797285] ath11k c000000.wifi: chip_id 0x0 chip_family 0x0 board_id 0xff soc_id 0xffffffff
[   38.797322] ath11k c000000.wifi: fw_version 0x290b84a5 fw_build_timestamp 2024-09-23 11:32 fw_build_id WLAN.HK.2.9.0.1-02146-QCAHKSWPL_SILICONZ-1
[   43.653163] remoteproc remoteproc0: stopped remote processor cd00000.q6v5_wcss
[   43.653208] remoteproc remoteproc0: powering up cd00000.q6v5_wcss
[   43.659376] remoteproc remoteproc0: Booting fw image IPQ8074/q6_fw.mdt, size 668
[   44.009656] remoteproc remoteproc0: remote processor cd00000.q6v5_wcss is now up
[   44.011493] ath11k_pci 0000:01:00.0: BAR 0 [mem 0x20400000-0x205fffff 64bit]: assigned
[   44.016209] ath11k_pci 0000:01:00.0: enabling device (0000 -> 0002)
[   44.024361] ath11k_pci 0000:01:00.0: MSI vectors: 16
[   44.030028] ath11k_pci 0000:01:00.0: qcn9074 hw1.0
[   44.035234] ath11k_pci 0000:01:00.0: FW memory mode: 2
[   44.053571] ath11k c000000.wifi: qmi fail to get qcom,m3-dump-addr, ignore m3 dump mem req
[   44.061033] ath11k c000000.wifi: chip_id 0x0 chip_family 0x0 board_id 0xff soc_id 0xffffffff
[   44.061086] ath11k c000000.wifi: fw_version 0x290b84a5 fw_build_timestamp 2024-09-23 11:32 fw_build_id WLAN.HK.2.9.0.1-02146-QCAHKSWPL_SILICONZ-1
[   44.218212] mhi mhi0: Requested to power ON
[   44.218266] mhi mhi0: Power on setup success
[   44.346901] ath11k c000000.wifi: htt event 48 not handled
[   44.603614] mhi mhi0: Wait for device to enter SBL or Mission mode
[   44.657922] kmodloader: done loading kernel modules from /etc/modules.d/*
[   44.668728] ath11k_pci 0000:01:00.0: chip_id 0x0 chip_family 0x0 board_id 0xff soc_id 0xffffffff
[   44.668781] ath11k_pci 0000:01:00.0: fw_version 0x290c8569 fw_build_timestamp 2023-03-25 06:50 fw_build_id 
[   44.706508] ath11k_pci 0000:01:00.0: failed to fetch board data for bus=pci,qmi-chip-id=0,qmi-board-id=255 from ath11k/QCN9074/hw1.0/board-2.bin
[   44.706569] ath11k_pci 0000:01:00.0: failed to fetch board data for bus=pci,qmi-chip-id=0,qmi-board-id=255 from ath11k/QCN9074/hw1.0/board-2.bin
[   44.718589] ath11k_pci 0000:01:00.0: failed to fetch board.bin from QCN9074/hw1.0
[   44.731500] ath11k_pci 0000:01:00.0: qmi failed to fetch board file: -12
[   44.738899] ath11k_pci 0000:01:00.0: failed to load board data file: -12

You also need to set the variant for pci: https://github.com/openwrt/openwrt/blob/main/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-mx8500.dts#L527

Ok. new build is here

  • master/6.12.60
  • new bdf (with more channels) thanks to @lytr
  • latest argon theme

well, i see that driver registers RGB too

root@CR1000A-1:/sys/firmware/devicetree/base/soc@0/fan5646# ls  /sys/class/leds
mmc0::  rgb     white

Edit. Looking at driver code they use RGB one as brightness control of white using just R component

@hurrian re MXL driver: at minimum i think we only need it to initialize the chip: If you load OEM kernel and soft reboot the MoCA chip stays initialized and operational

I’ve also played with the driver a bit: but it seems like it’s not even trying to do anything?

root@CR1000A-1:/etc/modules-boot.d# dmesg | grep mxl
[    2.364477] mxl371x: loading out-of-tree module taints kernel.
root@CR1000A-1:/etc/modules-boot.d# lsmod | grep mxl371x
mxl371x                16384  0 
root@CR1000A-1:/etc/modules-boot.d# 

The actual "phy" isn't connected, so the kernel doesn't trigger the attach procedure and it doesn't run through the init process.
When I separated the code into a binary it does load the MoCA firmware though. Not the most elegant solution.

What about making dummy phy, trigger init and load firmware and then unload driver?

It would improperly pass traffic to the dummy phy; and unloading the driver would make the statistics stuff etc not work. Ideally would like to be able to configure the channel and encryption settings and get phy stats

That's better than nothing, right?

Also, I found this realtek over spi driver. https://git.adelielinux.org/Ermine/r128/-/blob/38b2d8efd03d2e56431b611e3523f0158306451d/drivers/spi/spi-realtek-rtl.c. Is it helpful for us?

That's the driver for the spi master on the Realtek Otto SoC (i.e. the realtek target).

That said with the config code for the switch being separated recently in the realtek target means that a driver for the switch is eventually possible; once someone figures out what the SDK driver is sending.

Re spi: got it

Re: separate driver. Are you referring the changes in 6.18 kernel? Where could I have a look?

Re sdk driver: I don't think they had driver in the openwrt based version of OEM firmware. They had spidev and userspace blob to control switch over it. Unless something changed

Recent commits separated switch config for the realtek platforms from the core SoC code afaik; there were OpenWrt PR's about it. That still does not tell us anything about the command format the switch expects in SPI slave mode, I haven't encountered any documentation about it.

btw, 6Ghz radio’s power level is not working in LUCI properly still. is it a common problem?

also: my first try on rtl930x regmap + spi driver. AI generated, so I need some input if it makes any sense :slight_smile: https://github.com/openwrt/openwrt/commit/549821f0d1839b61770d04704c2ed3c16cbfc67a#diff-b435d57767536e956d49edf63962a1ddaa1275f64525ffd6acde94686bb429b5

Would anyone have https://cpe-ems34.verizon.com/firmware/CHRA/chr2fa_fw_3.6.0.3_BD_loader.bin and https://cpe-ems34.verizon.com/firmware/CHRA/chr2fb_fw_3.6.0.3_BD_loader.bin