Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Keeping Linuxdeploy responsive by constant pings from the inside

michager edited this page Apr 2, 2024 · 5 revisions

I wanted to keep my Linuxdeploy instance's wifi on all the time, so that it is responsive to network requests. Based on the discussion here, I created an init script to place in my Linux installation that will ping the local gateway every half a second.


Thank you Gazihan Alankus for the initial write up. On my HTC One Mini 2 the whole system froze after a while. I figured out it's the deep-sleep engergy save mode of Android. It can be disabled by doing unchroot echo "Debian" > /sys/power/wake_lock . Probably a overkill to do this every 500ms, from docu I think only once would be sufficient. But hey it works... so I'll leave it here hoping it helps someone.


Create /etc/init.d/pingwoke and place the following in it:

#!/bin/sh
# Start/stop the cron daemon.
#
### BEGIN INIT INFO
# Provides: pingwoke
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Keeps linuxdeploy awake
# Description: Keeps linuxdeploy awake
### END INIT INFO
PIDFILE=/var/run/pingwoke.pid
test -f $DAEMON || exit 0
. /lib/lsb/init-functions
start() {
 # code to start app comes here
 # example: daemon program_name &
 #/sbin/runuser android -s /bin/bash -c "/home/android/pinger" &
 log_daemon_msg "Starting pingwoke"
 #start-stop-daemon --start --chuid android --background \
 # --make-pidfile --pidfile $PIDFILE --exec $DAEMON
 start-stop-daemon --start --chuid android --background --make-pidfile \
 --pidfile $PIDFILE --startas /bin/bash -- -c "exec ping -i 0.5 192.168.1.1 > /home/android/pinger.log 2>&1"
 echo "hello"
 # Prevent Android Device from going into deep sleep mode, making the whole system unresponsive. Background here https://elinux.org/Android_Power_Management
 unchroot echo "Debian" > /sys/power/wake_lock
 log_end_msg $?
}
stop() {
 # code to stop app comes here
 # example: killproc program_name
 log_daemon_msg "Stopping pingwoke"
 #killall pinger
 #killproc -p $PIDFILE $DAEMON
 start-stop-daemon --stop --pidfile $PIDFILE
 RETVAL=$?
 [ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
 log_end_msg $RETVAL
}
case "1ドル" in
 start)
 start
 ;;
 stop)
 stop
 ;;
 restart)
 stop
 start
 ;;
 status)
 # code to check status of app comes here
 # example: status program_name
 ;;
 *)
 echo "Usage: 0ドル {start|stop|status|restart}"
esac
exit 0

Replace 192.168.1.1 with your own gateway. I guess we could get it from the system as an improvement but I was too lazy to do that.

Give it execute permission:

chmod ugo+x /etc/init.d/pingwoke

Then, we need to register this service to be executed when Linux starts:

sudo update-rc.d pingwoke defaults

Now check whether /etc/rc2.d/ has a S01pingwoke kind of entry. If so, reboot and see if ping is running with:

root@localhost:/etc/init.d# ps -aux | grep ping
android 2687 0.0 0.1 4152 628 ? S 15:07 0:03 ping -i 0.5 192.168.1.1
root 3345 0.0 0.1 2108 620 pts/0 S+ 16:28 0:00 grep ping
root@localhost:/etc/init.d#

Together with Using ext4 in sd and unmounting it from Android at boot, I'm making an old Android phone be the center of my home automation system.

http://your_computer:3142/XXXX where XXXX is one of armdebian, armubuntu, or armkali

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /