Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

USB HID Report Descriptor limit

After switching to SDK 15 from SDK 14, stopped working correctly transmission of HID Report Descriptor over USB, what in case leads to incorrect device enumeration.

Now for some reason in file "app_usbd_hid.c" function "setup_req_std_in" fails assert "ASSERT(report_size <= max_size);" as max_size defined as "#define NRF_DRV_USBD_EPSIZE 64"

So now max report descriptor size is limited to 64 bytes. Is there a way to overcome it?

(NRF52840)

Parents
  • I could be wrong but in the USBD description in section 6.35 at the top of page 480 in the nrf52840 Product Specification v1.0 it says

    "64 bytes buffer size for each bulk/interrupt endpoint"

    I don't believe you are able to send more than 64 bytes per endpoint transaction unless you used an ISO endpoint in which case right below the bulk/interrupt description is "Up to 1023 bytes buffer size for ISO endpoints".

  • Yes, but descriptors bigger then 64 bytes are transferd by multiple transactions. For instance Configuration Descriptor in 90% cases are bigger then 64 bytes, as they describe all device interfaces. And it is transferred correctly, but with HID Report  Descriptor for some reason it is not implemented. Furthermore in SDK 14 there was no problem with it.

Reply Children
No Data
Related