diff --git a/ROMFS/px4fmu_common/init.d/rc.io b/ROMFS/px4fmu_common/init.d/rc.io index 54948b697d..9ab87e3f22 100644 --- a/ROMFS/px4fmu_common/init.d/rc.io +++ b/ROMFS/px4fmu_common/init.d/rc.io @@ -3,6 +3,60 @@ # PX4IO interface init script. # +# +# Check if PX4IO present and update firmware if needed. +# +if [ -f /etc/extras/px4io-v2.bin ] +then + set IO_FILE /etc/extras/px4io-v2.bin + + if px4io checkcrc ${IO_FILE} + then + set IO_PRESENT yes + else + tune_control play -m MLL32CP8MB + + if px4io start + then + # Try to safety px4 io so motor outputs dont go crazy. + if px4io safety_on + then + # success! no-op + else + # px4io did not respond to the safety command. + px4io stop + fi + fi + + if px4io forceupdate 14662 ${IO_FILE} + then + usleep 10000 + if px4io checkcrc ${IO_FILE} + then + echo "PX4IO CRC OK after updating" >> $LOG_FILE + tune_control play -m MLL8CDE + + set IO_PRESENT yes + else + echo "PX4IO update failed" >> $LOG_FILE + # Error tune. + tune_control play -t 2 + fi + else + echo "PX4IO update failed" >> $LOG_FILE + # Error tune. + tune_control play -t 2 + fi + fi +fi + +if [ $USE_IO == yes -a $IO_PRESENT == no ] +then + echo "PX4IO not found" >> $LOG_FILE + # Error tune. + tune_control play -t 2 +fi + if px4io start then # Allow PX4IO to recover from midair restarts. @@ -12,5 +66,6 @@ then px4io limit 400 else echo "PX4IO start failed" >> $LOG_FILE - tune_control play -m ${TUNE_ERR} + # Error tune. + tune_control play -t 2 fi diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS index 95e8778965..398ac12eed 100644 --- a/ROMFS/px4fmu_common/init.d/rcS +++ b/ROMFS/px4fmu_common/init.d/rcS @@ -335,53 +335,6 @@ else param set SYS_AUTOCONFIG 0 fi - # - # Check if PX4IO present and update firmware if needed. - # - if [ -f /etc/extras/px4io-v2.bin ] - then - set IO_FILE /etc/extras/px4io-v2.bin - - if px4io checkcrc ${IO_FILE} - then - set IO_PRESENT yes - else - tune_control play -m MLL32CP8MB - - if px4io start - then - # Try to safety px4 io so motor outputs don't go crazy. - if px4io safety_on - then - # success! no-op - else - # px4io did not respond to the safety command. - px4io stop - fi - fi - - if px4io forceupdate 14662 ${IO_FILE} - then - usleep 10000 - if px4io checkcrc ${IO_FILE} - then - echo "PX4IO CRC OK after updating" >> $LOG_FILE - tune_control play -m MLL8CDE - - set IO_PRESENT yes - else - echo "PX4IO update failed" >> $LOG_FILE - # Error tune. - tune_control play -t 2 - fi - else - echo "PX4IO update failed" >> $LOG_FILE - # Error tune. - tune_control play -t 2 - fi - fi - fi - # # Set USE_IO flag. # @@ -390,18 +343,6 @@ else set USE_IO yes fi - if [ $USE_IO == yes -a $IO_PRESENT == no ] - then - echo "PX4IO not found" >> $LOG_FILE - # Error tune. - tune_control play -t 2 - fi - - if [ $IO_PRESENT == no -o $USE_IO == no ] - then - rc_input start - fi - # # Sensors System (start before Commander so Preflight checks are properly run). # Commander needs to be this early for in-air-restarts. @@ -504,6 +445,14 @@ else # sh /etc/init.d/rc.logging + # + # Start the rc_input driver. + # + if [ $USE_IO == no -o $IO_PRESENT == no ] + then + rc_input start + fi + # # Start vmount to control mounts such as gimbals, disabled by default. #