Open main menu

DAVE Developer's Wiki β

Changes

XUELK-AN-001: Using WiFi-Bluetooth combo plugin with SBC Lynx

8,616 bytes added, 16:37, 12 February 2021
no edit summary
{{InfoBoxTop}}
{{AppliesToSBCLynx}}
{{AppliesToDWM AN}}
{{AppliesTo AXEL ULite AN}}
{{AppliesTo SBC Lynx AN}}
 
{{InfoBoxBottom}}
{{WarningMessage|text=This application note was validated against specific versions of the kit only. It may not work with other versions. Supported versions are listed in the ''History'' section.}}
{{ImportantMessage|text=Regarding the Molex antenna used in this AN. It is valid only for '''No EU''' countries - see [https://www.lairdconnect.com/documentation/regulatory-information-tiwi-ble link]}}
== History ==
{| class="wikitable" border="1"
!Notes
|-
|{{oldid|6665|1.0.0}}
|August 2016
|1.0.0
|1.0.0
|August 2016
|First public release
|-
|{{oldid|6756|1.2.0}}
|May 2017
|1.2.0
|Update for new XUELK release
|-
|2.0.0
|September 2017
|2.0.0
|Validated on latest XUELK release
|}
 
==Introduction==
[[:Category:SBC_Lynx|SBC Lynx]] can be populated with [[Wireless_Module_(DWM)|DWM WiFi/Bluetooth combo plugin]] to easily add wireless connectivity.
This application note describes how to enable these interfaces when working with [[AXEL_ULite_and_SBC_Lynx_Embedded_Linux_Kit_(XUELK)#XUELK_software_components|XUELK 1.0.0]]
 
[[File:SBCLynx-DWM-antenna.png|thumb|center|600px|SBC Lynx equipped with WiFi-Bluetooth combo plugin (DWM) and antenna]]
===Limitations===
DWM wireless module shares some signals with mezzanine board connector J53. Thus, when DWM module is used, the following signals must be left floating:
==Usage==
Software delivered along with Starting from version [[AXEL_ULite_and_SBC_Lynx_Embedded_Linux_Kit_(XUELK)#XUELK_software_components|XUELK 1.0.0]], the software delivered along with [[AXEL_ULite_and_SBC_Lynx_Embedded_Linux_Kit_(XUELK)|XUELK]] provides all the required stuff - specifically stuff—specifically device drivers and user space tools - to tools—to enable and use wireless interfaces. The following sections describe this in more detail. ===Calibration===As known, the radio chipset integrated in the plugin requires a [[Wireless_Module_(DWM)#Calibration_process|calibration file (NVS)]] to set radio parameters. The root file system delivered along with XUELK contains a calibration file (<code>wl1271-nvs.bin</code>) that was produced under the following conditions:*Antenna: [http://www.molex.com/molex/products/datasheet.jsp?part=active/0479500011_ANTENNAS.xml Molex 47950-0011]*Initialization data: The following file was used "''WLAN INI: ETSI all certified antennas''", provided by LS Research. For more details please refer to [https://www.lairdconnect.com/documentation/wlan-ini-etsi-all-certified-antennas this page].**File name: <code>930-0056.zip</code>**md5: <code>f16da1e1c1ea3cc3cca295931d454a43</code>*Firmware**File name: <code>wl127x-fw-5-plt.bin</code>**Version: <code>6.3.10.0.133</code> {{ImportantMessage|text=For [[AXEL_ULite_and_SBC_Lynx_Embedded_Linux_Kit_(XUELK)#XUELK_software_components|XUELK releases]] 1.1.3 and older, please replace the calibration file in the target's root file system (<code>/lib/firmware/ti-connectivity/wl1271-nvs.bin</code>) with this one:*https://mirror.dave.eu/lynx/DWM/20170331/wl1271-nvs.bin*md5: <code>5e331d2ca1590b711dc8676085bf8ad6</code>}}
===Detection upon bootstrap===
During the Linux kernel bootstrap, the following messages are printed out during the detection of the wireless chipset:
<pre>
wlcore: loaded
</pre>
===WiFi(client mode)===
The following example shows how to:
*enable WiFi interface, configured as <code>wloan0wlan0</code>
*scan the environment for available networks
<pre>
round-trip min/avg/max
</pre>
====Performance test====
The following example shows a throughput performance test, carried out with the well-known [https://iperf.fr/ <code>iperf</code> tool]:
<pre>
</pre>
===Bluetooth=== It is possible to attach the physical device to [http://www.bluez.org/ BlueZ stack] and start using it via HCI tools: <pre>root@sbc-lynx:~# hciattach -t 60 /dev/ttymxc1 texas 115200Found a Texas Instruments' chip!Firmware file : /lib/firmware/ti-connectivity/TIInit_7.6.15.btsLoaded BTS script version 1texas: changing baud rate to 3000000, flow control to 1Device setup completeroot@sbc-lynx:~# hciconfig hci0 uproot@sbc-lynx:~# hcitool scanScanning ... 00:02:72:C6:40:16 virt</pre>  {{ImportantMessage|text=For XUELK 1.1.3 and below, to enable Bluetooth interface, <code>gpio135</code> must be set to 1 first 
<pre>
root@sbc-lynx:~# echo 135 > /sys/class/gpio/export
root@sbc-lynx:~# echo out > /sys/class/gpio/gpio135/direction
root@sbc-lynx:~# echo 1 > /sys/class/gpio/gpio135/value
</pre>
 
}}
 
====Performance tests====
The following examples show two throughput performance tests, run at L2CAP layer. The connection has been established with a PC equipped with Bluetooth USB dongle Asus BT400.
 
In the first test data originates at the SBC Lynx and is sent to the host PC that is configured as follows:
<pre>
[ 4012.910755] Bluetooth: RFCOMM TTY layer initialized
[ 4012.910760] Bluetooth: RFCOMM socket layer initialized
[ 4012.910765] Bluetooth: RFCOMM ver 1.11
devel@devel-VirtualBox:~$ sudo modprobe -v btusb
devel@devel-VirtualBox:~$ sudo su
root@devel-VirtualBox:/home/devel# echo "0b05 17cb" >> /sys/bus/usb/drivers/btusb/new_id
root@devel-VirtualBox:/home/devel# hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:02:72:C6:40:16 ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN
RX bytes:1194 acl:0 sco:0 events:69 errors:0
TX bytes:1556 acl:0 sco:0 commands:69 errors:0
 
root@devel-VirtualBox:/home/devel# hciconfig hci0 up
root@devel-VirtualBox:/home/devel# hciconfig hci0 name virt
root@devel-VirtualBox:/home/devel# hciconfig hci0 class 0x6e0100
root@devel-VirtualBox:/home/devel# hcitool dev
Devices:
hci0 00:02:72:C6:40:16
root@devel-VirtualBox:/home/devel# hciconfig hci0 piscan
root@devel-VirtualBox:/home/devel# l2test -r -b 10000 -O 10000 -I 10000
l2test[1795]: Waiting for connection on psm 4113 ...
</pre>
Configuration of SBC Lynx:
<pre>
root@sbc-lynx:~# echo 135 > /sys/class/gpio/export
root@sbc-lynx:~# echo out > /sys/class/gpio/gpio135/direction
root@sbc-lynx:~# echo 1 > /sys/class/gpio/gpio135/value
root@sbc-lynx:~# echo 1 > /sys/class/gpio/gpio135/value
root@sbc-lynx:~# hciattach -t 60 /dev/ttymxc1 texas 115200
Scanning ...
00:02:72:C6:40:16 virt
root@sbc-lynx:~# hcitool dev
Devices:
hci0 1C:45:93:5C:DC:69
root@sbc-lynx:~# l2test -s 00:02:72:c6:40:16 -b 10000 -O 10000 -I 10000
l2test[717]: Connected to 00:02:72:C6:40:16 (bredr, psm 4113, scid 64)
l2test[717]: Local device 1C:45:93:5C:DC:69 (bredr, psm 4097, scid 64)
l2test[717]: Options [imtu 10000, omtu 10000, flush_to 65535, mode 0, handle 1, class 0x6e0100, priority 0, rcvbuf 163840]
l2test[717]: Sending ...
</pre>
These are the results, as reported on host side:
<pre>
l2test[1822]: Connect from 1C:45:93:5C:DC:69 [imtu 10000, omtu 10000, flush_to 65535, mode 0, handle 12, class 0x001f00, priority 0, rcvbuf 212992]
l2test[1822]: Receiving ...
l2test[1822]: 10000 bytes in 0.08 sec, 125.63 kB/s
l2test[1822]: 10000 bytes in 0.06 sec, 165.19 kB/s
l2test[1822]: 10000 bytes in 0.07 sec, 133.54 kB/s
l2test[1822]: 10000 bytes in 0.07 sec, 131.60 kB/s
l2test[1822]: 10000 bytes in 0.08 sec, 127.59 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 191.97 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 196.78 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 195.44 kB/s
l2test[1822]: 10000 bytes in 0.08 sec, 128.06 kB/s
l2test[1822]: 10000 bytes in 0.04 sec, 226.70 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 196.70 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 192.15 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 192.58 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 199.52 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 196.94 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 191.98 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 200.49 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 192.34 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 192.49 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 200.19 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 196.10 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 191.87 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 200.53 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 188.93 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 200.21 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 192.42 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 198.11 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 192.39 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 197.82 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 192.40 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 198.15 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 200.03 kB/s
l2test[1822]: 10000 bytes in 0.05 sec, 190.55 kB/s
</pre>
 
To test the other direction (host -> SBC Lynx), the PC has to configured as follows:
<pre>
root@devel-VirtualBox:/home/devel# l2test -s 1C:45:93:5C:DC:69 -b 10000 -O 10000 -I 10000
l2test[1829]: Connected [imtu 10000, omtu 10000, flush_to 65535, mode 0, handle 12, class 0x000000, priority 0, rcvbuf 212992]
l2test[1829]: Sending ...
</pre>
The target has to be configured in receiving mode:
<pre>
root@sbc-lynx:~# hciconfig hci0 piscan
root@sbc-lynx:~# l2test -r -b 10000 -O 10000 -I 10000
l2test[719]: Waiting for connection on psm 4113 ...
l2test[720]: Connect from 00:02:72:C6:40:16 (bredr, psm 4113, dcid 64)
l2test[720]: Local device 1C:45:93:5C:DC:69 (bredr, psm 0, scid 64)
l2test[720]: Options [imtu 10000, omtu 10000, flush_to 65535, mode 0, handle 1, class 0x6e0100, priority 0, rcvbuf 163840]
l2test[720]: Receiving ...
l2test[720]: 10000 bytes in 0.08 sec, 118.66 kB/s
l2test[720]: 10000 bytes in 0.06 sec, 157.15 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 256.54 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 249.19 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 257.00 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 256.44 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 259.77 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 257.03 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 265.94 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 257.42 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 265.25 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 256.81 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 257.66 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 240.65 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 258.23 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 257.03 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 257.44 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 257.21 kB/s
l2test[720]: 10000 bytes in 0.04 sec, 257.61 kB/s
</pre>
a000298_approval, dave_user
299
edits