This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Issue with wl18xx initialization

Hello,

We have a custom board with a TI wl1893Q wifi chip connected through sdio,
and we have difficulities to make it work.
We managed to configure the bsp in order to communicate with the wifi chip
but it is not reliable and most of the time after booting we get timeouts
on the mmc bus.
However sometimes the chip initializes correctly and we are able to launch
a scan, but doing a simple
    ifconfig wlan0 down && ifconfig wlan0 up
after that does not work (timeouts on mmc bus), as you can see in the logs below.

Also, when I succeed in assigning an IP adresse to wlan0, ping the local adresse
does not work (all packets lost), this is strange because pinging a local
interface should not involve the wifi driver at all.

Do you have any idea what could possibly be wrong?

Another note: the mac adresse seems to not be configured (00:00:00:00:00:01),
are we missing some configuration there also?

Thanks for your help.
Regards,


= BEGIN ======================================================

/ # modprobe acs3-sdhci
/ # insmod /lib/modules/compat-drivers/wlcore_sdio.ko
/ # insmod /lib/modules/compat-drivers/wlcore.ko
/ # insmod /lib/modules/compat-drivers/wl18xx.ko

[   11.779354] sdhci: Secure Digital Host Controller Interface driver
[   11.785451] sdhci: Copyright(c) Pierre Ossman
[   11.794920] **** acs3_probe
[   11.797945] **** acs3_init_host
[   11.804715] mmc0: SDHCI controller on acs3-sdhci [acs3-sdhci.0] using ADMA
[   11.853672] *** mmc_attach_sdio
[   11.856653] mmc0: card claims to support voltages below the defined range. These will be ignored.
[   11.887109] mmc0: queuing unknown CIS tuple 0x91 (3 bytes)
[   11.902598] mmc0: new SDIO card at address 0001
[   13.251299] wlcore: wl18xx driver version: fc7100-v0.3-9-ga3ec69c-dirty
[   13.257864] ***** wl18xx_probe
[   13.300949] wl12xx_sdio_set_power 1
[   13.572896] wl12xx_sdio_set_power 0
[   13.694369] cfg80211: wext will not work because kernel was compiled with CONFIG_WIRELESS_EXT=n. Tools using wext interface, like iwconfig will not work.
[   13.726089] wlcore: loaded
[   13.728667] wlcore: driver version: fc7100-v0.3-9-ga3ec69c-dirty
[   13.735445] wlcore: timestamp: Tue Feb  5 14:06:46 2013

/ # ifconfig wlan0 192.168.13.13

[   22.380945] wl12xx_sdio_set_power 1
[   22.800228] wlcore: PHY firmware version: Rev 8.2.0.0.146
[   22.836005] wlcore: firmware booted (Rev 8.4.0.0.26)

/ # ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:00:00:00:00:01  
          inet addr:192.168.13.13  Bcast:192.168.13.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # iw wlan0 scan | grep SSID
    SSID: NETGEAR-FLORENT
    SSID: belkin.32a4
    SSID: Henri
    SSID: SFR_RD

/ # ifconfig wlan0 down

[   55.601029] wlcore: down
[   55.610316] wl12xx_sdio_set_power 0

/ # ifconfig wlan0 up

[   59.241075] wl12xx_sdio_set_power 1
[   61.067480] wlcore: ERROR timeout waiting for the hardware to complete initialization
[   61.075558] wl12xx_sdio_set_power 0
[   61.100931] wl12xx_sdio_set_power 1
[   62.926827] wlcore: ERROR timeout waiting for the hardware to complete initialization
[   62.934977] wl12xx_sdio_set_power 0
[   62.960931] wl12xx_sdio_set_power 1
[   64.786765] wlcore: ERROR timeout waiting for the hardware to complete initialization
[   64.794895] wl12xx_sdio_set_power 0
[   64.799310] wlcore: ERROR firmware boot failed despite 3 retries

ifconfig: SIOCSIFFLAGS: Invalid argument
/ #

[   75.291101] mmc0: Timeout waiting for hardware interrupt.
[   85.310909] mmc0: Timeout waiting for hardware interrupt.
[   95.330909] mmc0: Timeout waiting for hardware interrupt.
[  105.350910] mmc0: Timeout waiting for hardware interrupt.
[  105.550545] mmc0: card 0001 removed
[  105.601576] *** mmc_attach_sdio
[  105.604546] mmc0: card claims to support voltages below the defined range. These will be ignored.
[  105.632713] mmc0: queuing unknown CIS tuple 0x91 (3 bytes)
[  105.639572] mmc0: new SDIO card at address 0001
[  105.669912] ***** wl18xx_probe
[  105.711197] wl12xx_sdio_set_power 1
[  105.982867] wl12xx_sdio_set_power 0
[  106.044162] wlcore: loaded
[  106.046777] wlcore: driver version: fc7100-v0.3-9-ga3ec69c-dirty
[  106.061605] wlcore: timestamp: Tue Feb  5 14:06:46 2013
[  117.090906] mmc0: Timeout waiting for hardware interrupt.
[  127.110903] mmc0: Timeout waiting for hardware interrupt.
[  137.130902] mmc0: Timeout waiting for hardware interrupt.
[  147.150901] mmc0: Timeout waiting for hardware interrupt.
[  147.329946] mmc0: card 0001 removed

= END ======================================================

  • Hi Arnaud,

    Several issues here:

    1. Your wl18xx driver version doesn't seem to a properly formatted string. It should be in the form of ol_r8.ax.xx, where the x's are numbers.
    2. It seems like the sdio loaded is incorrect. The system is loading wl12xx_sdio for WL6/7 instead of wlcore_sdio for WL8. Please follow these steps in order and try again:

    # insmod /lib/modules/compat-drivers/wlcore.ko
    # insmod /lib/modules/compat-drivers/wl18xx.ko
    # insmod /lib/modules/compat-drivers/wlcore_sdio.ko

    Are you able to provide the FW load prints? It can be found on the serial console or using logcat if using android.
    Thanks.

  • Hello,

    Thank you for your answer.

    We have made some progress with the integration of the wl18xx driver: we had issues with the SDIO configuration that has been solved and I am now able to initialize the driver correctly, however the network connection is still unreliable: it is possible to ping a remote host but after a few packets exchanged it seems that no new packets are received.

    Here are some more details on our configuration:

    - driver version is R8_a4.05, however the version string shows a dirty repository because I had to patch one file to add the config option CONFIG_WLCORE_SDIO=m to force the build of the wlcore_sdio.ko module (which was not done by the compat-drivers scripts)

    - firmware version, as reported after booting the chip:

    [  657.414572] wlcore: PHY firmware version: Rev 8.2.0.0.146
    [  657.445991] wlcore: firmware booted (Rev 8.4.0.0.26)

    - I found that the default firmware configuration (wl18xx-conf-default.bin) did not work for us: it was possible to scan access points but not to connect, with always the following error:

    /bin # iw wlan0 connect -w edelweiss_open
    wlan0 (phy #0): failed to connect to 00:24:8c:57:79:b0, status: 1: Unspecified failure

    - However, I tried to regenerate the conf file with this command:

    ./wlconf -i /lib/firmware/ti-connectivity/wl18xx-conf.bin -o /lib/firmware/ti-connectivity/wl18xx-conf.bin -I /lib/official_inis/WL8_System_parameters_PG2_RDL_2_4_SP_SISO.ini

    and it works a little bit better: it is then possible to connect to an access point and to do a few pings, but after a few packets have been exchanged, the packets are no longer received even though packets sent to a remote host are still correctly sent. After bringing down then up again the interface, it is working again (for a few packets...).

    Do you have an idea what could be wrong? I wonder if there are some configurations that should be done on the radio/firmware side. Do you have some advices on what can be tuned and how to investigate further?

    Regards,

  • Hi Arnaud,

    Can you please provide the entire list of commands and logs again? I'll need more info before telling you if there's anything wrong.

    Several things you can do that might help you:
    Please check if your WiLink8 is at least ver. PG2.0 or above.
    Perform the following wlconf procedure before loading the wl18xx.ko driver module. Make sure that you cd to the wlconf directory because you need the dictionary.txt file under the same directory for configuration element lookup. The following is for MIMO connection.

    • cd <path to wlconf>
    • ./wlconf -o <location of wl18xx-conf.bin> -I official_inis/WL8_System_parameters_PG2_RDL_2_4_SP_MIMO.ini
    • ./wlconf -i <location of wl18xx-conf.bin> -o <location of wl18xx-conf.bin> wl18xx.ht.mode=0
    • ./wlconf -i <location of wl18xx-conf.bin> -o <location of wl18xx-conf.bin> wl18xx.phy.board_type=4
    • ./wlconf -i <location of wl18xx-conf.bin> -o <location of wl18xx-conf.bin> wl18xx.phy.number_of_assembled_ant2_4=2
    • ./wlconf -i <location of wl18xx-conf.bin> -o <location of wl18xx-conf.bin> wl18xx.phy.number_of_assembled_ant5=2
    • insmod <location of wl18xx.ko>
    • insmod <location of wl1core_sdio.ko>

    Hopefully this helps.

  • Hi Arnaud,

    Is your issue resolved?

    Regards,

    Abhijit

  • Hello,

    Yes, our issue has been resolved.  The problem was that 1) we are using untrimmed sample devices, and 2) our custom prototype board follows an old reference design with main antenna on BG1 instead of BG2. TI provided us with a custom firmware version which works with this setup (and with the latest driver)

    Regards,

    Arnaud