diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS index fb3effec6e..e7742222a6 100644 --- a/ROMFS/px4fmu_common/init.d/rcS +++ b/ROMFS/px4fmu_common/init.d/rcS @@ -271,57 +271,6 @@ 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. # @@ -330,10 +279,54 @@ else set USE_IO yes fi - if [ $USE_IO = yes -a $IO_PRESENT = no ] + # + # 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 ] then - echo "PX4IO not found" - tune_control play error + 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 fi # diff --git a/boards/px4/fmu-v5/init/rc.board_defaults b/boards/px4/fmu-v5/init/rc.board_defaults index 1c2544dba8..a634600182 100644 --- a/boards/px4/fmu-v5/init/rc.board_defaults +++ b/boards/px4/fmu-v5/init/rc.board_defaults @@ -9,6 +9,12 @@ then 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