Wifi AP6398S + mainline kernel

Neil says “Oh I see why, we should disable sg_support since we support only a single sg…” but he’s on vaction for 14-days over Christmas and New Year so unless that means something to you (or anyone who writes code) further investigation might take a while.

1 Like

OK! i have done test for all VIMx boards
i have test both AP and CLIENT wifi modes

VIM3 notes

all errors possible to fix (but with lost some speed performance ) im not very competent at this linux drivers parts - maybe smbdy can make it more properly and elegant :wink:

yes we need remove this one from dts sd-uhs-sdr50 , but its not enough ( AP mode - not stable )
cap-sd-highspeed - dont remove this node!!! ( this param make speed limit to 50Mhz - !!! 100Mhz not stable!!! )

/sys/kernel/debug/mmc0/ios:clock:               50000000 Hz
/sys/kernel/debug/mmc0/ios:actual clock:        50000000 Hz

( but dts still must have this one max-frequency = <100000000>; )

and we need apply next my patch

NOTE: i think something wrong with mmc host driver for VIM3
need force setup another value for stable wifi work

[   13.660868] brcmfmac: brcmf_sdiod_sgtable_alloc: !!!! WIFI VIM3 hack applay
[   13.660874] brcmfmac: brcmf_sdiod_sgtable_alloc: !!!! WIFI DEBUG khadas,vim3:        host->max_segs: 1    
   host->max_seg_size: 1  host->max_blk_count: 1536        sdiodev->max_request_size: 256
   sdiodev->max_segment_count: 1   max_blocks: 1   host->max_req_size: 1536

for example this one workable DEFAULT parameters for VIM3L (but same parameters don’t wok for VIM3 ;-( )

[   15.295165] brcmfmac: brcmf_sdiod_sgtable_alloc: !!!! WIFI DEBUG khadas,vim3l:       host->max_segs: 256  
   host->max_seg_size: 511 host->max_blk_count: 261632      sdiodev->max_request_size: 130816     
   sdiodev->max_segment_count: 128 max_blocks: 511 host->max_req_size: 261632

PS: other patches for 5.4.5 => https://github.com/hyphop/khadas-linux-kernel/tree/master/patches/linux-5.4.5 + https://github.com/hyphop/khadas-linux-kernel/tree/master/patches/wifi_4359

2 Likes

G12A and G12B devices have a chipset bug that impacts SDIO - I see the same issue on a GT-King Pro and X96-Max box (both using BCM4356). GXL/GXM and SM1 don’t have the chip bug. I’ll pick the patch into my branch as a tempoarary workaround (tagged as HACK) but it needs to look for the g12a/g12b SoC compatible rather than board as the issue is not limited to VIM3. The real fix needs to be done in the mmc driver not brcmfmac, but that will take time due to Christmas and New Year.

yes i think same ! :wink:

NOTE: this openwrt image https://dl.khadas.com/Firmware/Krescue/images/VIMx.OpenWrt.servers.test.emmc.kresq - already have this patches + and we can test it for any khadas VIMx boards VIM1 VIM2 VIM3 VIM3L

2 Likes

The previous patch is flawed due to my general ignorance of c++ … it always evaluates to true so the hack is applied to all hardware. Below is an alternative approach that forces values in the mmc driver when amlogic,dram-access-quirk is in the device-tree, which only applies to g12a and g12b:

2 Likes

Hello
Should this problem be solved in kernel Linux Khadas 5.9.0-rc2? Or ist the Wifi of VIM3 V12 still buggy?

I would like to use it as a AP. With a mobile I can see the ssid, somtimes I can connect, but the connection is very unstable.
I get error messages like this:
[ 3.729255] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4359-sdio for chip BCM4359/9
[ 3.737525] brcmfmac mmc0:0001:1: Direct firmware load for brcm/brcmfmac4359-sdio.khadas,vim3.txt failed with error -2
[ 6.215359] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4359-sdio for chip BCM4359/9
[ 6.218270] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[ 6.239368] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4359/9 wl0: Sep 20 2019 20:22:36 version 9.87.51.11.34 (edb7293@shgit) (r711217) FWID 01-c7feb1ee
[ 6.711304] ieee80211 phy0: brcmf_dongle_roam: WLC_SET_ROAM_TRIGGER error (-52)
[ 8.631375] ieee80211 phy0: brcmf_fweh_call_event_handler: no interface object

[ 554.785992] ieee80211 phy0: brcmf_p2p_send_action_frame: Unknown Frame: category 0x8a, action 0x6
[ 613.533757] ieee80211 phy0: brcmf_netdev_wait_pend8021x: Timed out waiting for no pending 802.1x packets
[ 614.557747] ieee80211 phy0: brcmf_netdev_wait_pend8021x: Timed out waiting for no pending 802.1x packets

Thanks in advice
Andreas

In Linux 5.9-RC*, the Wi-Fi driver is broken again…
Please use 5.7 kernel.

Thank you very much.

I compiled a fenix 0.9.4 Version with Kernel 5.7 and Debian.
Now, errors are still there, but the hostapd access point works.

[ 5.228669] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 5.239821] systemd-journald[1671]: Received request to flush runtime journal from PID 1
[ 5.257128] cfg80211: Loaded X.509 cert ‘sforshee: 00b28ddf47aef9cea7’
[ 5.263580] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 5.266584] cfg80211: failed to load regulatory.db
[ 5.334829] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4359-sdio for chip BCM4359/9
[ 5.384304] brcmfmac mmc0:0001:1: Direct firmware load for brcm/brcmfmac4359-sdio.khadas,vim3.txt failed with error -2
[ 5.970832] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4359-sdio for chip BCM4359/9
[ 5.979305] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[ 5.993740] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4359/9 wl0: Sep 20 2019 20:22:36 version 9.87.51.11.34 (edb7293@shgit) (r711217) FWID 01-c7feb1ee
[ 8.913853] ieee80211 phy0: brcmf_dongle_roam: WLC_SET_ROAM_TRIGGER error (-52)
[ 51.721872] ieee80211 phy0: brcmf_fweh_call_event_handler: no interface object
[ 51.834486] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 52.229840] ieee80211 phy0: brcmf_cfg80211_get_channel: chanspec failed (-512)
[ 52.237874] ieee80211 phy0: brcmf_cfg80211_get_tx_power: error (-512)
[ 52.737836] ieee80211 phy0: brcmf_vif_set_mgmt_ie: vndr ie set error : -52
[ 52.741816] ieee80211 phy0: brcmf_vif_set_mgmt_ie: vndr ie set error : -52
[ 55.697800] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready

To remove the “Direct firmware load error” rename or copy the file

/lib/firmware/brcm/brcmfmac4359-sdio.txt
to
/lib/firmware/brcm/brcmfmac4359-sdio.khadas,vim3.txt

and reboot.

brcmfmac mmc0:0001:1: Direct firmware load for brcm/brcmfmac4359-sdio.khadas,vim3.txt failed with error -2

This error doesn’t matter.

It is working fine on 5.8.x
I have my vim3 running on 5.8.7 now and wifi works quite well as expected.

1 Like

Yes, 5.8 stable version works well.

could you please check suspend/resume functionality with 5.8 kernel

Suspend resume for wifi?

For distro it is not available with mainline kernel and uboot as arm doesn’t have standard bios like firmware.

So far we could only get suspend to work on rk3399 that to with using bsp uboot and not mainline uboot.

Therefore I won’t expect it to work on amlogic yet or maybe I am wrong.

I mean suspend/resume for whole board. I checked it with 4.9 work ok through systemctl suspend or through desktop-> power -> suspend, resume done through power button. For 5.7-rc7 suspend ok, but board fail to resume. I will compile 5.10 and check

I’m running linux 5.14 on the vim3 right now and wifi is unstable. is this a common problem for this board? I see no errors from brcmfmac in dmesg

tnx for notify i will check soon what happens !
i have check vim3l today works ok !
plz wait for tomorrow i will check vim3 !

Linux Krescue 5.14.0-rc5 #1 SMP PREEMPT Thu Aug 12 12:34:25 CST 2021 aarch64 GNU/Linux

VIM3 just tested - wifi works ok - cant see any problems!

how can reproduce it ? plz provide more details !!