Xenon and Argon as HID over USB?


Hi, can I configure Xenon and Argon as HID over USB devices?


Currently this is not supported.
But in the past Photon/Electron originally came without HID support but due to public demand it got added and since a lot of the basic work has been done for that back then extending support for nRF shouldn’t be impossible, but priorty is currently low.


Okay, thanks for the quick reply. So for now I would have to use an additional feather for the HID over USB support, right?

How can the priority for this feature be pushed up?


At the moment there are many, many topics that need to be addressed first without discussion.
But to keep the feature on the radar you can file a GitHub issue at

or if one already exists comment on it and give it a :+1:


Okay, as I could not find an issue on Github on this matter, I opened a new:

So please give it a :+1:


I thought it was worth it to check in on this request - I replied on the Github issue:

I’m also interested in USB HID for the Gen3 devices. Adafruit is currently working on their Adafruit_TinyUSB_Arduino library, which I’ve tested on their Feather nRF52840 Express, and it seems to work well. Hopefully this might give the Particle team a head start.

To follow up here, I’d also be interested in adding BLE HID to the stack, now that the (much appreciated!) BLE support has been rolled out. Again, Adafruit has firmware for the nRF52840 that supports this in their Bluefruit52Lib library.

This would be very useful for me, as having access to basic HID support (over either USB or BLE) is great for early-stage prototyping efforts for Interaction Designers. Keyboard emulation, in particular, is an excellent way to get a basic interaction working that can quickly migrate from a serial monitor, to a web browser, to a Processing sketch, to a Hololens (or many other paths). I currently have a Feather nRF52840 Express connected over I2C to my Argon to support this - it works, but it’s quite redundant.

Thanks for the support, and for considering these feature requests!


Hi @jameshallam, have you pursued the BLE HID route any more? I have been working on implementing the same thing, and based on how the hid_keyboard.ino example is implemented, it seems to me that this should already be possible with the exposed BLE API’s on gen3 devices.

Reading through the HID over GATT Profile spec, getting HID over BLE seems like a matter of just adding the HID BLE service (0x1812) along with battery and device info services, and then adding the appropriate BLE characteristics. I will probably make a dedicated post about HID over BLE later today and would be happy to discuss if this is still something you’re interested in working on.


Hi @addisonwk - thanks for following up! I haven’t pursued the BLE HID topic recently, but I’ve read through your post, and I’ll be curious to see if Particle or the community have any advice. Thanks for taking a loot at it!