diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS index c8960c08b00..50d42d4dab4 100644 --- a/ROMFS/px4fmu_common/init.d/rcS +++ b/ROMFS/px4fmu_common/init.d/rcS @@ -271,6 +271,57 @@ else param set SYS_AUTOCONFIG 0 fi + # + # Check if PX4IO present and update firmware if needed. + # Assumption IOFW set to firmware file and IO_PRESENT = no + # + + if [ -f $IOFW ] + then + # Check for the mini using build with px4io fw file + # but not a px4IO + if ver hwtypecmp V540 V560 + then + param set SYS_USE_IO 0 + else + if px4io checkcrc ${IOFW} + then + set IO_PRESENT yes + else + # tune Program PX4IO + tune_control play -t 16 # tune 16 = PROG_PX4IO + + if px4io start + then + # Try to safety px4 io so motor outputs don't go crazy. + if ! px4io safety_on + then + # px4io did not respond to the safety command. + px4io stop + fi + fi + + if px4io forceupdate 14662 ${IOFW} + then + usleep 10000 + tune_control stop + if px4io checkcrc ${IOFW} + then + echo "PX4IO CRC OK after updating" + tune_control play -t 17 # tune 17 = PROG_PX4IO_OK + set IO_PRESENT yes + fi + fi + + if [ $IO_PRESENT = no ] + then + echo "PX4IO update failed" + tune_control play -t 18 # tune 18 = PROG_PX4IO_ERR + fi + fi + fi + fi + # # Set USE_IO flag. # @@ -279,54 +330,10 @@ else set USE_IO yes fi - # - # Check if PX4IO present and update firmware if needed. - # Assumption IOFW set to firmware file and IO_PRESENT = no - # - - if [ -f $IOFW -a $USE_IO = yes ] + if [ $USE_IO = yes -a $IO_PRESENT = no ] then - if px4io checkcrc ${IOFW} - then - set IO_PRESENT yes - else - # tune Program PX4IO - tune_control play -t 16 # tune 16 = PROG_PX4IO - - if px4io start - then - # Try to safety px4 io so motor outputs don't go crazy. - if ! px4io safety_on - then - # px4io did not respond to the safety command. - px4io stop - fi - fi - - if px4io forceupdate 14662 ${IOFW} - then - usleep 10000 - tune_control stop - if px4io checkcrc ${IOFW} - then - echo "PX4IO CRC OK after updating" - tune_control play -t 17 # tune 17 = PROG_PX4IO_OK - set IO_PRESENT yes - fi - fi - - if [ $IO_PRESENT = no ] - then - echo "PX4IO update failed" - tune_control play -t 18 # tune 18 = PROG_PX4IO_ERR - fi - fi - - if [ $USE_IO = yes -a $IO_PRESENT = no ] - then - echo "PX4IO not found" - tune_control play error - fi + echo "PX4IO not found" + tune_control play error fi # diff --git a/boards/px4/fmu-v5/init/rc.board_defaults b/boards/px4/fmu-v5/init/rc.board_defaults index 62ffc656870..dee1e8dd028 100644 --- a/boards/px4/fmu-v5/init/rc.board_defaults +++ b/boards/px4/fmu-v5/init/rc.board_defaults @@ -23,12 +23,6 @@ then param set UAVCAN_ENABLE 2 fi -# disable px4io on HolyBro mini (V540) and CUAV V5nano (V560) -if ver hwtypecmp V540 V560 -then - param set SYS_USE_IO 0 -fi - set LOGGER_BUF 64 rgbled_pwm start