NETGEAR is aware of a growing number of phone and online scams. To learn how to stay safe click here.
Forum Discussion
Georgiana
Jan 04, 2019Follower
Netgear Nighthawk M1 - data connection problem
MR1100 - Dear netgear support, I am writing because you are the last chance to fix the product otherwise I will have to throw it away. I have several problems, but the most important is that the devi...
Mexoh1To7k
Jan 11, 2019Apprentice
I have a made a script that automatically push the data button if you want, it succeeds at reestablishing the connection within a second. You need a computer for monitoring though.
You have Iliad, which is the company that operates Free Mobile in France. They have set a maximum time to live of 12 hours for the PPP sessions and the MR1100 fails to reestablish the connection after the hang up.
It's not difficult to fix but Netgear doesn't seem to care very much about it.
Lemme know if you want the script.
nokiahelp
Apr 23, 2019Tutor
Mexoh1To7k hello, I'm interested in the script too :D
- Mexoh1To7kMay 05, 2019Apprentice
Hi,
Sorry for that long delay. I have attached the script.
Just adjust the 'ip' and 'pwd' variables to reflect your MR1100 and keep the script running.
This is a python 3 script.
#!/usr/bin/python3 import requests import json import time import datetime ip = "192.168.1.1" pwd = "admin" url_session = "http://{}/sess_cd_tmp".format(ip) url_js_token = "http://{}/js/NetgearStrings.js".format(ip) url_config = "http://{}/Forms/config".format(ip) url_json = "http://{}/api/model.json".format(ip) url_json_success = "http://{}/success.json".format(ip) url_success = "http://{}/index.html".format(ip) timeout = 3 first_run = True def router_reachable(r): global first_run try: s = r.get(url_session, timeout=timeout) first_run = False if s.status_code != 200: raise ValueError("Wrong status code") print("Connect OK.") except: print("MR1100 unreachable. Wrong IP?") exit(1) def login(r): try: r.get(url_session, timeout=timeout) except: print("Connection failed. Wrong IP?") time.sleep(2) try: js = r.get(url_js_token, timeout=timeout).text global token token = js.splitlines()[11].split()[1].strip('"') data = { 'token': token, 'err_redirect': '/index.html?loginfailed', 'ok_redirect': '/index.html', 'session.password': pwd, } except: print("Token computation failed.") login_success = False try: redirect_url = r.post(url_config, data=data, timeout=timeout).url if redirect_url == url_success: login_success = True else: print("Failed to authenticate, incorrect password?") exit(1) return login_success except: print("Connection failed.") def get_status(r): try: json_model = json.loads(r.get(url_json, timeout=10).text) status = json_model['wwan']['connection'] return status except: print("Cannot retrieve connection status.") def reconnect(r): try: disconnect = { 'token': token, 'err_redirect': '/error.json', 'ok_redirect': '/success.json', 'wwan.autoconnect': 'Never', } connect = { 'token': token, 'err_redirect': '/error.json', 'ok_redirect': '/success.json', 'wwan.autoconnect': 'HomeNetwork', } push = r.post(url_config, data=disconnect, timeout=timeout) push2 = r.post(url_config, data=connect, timeout=timeout) if push.url != url_json_success: print("Failed to disconnect.") elif push2.url != url_json_success: print("Failed to reconnect.") except: print("Connection failed.") def main(): r = requests.Session() if first_run: router_reachable(r) login(r) status = get_status(r) if status != "Connected": reconnected = False while not reconnected: reconnect(r) time.sleep(5) status = get_status(r) if status == "Connected": timestamp = datetime.datetime.now() s = "Reconnect successful {}".format(timestamp) reconnected = True print(s) time.sleep(2) if __name__ == '__main__': while True: try: main() except KeyboardInterrupt: exit(0) except SystemExit as e: exit(1) except: time.sleep(2) main()
- nokiahelpMay 05, 2019Tutor
Mexoh1To7k Many thanks !
Maybe a stupid question but the script needs to run on a PC connected to the router, right ?
Is it possible to execute the script on an android device (like a tablet) ?
Thanks again :)
- Mexoh1To7kMay 05, 2019Apprentice
Yes, the machine on which you run the script must have access to the web interface of the MR1100.
Android generally doesn't ship with Python, but there's a terminal emulator called Termux that seems to include it. Feedback appreciated.