diff options
Diffstat (limited to 'mac80211/ti-utils/README')
-rw-r--r-- | mac80211/ti-utils/README | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/mac80211/ti-utils/README b/mac80211/ti-utils/README new file mode 100644 index 0000000..04f4d9e --- /dev/null +++ b/mac80211/ti-utils/README @@ -0,0 +1,278 @@ + +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. + |