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.

wl1271 calibration problem.

Other Parts Discussed in Thread: WL1271
Hi,

we have a custom board which includes a TiWi-R2 module attached to the mmc1 interface, which has an internal reference frequency of 38,4 MHz. While it works properly in normal mode (we can connect to any network, scan, etc...), it doesn't on calibration mode.

We've followed the instructions in [4]:

calibrator set ref_nvs /usr/share/ti-utils/ini_files/127x/TQS_S_2.6.ini
cp new-nvs.bin /lib/firmware/ti-connectivity/wl1271-nvs.bin
ifconfig wlan0 down
rmmod wl12xx_sdio
modprobe wl12xx_sdio
ifconfig wlan0 down
calibrator plt calibrate

[ 1700.179626] wl1271: power up
[ 1702.825469] wl1271: ERROR command complete timeout
[ 1702.830535] ------------[ cut here ]------------
[ 1702.835510] WARNING: at drivers/net/wireless/wl12xx/cmd.c:108 wl1271_cmd_send+0x328/0x35c [wl12xx]()
[ 1702.845123] Modules linked in: wl12xx_sdio wl12xx [last unloaded: wl12xx_sdio]
[ 1702.852813] [<c0046264>] (unwind_backtrace+0x0/0xf0) from [<c0069784>] (warn_slowpath_common+0x4c/0x64)
[ 1702.862731] [<c0069784>] (warn_slowpath_common+0x4c/0x64) from [<c00697b4>] (warn_slowpath_null+0x18/0x1c)
[ 1702.872955] [<c00697b4>] (warn_slowpath_null+0x18/0x1c) from [<bf00424c>] (wl1271_cmd_send+0x328/0x35c [wl12xx])
[ 1702.883728] [<bf00424c>] (wl1271_cmd_send+0x328/0x35c [wl12xx]) from [<bf005220>] (wl1271_cmd_configure+0x38/0x58 [wl12xx])
[ 1702.895477] [<bf005220>] (wl1271_cmd_configure+0x38/0x58 [wl12xx]) from [<bf0086cc>] (wl1271_acx_sta_mem_cfg+0xb0/0xe0 [wl12xx])
[ 1702.907714] [<bf0086cc>] (wl1271_acx_sta_mem_cfg+0xb0/0xe0 [wl12xx]) from [<bf003658>] (wl1271_plt_start+0x18c/0x3b8 [wl12xx])
[ 1702.919769] [<bf003658>] (wl1271_plt_start+0x18c/0x3b8 [wl12xx]) from [<bf0102b4>] (wl1271_tm_cmd+0x328/0x378 [wl12xx])
[ 1702.931182] [<bf0102b4>] (wl1271_tm_cmd+0x328/0x378 [wl12xx]) from [<c03c63f8>] (ieee80211_testmode_cmd+0x34/0x3c)
[ 1702.942138] [<c03c63f8>] (ieee80211_testmode_cmd+0x34/0x3c) from [<c03a2e38>] (nl80211_testmode_do+0x54/0x60)
[ 1702.952606] [<c03a2e38>] (nl80211_testmode_do+0x54/0x60) from [<c0327748>] (genl_rcv_msg+0x1d8/0x224)
[ 1702.962341] [<c0327748>] (genl_rcv_msg+0x1d8/0x224) from [<c0325f9c>] (netlink_rcv_skb+0x4c/0xb0)
[ 1702.971740] [<c0325f9c>] (netlink_rcv_skb+0x4c/0xb0) from [<c0327564>] (genl_rcv+0x18/0x24)
[ 1702.980529] [<c0327564>] (genl_rcv+0x18/0x24) from [<c0325c90>] (netlink_unicast+0x228/0x2c4)
[ 1702.989532] [<c0325c90>] (netlink_unicast+0x228/0x2c4) from [<c0326524>] (netlink_sendmsg+0x25c/0x2d4)
[ 1702.999389] [<c0326524>] (netlink_sendmsg+0x25c/0x2d4) from [<c0301848>] (sock_sendmsg+0x94/0xb0)
[ 1703.008758] [<c0301848>] (sock_sendmsg+0x94/0xb0) from [<c03014fc>] (_sys_sendmsg+0x190/0x1e8)
[ 1703.017944] [<c03014fc>] (_sys_sendmsg+0x190/0x1e8) from [<c0301d40>] (sys_sendmsg+0x3c/0x60)
[ 1703.027038] [<c0301d40>] (sys_sendmsg+0x3c/0x60) from [<c0040720>] (ret_fast_syscall+0x0/0x30)
[ 1703.036132] ---[ end trace 38421e9b35ea5002 ]---
[ 1703.041046] wl1271: WARNING CONFIGURE command NOK
[ 1703.045989] wl1271: WARNING wl1271 mem config failed: 110
[ 1705.708282] wl1271: ERROR command complete timeout
[ 1705.713348] -----------[ cut here ]------------
...
[ 1708.822235] wl1271: WARNING CONFIGURE command NOK
[ 1708.827209] wl1271: WARNING wl1271 mem config failed: -110
[ 1708.836059] wl1271: ERROR firmware boot in PLT mode failed despite 3 retries

In post [1] one user said that "Driver is asking for "wl127x-fw-3.bin". I made it load the "wl127x-fw-plt-3.bin" and the calibration seems to succeed with message [...]". So, we've tried something analog here:

mv wl1271-fw-2.bin wl1271-fw-2.bin.bak
 cp wl127x-fw-plt-3.bin wl1271-fw-2.bin

But still the same problem.

We've also seen an alternative method in [3] with the option 'autocalibrate' that it's not present on my calibrator version (v 0.72).

We are using:

firmware: git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git 375e9548bf75a5664256d47a2f9e14b79181e02d

ti-utils (calibrator): git://github.com/gxk/ti-utils.git 375e9548bf75a5664256d47a2f9e14b79181e02d

Does anybody know how can we proceed here? Is calibration really required?

Thank you.

[1] http://e2e.ti.com/support/low_power_rf/f/307/t/172396.aspx
[2] http://e2e.ti.com/support/low_power_rf/f/307/t/114847.aspx
[3] http://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_Calibration_Proccess_NLCP
[4] http://linuxwireless.org/en/users/Drivers/wl12xx/calibrator
  • Hi,
     
    The issue is probably due to wrong firmware. in addition doing the commands:
    mv wl1271-fw-2.bin wl1271-fw-2.bin.bak
    cp wl127x-fw-plt-3.bin wl1271-fw-2.bin
    is not the right way since then the normal firmware will not work as well.
     
    to begin with please send me the firmware version that can be seen in the log after performing "ifconfig wlan0 up" command.
    and then can you please add the following print and perform calibration:
    in function wl12xx_fetch_firmware() (in drivers\net\wireless\main.c file, print the fw_name string? to do so modify the wl1271_debug(DEBUG_BOOT, "booting firmware %s", fw_name);  to printk().
    in addition please send the following defines in
    #define WL1271_FW_NAME "ti-connectivity/wl1271-fw-multirole-roc.bin"
    #define WL1271_PLT_FW_NAME "ti-connectivity/wl1271-fw-multirole-plt.bin"
     
    Regards,
    Eyal
  • Hi,

    I am using wl12xx driver from mainline Linux 3.0.0 whose source you can navigate here [1].

    In these sources, the value of the defines you've requested is the following:

    #define WL1271_FW_NAME "ti-connectivity/wl1271-fw-2.bin"

    WL1271_PLT_FW_NAME is not defined

    Moreover, I've added the prints you've suggested and this is the result:

    # modprobe  wl12xx
    # modprobe wl12xx_sdio
    [  190.907958] request_firmware: requesting firmware: ti-connectivity/wl1271-nvs.bin
    [  190.958587] wl1271: loaded
    [  190.961456] wl1271: initialized
    # ifconfig wlan0 up
    [  203.982360] request_firmware: requesting firmware: ti-connectivity/wl1271-fw-2.bin
    [  204.339843] wl1271: firmware booted (Rev 6.1.5.50.74)
    # rmmod wl12xx_sdio
    [  501.026245] wl1271: unloaded
    # rmmod wl12xx_sdio
    # modprobe wl12xx_sdio
    [  507.555572] request_firmware: requesting firmware: ti-connectivity/wl1271-nvs.bin
    [  507.569763] wl1271: loaded
    [  507.572631] wl1271: initialized
    # calibrator plt calibrate
    [  516.074188] wl1271: power up
    [  516.513275] request_firmware: requesting firmware: ti-connectivity/wl1271-fw-2.bin
    [  518.755035] wl1271: ERROR command complete timeout
    [  518.760101] ------------[ cut here ]------------
    [  518.765045] WARNING: at drivers/net/wireless/wl12xx/cmd.c:108 wl1271_cmd_send+0x328/0x35c [wl12xx]()
    ...
    ...

    As you see, the wl12xx driver requests wl1271-fw-2.bin file no matter whether it is started for normal mode or calibration. That's the reason why I tried the following commands too:

    mv wl1271-fw-2.bin wl1271-fw-2.bin.bak
    cp wl127x-fw-plt-3.bin wl1271-fw-2.bin

    Regards.

    [1] http://lxr.linux.no/#linux+v3.0/drivers/net/wireless/wl12xx/

  • Hi Javier,

    That works differently than the driver that we published as far as our Platforms offering, i will investigate that and send my response

    Regards,

    Eyal       

     

  • Hi,

    we have exactly the same problem here.

    Is there any progress on this issue so far?

    Thanks in advance

    Stefan

  • I went through the same steps as original poster, with same outcome. Any suggestions?

    I am using a LSR TiWi-R2 module with WL1271 chipset. The host though is NOT a TI EVM. Hence, while I am using latest stable releases for kernel, firmware, calibration tool etc & published steps the environment is not the same as TI EVM recommends.