steptail.com

How many light bulbs does it take to change a penguin?

User Tools

Site Tools


guides:virtual_modem:script

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
guides:virtual_modem:script [2022-12-17 06:16]
omolini
guides:virtual_modem:script [2022-12-28 03:32]
omolini
Line 23: Line 23:
 # Additional credits: # Additional credits:
 # - Billy Stoughton II for bug fixes and contributions # - Billy Stoughton II for bug fixes and contributions
-# - Hamish for helping test Windows 2000+# - Hamish for helping test Windows 2000 compatibility
 # #
 # Licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License # Licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License
Line 34: Line 34:
 # o PuTTY # o PuTTY
 # #
-# PPP connectivity ​will initialize ​correctly ​under the following configurations:​+# PPP dial-up ​connectivity ​tested to initialize under the following configurations:​
 # #
-# o Microsoft ​Windows 3.1 +# o Windows 3.1 
-#   - Trumpet Winsock+#   - Trumpet Winsock ​3.0 revision D
 # #
-# o Microsoft ​Windows 95 OSR 2.5 + DUN 1.4 +# o Windows 95 OSR 2.5 + DUN 1.4 
-#   - Generic+#   - Generic ​Modem
 #     - Standard 28800 bps Modem #     - Standard 28800 bps Modem
 # #
-# o Microsoft ​Windows 98 +# o Windows 98 
-#   - Generic+#   - Generic ​Modem
 #     - Standard 9 600 bps modem #     - Standard 9 600 bps modem
 #     - Standard 33 600 bps modem #     - Standard 33 600 bps modem
Line 50: Line 50:
 #     - Standard 56 000 bps X2 modem #     - Standard 56 000 bps X2 modem
 #     - Standard 56 000 bps K56Flex modem #     - Standard 56 000 bps K56Flex modem
 +#
 +# o Windows 2000
 +#   - Generic Modem
 +#     - Standard 19200 bps Modem
 +#
 +# Help us test and add more supported systems! ​
 +# Contact us on Discord, links at the bottom of the Virtual Modem page.
 # #
  
 # Script version # Script version
-vmodver=1.6.0+vmodver=1.7.0
  
 # CONFIGURATION # CONFIGURATION
Line 130: Line 137:
 # SEND MESSAGE ON SCREEN AND OVER SERIAL # SEND MESSAGE ON SCREEN AND OVER SERIAL
 sendtty () { sendtty () {
 +  # Prints message in console and over serial. Message is given as first parameter.
   message="​$1"​   message="​$1"​
-#  echo -en "​$message"​ 
-#  echo -en "​${message//​\\n/​\\r\\n}"​ > /​dev/​$serport 
   echo -en "​$message"​ | tee /​dev/​$serport   echo -en "​$message"​ | tee /​dev/​$serport
 +}
 +
 +readtty () {
 +  # Reads input from TTY and stores it in variable given as first parameter
 +  line=
 +  while [[ -z "​$line"​ ]]; do
 +    charhex=`head -c 1 /​dev/​$serport | xxd -p -`
 +    char="​`echo -e "​\x$charhex"​`"​
 +    echo -n "​$char"​
 +    echo -n "​$char"​ > /​dev/​$serport
 +    # Newline received
 +    if [ "​$charhex"​ = "​0d"​ -o "​$charhex"​ = "​0a"​ ]; then
 +      line=$buffer
 +      buffer=
 +      char=
 +      sendtty "​\n"​
 +    fi
 +    buffer=$buffer$char
 +  done
 +  local __resultvar=$1
 +  local result="​$line"​
 +  eval $__resultvar="'​$result'"​
 } }
  
 export -f sendtty export -f sendtty
 +export -f readtty
 export -f ttyinit export -f ttyinit
  
Line 145: Line 174:
  
 sendtty "​\n"​ sendtty "​\n"​
-sendtty "VMODEM - Virtual Modem bootstrap for PPP link v$vmodver\n"​ +sendtty "​Virtual Modem bootstrap for PPP link v$vmodver\n"​ 
-sendtty "​Connection speed set to $baud baud\n"​+sendtty "​Connection speed set to $baud baud.\n" 
 +sendtty "My current IP address is $(hostname -I).\n"
 sendtty "​\n"​ sendtty "​\n"​
-sendtty "TYPE HELP FOR COMMANDS\n"+sendtty "​TYPE ​\"HELP\" ​FOR COMMAND REFERENCE.\n"
 sendtty "​READY.\n"​ sendtty "​READY.\n"​
  
Line 430: Line 460:
     fi     fi
  
-    if [[ $cmd = HELP ]]; then+    if [[ $cmd = "HELP" ]] || [[ $cmd = "?" ​]]; then
       sendtty "​Command Reference for Virtual Modem Bootstrap v$vmodver\n"​       sendtty "​Command Reference for Virtual Modem Bootstrap v$vmodver\n"​
       sendtty "​\n"​       sendtty "​\n"​
-      sendtty "AT......Tests modem link, prints OK if successful\n" +      sendtty "General commands:\n" 
-      sendtty "ATE0....Switch terminal echo off\n"​ +      sendtty "HELP.......Display this help\n" 
-      sendtty "ATE1....Switch terminal echo on\n" +      sendtty "LOGIN......Drop to shell\n" 
-      sendtty "ATD?....Fork program ?.sh and output on terminal\n" +      sendtty "SETUP......Change ​settings\n"​ 
-      sendtty "ATDT1...Open PPPD connection\n"​ +      sendtty "EXIT.......End this script\n"​
-      sendtty "ATZ.....Reset modem settings\n"​ +
-      sendtty "HELP....Display command reference\n"​ +
-      sendtty "​LOGIN...Fork a new linux login on serial\n"​ +
-      sendtty "EXIT....End this script\n"​+
       sendtty "​\n"​       sendtty "​\n"​
-      sendtty "To establish connection over PPP, dial 1 using tone dialing ​(ATDT1)\n"​+      ​sendtty "​Common Hayes commands:​\n"​ 
 +      sendtty "​AT.........Tests serial connection, prints OK if successful\n"​ 
 +      sendtty "​ATE0/​ATE1..Switch terminal echo 0-off or 1-on\n"​ 
 +      sendtty "​ATD#​.......Fork #.sh and output on terminal\n"​ 
 +      sendtty "​ATD1.......Fork 1.sh, which by default starts a PPP connection\n"​ 
 +      sendtty "​ATZ........Reset modem settings\n"​ 
 +      sendtty "​\n"​ 
 +      ​sendtty "To establish connection over PPP, dial 1 (ATDT1)\n"​
       sendtty "​\n"​       sendtty "​\n"​
       sendtty "​READY.\n"​       sendtty "​READY.\n"​
     fi     fi
 +
 +    if [[ $cmd = "​SETUP"​ ]]; then
 +      while true; do
 +        # Display menu
 +        sendtty "​\n"​
 +        sendtty "​System Setup\n"​
 +        sendtty "​============\n"​
 +        sendtty "1. Change Wireless Network settings\n"​
 +        sendtty "2. Exit\n"​
 +        sendtty "Enter your selection: "
 +        # Read user input
 +        readtty selection
 +
 +        # Wireless network settings
 +        if [[ "​$selection"​ == "​1"​ ]]; then
 +          while true; do
 +            sendtty "​\n"​
 +            sendtty "Wi-Fi Settings\n"​
 +            sendtty "​==============\n"​
 +            sendtty "1. Connect to new Wi-Fi network\n"​
 +            sendtty "2. Modify password for current Wi-Fi network\n"​
 +            sendtty "3. Disconnect from current Wi-Fi network\n"​
 +            sendtty "4. Display current Wi-Fi connection status\n"​
 +            sendtty "5. Exit\n"​
 +            sendtty "Enter your selection: "
 +            # Read user input
 +            readtty selection
 +            # Connect to new Wi-Fi network
 +            if [[ "​$selection"​ == "​1"​ ]]; then
 +              sendtty "Enter SSID: "
 +              readtty ssid
 +              sendtty "Enter password: "
 +              readtty password
 +              sudo wpa_cli -i wlan0 remove_network 0
 +              sudo wpa_cli -i wlan0 add_network
 +              sudo wpa_cli -i wlan0 set_network 0 ssid "​\"​$ssid\""​
 +              sudo wpa_cli -i wlan0 set_network 0 psk "​\"​$password\""​
 +              sudo wpa_cli -i wlan0 select_network 0
 +              sudo wpa_cli -i wlan0 enable_network 0
 +            # Modify password for current Wi-Fi network
 +            elif [[ "​$selection"​ == "​2"​ ]]; then
 +              sendtty "Enter new password: "
 +              readtty password
 +              sudo wpa_cli -i wlan0 set_network 0 psk "​\"​$password\""​
 +            # Disconnect from current Wi-Fi network
 +            elif [[ "​$selection"​ == "​3"​ ]]; then
 +              sendtty "​Disconnecting from current Wi-Fi network\n"​
 +              sudo wpa_cli -i wlan0 disable_network 0
 +            # Display current Wi-Fi connection status
 +            elif [[ "​$selection"​ == "​4"​ ]]; then
 +              status=$(sudo wpa_cli -i wlan0 status)
 +              sendtty "​\n"​
 +              sendtty "Wi-fi connection status\n"​
 +              sendtty "​=======================\n"​
 +              sendtty "​$status"​
 +              sendtty "​\n"​
 +            # Exit
 +            elif [[ "​$selection"​ == "​5"​ ]]; then
 +              break
 +            # Invalid selection
 +            else
 +              sendtty "​Invalid selection. Please try again.\n"​
 +            fi
 +          done
 +        # Exit
 +        elif [[ "​$selection"​ == "​2"​ ]]; then
 +          sendtty "​Exited setup\n"​
 +          sendtty "​READY.\n"​
 +          break
 +        # Invalid selection
 +        else
 +          sendtty "​Invalid selection. Please try again.\n"​
 +        fi
 +      done
 +    fi
 +
  
     # LOGIN  -  FORK LOGIN SESSION     # LOGIN  -  FORK LOGIN SESSION
Line 566: Line 675:
 sendtty "​\n"​ sendtty "​\n"​
 sendtty "​Please enter your name: \n" sendtty "​Please enter your name: \n"
-read -e -p "User? " ​username+readtty ​username
 sendtty "​\n"​ sendtty "​\n"​
 sendtty "​Hello,​ $username!\n"​ sendtty "​Hello,​ $username!\n"​
guides/virtual_modem/script.txt · Last modified: 2022-12-28 03:32 by omolini