# DroneCAN Lights PX4 can control external LEDs on a connected DroneCAN peripheral using the standard DroneCAN [LightsCommand](https://dronecan.github.io/Specification/7._List_of_standard_data_types/#lightscommand) message. Up to 2 lights are supported. These can show [system status colours](../getting_started/led_meanings.md#ui-led), a fixed colour (used for indicating aircraft orientation), or switch between both depending on arm state. ## Supported Devices Any DroneCAN peripheral implementing the standard `LightsCommand` message type should work. The following have been tested: - **Vertiq ESC LED add-ons**: Each ESC exposes two light IDs — one RGB (for status) and one white. The `light_id` for each is calculated as `esc_index × 3 + BASE_ID`, where `BASE_ID` is 1 for RGB and 2 for white. See [Vertiq](../peripherals/vertiq.md) for other ESC setup details. ## PX4 Configuration 1. Set up DroneCAN as described in [DroneCAN](index.md) (`UAVCAN_ENABLE` ≥ 2). 2. Set [UAVCAN_LGT_NUM](../advanced_config/parameter_reference.md#UAVCAN_LGT_NUM) to the number of lights (1 or 2). Then reboot and reopen the ground station so that parameters for the new instances become visible. 3. Set the `light_id` and [light functions](#light_functions) of each light: - [UAVCAN_LGT_ID0](../advanced_config/parameter_reference.md#UAVCAN_LGT_ID0) / [UAVCAN_LGT_ID1](../advanced_config/parameter_reference.md#UAVCAN_LGT_ID1): Set to a `light_id` value (as defined by the specific product). - [UAVCAN_LGT_FN0](../advanced_config/parameter_reference.md#UAVCAN_LGT_FN0) / [UAVCAN_LGT_FN1](../advanced_config/parameter_reference.md#UAVCAN_LGT_FN1): Choose the desired [light function](#light_functions). 4. Set [UAVCAN_LGT_MODE](#UAVCAN_LGT_MODE) to control when fixed "orientation" colours activate. 5. Reboot for changes to take effect. ### Light Functions {#light_functions} The functions of enabled lights are configured using [UAVCAN_LGT_FN0](../advanced_config/parameter_reference.md#UAVCAN_LGT_FN0) and [UAVCAN_LGT_FN1](../advanced_config/parameter_reference.md#UAVCAN_LGT_FN1), respectively. Each function is represented by a value that defines two behaviours: one when the activation mode is **inactive** and one when it is **active**. | Value | Name | When mode inactive | When mode active | | ----- | ------------- | -------------------- | -------------------- | | 0 | Status/Status | System status colour | System status colour | | 1 | Off/White | Off | White | | 2 | Off/Red | Off | Red | | 3 | Off/Green | Off | Green | | 4 | Status/White | System status colour | White | | 5 | Status/Red | System status colour | Red | | 6 | Status/Green | System status colour | Green | | 7 | Status/Off | System status colour | Off | Notes: - The [system status colours](../getting_started/led_meanings.md#ui-led) is the same LED pattern used by the flight controller's onboard status LED (e.g. red when disarmed, green when armed and ready). - A fixed colour, commonly used to indicate aircraft orientation. For example it is a common convention to have a red light on the port side, green on starboard, or white to the rear. These colours do not change with flight controller state. - For _hybrid_ functions, such as `Status/Red`, the light shows the Status colour while the activation mode is inactive, then switches to the "fixed" light colour once the mode becomes active. ### Activation Mode (`UAVCAN_LGT_MODE`) {#UAVCAN_LGT_MODE} The activation mode parameter ([UAVCAN_LGT_MODE](#UAVCAN_LGT_MODE)) controls when each light switches from its _inactive_ to its _active_ behaviour (configured with the [Light function](#light_functions)): | Value | Meaning | | ----- | -------------------------------------------------------- | | 0 | Always inactive (lights always show the inactive column) | | 1 | Active when armed (default) | | 2 | Active when prearmed or armed | | 3 | Always active (lights always show the active column) |