WiFi reception problem, probably overheating wireless chipset

OK I did the following tests so far, with the built-in WiFi on the A311D module (BPi CM4):

Mainline Driver

  1. Bumped the max-frequency of the &sd_emmc_a node in the dts to 200MHz instead of 25MHz, and the vqmmc-supply voltage to 1v8:
&sd_emmc_a {
	/* ... */

	cap-sd-highspeed;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	max-frequency = <200000000>;
  
	/* ... */

	vmmc-supply = <&vddao_3v3>;
	vqmmc-supply = <&vddao_1v8>;
}
  1. Added a post-power-on delay to sdio_pwrseq. According to the thread above this is necessary for stable 200MHz operation. But I will also test if 100MHz suffices:
sdio_pwrseq: sdio-pwrseq {
	/* ... */
	post-power-on-delay-ms = <200>;
};
  1. Removed the amlogic,dram-access-quirk; from the same node in meson-g12.dtsi. I will confirm again later if this is really necessary.

With only these devicetree changes, the mainline rtw88_8822cs driver already performs a lot better, I could get up to 54mbit/s down on Speedtest, and the random stalls seem to be gone. So I’ll look into the most stable combination of the above and we can include that in one of the next kernel package updates.

Alternative Driver

There’s also an alternative (vendor) driver here: GitHub - jethome-ru/rtl88x2cs: TRY RTW88 IN-KERNEL DRIVER FIRST ** Repo for rtl88x2cs driver

This driver compiles without changes on the device itself (just clone and make). After that, I unloaded the mainline driver by doing sudo rmmod rtw88_8822cs (and for good measure also all other rtw88_… modules).

Then, one can load this alternative driver:

insmod ./rtl88x2cs.ko

To my great surprise, I was then able to achieve 84mbit/s download rate on Speedtest.

I have forwarded these findings to Martin Blumenstingl who is working on the mainline driver—they said that there is still potential for optimizing it.

2 Likes