
The calibrator and other useful utilities for TI wireless solution,
based on wl12xx driver.

Calibration is a process in which specific radio configuration parameters are
generated and saved into the NVS file, later to be used by the wl12xx driver
upon initialization.
These configuration parameters are specific to the chip on the specific design
and therefore are sent back to the driver to store in non-volatile memory for
later use. Upon initialization, the wl12xx driver will load an NVS file where
it expects to read those parameters and send them to the chip.

The NVS file contains 2 main parts - one stores the calibration parameters and
the other one stores initialization information required for the wl12xx driver.

--- Build procedure

Kernel configuration.
Make sure your kernel is configured to support nl80211 testmode commands
(NL80211_TESTMODE=y). Also enable following configurations:
CRC7=m
FW_LOADER=m

In userspace there is dependent on libnl v2.x package. It can be downloaded
from http://www.infradead.org/~tgr/libnl/files/libnl-2.0.tar.gz

Set follow environment variables:
export NFSROOT=<path to roofs of a target where installed libnl library>
export CROSS_COMPILE=arm-none-linux-gnueabi-
make
make install

Make sure that calibrator utility and go.sh script placed in the same dir.

--- How to calibrate

Native Linux calibration procedure.

    ./go.sh -c <path to INI file> [<path to firmware directory>]

Android calibration procedure.

    Based on adb utility which comes native with Android SDK

    adb shell "echo Going to stop GUI"
    adb shell "stop"

    adb shell "echo Create reference NVS"
    adb shell "calibrator set ref_nvs /data/TQS_D_1.7.ini"

    adb shell "echo Copy reference NVS file"
    adb shell "cat ./new-nvs.bin > /system/etc/firmware/ti-connectivity/wl1271-nvs.bin"

    adb shell "echo Insert wl12xx SDIO module"
    adb shell "insmod /system/lib/modules/wl12xx_sdio.ko"

    adb shell "echo Calibrate device"
    adb shell "calibrator wlan0 plt power_mode on"
    adb shell "calibrator wlan0 plt tune_channel 0 7"
    adb shell "calibrator wlan0 plt tx_bip 1 1 1 1 1 1 1 1"
    adb shell "calibrator wlan0 plt power_mode off"

    adb shell "echo Set MAC address in NVS file"
    adb shell "calibrator set nvs_mac ./new-nvs.bin 08:00:28:90:64:31"

    adb shell "echo Remove wl12xx modules"
    adb shell "rmmod wl12xx_sdio wl12xx"
    adb shell "rmmod wl12xx"

    adb shell "echo Copy calibrated NVS file"
    adb shell "cat ./new-nvs.bin > /system/etc/firmware/ti-connectivity/wl1271-nvs.bin"
    adb shell "insmod /system/lib/modules/wl12xx.ko"

    adb shell "echo Going to start GUI"
    adb shell "start"

--- How to calibrate with AutoFEM

The wl12xx driver has ability to use it's NVS file with radio parameters for 2
different frontend modules. The driver requires firmware at boot time which
FEM parameters it needs and provides radio parameters according to answer.

There is also scenario when driver decides which radio parameters to give
to firmware. In such case, 2 parameters should be set. The autofem should be
0 and fem_manuf should be 0 or 1, depends on FEM manufacturer.

In order to prepare NVS file with radio parameters for 2 FEMs, do follows

    ./go.sh -c2 <path to INI file> [<path to INI file>]

There is option to use the feature manualy. In such case, there is need to set
AutoFEM flag to 0 and explicitly set fem_manuf flag.

    ./calibrator set autofem <0-manual|1-auto> [<nvs file>]
    ./calibrator set fem_manuf <0|1> [<nvs file>]

--- How to choose INI file

It is very important to select INI file according to the firmware (see below).
Those files organized in 3 directories:
station - currently supported station firmware (wl1271-fw.bin)
access_point - currently supported access point (wl1271-fw-ap.bin)

For Beagle board and Panda board use ini_files/station/127x/TQS_S_2.6.ini
For Blaze board with ES2.1 or ES2.1 use ini_files/station/128x/TQS_D_1.7.ini


--- How to change MAC address in calibrated NVS

./calibrator set nvs_mac <nvs file> [<mac addr xx:xx:xx:xx:xx:xx>]

If the MAC address missing, the random valid value will be added.


--- How to dump NVS file

calibrator get dump_nvs [<nvs filename>]


--- Firmware files

The firmware files can be reached from git repository
git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
under directory ti-connectivity.
There are 2 firmware files there:
wl1271-fw.bin    - station firmware
wl1271-fw-ap.bin    - access point firmware


--- Detailed instructions for calibrator procedures

The following detailed instructions are collection of commands done by
default calibration procedure.

    TxBip procedure (calibration)

It is important to set MAC address to an interface before the procedure.
For example, `ifconfig wlan0 hw ether xx:xx:xx:xx:xx:xx'
There are 2 ways to do it - short where all parameters has default values and
full where you have to set all parameters manually.

Short way:
calibrator plt calibrate

Full way:
calibrator wlan0 plt power_mode on
calibrator wlan0 plt tx_bip <0|1> <0|1> <0|1> <0|1> <0|1> <0|1> <0|1> <0|1>
calibrator wlan0 plt power_mode off

Result of this procedure is new NVS file created locally ./new-nvs.bin
In order to use it, copy the file to /lib/firmware/wl1271-nvs.bin and reload.

    TxCont procedure

calibrator wlan0 plt power_mode on
calibrator wlan0 plt tune_channel <band> <channel>
calibrator wlan0 plt tx_cont <delay> <rate> <size> <amount> <power> <seed> <pkt mode> <DC on/off> <gi> <preamble> <type> <scramble> <clpc> <seq nbr mode> <dest mac>
calibrator wlan0 plt tx_stop
calibrator wlan0 plt power_mode off

Description: This test sends packets of data directly to air. It receives
several parameters as described bellow, to enable diversity of
operational modes.
It is mostly used to see Energy and radio impact on Air.
Content of Packet can be Random, or Zero, One, Zero, one...

Packets send are configurable with following parameters:
  Delay between packets in microseconds
  Rate
    1 Mbps -   0x00000001       MCS_0 - 0x00002000
    2 Mbps -   0x00000002       MCS_1 - 0x00004000
    5.5 Mbps - 0x00000004       MCS_2 - 0x00008000
    6 Mbps -   0x00000008       MCS_3 - 0x00010000
    9 Mbps -   0x00000010       MCS_4 - 0x00020000
    11 Mbps -  0x00000020       MCS_5 - 0x00040000
    12 Mbps -  0x00000040       MCS_6 - 0x00080000
    18 Mbps -  0x00000080       MCS_7 - 0x00100000
    24 Mbps -  0x00000200
    36 Mbps -  0x00000400
    48 Mbps -  0x00000800
    54 Mbps -  0x00001000
  Size of data field in MPDU (in bytes, 0 - 2284)
  Amount - number of packets in case of using series mode
  Power - output power in dBm*1000
  Seed - value for the scrambler
  Packet mode - 0-single, 1-multipile, 3-continuous, 4-FCC
  DC on/off - activate DCF
  gi - guard interval on/off for 11n rates
  Preamble
    1 Mbps - long preamble mode=0
    2, 5.5, 11 Mbps - long preamble mode=0, short preamble mode=1
    6, 9, 12, 18, 24, 36, 48, 54 Mbps - ofdm preamble mode=4
    from MCS_0 to MCS_7 - n mixed mode preamble mode=6, greenfield preamble mode=7
  Type is 0-data packet, 1-ack, 2-probe req, 3-random data, 4-user data
  Scrambler - on/off
  CLPC
    range 0-100 is disable calibration
  Sequence number mode (incremented or fixed)
  Destination Mac address

    RxStat procedure

There are 2 ways to do it - short where all parameters has default values and
full where you have to set all parameters manually.

Short way:
calibrator plt rx_statistics

In the short way each time the statistics will be reseted.

Full way:
calibrator wlan0 plt power_mode on
calibrator wlan0 plt start_rx_statcs
calibrator wlan0 plt get_rx_statcs
calibrator wlan0 plt stop_rx_statcs
calibrator wlan0 plt power_mode off

While willing to reset the statistic run:
calibrator wlan0 plt reset_rx_statcs

    Update NVS file procedure

This is procedure changes ini part of NVS file. It helps when there is need
to change ini part of NVS which already calibrated.

calibrator set upd_nvs <ini file> [<nvs file>]

If NVS filename parameter not provided the current NVS file will be used from
destination directory (usually /lib/firmware).


--- Miscellaneous procedures

    Read MAC address from NVS file

calibrator get nvs_mac <nvs filename>


    Push local NVS to the system:

calibrator phy <phyname> set push_nvs <nvs filename>


    Set NVS to use auto FEM detection

calibrator set autofem 1


    Set FEM manufacturer

calibrator set fem_manuf 0|1


    Tone transmission testing
Get in PLT mode
calibrator wlan0 plt power_mode on

Run TxTone transmission
calibrator set plt_tx_tone <power> <tone type>
Power
Tone type
 1 - Single tone
 2 - Carrier FeedThrough

Stop transmission
calibrator wlan0 plt tx_stop

Get out from PLT mode
calibrator wlan0 plt power_mode off

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

The project can be accessed from git repository:
    git clone git://github.com/gxk/ti-utils.git

Please send all patches to Gery Kahn <geryk@ti.com>
and CC linux-wireless@vger.kernel.org for community review.

