This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
guides:virtual_modem:script [2022-12-17 19:34] omolini |
guides:virtual_modem:script [2022-12-28 03:32] (current) omolini |
||
|---|---|---|---|
| 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.1 | + | vmodver=1.7.1 |
| # 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" | ||