浏览代码

add esp ble compatibility test case

Wang Fang 7 年之前
父节点
当前提交
ef07bc44ec

+ 182 - 0
examples/bluetooth/ble_compatibility_test/ble_compatibility_test_case.md

@@ -0,0 +1,182 @@
+# Test Case for BLE Smartphone Compatibility 
+
+This document provides a test case for BLE smartphone compatibility and includes detailed procedures for various test items.
+  
+## Preparation
+
+### What You Need
+
+* ESP device which needs to flash [this test program] (https://github.com/espressif/esp-idf/blob/master/examples/bluetooth/ble_compatibility_test/main/ble_compatibility_test.c)
+* Smartphone with LightBlue® Explorer app
+
+### Initialization
+
+Prior to conducting tests, please initialize the smartphone and the ESP device as follows:
+
+* Set the device name as `BLE_COMP_TEST`.
+* Set the maximum transmission unit (MTU) of the device to 33 bytes, to test the assembly and division of data packets.
+* If the smartphone has been paired with the ESP device before, please delete the pairing in the Bluetooth setting as follows: `Bluetooth` -> `My Devices` -> `Find this device with "i" in a circle on the right` -> `Forget this device`. Then restart the Bluetooth service.
+* Before flashing the test program onto the ESP device, make sure to erase the contents of the flash by executing the command `make erase_flash flash` in the Terminal.
+* When the ESP device restarts, the pairing information will be erased automatically. After that, make sure that the pairing information in the Bluetooth setting of the smartphone is deleted.
+
+**Note:**
+   
+* For tests marked with (*) further in the document, please bear in mind the following:
+	* Your phone performance may affect the results of these tests. If such a test fails, it does not mean the phone fails to meet the test requirements, but that you need to arrange targeted tests.
+	* Taking "Test for Connection Success Rate" as an example: if the test cannot be passed for 10 consecutive times, you need to record how many times the test was passed and then arrange targeted tests.
+* For extended testing, please use the [examples] (https://github.com/espressif/esp-idf/tree/master/examples/bluetooth) provided by Espressif. 
+
+       
+## Test for ADV Performance (*)
+
+### Search Device
+
+Refresh the scanning in LightBlue® Explorer to check if the device to be tested can be found quickly. Please repeat this action 10 times.
+
+### Test Results
+
+The test is passed, if you get the following results:
+
+* The device starts advertizing and outputs the log `(0) ***** advertising start successfully *****`.
+* LightBlue® Explorer scans and successfully discovers ` BLE_COMP_TEST` each time.
+
+**Note:** 
+
+* The device broadcasts on 3 channels, with an ADV interval of 40 ms.
+* Check if the ADV packet can be received.
+* Check if the Scan Response packet can be received.
+* The device name is included in Scan Response packets only and cannot be found in ADV packets.
+
+## Test for Pairing Performance
+
+### Connect Device
+
+* Open the LightBlue® Explorer scan list and tap on the device name ` BLE_COMP_TEST` to establish connection.
+* ESP device prints a passkey: `The passkey notify number: 123456`.
+* A prompt on the smartphone appears asking if you want to pair. Tap on *Pair*, and then enter the passkey "123456".
+
+### Test Results
+
+The test is passed, if you get the following results:
+
+* If the connection is successful:
+   * Smartphone shows DATA beginning with `ADVERTISEMENT DATA`
+   * ESP device outputs the log: `ESP_GATTS_CONNECT_EVT`
+* When the pairing is established, the device shows the following log in green: `(1) ***** pair status = success *****`
+
+## Test for Service Discovery Performance
+
+### Test Procedures
+
+In LightBlue® Explorer, check the contents of `GATT SERVICES & CHARACTERISTICS`.
+
+### Test Results
+
+The test is passed, if you get the following results:
+
+* Service that starts with ``000000ff`` appears at the bottom of your smartphone.
+* This service contains 3 characteristics
+   * `Char_1_Short_WR`
+   * `Char_2_Long_WR`
+   * `Char_3_Short_Notify`
+   
+## Test for Read and Encrypt
+
+### Test Procedures
+
+Read the value of `Char_1` in LightBlue, and tap on `READ AGAIN`.
+
+### Test Results
+
+* Encryption is successful, if your smartphone shows the value "11 22 33 44", and the ESP device prints the log: `(2) ***** read char_1 *****`.
+* Encryption fails, if your smartphone shows a blank screen, and the ESP device outputs the error log in red: `GATT_INSUF_AUTHENTICATION: MITM Required`. 
+
+## Test for Short Read and Write
+
+### Test Procedures
+
+* Navigate to the WRITE interface in LightBlue® Explorer, and write the value "88 99" to `Char_1`.
+* Read `Char_1` and check if its value is consistent with the data you have written to it.
+
+### Test Results
+
+The test is passed, if you get the following results:
+
+* ESP device prints the log: `(3)***** short write success *****`.
+* LightBlue® Explorer shows "88 99" below `READ AGAIN`.
+
+## Test for Long Read and Write
+
+### Test Procedures
+
+* Navigate to the WRITE interface in LightBlue® Explorer, and write the string `0x001122…FF001122…FF` of 256 bytes to `Char_2`. The data takes up 16 lines and looks as follows:
+
+	```
+	00112233445566778899AABBCCDDEEFF
+	00112233445566778899AABBCCDDEEFF
+	…
+	00112233445566778899AABBCCDDEEFF
+	00112233445566778899AABBCCDDEEFF
+	```
+
+* Read `Char_2` and check if its value is consistent with the data you have written to it.
+
+### Test Results
+
+The test is passed, if you get the following results:
+
+* The device prints the log: ``ESP_GATTS_EXEC_WRITE_EVT, Length=256`` and ``(4) ***** long write success *****``.
+* LightBlue® Explorer shows `(5) ***** read char_2 *****` below `READ AGAIN`.
+
+**Note:**
+
+The data to be written can be copied from a text file and pasted into LightBlue® Explorer.
+
+## Test for Short Notify
+
+### Test Procedures
+
+* Enter `Char_3` and tap on `SUBSCRIBE` to enable its Notify function.
+* Your phone automatically receives Notify data from the device.
+
+### Test Results
+
+The test is passed, if you get the following results:
+
+* ESP device prints the log: `(6) ***** send notify AA BB *****`.
+* "AA BB" appears on your smartphone.
+
+## Test for Connection Success Rate (*)
+
+### Test procedures
+
+* Break the connection
+* Re-establish the connection
+* Repeat 10 times
+
+### Test Results
+
+The test is passed, if you get the following results:
+
+* Your phone establishes the connection successfully, and the ESP device outputs the log: `(1) ***** pair status = success *****`.
+* Your phone breaks the connection, and the device outputs the log: `ESP_GATTS_DISCONNECT_EVT`.
+* Connection can be set up each time with no issues.
+
+## Test for Long Connection Stability
+
+The connection must be stable throughout the tests.
+
+**Note:**
+
+If the existing connection breaks:
+
+* LightBlue® Explorer prints `Disconnected`.
+* ESP device outputs the log: ``ESP_GATTS_DISCONNECT_EVT, reason = (0) ***** advertising start successfully *****``.
+ 
+## Further Information
+
+* If you see any log entry in red, please record it for future reference or feedback it to our engineer.
+* Tests to be added in the future:
+   * Multi-connection Test
+   * Automatic Re-connection Test
+

+ 905 - 0
examples/bluetooth/ble_compatibility_test/esp_ble_compatibility_test_report.md

@@ -0,0 +1,905 @@
+<table class="table table-bordered table-striped table-condensed">
+   <tr>
+      <th colspan="14">Test Report for ESP BLE Smartphone Compatibility</th>
+   </tr>
+   <tr>
+      <td>ESP32 Module:</td>
+      <td colspan="13">ESP-WROOM-32</td>
+   </tr>
+   <tr>
+      <td>Commit ID:</td>
+      <td colspan="13">7c29a39d6f9f2dfbefc49d34d34e9267afc7200d</td>
+   </tr>
+   <tr>
+      <td>Test Demo:</td>
+      <td colspan="13">https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/ble_compatibility_test</td>
+   </tr>
+   <tr>
+      <td rowspan="2"><font size="1">Phone Brand</td> 
+      <td rowspan="2"><font size="2">Model</td>
+      <td rowspan="2"><font size="2">OS Version</td>
+      <td rowspan="2"><font size="2">Test APP & Version</td>
+      <td colspan="9" font size="2" align="center">Test Item</td>
+      <td rowspan="2"><font size="2">Note</td>
+   </tr>
+   <tr>
+      <td><font size="2">ADV</td>
+      <td><font size="2">Pairing</td>
+      <td><font size="2">Service Discovery</td>
+      <td><font size="2">Read & Encrypt</td>
+      <td><font size="2">Short Read & Write</td>
+      <td><font size="2">Long Read & Write</td>
+      <td><font size="2">Short Notify</td>
+      <td><font size="2">Connection Success Rate (10 times)</td>
+      <td><font size="2">Long Connection Stability</td>
+   </tr>
+   <tr>
+      <td rowspan="6"><font size="2">Samsung (三星)</td>
+      <td><font size="2">Galaxy S9</td>
+      <td><font size="2">Android 8.0.0</td>
+      <td><font size="2"><font size="2">LightBlue V1.1.3*</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">"LightBlue" here is the abbreviation of "<font size="2">LightBlue® Explorer"</td>
+   </tr>
+   <tr>
+      <td><font size="2">Galaxy Note 4 </td>
+      <td><font size="2">Android 6.0.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Galaxy S8+</td>
+      <td><font size="2">Android 8.0.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">S3 GT-I9300</td>
+      <td><font size="2">Android 4.3</td>
+      <td><font size="2">nRF Connect V4.10*</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Intallation of LightBlue failed, so nRF Connect was used alternatively.</td>
+   </tr>
+   <tr>
+      <td><font size="2">S4 GT-I9502</td>
+      <td><font size="2">Android 8.0.0</td>
+      <td><font size="2">nRF Connect V4.10*</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Intallation of LightBlue failed, so nRF Connect was used alternatively.</td>
+   </tr>
+   <tr>
+      <td><font size="2">S4 GT-I9500</td>
+      <td><font size="2">Android 4.3</td>
+      <td><font size="2">nRF Connect V4.10*</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Intallation of LightBlue failed, so nRF Connect was used alternatively.</td>
+   </tr>
+     <tr>
+      <td rowspan="7"><font size="2">Apple(苹果)</td>
+      <td><font size="2">iPhone 5S/A1518</td>
+      <td><font size="2">iOS 12.1</td>
+      <td><font size="2">LightBlue V2.7</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">iPhone X</td>
+      <td><font size="2">iOS 12.1</td>
+      <td><font size="2">LightBlue V2.7</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">iPhone SE</td>
+      <td><font size="2">iOS 10.2.1</td>
+      <td><font size="2">LightBlue V2.7</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">iPhone 6s Plus</td>
+      <td><font size="2">iOS 12.1</td>
+      <td><font size="2">LightBlue V2.7</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">iPhone 7</td>
+      <td><font size="2">iOS 12.0.1</td>
+      <td><font size="2">LightBlue V2.7</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">iPhone 6</td>
+      <td><font size="2">iOS 10.3.1</td>
+      <td><font size="2">LightBlue V2.7</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">iPod Touch</td>
+      <td><font size="2">iOS 12.0</td>
+      <td><font size="2">LightBlue V2.7</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td rowspan="6"><font size="2">HUAWEI(华为)</td>
+      <td><font size="2">Huawei nova 3e</td>
+      <td><font size="2">Android 8.0.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Huawei Honor Enjoy 7X</td>
+      <td><font size="2">Android 7.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Huawei Mate 10</td>
+      <td><font size="2">Android 8.0.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Huawei G9/P9 Lite</td>
+      <td><font size="2">Android 6.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Huawei nova</td>
+      <td><font size="2">Android 7.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Huawei Honor 4X</td>
+      <td><font size="2">Android 5.0.2</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Sometimes the app cannot break bluetooth connection, so you need to manually switch on and off the bluetooth.</td>
+   </tr>
+   <tr>
+      <td rowspan="2"><font size="2">OPPO(欧珀)</td>
+      <td><font size="2">OPPO A83</td>
+      <td><font size="2">Android 7.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">OPPO R9s</td>
+      <td><font size="2">Android 6.0.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td rowspan="5"><font size="2">Xiaomi(小米)</td>
+      <td><font size="2">Xiaomi Mi Max 2</td>
+      <td><font size="2">Android 7.1.1</td>
+      <td><font size="2"><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Xiaomi 5X</td>
+      <td><font size="2">Android 7.1.2</td>
+      <td><font size="2"><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Xiaomi Mi Note 2</td>
+      <td><font size="2">Android 7.0</td>
+      <td><font size="2"><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Xiaomi Redmi Note 4</td>
+      <td><font size="2">Android 6.0</td>
+      <td><font size="2"><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Xiaomi Mi 5</td>
+      <td><font size="2">Android 7.0</td>
+      <td><font size="2"><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td rowspan="2"><font size="2">vivo(步步高)</td>
+      <td><font size="2">vivo Y85</td>
+      <td><font size="2">Android 8.1.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">vivo X7</td>
+      <td><font size="2">Android 5.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td rowspan="2"><font size="2">Lenovo & Motoria (联想)</td>
+      <td><font size="2">Lenovo S5</td>
+      <td><font size="2">Android 8.0.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Lenovo K5</td>
+      <td><font size="2">Android 8.0.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td rowspan="1"><font size="2">ZTE & Nubia(中兴)</td>
+      <td><font size="2">Nubia Z17 Mini</td>
+      <td><font size="2">Android 6.0.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td rowspan="2"><font size="2">Gionee(金立)</td>
+      <td><font size="2">Gionee S11</td>
+      <td><font size="2">Android 7.11</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Gionee GN9004</td>
+      <td><font size="2">Android 4.3</td>
+      <td><font size="2">nRF Connect V4.10*</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Intallation of LightBlue failed, so nRF Connect was used alternatively.</td>
+   </tr>
+   <tr>
+      <td><font size="2">Google(谷歌)</td>
+      <td><font size="2">LG Nexus 4*</td>
+      <td><font size="2">Android 5.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">BLE scan performance of this phone is poor.</td>
+   </tr>
+   <tr>
+      <td><font size="2">Sony(索尼)</td>
+      <td><font size="2">Sony Xperia XZ</td>
+      <td><font size="2">Android 8.0.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">HTC(宏达电)</td>
+      <td><font size="2">HTC U11</td>
+      <td><font size="2">Android 7.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Essential</td>
+      <td><font size="2">Essential Phone</td>
+      <td><font size="2">Android 7.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td rowspan="2"><font size="2">Meizu(魅族)</td>
+      <td><font size="2">Meilan Note 3</td>
+      <td><font size="2">Android 5.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Meilan E</td>
+      <td><font size="2">Android 5.2.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Smartisan(锤子)</td>
+      <td><font size="2">Smartisan Nut Pro 2</td>
+      <td><font size="2">Android 7.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Sharp(夏普)</td>
+      <td><font size="2">Sharp AQUOS S3 mini </td>
+      <td><font size="2">Android 7.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Hisense(海信)</td>
+      <td><font size="2">HiSense Small Dolphin 2(海信小海豚 2)</td>
+      <td><font size="2">Android 7.1.2</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td rowspan="2"><font size="2">360(奇虎)</td>
+      <td><font size="2">360 N6 Lite</td>
+      <td><font size="2">Android 7.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">360 N5</td>
+      <td><font size="2">Android 6.0.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td rowspan="2"><font size="2">Xiaolajiao(小辣椒)</td>
+      <td><font size="2">Red Chilli 4A(红辣椒 4A)</td>
+      <td><font size="2">Android 3.2.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Red Chilli Enjoy 6A(红辣椒畅玩 6A)</td>
+      <td><font size="2">Android 5.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td rowspan="2"><font size="2"><font size="2">Letv(乐视)</td>
+      <td><font size="2">LeTV LeEcoo Le S3</td>
+      <td><font size="2">Android 6.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">LeTV LeEoo Le1 (X600)</td>
+      <td><font size="2">Android 5.0.2</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Coolpad(酷派)</td>
+      <td><font size="2">Coolpad Cool 1 dual</td>
+      <td><font size="2">Android 6.0.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Doov(朵唯)</td>
+      <td><font size="2">Doov A15S</td>
+      <td><font size="2">Android 5.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">AGM(艾捷莫)</td>
+      <td><font size="2">AGM X1</td>
+      <td><font size="2">Android 5.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">CMCC(中国移动)</td>
+      <td><font size="2">CMCC N3</td>
+      <td><font size="2">Android 7.1.2</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">Meitu(美图)</td>
+      <td><font size="2">Meitu M8s</td>
+      <td><font size="2">Android 7.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">K-Touch(天语)</td>
+      <td><font size="2">K-Touch X11</td>
+      <td><font size="2">Android 6.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">YEPEN(誉品)</td>
+      <td><font size="2">YEPEN I7S</td>
+      <td><font size="2">Android 6.0</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+      <td><font size="2">MOTO</td>
+      <td><font size="2">Z2 Paly</td>
+      <td><font size="2">Android 7.1.1</td>
+      <td><font size="2">LightBlue V1.1.3</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">Pass</td>
+      <td><font size="2">100%</td>
+      <td><font size="2">Pass</td>
+      <td></td>
+   </tr>
+   <tr>
+</table>