<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Can CAF/AEM handle 8 kHz USB HID on nRF54LM20A</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/129092/can-caf-aem-handle-8-khz-usb-hid-on-nrf54lm20a</link><description>Hi 
 I&amp;#39;m building firmware for the nRF54LM20A running USB HID + ESB at 8 kHz. Currently I am referring to the nRF Desktop ( nrf_desktop ) sample as a reference. But there are a few doubts that I would like to confirm. 
 
 For this workload, would you</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 04 Sep 2026 11:02:39 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/129092/can-caf-aem-handle-8-khz-usb-hid-on-nrf54lm20a" /><item><title>RE: Can CAF/AEM handle 8 kHz USB HID on nRF54LM20A</title><link>https://devzone.nordicsemi.com/thread/570928?ContentTypeID=1</link><pubDate>Fri, 04 Sep 2026 11:02:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5c3d8b1a-6581-42f1-883b-08bc8f945719</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;nrf_desktop can achieve 8kHZ USB HID with everything on CAF/AEM. However (at least for now) there are no ESB support added to this reference sample so you would have to add this yourself. The config suspends Bluetooth while USB is connected to hold the report rate, which suggests the CPU headroom for a concurrent radio protocol at 8 kHz is thin.&lt;br /&gt;&lt;br /&gt;ESB can achieve 8khz as well, but I&amp;#39;m a bit uncertain of the level of support in the SDK as of this point in time. I do know that it is possible to implement however.&amp;nbsp;Do note that you will not be able to do acked ESB messages at 8k. If that is a requirement then 4kHz is the highest you can go. 8 kHz ESB is only reachable in one configuration (4 Mbps, unacknowledged, plain mode). If you need acknowledged delivery, the radio side caps out around 4 to 6 kHz and the architecture question becomes secondary to that. The reason is simply how fast the clock frequency can go vs how often you need to finish a TX.&lt;/p&gt;
&lt;p&gt;The biggest constraint here is the CPU budget. You will most likely not be able to fit both USB and ESB coms simultaneously, but running each individually should work.&lt;/p&gt;
&lt;p&gt;Leave ESB&amp;#39;s radio and timer handlers inside the library&amp;#39;s ISR. The one place to deviate is the handoff out of the ESB event callback: write into a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;k_msgq&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;or a ring buffer there and let a HID provider module pull from it when AEM asks for a report, rather than submitting an AEM event from the ESB callback.&lt;/p&gt;
[quote user=""]Can CAF/AEM&amp;#39;s event dispatch keep up with an 8 kHz polling rate without adding delay or jitter, or is it only proven at lower rates?[/quote]
&lt;p&gt;&lt;span&gt;There&amp;#39;s no published numbers for this but as I read the sample CAF/AEM in the nrf_desktop reference should be able to keep up with 8kHz polling rate. In the reference, each poll produces a&amp;nbsp;&lt;/span&gt;&lt;code&gt;hid_report_sent_event&lt;/code&gt;&lt;span&gt;, which triggers the sample, which produces a&amp;nbsp;&lt;/span&gt;&lt;code&gt;hid_report_event&lt;/code&gt;&lt;span&gt;. That&amp;#39;s two dispatches plus two&amp;nbsp;&lt;/span&gt;&lt;code&gt;k_malloc&lt;/code&gt;&lt;span&gt;/&lt;/span&gt;&lt;code&gt;k_free&lt;/code&gt;&lt;span&gt;&amp;nbsp;pairs per 125 µs slot.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;And routing ESB traffic through AEM as well would roughly double the event rate, for which there&amp;#39;s no data at all.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Kind regards,&lt;br /&gt;Andreas&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>