field note

IoT device discovery for camera fleets

IoT device discovery is finding every device on a camera segment by IP, MAC, and vendor, including the cameras the as-built missed. How to run a pass.

2026-08-21

IoT device discovery is building a current list of every device on a network segment from the devices themselves: address, vendor, and a type and model guess, including the IP cameras that never appeared on the as-built. It is a one-shot map of what is actually on the wire. It is not a live watch, a login, or a video tool.

Camera fleets need that map because every later control attaches to a named device. Firmware, credentials, certificates, and health monitoring only cover the cameras you know exist. The camera missing from the list is the camera that still has last year’s password, last year’s firmware, and a management path nobody closed. That is the same gap named in camera hardening at fleet scale. Discovery is how the list starts matching the floor.

What a useful pass returns

A discovery pass that an integrator can hand to a site owner is a grid, not a screenshot of a blinking topology.

For each responding device you need:

  • Address. The IP it answers on, on this segment, right now.
  • Hardware identity. MAC address, and the vendor that MAC belongs to.
  • A type and model guess. Camera, printer, door controller, workstation, or the thing nobody remembers installing.
  • A hostname, if the device exposes one.
  • Which ports it answers on, enough to know it is reachable as a camera or as something else.

That is enough to reconcile against the as-built. It is not enough to manage the device. Management needs credentials, a firmware track, a certificate state, and an owner. Discovery stops at identity.

Vendor from the MAC is the column people skip and then regret. A model string from a commissioning sheet is a claim. A vendor resolved from the hardware address is what is on the network, including brands the purchase order did not mention.

Locally administered and randomized MACs should be flagged as such. They are not a vendor. Treating them as a named manufacturer invents inventory.

Why the as-built is not the floor

IoT device discovery as the step that makes a camera list match the floor. The as-built names three cameras. The floor has those three plus an unlisted camera and a door controller. A one-shot discovery pass identifies all five by address, MAC, and vendor, so hardening and monitoring can attach to devices that actually exist. the as-built is a hypothesis as-built cam-01 cam-02 cam-14 three named cameras the floor cam-01 cam-02 cam-14 unlisted camera door controller after discovery five devices, named ip, mac, vendor type and model list matches floor
Three named cameras on the as-built, five devices on the floor. The pass is what makes the list true.

Commissioning spreadsheets age in one direction. A camera is swapped on a Saturday and the row is not. A demo unit stays on the VLAN after the proof-of-concept. A door controller shares the segment because it was the cable that reached. A printer appears because someone needed a drop. None of that updates the as-built.

Walk the ceiling and you will still miss the device in a closet, the encoder on a shelf, and the camera that was added to cover a new aisle and never entered the VMS as a named input. A MAC table on the switch is closer to the truth, and it still will not tell you that the address is a camera rather than a badge panel.

IoT device discovery asks the segment. The output is the floor, on this day, with enough identity to say what each address appears to be. Reconcile that grid against the as-built and you get three piles:

  1. Expected and found. The managed fleet, or at least the named one.
  2. Expected and missing. Stolen, powered down, moved, or never installed. That is a service ticket, not a discovery problem.
  3. Found and unnamed. This is the pile that matters. Those devices have no owner, no firmware policy, and no credential rotation, because nobody knew to apply one.

Give every unnamed row one of four endings, in writing, the same day:

  • Name it. It belongs in the fleet. Add it to the as-built with an owner, a location, and the credentials that actually work.
  • Isolate it. It stays until someone decides, but not on the same segment as the cameras you trust.
  • Remove it. Power it down, pull the drop, and record that you did.
  • Refuse it. Restricted hardware, a guest device, a leftover demo. Document why it is not going under management, and do not leave it answering on the camera VLAN while you think about it.

The unnamed pile is also where restricted hardware shows up, the brands a purchase policy would have refused if anyone had been asked. Discovery does not care which brands you meant to buy. It reports what is there. What that means for NDAA or a published vulnerability is a later step, against a list that now exists.

How to run a pass on someone else’s network

Discovery on a camera VLAN is work you do with permission, in the open, and then stop.

Get the written go-ahead. Site owner, integrator of record, or the person who owns that segment. A scan without that is an incident report with your name on it.

Stand on the segment you were asked to see. A laptop on the corporate WLAN will not see the camera VLAN. A pass from the wrong interface produces a confident list of the wrong network. Plug into the camera switch, or onto a drop that is actually in that subnet, and say which interface you used.

Run it once, then stop. A useful pass is a snapshot. Leave a process watching the LAN and you have built a monitor you did not intend to install. One-shot, export, done.

Do not log in. Identity does not need a password. The moment a tool authenticates, it is a management session, and management sessions on a customer camera have a change window, an owner, and a way back. Discovery should not be that.

Do not touch video. Streams, snapshots, and frames are not inventory. The question is whether a device is there and what it appears to be, not what it is pointed at.

Keep the results on the machine unless the customer asked for the file. Export CSV or JSON when you need to hand the grid to someone. Do not send a customer LAN out of the building because a tool thought that would be helpful.

No admin rights and no capture driver is the conduct bar worth holding. If the tool needs elevation or a packet-capture stack, you are past “any neighbor on this LAN could ask” and into something the customer’s security team will want explained.

On Windows, that is the job ThopterIoT is built for: a free, open-source, one-shot scanner that returns IP, MAC and vendor, a type and model guess, hostnames, and open ports, with no driver, no elevation, and no telemetry. The scan stays on the machine. The source is public, so the claims above are checkable.

Reconcile the export against the as-built the same day. A grid that sits for two weeks is another as-built.

What discovery does not do

Once the grid exists, the ongoing program is camera fleet management: keeping every named camera online, current, secure, and provable. Discovery only tells you which devices belong on that list.

It is not health monitoring. A pass tells you a camera answered today. It does not tell you the camera is still recording on Thursday, that its clock drifted, or that a certificate will expire on the first of the month.

It is not a firmware campaign, a password rotation, or a certificate renewal. Those need credentials and a change process. Running them against an incomplete list is how you harden the spreadsheet and leave the closet camera alone.

It is not a verdict on whether a device is a problem. Vendor and model get you to the question. Published CVEs, restricted-brand rules, and “is this supposed to be here” are answers you apply after the grid exists.

Those limits are the point. A tool that tries to do all of them on first contact is a management platform arriving uninvited. Keep the pass small enough that a customer can watch it run and then watch it stop.

Doing this across 500 cameras

At five hundred cameras the as-built is already wrong, and it is wrong in different ways at different sites. One segment has a forgotten demo unit. Another has three cameras that were swapped and never renamed. A third has a door controller and a printer that share the VLAN because that was the cable plant. A quarterly walk does not catch that. A commissioning spreadsheet from install year does not either.

The manual version is a laptop per site, a pass per segment, an export, and a person who will sit with the as-built until the unnamed pile has an owner. That is a real day’s work, and it is still only a snapshot. Next week’s swap puts you back in the same hole.

ThopterIoT is the pass: free to run, complete as a scanner, local results. When the question after the grid is whether any of those devices are a known-bad firmware or a restricted brand, and whether the cameras you keep should stay under watch, that is the optional step into the MentatNOC platform. MentatNOC continuously watches whether every camera you put under management is online, on time, on the right firmware, and still recording. It monitors device health, not video. It does not replace the discovery pass. It is what you do with the cameras the pass said were there.

The fastest way to see that second half is a live platform demo against an estate shaped like yours.