The BusyLight for Humans™ project provides a common interface to several types of USB connected LED lights from multiple vendors. This would not be possible without the hard work and generosity of these excellent projects:
The general use case for most these products is integration with a communication application via a plugin of some sort: Skype, Teams, Jabber, and Zoom being common. Those plugins detect when a user is communicating and changes the color of the light to signal they are busy. The general capabilities of the presence lights tend to be similar: turn on with a color, and turn off.
After that, the capabilities of lights begin to diverge. Several lights can also blink between alternate colors or play a tune from a selection stored in firmware. Some lights are "write-only" and others provide introspection into the current state of the device. Most devices can maintain their current state without further software intervention, while some require presistent software intervention to operate. Unsurprisingly, there are many different approaches to a very simple concept.
The following is a technical review of each family of USB-connected lights; their capabilties, and difficulties encountered while adding support for them. These devices are accessible via the USB Human Interface Device (HID) application programming interface (API) or via a more traditional USB serial interface.