Skip to main content

IoT Devices

Reserve, run, and interact with the physical IoT devices provided by Northeastern as part of your SPHERE experiments.

Beta

Support for IoT devices is currently in beta. Please report any issues you encounter, and share feedback with the NEU IoT Facility.

SPHERE lets you incorporate real IoT devices, such as smart speakers, cameras, plugs, TVs, and phones, into your experiments. Everything is driven by one command-line tool, mrg-iot: it reserves the devices, brings them online, sends commands to them, collects the captured data, and releases the hardware when you are done.

Everything the tool does is organised into a handful of command groups, one per thing you work with. mrg-iot --help is the map:

The mrg-iot help output, listing its command groups with the derived defaults for each name

Where to start​

GuideRead it when
InstallationStart here. Puts mrg-iot on your PATH, plus the optional video player.
QuickstartYou want the shortest path: install the tool and drive a real device in a handful of commands.
Using mrg-iotYou want the full walkthrough, from creating an account to tearing the experiment down.
Troubleshooting & FAQSomething failed and you want the symptom, the cause, and the fix.

Browse the devices​

Every device in the testbed is catalogued, with the details of each one, at devices.iot.sphere-testbed.net.

Use it to see what hardware exists and what each device can do before you pick the ones for your experiment. To check what is free to reserve right now, ask the portal instead:

mrg-iot devices list --available

Key concepts​

These terms appear throughout the IoT guides and in the rest of the SPHERE documentation:

TermMeaning
ExperimentThe model describing the devices and the network connecting them.
RealizationA reservation of physical resources that satisfies an experiment’s model.
MaterializationThe act of booting and configuring the reserved devices so they are live.
XDC (Experiment Development Container)The container you connect through in order to reach your experiment’s devices.
DeployedAn experiment that is realized, materialized, and attached to a ready XDC. This is the state you can send commands in.
ExperimentControlThe gRPC service (port 17000) on the testbed that relays your commands to the devices.
spiot_ctlThe control language you speak to devices in, e.g. s-echodot-1 click_button.

How the pieces fit together​

mrg-iot runs on your laptop. Every command that talks to a running experiment opens its own SSH session to the XDC, forwards the ports it needs, does its work, and closes again. There is no daemon and nothing cached between invocations.

SSH tunnels WireGuard
(8554 / 9001 / 17000 / 17554)
Your laptop ───────────────────────► XDC ───────────────► ExperimentControl
mrg-iot │
▼
IoT devices
(s-echodot-1, …)
PortService
8554RTSP camera stream proxy
9001File server web client (uploads and downloads)
17000ExperimentControl gRPC channel
17554Stream ingest, for stream push
17555Live packet capture, for stream capture

Those are the remote ports, and each command forwards only the ones it needs. The local end of every tunnel is an OS-assigned ephemeral port, so several mrg-iot commands can run side by side in different terminals without colliding.