This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

pc-ble-driver communication issues

Hi

We are using PCA10040 together with the ble connectivity firmware, pc-ble-driver and pc-ble-driver-py as a part of our automated test system. Eight dev boards are connected via USB to a Linux PC running Ubuntu 16.04.

We have found some issues that we have been able to solve (for example having multiple devices running at the same time). However, we experience communication problems quite often. I have enable the printouts in BLEDriver.status_handler and BLEDriver.log_message_handler and even though the situations differ some, this is quite typical:

 412/ 0 <-  [02 11 00 00 00 13 ]
               type:     VENDOR_SPECIFIC reliable:yes seq#:2 ack#:3 payload_length:6 data_integrity:1 header_checksum:b8 err_code:0
     415 ->  []
               type:                 ACK reliable: no seq#:0 ack#:3 payload_length:0 data_integrity:0 err_code:0
     142 ->  [00 74 ]
               type:     VENDOR_SPECIFIC reliable:yes seq#:3 ack#:2 payload_length:2 data_integrity:1 header_checksum:ff err_code:0
  139/ 0 <-  []
               type:                 ACK reliable: no seq#:0 ack#:4 payload_length:0 data_integrity:0 err_code:0
  140/ 0 <-  [01 74 08 00 00 00 ]
               type:     VENDOR_SPECIFIC reliable:yes seq#:3 ack#:4 payload_length:6 data_integrity:1 header_checksum:af err_code:0
     143 ->  []
               type:                 ACK reliable: no seq#:0 ack#:2 payload_length:0 data_integrity:0 err_code:0
Failed to receive response for command
Error sending packet to target. Code #3
NordicSemiException: 3 (NRF_ERROR_INTERNAL)
Process Process-9:
Traceback (most recent call last):
  File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "api/ble_test_dev.py", line 383, in DriverProc
    rsp = f(driver, state, *args)
  File "api/ble_test_dev.py", line 447, in _stop_advertising
    driver.ble_gap_adv_stop()
  File "/usr/local/lib/python2.7/dist-packages/pc_ble_driver_py/ble_driver.py", line 126, in wrapper
    raise NordicSemiException('Failed to {}. Error code: {}'.format(wrapped.__name__, err_code))
NordicSemiException: Failed to ble_gap_adv_stop. Error code: 3

We have disabled MSD on the PCA10040 but without any real impact on our stability issues.

Have you seen these problems before? Are there any workarounds?

Here are some version info:

PCA10040 version: v1.2.1
# nrfjprog -v
nrfjprog version: 9.7.1
JLinkARM.dll version: 6.16f

# pip show pc_ble_driver_py
Name: pc-ble-driver-py
Version: 0.11.3
Summary: Python bindings for the Nordic pc-ble-driver SoftDevice serialization library
Home-page: github.com/.../pc-ble-driver-py
Author: Nordic Semiconductor ASA
Author-email: UNKNOWN
License: Modified BSD License
Location: /usr/local/lib/python2.7/dist-packages
Requires: future, wrapt, enum34

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:         16.04
Codename:     xenial

# uname -a
Linux awb2-tester 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  • Hi,

    There are some known issues with the version of pc-ble-driver used for the current version of pc-ble-driver-py, which have been fixed in the latest version of pc-ble-driver. You have two options to fix this:

    1. Wait for us to update the version of pc-ble-driver-py to the latest version of pc-ble-driver. This might take some time, but hopefully we will release a new version soon.
    2. Update the submodule-references to pc-ble-driver and the nex connectivity hex-files in pc-ble-driver-py to the latest version. This pull request might provide some help on how to achieve this.

    Best regards,

    Jørgen

Related