Network Scanner
"What's on my network?" - discovers devices on your own local network using two complementary, entirely local techniques. No root required, no cloud dependency.
Usage
"scan the network"
"can you see my Sony TV"
"is my printer on the network"
"scan netværket" (Danish)
"kan du se min printer" (Danish)
How it finds devices
1. mDNS/Bonjour (via zeroconf) - most consumer smart devices
(Chromecast, HomeKit accessories, printers, many smart speakers)
announce themselves on the network. Gives a clean, self-reported
name, but only for devices that participate in mDNS - plenty of
devices (including many robot vacuums, which talk only to a cloud
service) never announce themselves at all, no matter how good the
scanner is.
2. Ping sweep + ARP + MAC vendor lookup - catches devices that
don't announce themselves. Pings every address in the local /24
subnet (parallelized, a few seconds), reads the OS's own ARP cache to
get each responder's MAC address, looks up the MAC's manufacturer via
mac-vendor-lookup's bundled offline IEEE database, and tries a
reverse-DNS lookup for a hostname. Needs no special privileges -
sending a ping via the system binary and reading the ARP cache are
both unprivileged operations; only actively rewriting the ARP table
would need root, and this skill never does that.
Why both
They catch different, only-partially-overlapping devices:
- mDNS gives a clean name, but only for announcing devices.
- Ping+ARP+vendor catches almost anything with an IP, but only gives a manufacturer guess ("a Sony Corporation device") - never a specific model, and even that guess can be missing entirely, since many modern phones/tablets randomize their MAC address by default for privacy, which breaks vendor lookup completely for those devices.
A real, honest limit: you only see what announces itself
If a device is genuinely silent on both fronts - no mDNS, doesn't respond to ping, or (rarer) has no reverse-DNS entry and an unrecognized/randomized MAC - it won't show up, no matter how the scanning is done. A robot vacuum that only talks to its manufacturer's cloud service is invisible to this skill, and there's no way around that from the local network side.
Local-subnet-only - a protocol property, not a policy
mDNS multicast and ARP do not cross routers by design - both techniques are physically incapable of seeing anything outside this device's own local subnet, regardless of any code here. This is not a restriction imposed by this skill; it's just what these protocols do.
Known rough edge
A single physical device can advertise several different mDNS names for different services on the same IP (observed during real testing: one machine advertised both a caching-service name and a separate KDE Connect ID on the same address). Since each IP here only keeps one name, whichever service happens to be processed last wins - not a stable, deterministic choice. Not fixed in this release.
Install
pip install ovos-skill-network-scanner
Development
See DEVELOPMENT.md.
Category
Utility
Tags
#network #scanner #mdns #discovery #lan
Metadata
Release files for ovos-skill-network-scanner 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ovos_skill_network_scanner-0.0.2.tar.gz | 28.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ovos_skill_network_scanner-0.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 56.6 kB
Release files / ovos_skill_network_scanner-0.0.2.tar.gz
| Download URL | ovos_skill_network_scanner-0.0.2.tar.gz |
|---|---|
| Size | 28.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b96773002c421d18493467127f5d3a38d8ec39d9cd87e0eb66daf646a1d9a471
|
|
BLAKE2b-256 checksum How to use checksums |
e69194a622764f13727934ce070c6df25c33d282b0df3d2251d648b30f4bc7b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / ovos_skill_network_scanner-0.0.2-py3-none-any.whl
| Download URL | ovos_skill_network_scanner-0.0.2-py3-none-any.whl |
|---|---|
| Size | 28.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2e28a30c9568e1f57e4b197c1f1c1b4e18cef45f758485fff52d2e7fad921241
|
|
BLAKE2b-256 checksum How to use checksums |
a2450236596fbf06175a4233f2f1f2266bada65585467a0d14a80f64442d1507
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency log