Network Diagnostic Skill

Skill name: network-diagnostic-skill

User story:

As a user I want this Skill to make some basic network tests, so I can understand why sometimes mycroft is not working. At the moment just says:

I’m having trouble communicating with the Mycroft servers.
Please wait few minutes before trying to speak to me.

But the user really doesn’t know what’s happening. This skill will do some basic network test to determine if the problem is related to the user environment or is a problem on the Mycroft backend.

User-side checks
On the user-side, this skill must make the following test.

  • Check if the device has an IP (and note if it is the wlan or eth0)
  • If the former test passes, then it will check if the device has a default GW and is reachable (ping)
  • If the former test passes, then it will scan for other devices on the LAN and will ping them
  • If the former test passes, then it will check if the device has set at least one DNS and are reachable (ping and port 53), ping also 8.8.8.8
  • If the former test passes, then it will ping somewhere on the Net with 99,99999% uptime (google.com)
  • If the former test passes, then it will ping mycroft services (api.mycroft.ai, etc)

Backend-side checks
Once ALL THE TEST on the user-side are OK, then the skill should do some other simple test onmthe backend side, it should do a simple test to check the different services (api, market, mimic2, etc) and determine if they are working properly.

Results
After the test, Mycroft should give a detailed answer to the user if it founded an error on the user side or if it is a backend problem, tell the user that the problem has been reported to Mycroft AI.

Are there similar Mycroft Skills already?

None as far as I know.

What will the user Speak to trigger the Skill?

Mycroft: I’m having trouble communicating with the Mycroft servers. Do you want me to determine what’s happening?
User: Yes

What phrases will Mycroft Speak?
If the skill found some trouble on the user-side:

  • Check failed to see if the device has an IP
    I don’t have a network IP address set, please check connectivity, and if your other devices are connected to the internet, please re-run Mycroft connection Wizard
  • If it has an IP but there are some problems with the default GW
    I cannot reach your default GW on 192.168.X.X but I can reach other devices on the Local Area Network, so if your other devices can reach Internet and I’m the only one who can’t, restart both the router and me
    I can see more devices connected to the Local Area Network but I cannot reach any of them, check the cable (if Mycroft is connected via eth) or restart me and the router if you can’t reach the internet with any other of your devices (if it’s connected via wlan)
  • I the former test passes, check if the device has set at least one DNS and are reachable (ping and port 53)
    I don’t have any DNS set, do you want to use a working one and repeat the tests? (Saying yes, Mycroft will use a 99,999999% uptime DNS servers (Google, OpenDNS, etc)
    I cannot reach the DNS X.X.X.X, do you want me to put a working one from Google?
    I cannot reach ANY DNS, nor local neither on the NET, if I’m the only device on the Local Area Network which can’t, please restart me and run the wizard once again, if any device can’t reach the Internet, restart the router and the ONT. If the problem persists, please call your ISP provider
  • Ping somewhere on the Net with 99,99999% uptime (google.com)
    I cannot reach Internet. if I’m the only device on the Local Area Network which can’t, please restart me and run the wizard once again, if any device can’t reach the Internet, restart the router and the ONT. If the problem persists, please call your ISP provider
  • Ping mycroft services (api.mycroft.ai, etc)
    It seems there are a problem with Mycroft Servers, I’m going to reporting them right now. Please wait few minutes before trying to speak to me

If it did found problems on the backend side:
I found some problems related to the backend, let me report directly to the Mycroft Support! (And it will send a notification to Mycroft SysOps with a detailed report.

If it didn’t found any problem:
Network seems good so far, I can reach the internet and Mycroft services, and they seem working as expected

What Skill Settings will this Skill need to store?
It can store all the results of the user-side tests (IP, GW, DNS) just to do the steps one by one. The only data it will send to Mycroft are the detailed reports when backend services are reachable (via ping) but when testing via API gave some errors.

Other comments?
The skill will make the test one by one, sequentially, and when it found an error, it won’t try the next one test and will report the user immediately. This skill can be expanded on the future with more extensive test and it could even, if it finds an ISP problem, give you their support phone number or something more cool.

Great suggestion Malevolent :slight_smile:

This is actually something the team have been looking at strengthening recently in mycroft-core. You would think that testing if you are connected to the internet would be a straight forward thing but there are a bunch of edge cases we need to handle like network capture portals etc.

Some good discussion on that here: https://github.com/MycroftAI/mycroft-core/pull/2305

Wow, captive portals… Obviously no one would carry and plug its Mycroft on an airport or hotel, so I guess @forslund is thinking about universities, high schools or hospitals… public spaces where a voice assistant has any sense, and in those places the IT team should let Mycroft to bypass the captive portal as they do with other special devices, because captive portals are used almost exclusively for guess access.

But he did a point, because on non-home environments, there are transparent proxies, firewalls, and other stuff that makes the checks more difficult.

I was talking about home users. Enterprise environments are supposed to have an IT team which control the Internet access, and if Mycroft doesn’t work the user has poor to no control at all.

Believe it or not, hotel capture portals are one such case that we get asked about. Mycroft is everywhere!!!

Well, is such situations one can always use the smartphone’s 4G/LTS and tether to mycroft :smile:

1 Like

I have recently moved to a new flat, a new connection and a new router. Mycroft didn’t gave me any solution for my “network issues” (which were quite obvious, new router, new SSID).

So I reset the device and started the assistant once again. I think it would be great mycroft could determine some of those corner scenarios and re-run the wireless wizard again.

(Now is when it already exists an offline command that I’m not aware doing exactly this, isn’t it?)

This is definitely going to be available in the Mark II. Picroft will also get it, and hence it shouldn’t be problem to make it available on the Mark 1 but I’m not going to promise that until I see it.

1 Like