NeoPixel Output Not Working When CAN Port Is Enabled
I’m trying to use NeoPixel LEDs directly from a Pixhawk (ArduPilot firmware) for a light show, but I’ve run into a conflict with the CAN interface.
Setup
- Pixhawk running ArduPilot
- NeoPixel LEDs connected to an AUX output (e.g., AUX3/AUX5)
- GPS module connected via UAVCAN
Behavior
- If I disable CAN P1/P2 drivers in parameters and reboot:
- NeoPixels work perfectly
- The strip responds to
NTF_LED_TYPES,NTF_LED_LEN, etc. - All color tests pass
- If I enable CAN ports (required for GPS):
- NeoPixels stop working entirely
- LED output stays blank
- Pixhawk does not pass the NeoPixel color test
Observations
- There seems to be a conflict between the CAN driver and the NeoPixel driver.
- With CAN enabled → GPS works, but NeoPixels fail.
- With CAN disabled → NeoPixels work, but GPS is unusable.
Tried So Far
- Reassigning
NTF_LED_TYPESandNTF_LED_LEN - Moving LED output to different AUX channels
- Testing both internal and external NeoPixels (including GPS module’s onboard LEDs)
- Running with CAN GPS disabled (LEDs OK) vs. enabled (LEDs fail)
Question for the Community
- Is this a known hardware/firmware conflict (shared DMA/timer resources between NeoPixels and CAN)?
- Is there a workaround to run both CAN GPS and NeoPixels together?
- Or is the recommended approach to offload LED control to a companion computer (e.g., Raspberry Pi or Arduino) instead of Pixhawk?