8 Replies Latest reply on Sep 25, 2020 7:28 AM by AditiB_81

    Murata 1DX Module Hangs on i.MX BSP

    ErYi_4757061

      We are using i.MX imx-4.9.11-1.0.0_ga official BSP from NXP with the bcmdhd driver and latest firmware (fw_bcmdhd.bin) and NVRAM (bcmdhd.cal) (kernel is 4.9.11 linux-imx)

      Wifi is working fine and we are always checking the signal quality in the background with "iw dev wlan0 link".

      But sometimes the wifi module gets disconnected and hangs all the kernel processes issuing while we are processing "iw dev wlan0 link" command. You can see the logs below. After that the whole kernel hangs and we can only reboot the device by unplugging the power.

      What is causing to hang the kernel?

       

      [Wed Sep 16 14:59:30 2020] sched: RT throttling activated

      [Wed Sep 16 14:59:36 2020] dhd_bus_txctl: ctrl_frame_stat == TRUE txcnt_timeout=1

      [Wed Sep 16 14:59:36 2020] dhdcdc_query_ioctl: dhdcdc_msg failed w/status -5

      [Wed Sep 16 14:59:36 2020] CFG80211-ERROR) wl_cfg80211_get_station :

      [Wed Sep 16 14:59:36 2020] Could not get rate (-5)

      [Wed Sep 16 14:59:42 2020] dhd_bus_txctl: ctrl_frame_stat == TRUE txcnt_timeout=2

      [Wed Sep 16 14:59:42 2020] dhdcdc_query_ioctl: dhdcdc_msg failed w/status -110

      [Wed Sep 16 14:59:42 2020] dhd_check_hang: Event HANG send up due to  re=0 te=2 e=-110 s=2

      [Wed Sep 16 14:59:42 2020] dhd_check_hang: Event HANG send up due to  re=0 te=2 e=-110 s=2

      [Wed Sep 16 14:59:42 2020] CFG80211-ERROR) wl_cfg80211_get_station :

      [Wed Sep 16 14:59:42 2020] Could not get rssi (-110)

      [Wed Sep 16 14:59:42 2020] CFG80211-ERROR) wl_cfg80211_get_station :

      [Wed Sep 16 14:59:42 2020] force cfg80211_disconnected: -110

      [Wed Sep 16 14:59:42 2020] dhd_prot_ioctl : bus is down. we have nothing to do

      [Wed Sep 16 14:59:42 2020] CFG80211-ERROR) wl_notifier_change_state :

      [Wed Sep 16 14:59:42 2020] wlan0:error(-1)

      [Wed Sep 16 14:59:42 2020] dhd_prot_ioctl : bus is down. we have nothing to do

      [Wed Sep 16 14:59:42 2020] CFG80211-ERROR) wl_cfg80211_disconnect :

      [Wed Sep 16 14:59:42 2020] Reason 3

      [Wed Sep 16 14:59:42 2020] dhd_prot_ioctl : bus is down. we have nothing to do

      [Wed Sep 16 14:59:42 2020] CFGP2P-ERROR) wl_cfgp2p_bss_isup :

      [Wed Sep 16 14:59:42 2020] 'cfg bss -C 0' failed: -1

      [Wed Sep 16 14:59:42 2020] CFGP2P-ERROR) wl_cfgp2p_bss_isup :

      [Wed Sep 16 14:59:42 2020] NOTE: this ioctl error is normal when the BSS has not been created yet.

      [Wed Sep 16 14:59:42 2020] dhd_prot_ioctl : bus is down. we have nothing to do

      [Wed Sep 16 14:59:42 2020] CFG80211-ERROR) wl_notifier_change_state :

      [Wed Sep 16 14:59:42 2020] wlan0:error(-1)

      [Wed Sep 16 14:59:42 2020] dhd_prot_ioctl : bus is down. we have nothing to do

      [Wed Sep 16 14:59:42 2020] wl_destroy_event_handler(): thread:wl_event_handler:7441 terminated OK

      [Wed Sep 16 14:59:42 2020] CFGP2P-ERROR) wl_cfgp2p_deinit_priv :

      [Wed Sep 16 14:59:42 2020] In

       

      Kernel device tree:

       

      {

       

          regulators {

              wlreg_on: fixedregulator@100 {

                  compatible = "regulator-fixed";

                  regulator-min-microvolt = <5000000>;

                  regulator-max-microvolt = <5000000>;

                  regulator-name = "wlreg_on";

                  gpio = <&gpio1 1 0>;

                  startup-delay-us = <100>;

                  enable-active-high;

              };

          };


          bcmdhd_wlan_0: bcmdhd_wlan@0 {

              compatible = "android,bcmdhd_wlan";

              wlreg_on-supply = <&wlreg_on>;

          };

      };


      &iomuxc {

          pinctrl_wifi: wifigrp {

              fsl,pins = <

                  MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x03029

              >;

          };

      };


      &reg_sd1_vmmc {

          regulator-always-on;

      };


      &usdhc1 {

          pinctrl-names = "default";

          pinctrl-0 = <&pinctrl_usdhc1 &pinctrl_wifi>;

          no-1-8-v;

          non-removable;

          cd-post;

          pm-ignore-notify;

          wifi-host; /* add hook for SD card detect mechanism for BCMDHD driver */

      };

        • 1. Re: Murata 1DX Module Hangs on i.MX BSP
          ErYi_4757061

          Driver version:1.141.100.6

          Firmware:wl0: Nov 23 2016 00:28:26 version 7.45.41.34 (r662849) FWID 01-43d4a2bb

           

           

          [   13.027349]

                         Dongle Host Driver, version 1.141.100.6 (r)

                         Compiled in drivers/net/wireless/bcmdhd

          [   13.027368] wl_android_wifi_on in

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

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

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

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

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

          [   13.244707] mmc0: queuing unknown CIS tuple 0x80 (6 bytes)

          [   14.019378] F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x1 pkg:0x3

          [   14.031026] DHD: dongle ram size is set to 524288(orig 524288) at 0x0

          [   14.540232] dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.

          [   16.555151] dhdsdio_htclk: HT Avail timeout (1000000): clkctl 0x50

          [   16.715070] dhdsdio_htclk: HT Avail request NO ERROR: retried 1 times.

          [   16.739872] dhd_bus_init: enable 0x06, ready 0x06 (waited 0us)

          [   16.748886] wifi_platform_get_mac_addr

          [   16.753902] Firmware up: op_mode=0x0005, MAC=dc:ef:ca:0c:75:be

          [   16.788444] Firmware version = wl0: Nov 23 2016 00:28:26 version 7.45.41.34 (r662849) FWID 01-43d4a2bb

          [   16.790315] dhd_wlfc_init(): successfully enabled bdcv2 tlv signaling, 79

          [   16.791282] dhd_wlfc_init: query wlfc_mode succeed, fw_caps=0x1c

          [   16.792204] dhd_wlfc_init(): wlfc_mode=0x1c, ret=0

          [   16.831479] CFG80211-ERROR) wl_update_wiphybands :

          [   16.831499] error reading vhtmode (-23)

          [   16.849454] wl_create_event_handler(): thread:wl_event_handler:13d started

          • 2. Re: Murata 1DX Module Hangs on i.MX BSP
            AditiB_81

            Hi Erhan,

            Please provide the following details to better understand the issue.

            --> Details of the chip used in your application.

            --> Details of the firmware used.

            --> Source of the driver used

            --> How frequent is this issue? Is it consistent?

            --> Which platform are you using to compile the driver? Android or Linux or something else?

            --> Also, can your driver support clm_blob download?

            Thanks

            • 3. Re: Murata 1DX Module Hangs on i.MX BSP
              ErYi_4757061

              -> Details of the chip used in your application.

              Murata 1FX

               

              --> Details of the firmware used.

              Driver version:1.141.100.6

              Firmware:wl0: Nov 23 2016 00:28:26 version 7.45.41.34 (r662849) FWID 01-43d4a2bb

               

              --> Source of the driver used

              Kernel 4.9.11 provided by NXP linux-imx

               

              --> How frequent is this issue? Is it consistent?

              Yes

               

              --> Which platform are you using to compile the driver? Android or Linux or something else?

              Yocto Based NXP Linux BSP

               

              --> Also, can your driver support clm_blob download?

              It is standard Linux bcmdhd driver

              • 4. Re: Murata 1DX Module Hangs on i.MX BSP
                AditiB_81

                Hi,

                I have attached two files (43430-sdio.bin and 43430-sdio.clm_blob). We recommend you to integrate these files in your application cause these are the latest firmware versions where known security vulnerabilities have been fixed. A similar issue was reported in this thread: Re: Problem With Disconnecting 1DX when signal stregths is weak and got fixed with the latest firmware. We also recommend you to move to the FMAC driver. We have a space dedicated in community for the latest FMAC releases for non-automotive chips.

                Also, can you check the driver support for clm_blob in your setup by using the "modinfo bcmdhd" command?

                 

                Thanks

                • 5. Re: Murata 1DX Module Hangs on i.MX BSP
                  ErYi_4757061

                  Hi, Thanks for the quick reply. We will try this firmware also.

                  Is there a possibility to switch to fmac driver without connecting LPO_IN crystal clock oscillator(32.768KHz)?

                  As we see in another project the firmware does not work without this?

                  • 6. Re: Murata 1DX Module Hangs on i.MX BSP
                    ErYi_4757061

                    We don't have clm_blob support

                     

                    modinfo bcmdhd

                    filename:       /lib/modules/4.9.11-1.02-inventron-som+gc27010d/kernel/drivers/net/wireless/bcmdhd/bcmdhd.ko

                    license:        GPL v2

                    srcversion:     69F3C044B611E6C115FC6FD

                    alias:          sdio:c00v*d*

                    alias:          sdio:c*v02D0dA8E7*

                    alias:          sdio:c*v02D0d4324*

                    alias:          sdio:c*v02D0d4334*

                    alias:          sdio:c*v02D0d4330*

                    alias:          sdio:c*v02D0d4319*

                    alias:          sdio:c*v02D0d4329*

                    alias:          sdio:c*v02D0d0493*

                    alias:          sdio:c*v02D0d0492*

                    alias:          sdio:c*v02D0d0000*

                    depends:       

                    intree:         Y

                    vermagic:       4.9.11-1.02-inventron-som+gc27010d SMP preempt mod_unload modversions ARMv7 p2v8

                    parm:           dhd_doflow:uint

                    parm:           dhd_dpcpoll:uint

                    parm:           clockoverride:SDIO card clock override (int)

                    parm:           sd_msglevel:uint

                    parm:           sd_power:uint

                    parm:           sd_clock:uint

                    parm:           sd_divisor:uint

                    parm:           sd_sdmode:uint

                    parm:           sd_hiok:uint

                    parm:           sd_f2_blocksize:int

                    parm:           info_string:string

                    parm:           op_mode:int

                    parm:           dhd_msg_level:int

                    parm:           dhd_arp_enable:uint

                    parm:           dhd_arp_mode:uint

                    parm:           disable_proptx:int

                    parm:           firmware_path:string

                    parm:           nvram_path:string

                    parm:           dhd_watchdog_ms:uint

                    parm:           dhd_console_ms:uint

                    parm:           dhd_slpauto:uint

                    parm:           dhd_pkt_filter_enable:uint

                    parm:           dhd_pkt_filter_init:uint

                    parm:           dhd_master_mode:uint

                    parm:           dhd_watchdog_prio:int

                    parm:           dhd_dpc_prio:int

                    parm:           dhd_rxf_prio:int

                    parm:           dhd_dongle_ramsize:int

                    parm:           instance_base:int

                    parm:           iface_name:string

                    parm:           dhd_idletime:int

                    parm:           dhd_poll:uint

                    parm:           dhd_intr:uint

                    parm:           dhd_sdiod_drive_strength:uint

                    parm:           dhd_txbound:uint

                    parm:           dhd_rxbound:uint

                    parm:           dhd_deferred_tx:uint

                    parm:           dhd_oob_gpio_num:DHD oob gpio number (int)

                    • 7. Re: Murata 1DX Module Hangs on i.MX BSP
                      AditiB_81

                      Hi,

                      The external LPO of 32k is very much required for the power-up sequence. You can refer to the following thread:

                      CYW4343W Queries:

                      Thanks

                      • 8. Re: Murata 1DX Module Hangs on i.MX BSP
                        AditiB_81

                        For the clm_blob support you can refer to the following points according to what is your choice of driver-


                        1. BCMDHD driver

                        If you wish to continue with the bcmdhd driver that you're currently using in your application, then you can first integrate the two files (that I've shared in my previous response) in your application. You can then check for the clm_blob version by providing the command "wl clmver". If the driver cannot load the blob file, then you can explicitly load the file by providing the command "wl clmload 43430-sdio.clm_blob".

                         

                        2. FMAC driver

                        In this case, you can directly use the latest release files that is provided in the Cypress Community.
                        The FMAC inherently supports clm_blob. The enclosed README document in the FMAC release package contains WLAN bring-up instructions.

                         

                        Thanks