KCONFIG unable to select softdevice LL controller

I'm working in an workspace application.  The application was forked from the example application at version 2.5.2 and later updated to 2.7.  I've been developing for several months creating our custom boards,  converting custom drivers from our NRF SDK codebase, etc

We have custom boards with nrf52832 and nrf52840.  

I'm recently started working on implementing the custom bluetooth interface.  The existing BLE interface adjusts the MTUs, connection interval, PHY, etc to achieve very fast data transfer.  I'm trying to customize the zephyr bluetooth stack.  It seems my best option is to use the softdevice LL controller.  

Now the problem.  I'm unable to select kconfig settings from the nrf repository.  In the kconfig gui, when I go to the LL controller choice:

I was eventually able to search and find an option related to the softdevice but it indicates I don't have the necessary dependencies.  Specifically even though I'm using an nrf52840 it doesn't have SOC_SERIES_NRF52X

My custom board has this in the dts:

/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include "thomas_b-pinctrl.dtsi"
#include "common_nrf52840_flash_partitions.dtsi"

/ {
model = "Thomas B Training Goggle";
compatible = "ciye,board-thomas-b", "nordic,nrf52840-qiaa", "ciye,board"

And also in the board.yml i have

board:
name: thomas_b
vendor: ciye
socs:
- name: nrf52840

What am I missing?

Parents
  • Hi,

    The first screenshot shows that you are trying to use the SoftDevice BT controller (BT_LL_SW_SPLIT - "Software-based BLE Link Layer [EXPERIMENTAL]"). This is not the same as the SoftDevice controller, and not recommended nor supported. 

    Specifically even though I'm using an nrf52840 it doesn't have SOC_SERIES_NRF52X

    If you have properly speciifed your board and that it is a nRF5 device, the SoftDevice Controller should be used automatically, so I wonder if the issue is with your board definition? This specific config is selected if you also have SOC_NRF52840, which you should have. So I suggest looking at you board files first. (You may also find information about custom board in the documentation here and here in the Developer academy).

    Regarding Kconfig the tools do not fully support nRF Connect SDK 2.7.0 yet, particularily not if using sysbuild. But this is being worked on.

  • NOTE: I'm not using sysbuild.

    Then this seems to be the main issue, since the build/zephyr/.config shows that I am in fact using the softdevice but the nrf kconfig gui indicates I am not. 

    Here is the zephyr/.config output:

    $ grep CONFIG_BT .config | grep -v "is not set" | grep -v "LOG"
    CONFIG_BT_HCI_VS=y
    CONFIG_BT_CTLR=y
    CONFIG_BT_USER_PHY_UPDATE=y
    CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=43
    CONFIG_BT_FLIPPER_DIS=y
    CONFIG_BT_FLIPPER_DIS_MODEL="Speedo Train Goggle"
    CONFIG_BT_FLIPPER_DIS_MANUF="CIYE"
    CONFIG_BT_FLIPPER_DIS_SERIAL_NUMBER=y
    CONFIG_BT_FLIPPER_DIS_FW_REV=y
    CONFIG_BT_FLIPPER_DIS_HW_REV=y
    CONFIG_BT_FDS=y
    CONFIG_BT_FLIPPER_BLE=y
    CONFIG_BT_BUF_CMD_TX_COUNT=2
    CONFIG_BT_L2CAP_TX_MTU=498
    CONFIG_BT_BUF_ACL_TX_SIZE=502
    CONFIG_BT_BUF_ACL_RX_SIZE=502
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
    CONFIG_BT_COMPANY_ID_NORDIC=0x0059
    CONFIG_BT_COMPANY_ID=0x0059
    CONFIG_BT_MAX_CONN=1
    CONFIG_BT_LL_SOFTDEVICE_HEADERS_INCLUDE=y
    CONFIG_BT_LL_SOFTDEVICE=y
    CONFIG_BT_LL_SOFTDEVICE_BUILD_TYPE_LIB=y
    CONFIG_BT_HCI_TX_STACK_SIZE=1536
    CONFIG_BT_RX_STACK_SIZE=1536
    CONFIG_BT_CTLR_SDC_PERIPHERAL_COUNT=1
    CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT=4000000
    CONFIG_BT_CTLR_SDC_CONN_EVENT_EXTEND_DEFAULT=y
    CONFIG_BT_CTLR_SDC_CENTRAL_ACL_EVENT_SPACING_DEFAULT=4000000
    CONFIG_BT_CTLR_SDC_PERIODIC_ADV_EVENT_LEN_DEFAULT=7500
    CONFIG_BT_CTLR_SDC_TX_PACKET_COUNT=3
    CONFIG_BT_CTLR_SDC_RX_PACKET_COUNT=2
    CONFIG_BT_CTLR_SDC_SCAN_BUFFER_COUNT=3
    CONFIG_BT_CTLR_SDC_PERIODIC_SYNC_BUFFER_COUNT=3
    CONFIG_BT_CTLR_SDC_RX_PRIO=6
    CONFIG_BT_LL_SOFTDEVICE_MULTIROLE=y
    CONFIG_BT_CTLR_FAL_SIZE=8
    CONFIG_BT_CTLR_ECDH_LIB_OBERON=y
    CONFIG_BT_CTLR_ECDH_STACK_SIZE=900
    CONFIG_BT_CTLR_SDC_BIG_RESERVED_TIME_US=1600
    CONFIG_BT_CTLR_SDC_CIG_RESERVED_TIME_US=1300
    CONFIG_BT_CTLR_SDC_CIS_SUBEVENT_LENGTH_US=0
    CONFIG_BT_GATT_AUTO_SEC_REQ=y
    CONFIG_BT_DRIVERS=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_BROADCASTER=y
    CONFIG_BT_CONN=y
    CONFIG_BT_PHY_UPDATE=y
    CONFIG_BT_DATA_LEN_UPDATE=y
    CONFIG_BT_BAS=y
    CONFIG_BT_BUF_ACL_TX_COUNT=10
    CONFIG_BT_BUF_ACL_RX_COUNT=6
    CONFIG_BT_BUF_EVT_RX_SIZE=68
    CONFIG_BT_BUF_EVT_RX_COUNT=10
    CONFIG_BT_BUF_EVT_DISCARDABLE_COUNT=3
    CONFIG_BT_BUF_CMD_TX_SIZE=65
    CONFIG_BT_HAS_HCI_VS=y
    CONFIG_BT_RPA=y
    CONFIG_BT_ASSERT=y
    CONFIG_BT_ASSERT_VERBOSE=y
    CONFIG_BT_DEBUG_NONE=y
    CONFIG_BT_LONG_WQ=y
    CONFIG_BT_LONG_WQ_STACK_SIZE=1300
    CONFIG_BT_LONG_WQ_PRIO=10
    CONFIG_BT_LONG_WQ_INIT_PRIO=50
    CONFIG_BT_HCI_HOST=y
    CONFIG_BT_HCI_TX_PRIO=7
    CONFIG_BT_RECV_WORKQ_BT=y
    CONFIG_BT_RX_PRIO=8
    CONFIG_BT_DRIVER_RX_HIGH_PRIO=6
    CONFIG_BT_LIM_ADV_TIMEOUT=30
    CONFIG_BT_CONN_TX_USER_DATA_SIZE=16
    CONFIG_BT_CONN_FRAG_COUNT=1
    CONFIG_BT_CONN_TX_MAX=10
    CONFIG_BT_USER_DATA_LEN_UPDATE=y
    CONFIG_BT_SMP=y
    CONFIG_BT_BONDABLE=y
    CONFIG_BT_SMP_ENFORCE_MITM=y
    CONFIG_BT_SMP_MIN_ENC_KEY_SIZE=7
    CONFIG_BT_L2CAP_TX_BUF_COUNT=10
    CONFIG_BT_L2CAP_TX_FRAG_COUNT=2
    CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y
    CONFIG_BT_ATT_TX_COUNT=10
    CONFIG_BT_ATT_PREPARE_COUNT=2
    CONFIG_BT_ATT_RETRY_ON_SEC_ERR=y
    CONFIG_BT_GATT_SERVICE_CHANGED=y
    CONFIG_BT_GATT_CACHING=y
    CONFIG_BT_GATT_ENFORCE_SUBSCRIPTION=y
    CONFIG_BT_GATT_READ_MULTIPLE=y
    CONFIG_BT_GATT_READ_MULT_VAR_LEN=y
    CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=y
    CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS=y
    CONFIG_BT_PERIPHERAL_PREF_MIN_INT=12
    CONFIG_BT_PERIPHERAL_PREF_MAX_INT=12
    CONFIG_BT_PERIPHERAL_PREF_LATENCY=0
    CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=200
    CONFIG_BT_DEVICE_NAME_GATT_WRITABLE=y
    CONFIG_BT_MAX_PAIRED=1
    CONFIG_BT_CREATE_CONN_TIMEOUT=3
    CONFIG_BT_CONN_PARAM_UPDATE_TIMEOUT=500
    CONFIG_BT_CONN_PARAM_RETRY_COUNT=3
    CONFIG_BT_CONN_PARAM_RETRY_TIMEOUT=1000
    CONFIG_BT_DEVICE_NAME_DYNAMIC=y
    CONFIG_BT_DEVICE_NAME_MAX=28
    CONFIG_BT_DEVICE_NAME="Zephyr"
    CONFIG_BT_DEVICE_APPEARANCE=0
    CONFIG_BT_ID_MAX=1
    CONFIG_BT_ECC=y
    CONFIG_BT_CRYPTO=y
    CONFIG_BT_HCI_INIT_PRIORITY=50
    CONFIG_BT_DRV_TX_STACK_SIZE=256
    CONFIG_BT_DRV_RX_STACK_SIZE=256
    CONFIG_BT=y
    CONFIG_BT_HCI=y
    CONFIG_BT_CONN_TX=y
    CONFIG_BT_CTLR_LE_ENC_SUPPORT=y
    CONFIG_BT_CTLR_EXT_REJ_IND_SUPPORT=y
    CONFIG_BT_CTLR_DATA_LEN_UPDATE_SUPPORT=y
    CONFIG_BT_CTLR_PRIVACY_SUPPORT=y
    CONFIG_BT_CTLR_EXT_SCAN_FP_SUPPORT=y
    CONFIG_BT_CTLR_PHY_UPDATE_SUPPORT=y
    CONFIG_BT_CTLR_PHY_2M_SUPPORT=y
    CONFIG_BT_CTLR_PHY_CODED_SUPPORT=y
    CONFIG_BT_CTLR_ADV_EXT_SUPPORT=y
    CONFIG_BT_CTLR_ADV_PERIODIC_SUPPORT=y
    CONFIG_BT_CTLR_ADV_PERIODIC_RSP_SUPPORT=y
    CONFIG_BT_CTLR_SYNC_PERIODIC_SUPPORT=y
    CONFIG_BT_CTLR_SYNC_PERIODIC_RSP_SUPPORT=y
    CONFIG_BT_CTLR_SYNC_TRANSFER_SENDER_SUPPORT=y
    CONFIG_BT_CTLR_SYNC_TRANSFER_RECEIVER_SUPPORT=y
    CONFIG_BT_CTLR_ADV_ISO_SUPPORT=y
    CONFIG_BT_CTLR_SYNC_ISO_SUPPORT=y
    CONFIG_BT_CTLR_CENTRAL_ISO_SUPPORT=y
    CONFIG_BT_CTLR_PERIPHERAL_ISO_SUPPORT=y
    CONFIG_BT_CTLR_CHAN_SEL_2_SUPPORT=y
    CONFIG_BT_CTLR_SCA_UPDATE_SUPPORT=y
    CONFIG_BT_CTLR_CONN_RSSI_SUPPORT=y
    CONFIG_BT_CTLR_ECDH_SUPPORT=y
    CONFIG_BT_CTLR_LE_POWER_CONTROL_SUPPORT=y
    CONFIG_BT_CTLR_LE_PATH_LOSS_MONITORING_SUPPORT=y
    CONFIG_BT_CTLR_SUBRATING_SUPPORT=y
    CONFIG_BT_CTLR_HCI=y
    CONFIG_BT_CTLR_CRYPTO=y
    CONFIG_BT_CTLR_HCI_VS_BUILD_INFO=""
    CONFIG_BT_CTLR_TX_PWR_0=y
    CONFIG_BT_CTLR_TX_PWR_DBM=0
    CONFIG_BT_CTLR_TX_PWR_ANTENNA=0
    CONFIG_BT_CTLR_LE_ENC=y
    CONFIG_BT_CTLR_ECDH=y
    CONFIG_BT_CTLR_EXT_REJ_IND=y
    CONFIG_BT_CTLR_LE_PING=y
    CONFIG_BT_CTLR_DATA_LENGTH=y
    CONFIG_BT_CTLR_PHY=y
    CONFIG_BT_CTLR_PRIVACY=y
    CONFIG_BT_CTLR_RL_SIZE=8
    CONFIG_BT_CTLR_PHY_2M=y
    CONFIG_BT_CTLR_PHY_CODED=y
    CONFIG_BT_CTLR_CHAN_SEL_2=y
    

    Further the Problems tab shows the same incorrect info as nrf Kconfig GUI, indicating various errors that didn't actually occur during the build. 

    Is there an alternative to nrf kconfig gui that would give valid feedback so I don't waste my dev time chasing imaginary problems?

    Also how do I change/fix the provider of the prj.conf to the problems tab in visual studio code?

    I'm really missing SES these days, it didn't have all these fancy features, but it never lied.

    My last merge from upstread was in June, is it possible some of these issues would be improved if I update to more recent nrf connect sdk?

    Another consideration,  I'm using toolchain 2.6.1, perhaps I should update it?

  • Hi,

    The short .config here is what I would expect if using sysbuild. Are you sure you are not using it? (It is default for nRF Connect SDK projects starting with 2.7.0, which was tagged in the end of June, so that should be close to what you have). If using sysbuild, the full .config is located deeper down, specifically <build_folder>/<project_name>/zephyr/.config. And this is not fully supported by the VS Code plugins yet.

    Anthony Ambuehl said:

    Is there an alternative to nrf kconfig gui that would give valid feedback so I don't waste my dev time chasing imaginary problems?

    I recommend you check the files with an editor instead of using the Kconfig GUI for now. That will not show you the dependencies directly, but you can easily see which configs are enabled or not.

    Anthony Ambuehl said:
    Also how do I change/fix the provider of the prj.conf to the problems tab in visual studio code?

    We are workign on updating this but I do not believe there is a simple workaround you can do on your end. That said, the problems tab can generally be ignored except for when looking into VS code issues, as the build output in the terminal tab will show you any warning or errors related to the actual build.

    Anthony Ambuehl said:
    My last merge from upstread was in June, is it possible some of these issues would be improved if I update to more recent nrf connect sdk?

    I do not expect so, as this is mostly that our VS Code plugins does not fully support 2.7.0 yet where there were some major diferences, includign introduction of sysbuild and a new hardware model (teh latter not diretly related in this specific case).

    Anthony Ambuehl said:
    Another consideration,  I'm using toolchain 2.6.1, perhaps I should update it?

    Yes, I would use the 2.7.0 toolchain, though I don't expect it would make a difference here.

  • Regarding the short .config... if you noticed the first line... I'm using grep to filter for specific Bluetooth lines.

    I don't have a <project_name> subfolder, i'm not even sure what my project name would be.  I started the project from 2.6, and I don't think the merge step introduced sys build.  At some point I guess I will need a Primer on how to add sys build.  For now considering the lagging tools I think its better to work without sysbuild.

    I noticed the kconfig gui had an update release in September and appears to be on a 6-7 month cycle, so I imagine this will be broken for the entirety of my development time on this project.  

    I did switch to 2.7.0 toolchain which fixed some issues with tooltips but the kconfig gui is still incorrect

Reply
  • Regarding the short .config... if you noticed the first line... I'm using grep to filter for specific Bluetooth lines.

    I don't have a <project_name> subfolder, i'm not even sure what my project name would be.  I started the project from 2.6, and I don't think the merge step introduced sys build.  At some point I guess I will need a Primer on how to add sys build.  For now considering the lagging tools I think its better to work without sysbuild.

    I noticed the kconfig gui had an update release in September and appears to be on a 6-7 month cycle, so I imagine this will be broken for the entirety of my development time on this project.  

    I did switch to 2.7.0 toolchain which fixed some issues with tooltips but the kconfig gui is still incorrect

Children
Related