cancel
Showing results for 
Search instead for 
Did you mean: 

Wi-Fi Bluetooth for Linux

ChSi_4659482
New Contributor

Hello VinayakS_26​, ZhengbaoZ_96​,

After reading various discussions and posts, I think you are the best guys to resolve my issue.

I have a CYW43438 SDIO based module and I want to test it's WiFi & Bluetooth function.

I have tried Windows, Ubuntu & Fedora environments to test the module but it does not load up on any of the OS.

Test on Windows 10 OS:

Based on section "Driver Installation" of "OTP Programming and NVRAM Development Process for SDIO Embedded WLAN Devices" guide, I have put the nvram.txt in system32/drivers directory and restarted the system. But windows did not detect the module. Although it was mentioned to use Windows XP but I think it should work on Windows 10 as well?

Test on Linux based OS:

In the linux systems (Fedora 19 & Ubuntu 18.04/14.04, I get the following messages (dmesg output) when I insert into the SDIO (over PCIe) slot.

[   11.383887] mmc0: queuing unknown CIS tuple 0x80 (2 bytes)

[   11.387127] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)

[   11.390315] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)

[   11.396013] mmc0: queuing unknown CIS tuple 0x80 (7 bytes)

[   11.561398] mmc0: new high speed SDIO card at address 0001

bcma & b43 modules are already loaded but nothing shows up in ifconfig -a.  And when I execute wl utility, I get the below error probably because module failed to load:

./wl: wl driver adapter not found

Can you please help me on this?

Please let me know in case of any information required.

0 Likes
15 Replies
Zhengbao_Zhang
Moderator
Moderator

Hello:

   My opinion is  to run the module in Ubuntu 14.04 , I will have a try and show you the process before sharing my files to you .

0 Likes
ChSi_4659482
New Contributor

Thanks ZhengbaoZ_96​ for your reply.

I will check it on Ubuntu 14.04 only after getting the process details and files from you.

0 Likes
Zhengbao_Zhang
Moderator
Moderator

Hello:

  I am using a PC ubuntu to bring up 43438.

NVRAM is using an in-band interrupt define.

modprobe cfg80211

insmod cywdhd.ko firmware_path=cyw43438-7.46.58.26.bin nvram_path=bcm943438wlpth_26MHz.txt

here is the log:

ifconfig wlan1 up

root@test# dmesg

[  676.537503] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter

[  676.544800] CFG80211-DEBUG) wl_cfg80211_up :In

[  676.545225] CFG80211-TRACE) wl_cfg80211_up :WLC_GET_VERSION=2

[  676.545235] CFG80211-TRACE) wl_cfg80211_attach_post :In

[  676.546150] CFG80211-DEBUG) __wl_cfg80211_up :In

[  676.546158] CFG80211-TRACE) dhd_config_dongle :In

[  676.546623] MACEVENT: WLC_E_IF 54, MAC 02:13:42:63:74:a5, status 0, reason 0, auth 0

[  676.546632] CFG80211-DEBUG) wl_cfg80211_event :event_type (54):WLC_E_IF

[  676.549125] CFG80211-ERROR) wl_update_wiphybands : error reading vhtmode (-23)

[  676.559281] CFG80211-DEBUG) wl_create_event_handler :Enter

[  676.559372] wl_create_event_handler(): thread:wl_event_handler:c04 started

[  676.559380] CFG80211-ERROR) wl_event_handler : tsk Enter, tsk = 0xffff8800aa521a80

[  676.560229] CFG80211-DEBUG) wl_cfg80211_set_power_mgmt :Enter

[  676.560236] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter

root@test# wl ver

wl0: Apr 11 2019 03:12:59 version 7.46.58.26 (r713879 CY) FWID

and make sure you can see mmc log after your sdio interface connected.

and the attached firmware is only for test , do not use it for any other purposes.

Attached cywdhd.ko was compiled in my PC ubuntu 64bit, but have possibility that it is not compatible with your system .

ChSi_4659482
New Contributor

Hello ZhengbaoZ_96​,

Thanks for your response and files.


I did the process as mentioned by you but got the following error:

[  74.508183] mmc0: queuing unknown CIS tuple 0x80 (2 bytes)

[  74.509984] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)

[  74.511758] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)

[  74.514906] mmc0: queuing unknown CIS tuple 0x80 (7 bytes)

[  74.655795] mmc0: new SDIO card at address 0001

[  74.730546] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.

[  74.730551] brcmf_sdiod_regrw_helper: failed to write data F1@0x0c010, err: -84

[  74.735510] brcmf_sdiod_regrw_helper: failed to read data F1@0x0c040, err: -84

[  74.738513] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.

[  74.740997] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.

[  74.741108] brcmf_sdiod_regrw_helper: failed to write data F1@0x0c010, err: -84

[  74.746258] brcmf_sdiod_regrw_helper: failed to read data F1@0x0c040, err: -84

----------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------

[  377.406174] cywdhd: module verification failed: signature and/or required key missing - tainting kernel

[  377.410515] dhd_module_init in

[  377.410555] no wifi platform data, skip

[  377.410565] DHD wifi platform data is required for Android build

[  377.410567] DHD registeing bus directly

[  377.418144] F1 signature read @0x18000000=0xffffffff

[  377.421082] dhdsdio_probe_attach: si_attach failed!

[  377.421085] dhdsdio_probe: dhdsdio_probe_attach failed

[  377.423647] bcmsdh_sdmmc: probe of mmc0:0001:2 failed with error -12

[  377.423690] dhd_module_init out

I setup the same environment as yours to make sure that cywdhd.ko gets loaded.

singhc@singhcNB:~/Downloads$ uname -a

Linux singhcNB 4.2.0-34-generic #39~14.04.1-Ubuntu SMP Fri Mar 11 11:38:02 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

I am not sure if its due to the fact that the driver is compiled on your system. In such case, can you please share the files and the procedure to compile it in my environment?

Regards,

Charan

0 Likes
Zhengbao_Zhang
Moderator
Moderator

No, I think it is due to SDIO interface,   Would you please check if your SDIO interface is stable ?

0 Likes
Zhengbao_Zhang
Moderator
Moderator

   I remember something,  before using my cywdhd, please rmmod all the fmac driver in advance .

0 Likes
ChSi_4659482
New Contributor

Hello,

I removed the all the brcmfmac/brcmsmac modules but still its not working.

Error logs:

[12838.849623] dhd_module_init in

[12838.849662] no wifi platform data, skip

[12838.849672] DHD wifi platform data is required for Android build

[12838.849674] DHD registeing bus directly

[12838.850058] bcmsdh_sdmmc: probe of mmc0:0001:1 failed with error -110

[12838.850420] bcmsdh_sdmmc: probe of mmc0:0001:2 failed with error -110

[12838.850459] dhd_module_init out

Also attaching lsmod output.

0 Likes
Zhengbao_Zhang
Moderator
Moderator

need a reset for SDIO interface,  it is better to move brcmfmac to other position in case of the auto-start.

then have a reset, insert your board,  insmod the driver.

0 Likes
ChSi_4659482
New Contributor

I did the above process but still getting the same error.

I was going through other people's experiences with this product and have the following queries:

1. How is DHD different from brcmfmac driver? As per my finding, brcmfmac has replaced DHD in newer linux kernels?

2. How to compile DHD driver for my system? Where can i find the files?

On Ubuntu 16.04 & 18.04, I get the below error with brcmfmac module loaded:

[  197.008582] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1

[  197.008791] usbcore: registered new interface driver brcmfmac

[  209.684497] mmc0: Timeout waiting for hardware interrupt.

[  209.684502] mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========

[  209.684509] mmc0: sdhci: Sys addr:  0xc7dae280 | Version:  0x0000ad01

[  209.684516] mmc0: sdhci: Blk size:  0x00007040 | Blk cnt:  0x0000000a

[  209.684523] mmc0: sdhci: Argument:  0x9dfae80a | Trn mode: 0x00000023

[  209.684529] mmc0: sdhci: Present:  0x01f70106 | Host ctl: 0x00000003

[  209.684536] mmc0: sdhci: Power:    0x0000000f | Blk gap:  0x00000000

[  209.684542] mmc0: sdhci: Wake-up:  0x00000000 | Clock:    0x00004007

[  209.684548] mmc0: sdhci: Timeout:  0x0000000d | Int stat: 0x00000000

[  209.684555] mmc0: sdhci: Int enab:  0x02ff008b | Sig enab: 0x02ff008b

[  209.684561] mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000000

[  209.684567] mmc0: sdhci: Caps:      0x054032b2 | Caps_1:  0x00000007

[  209.684573] mmc0: sdhci: Cmd:      0x0000353a | Max curr: 0x00000000

[  209.684579] mmc0: sdhci: Resp[0]:  0x00001000 | Resp[1]:  0x00000000

[  209.684586] mmc0: sdhci: Resp[2]:  0x00000000 | Resp[3]:  0x00000000

[  209.684590] mmc0: sdhci: Host ctl2: 0x00000000

[  209.684591] mmc0: sdhci: ==============================

==============
[  209.684640] brcmfmac: brcmf_sdiod_ramrw: membytes transfer failed
[  209.684646] brcmfmac: brcmf_sdio_download_nvram: error -110 on writing 652 nvram bytes at 0x0007fd74
[  209.684648] brcmfmac: brcmf_sdio_download_firmware: dongle nvram file download failed
[  209.684971] brcmfmac: brcmf_sdio_htclk: Failed access turning clock off: -5
[  209.687367] brcmfmac: brcmf_sdio_htclk: HT Avail request error: -5

I have attached the bin file & nvram txt file for your reference.

I have attached the bin & nvram txt file (which I placed in /lib/firmware/brcm/) for your reference.

0 Likes
Zhengbao_Zhang
Moderator
Moderator

I am still doubting your hardware configuration,   You can find a PC with SDIO 2.0 firstly to verify the board.

fmac and dhd all can support the debug, dhd is not released officially , so I can only give you ko file.

and better to find a reference board to verify your board also , make sure there has no hardware issue.

looks basic communication has problems.

[  209.684640] brcmfmac: brcmf_sdiod_ramrw: membytes transfer failed

[  209.684646] brcmfmac: brcmf_sdio_download_nvram: error -110 on writing 652 nvram bytes at 0x0007fd74

[  209.684648] brcmfmac: brcmf_sdio_download_firmware: dongle nvram file download failed

[  209.684971] brcmfmac: brcmf_sdio_htclk: Failed access turning clock off: -5

[  209.687367] brcmfmac: brcmf_sdio_htclk: HT Avail request error: -5

ChSi_4659482
New Contributor

Hello ZhengbaoZ_96​,

With the same hardware spec, I flashed different versions of Ubuntu and have the following observations:

1. Ubuntu 14.04.6: CYW43438 SDIO based module successfully detected using brcmfmac driver (supplied as part of official Ubuntu release).

Also wlan interface up and running.

2. Ubuntu 16.04.6 (32-bit & 64-bit) & 18.04.4 LTS: On these different Ubuntu versions, brcmfmac driver failed to load the module. Refer error in above post.

So its indeed not a hardware issue.

Now if I want to really integrate with my embedded platform with linux probably running kernel 4.x, it will be really a task to make it work.

I checked the following link which contains the package which we can compile for our linux kernel. Do you think its the right way to do it? Or you want us to stick to DHD driver.

Cypress Linux WiFi Driver Release (FMAC) [2020-04-02]

0 Likes
Zhengbao_Zhang
Moderator
Moderator

Hello:

I think fullmac is good enough .  For 16.04 and above you need to copy firmware and nvram into /lib/firmware/brcm/ .

You can have a try with the attached also in 16.04 or 18 version.

ChSi_4659482
New Contributor

I tried the above firmware in Ubuntu 18.04.4 and nothing happened, no wlan interface showed up.

[10414.393710] mmc0: queuing unknown CIS tuple 0x80 (2 bytes)

[10414.395454] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)

[10414.397213] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)

[10414.400580] mmc0: queuing unknown CIS tuple 0x80 (7 bytes)

[10414.538931] mmc0: new SDIO card at address 0001

[10414.643296] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1

[10414.643411] usbcore: registered new interface driver brcmfmac

[10417.953688] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50

[10418.960108] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50

Regards

0 Likes
Zhengbao_Zhang
Moderator
Moderator

Are you using a 4343 module in your board ?  if it is a module, I think you need to get the correct NV from module maker if hardware has already been confirmed ok.

0 Likes
ChSi_4659482
New Contributor

Yes, using a CYW43438 based module on my board.

Used the same nvram file (working fine in Ubuntu 14.04.6) plus your firmware (bin file) in Ubuntu 18.04.4 and 16.04.4.

Getting the same error:

[10414.643411] usbcore: registered new interface driver brcmfmac

[10417.953688] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50

[10418.960108] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50

What could be the reason?

If the NVRAM and bin file should match, then can you please generate a bin file for my NVRAM file? See attached

0 Likes