[Replicant] [replicant-scripts][PATCH 1/8] modem: rework script user interface

Denis 'GNUtoo' Carikli GNUtoo at cyberdimension.org
Fri Jun 19 04:08:42 UTC 2020


The current interface has various issues that are fixed by
this new interface. Here's the design decisions that went
into the new interface:
- On various computer formfactors, like desktops, laptops
  and servers, people running commands in them typically use
  a complete hardware keyboard to type them.

  Tab is typically available for command completion which
  makes commands like disable_modem.sh way less common than
  modem_disable.sh.

  The result is that modem_disable feels more intuitive to
  people that are already used to type commands.

- On Replicant 6.0, on the Galaxy SII which has a small
  screen, the underscore (_) key is not immediately
  available on the default keyboard, and to get it,
  you need to press the "?123" key and press longer on the
  minus key (-) to finally have 3 choices where the
  underscore displayed in the middle and selected by
  default.

  However the spacebar ( ) is available.

- On Replicant 6.0, on the Galaxy SII, with the default
  keyboard, the Tab key is also not available at all, so
  it's best if the commands are as short as possible to
  type, as any mistake requires the user to restart typing
  it from scratch as there are no arrow keys that could
  enable them to correct the previous command (assuming they
  know that arrows can do that, which is typically not the
  case for many people new to the command line).
  'on' and 'off' are way shorter and less error prone than
  'enable' and 'disable'.

- Using modem.sh is longer than modem, however the dot (.)
  is available on the default keyboard, including on the
  Galaxy SII, and to many people that know a bit about the
  shell, it will not hide the fact that it is a shell
  script, which can empower them to modify it.

- For the usage message the text has been made in a way that
  can fit the Galaxy SII small screen. It also been made to
  enable users to just type again 'modem.sh off' without
  necessarily understanding the shell semantics like # or $.

- Finally the commands need to be easy enough to remember
  or to find as people might be in a hurry and need to
  enable or disable the modem fast, while being far away
  from any computer or Internet connection. While
  'modem.sh enable' is probably easier to remember,
  'modem.sh on' is good enough, while being shorted to type.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo at cyberdimension.org>
---
 .../modem/device-files/disable_modem.sh       | 44 ----------
 networking/modem/device-files/enable_modem.sh | 44 ----------
 networking/modem/device-files/modem.sh        | 81 +++++++++++++++++++
 3 files changed, 81 insertions(+), 88 deletions(-)
 delete mode 100755 networking/modem/device-files/disable_modem.sh
 delete mode 100755 networking/modem/device-files/enable_modem.sh
 create mode 100755 networking/modem/device-files/modem.sh

diff --git a/networking/modem/device-files/disable_modem.sh b/networking/modem/device-files/disable_modem.sh
deleted file mode 100755
index 5650656..0000000
--- a/networking/modem/device-files/disable_modem.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/system/xbin/bash
-#
-# Copyright (C) 2017 Jeremy Rand <jeremy at veclabs.net>
-# Partially based on code by Wolfgang Wiedmeyer <wolfgit at wiedmeyer.de> and Filippo Fil Bergamo
-#
-# This file is part of "SlightlyBetterAirplaneMode", a set of shell scripts to shut off
-# the Samsung phone modem without trusting the non-free modem firmware.
-#
-# SlightlyBetterAirplaneMode is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# SlightlyBetterAirplaneMode is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-set -euf -o pipefail
-
-echo "Remounting system partition as writable..."
-mount -o rw,remount /system
-
-echo "Disabling RIL..."
-mv /system/lib/libsamsung-ril.so /system/lib/libsamsung-ril.so.disabled || echo 'RIL was already disabled.'
-
-echo "Syncing filesystem..."
-sync
-sync
-
-echo "Remounting system partition as read-only..."
-mount -o ro,remount /system
-
-echo "Syncing filesystem..."
-sync
-sync
-
-am force-stop org.smssecure.smssecure
-# https://android.stackexchange.com/a/139139
-echo "Modem will be disabled after we reboot now..."
-am start -a android.intent.action.REBOOT
diff --git a/networking/modem/device-files/enable_modem.sh b/networking/modem/device-files/enable_modem.sh
deleted file mode 100755
index 4b78089..0000000
--- a/networking/modem/device-files/enable_modem.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/system/xbin/bash
-#
-# Copyright (C) 2017 Jeremy Rand <jeremy at veclabs.net>
-# Partially based on code by Wolfgang Wiedmeyer <wolfgit at wiedmeyer.de> and Filippo Fil Bergamo
-#
-# This file is part of "SlightlyBetterAirplaneMode", a set of shell scripts to shut off
-# the Samsung phone modem without trusting the non-free modem firmware.
-#
-# SlightlyBetterAirplaneMode is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# SlightlyBetterAirplaneMode is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-set -euf -o pipefail
-
-echo "Remounting system partition as writable..."
-mount -o rw,remount /system
-
-echo "Enabling RIL..."
-mv /system/lib/libsamsung-ril.so.disabled /system/lib/libsamsung-ril.so || echo 'RIL was already enabled.'
-
-echo "Syncing filesystem..."
-sync
-sync
-
-echo "Remounting system partition as read-only..."
-mount -o ro,remount /system
-
-echo "Syncing filesystem..."
-sync
-sync
-
-am force-stop org.smssecure.smssecure
-# https://android.stackexchange.com/a/139139
-echo "Modem will be enabled after we reboot now..."
-am start -a android.intent.action.REBOOT
diff --git a/networking/modem/device-files/modem.sh b/networking/modem/device-files/modem.sh
new file mode 100755
index 0000000..626593b
--- /dev/null
+++ b/networking/modem/device-files/modem.sh
@@ -0,0 +1,81 @@
+#!/system/xbin/bash
+#
+# Copyright (C) 2017 Jeremy Rand <jeremy at veclabs.net>
+# Partially based on code by Wolfgang Wiedmeyer <wolfgit at wiedmeyer.de> and Filippo Fil Bergamo
+#
+# This file is part of "SlightlyBetterAirplaneMode", a set of shell scripts to shut off
+# the Samsung phone modem without trusting the non-free modem firmware.
+#
+# SlightlyBetterAirplaneMode is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# SlightlyBetterAirplaneMode is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+set -euf -o pipefail
+
+usage()
+{
+	echo "Usage: modem.sh [on|off]"
+	echo "Examples:"
+	echo "modem.sh off"
+	echo "|-> disable the modem"
+	echo "    and reboot"
+	echo "modem.sh on"
+	echo "|-> enable the modem"
+	echo "    and reboot"
+	exit 1
+}
+
+modem()
+{
+	command="$1"
+
+	echo "Remounting system partition as writable..."
+	mount -o rw,remount /system
+
+	if [ "${command}" = "enable" ] ; then
+		echo "Enabling RIL..."
+		mv /system/lib/libsamsung-ril.so.disabled \
+		   /system/lib/libsamsung-ril.so || \
+		   echo 'RIL was already enabled.'
+	elif [ "${command}" = "disable" ] ; then
+		echo "Disabling RIL..."
+		mv /system/lib/libsamsung-ril.so \
+		   /system/lib/libsamsung-ril.so.disabled || \
+		   echo 'RIL was already disabled.'
+	fi
+
+	echo "Syncing filesystem..."
+	sync
+	sync
+
+	echo "Remounting system partition as read-only..."
+	mount -o ro,remount /system
+
+	echo "Syncing filesystem..."
+	sync
+	sync
+
+	am force-stop org.smssecure.smssecure
+	# https://android.stackexchange.com/a/139139
+	echo "Modem will be disabled after we reboot now..."
+	am start -a android.intent.action.REBOOT
+}
+
+if [ $# -ne 1 ] ; then
+	usage
+fi
+
+if [ "$1" = "on" -o "$1" = "off" ] ;then
+	modem "$1"
+else
+	usage
+fi
-- 
2.27.0



More information about the Replicant mailing list