Using Zigbee with USB CDC ACM

I developed a small test app by adding logging and a blinking LED to the Console over CDC ACM UART Sample. The LED blinks, and I can see the logs by connecting to the USB CDC ACM. However, if I try enabling Zigbee support in the app, the USB CDC ACM no longer shows up on the host, and the LED does not light up. I am developing on nRF52840 Dongle, so I have limited debugging capabilities. What could be the cause of the app not starting at all when Zigbee is enabled?

main.c:

#include <zephyr.h>
#include <drivers/gpio.h>

#include <zephyr/kernel.h>
#include <zephyr/usb/usb_device.h>
#include <zephyr/drivers/uart.h>
#include <zephyr/logging/log.h>

/* This was added to enable Zigbee support. */
#include <zigbee/zigbee_app_utils.h>
/* ---------------------------------------- */


BUILD_ASSERT(DT_NODE_HAS_COMPAT(DT_CHOSEN(zephyr_console), zephyr_cdc_acm_uart),
	     "Console device is not ACM CDC UART device");

LOG_MODULE_REGISTER(app, LOG_LEVEL_INF);

/* The devicetree node identifier for the "led0" alias. */
#define LED0_NODE DT_ALIAS(led0)

static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);


/* This was added to enable Zigbee support. */
void zboss_signal_handler(zb_uint8_t param)
{
    zigbee_default_signal_handler(param);
    zb_buf_free(param);
}
/* ---------------------------------------- */


void main(void)
{
	int ret;

    LOG_INF("Starting Blinky");
	if (usb_enable(NULL)) {
		return;
	}
	if (!device_is_ready(led.port)) {
		return;
	}
	ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
	if (ret < 0) {
		return;
	}

    LOG_INF("Blinky started");

	while (1) {
		LOG_INF("Hello World! %s", CONFIG_ARCH);
        ret = gpio_pin_toggle_dt(&led);
		if (ret < 0) {
			return;
		}
		k_sleep(K_SECONDS(1));
	}
}

prj.conf:

CONFIG_GPIO=y

# Enable CDC ACM UART console
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_DEVICE_PRODUCT="Test"
CONFIG_SERIAL=y
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_UART_LINE_CTRL=y
CONFIG_LOG=y
CONFIG_LOG_BACKEND_UART=y

# Enable Zigbee
CONFIG_ZIGBEE=y
CONFIG_ZIGBEE_APP_UTILS=y
CONFIG_ZIGBEE_ROLE_END_DEVICE=y

nrf52840dongle_nrf52840.overlay:

/ {
	chosen {
		zephyr,entropy = &rng;
        zephyr,console = &cdc_acm_uart0;
	};
};

&zephyr_udc0 {
    cdc_acm_uart0: cdc_acm_uart0 {
        compatible = "zephyr,cdc-acm-uart";
        label = "CDC_ACM_0";
    };
};

Hardware: nRF52840 Dongle
Host OS: macOS 13.0
Toolchain: nRF Connect SDK v2.1.2

Parents Reply Children
No Data
Related