Peripheral_LBS example works on a BMD-300 DK but not on a custom board with BMD-300

I am trying to program a custom board with a BMD-300 (nRF52832) chip. I'm using the Peripheral_LBS example found here:

developer.nordicsemi.com/.../README.html

When I program this example to the BMD-300 development kit, everything works as expected. The device advertises as Nordic_LBS.

But, when I program to this custom board, nothing is advertised. When I read the memory in nRF Connect for Desktop, it looks identical to the development kit.

Before I program the BMD-300, it advertises as a RigCom device, which I would expect. I think this narrows down the problem to something firmware related, or possibly with the SoftDevice. But, the same hex file works on my BMD-300 DK and my nRF52 DK, so I've hit a wall.

I'm not sure if it matters, but when I read the memory of the custom device with nRF Connect for Desktop before programming, it shows a SoftDevice in a purple block. After programming, it doesn't show a SoftDevice block. But, this same behavior occurs when I program the BMD-300 DK and nRF52 DK with the same firmware and they're able to advertise without issue.

The firmware that came with the device shows this information when read with nRF Connect for Desktop:

Device family NRF52_FAMILY
Device version NRF52832_xxAA_REV2
Board version PCA10040
SoftDevice detected, id 0x91 (S132 v3.1.0)

I am using Zephyr 3.1.99 and west 0.14.0.

Any help you could provide would be greatly appreciated.

Thank you.

Parents
  • One update: adding the following two lines to the prj.conf solved the issue for the example:

    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=n

    But, adding these two lines to my project didn't work. Can someone shine light on what's happening here?

    Here is the prj.conf for the sample project, which advertises properly (but didn't before adding the above two lines)

    CONFIG_NCS_SAMPLES_DEFAULTS=y
    
    CONFIG_BT=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_DEVICE_NAME="Nordic_LBS"
    
    # Enable the LBS service
    CONFIG_BT_LBS=y
    CONFIG_BT_LBS_POLL_BUTTON=y
    CONFIG_DK_LIBRARY=y
    
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048
    
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=n

    And here's the prj.conf for my project, which doesn't advertise, even with the two new lines:

    # Bluetooth
    CONFIG_BT=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_DEVICE_NAME="REDACTED"
    CONFIG_BT_DEVICE_APPEARANCE=0
    CONFIG_BT_MAX_CONN=1
    CONFIG_BT_LL_SOFTDEVICE=y
    
    CONFIG_GPIO=y
    CONFIG_DK_LIBRARY=y
    
    # Logging
    CONFIG_LOG=y
    CONFIG_LOG_BACKEND_RTT=n
    CONFIG_LOG_BACKEND_UART=y
    CONFIG_LOG_DEFAULT_LEVEL=4
    
    CONFIG_ASSERT=y
    
    # DFU
    CONFIG_MCUMGR=y
    CONFIG_MCUMGR_CMD_IMG_MGMT=y
    CONFIG_MCUMGR_CMD_OS_MGMT=y
    CONFIG_BOOTLOADER_MCUBOOT=y
    CONFIG_BT_L2CAP_TX_MTU=252
    CONFIG_BT_BUF_ACL_RX_SIZE=256
    CONFIG_MCUMGR_SMP_BT=y
    CONFIG_MCUMGR_SMP_BT_AUTHEN=n
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
    
    CONFIG_INIT_STACKS=y
    CONFIG_THREAD_STACK_INFO=y
    CONFIG_MAIN_STACK_SIZE=2048
    CONFIG_BT_RX_STACK_SIZE=4096
    
    CONFIG_ADC=y
    CONFIG_ADC_NRFX_SAADC=y
    
    CONFIG_BT_PERIPHERAL_PREF_MIN_INT=10
    CONFIG_BT_PERIPHERAL_PREF_MAX_INT=20
    
    # CONFIG_STDOUT_CONSOLE=y
    CONFIG_I2C=y
    CONFIG_SENSOR=y
    CONFIG_BMI270=y
    
    # Storage
    CONFIG_FLASH=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    CONFIG_NVS=y
    CONFIG_NVS_LOG_LEVEL_DBG=y
    CONFIG_REBOOT=y
    CONFIG_MPU_ALLOW_FLASH_WRITE=y
    
    CONFIG_NEWLIB_LIBC=y
    
    CONFIG_CBPRINTF_FP_SUPPORT=y
    CONFIG_PRINTK=y
    
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=n

Reply
  • One update: adding the following two lines to the prj.conf solved the issue for the example:

    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=n

    But, adding these two lines to my project didn't work. Can someone shine light on what's happening here?

    Here is the prj.conf for the sample project, which advertises properly (but didn't before adding the above two lines)

    CONFIG_NCS_SAMPLES_DEFAULTS=y
    
    CONFIG_BT=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_DEVICE_NAME="Nordic_LBS"
    
    # Enable the LBS service
    CONFIG_BT_LBS=y
    CONFIG_BT_LBS_POLL_BUTTON=y
    CONFIG_DK_LIBRARY=y
    
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048
    
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=n

    And here's the prj.conf for my project, which doesn't advertise, even with the two new lines:

    # Bluetooth
    CONFIG_BT=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_DEVICE_NAME="REDACTED"
    CONFIG_BT_DEVICE_APPEARANCE=0
    CONFIG_BT_MAX_CONN=1
    CONFIG_BT_LL_SOFTDEVICE=y
    
    CONFIG_GPIO=y
    CONFIG_DK_LIBRARY=y
    
    # Logging
    CONFIG_LOG=y
    CONFIG_LOG_BACKEND_RTT=n
    CONFIG_LOG_BACKEND_UART=y
    CONFIG_LOG_DEFAULT_LEVEL=4
    
    CONFIG_ASSERT=y
    
    # DFU
    CONFIG_MCUMGR=y
    CONFIG_MCUMGR_CMD_IMG_MGMT=y
    CONFIG_MCUMGR_CMD_OS_MGMT=y
    CONFIG_BOOTLOADER_MCUBOOT=y
    CONFIG_BT_L2CAP_TX_MTU=252
    CONFIG_BT_BUF_ACL_RX_SIZE=256
    CONFIG_MCUMGR_SMP_BT=y
    CONFIG_MCUMGR_SMP_BT_AUTHEN=n
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
    
    CONFIG_INIT_STACKS=y
    CONFIG_THREAD_STACK_INFO=y
    CONFIG_MAIN_STACK_SIZE=2048
    CONFIG_BT_RX_STACK_SIZE=4096
    
    CONFIG_ADC=y
    CONFIG_ADC_NRFX_SAADC=y
    
    CONFIG_BT_PERIPHERAL_PREF_MIN_INT=10
    CONFIG_BT_PERIPHERAL_PREF_MAX_INT=20
    
    # CONFIG_STDOUT_CONSOLE=y
    CONFIG_I2C=y
    CONFIG_SENSOR=y
    CONFIG_BMI270=y
    
    # Storage
    CONFIG_FLASH=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    CONFIG_NVS=y
    CONFIG_NVS_LOG_LEVEL_DBG=y
    CONFIG_REBOOT=y
    CONFIG_MPU_ALLOW_FLASH_WRITE=y
    
    CONFIG_NEWLIB_LIBC=y
    
    CONFIG_CBPRINTF_FP_SUPPORT=y
    CONFIG_PRINTK=y
    
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=n

Children
Related