When using the later releases (v1.15.0) of px4 software with the voxl_esc library found on the official github (https://github.com/PX4/PX4-Autopilot), when the flight core initially boots, if the ESC is not yet ready (either booted after the flight core or hasn't completed booting by the time the flightcore was ready), the flight core will not detect the ESC and will not be able to drive the motors.
This issue presents itself even when the flight core is powered from the ESC.
It appears to be an ordering problem, if the ESC is powered initially, then power is applied to the flight core this all works correctly. In the ideal configuration, the ESC is providing power to the flight core so powerup order cannot be controlled.
With a mavlink shell, with the ESC/flight core in a not detected state, the voxl_esc task is not running. Manually starting the task with 'voxl_esc start' will then start the process at which point the ESC will be detected and become usable. Looking at the source code (this is still valid on the main and v1.15.0 branches at the time of writing), under src/drivers/actuators/voxl_esc in voxl_esc.cpp, in the VoxlEsc::Run() method we can see that the driver attempts to contact the ESC, if it fails up to num retries, it will then close the task. This doesn't appear to be correct behaviour.
I have implemented a fix on a local branch, but I am unsure of the implications as the firmware that is factory loaded onto the flightcore does not have this issue. Any insights/help would be appreciated! Thanks!