Broadcast
The Broadcast screen (Broadcast & discovery) sends one UDP payload to many destinations at once, and listens on the other side to see who answers. Use it to find devices on a network, to check that a multicast stream reaches a receiver, or to play a device that answers discovery probes.
- The Emitter sends to a list of hosts, a broadcast address, a multicast group, or every host of a subnet — once, or again and again as a beacon.
- The Discovery listener listens on a port, joins multicast groups, lists every peer that talks to it, and can answer probes.
DANGER
Broadcast, multicast and a sweep reach every device on the network segment, not only the one you have in mind, and a beacon keeps doing it. Check which network you are on first, and only send to networks you own or are allowed to test. The limits below are guard rails, not permission.
Sending
- Choose the Mode (below).
- Enter the destination: the field's name changes with the mode. On a network with an IPv4 address, use my subnet fills it from this machine's address.
- Choose the Payload and write it.
- Press Send once: one datagram goes to each destination.
Modes
| Mode | Destination | What happens | Default |
|---|---|---|---|
| List | Targets: IP:port or host:port entries separated by commas, semicolons or new lines — a space does not separate them. A name is looked up, its IPv4 address taken when it has one. | One datagram to each | 127.0.0.1:9000, 127.0.0.1:9001 |
| Broadcast | Address: 255.255.255.255:port, or an address ending in .255 | One datagram that every host on the local network receives. Routers do not pass it on. | 255.255.255.255:9000 |
| Multicast | Address: a group from 224.0.0.0 to 239.255.255.255, with a port | One datagram to the group; only listeners that joined it receive it | 239.1.1.1:9000 |
| Sweep | CIDR block, a.b.c.d/nn, and a Port | One datagram to every usable host of the block, as unicast — for devices that ignore broadcast | 192.168.1.0/24, port 9000 |
In a sweep the network and broadcast addresses are skipped (except in a /31 or /32), and a base that is not the network's own is rounded down to it: 192.0.2.77/30 sweeps 192.0.2.77 and 192.0.2.78. A sweep reaches at most 1024 hosts, so the widest block is a /22 (1022 hosts); a wider one is refused with the prefix to narrow it to.
Broadcast, multicast groups, sweeps and the discovery listener's joins are IPv4 only: IPv6 has no broadcast. A List may also name IPv6 hosts (see Socket options).
use my subnet fills x.y.z.10:9000, x.y.z.11:9000 in List, x.y.z.255:9000 in Broadcast and x.y.z.0/24 in Sweep, from this machine's address x.y.z.w. It assumes a /24 network.
Payload
| Payload | What is sent |
|---|---|
| OSC | An OSC message: OSC address and typed Arguments, as on the OSC screen. Default /hello/discover with the text who-is-there. |
| text | The Text as UTF-8, exactly as typed, with no terminator. Default HELLO-PROBE. |
| raw hex | The Hex bytes byte for byte — to replay a captured frame or speak a binary discovery protocol. Pairs of hex digits; anything else between them is ignored. Default 48 45 4c 4c 4f. |
Socket options
socket options opens three more settings:
| Option | What | Default |
|---|---|---|
| Bind (source) | The local IP:port the datagrams go out from. Pin it to choose the network card, or a source port a device answers to. 0.0.0.0:0: any. | 0.0.0.0:0 |
| TTL / hops | How many routers a datagram may cross, 1–255. For multicast this is the multicast hop limit: 1 keeps it on this network. | 1 |
| loop back to this host | Multicast only: deliver the group's datagrams to this machine too, so a listener here hears them | on |
With the default Bind (source) the datagrams go out from an IPv4 socket, or from an IPv6 one when every destination is IPv6. A list that mixes the two is sent from the IPv4 socket, and its IPv6 destinations fail; send them as a list of their own, or pin Bind (source) to an IPv6 address.
The result
Last emit shows what went out: Targets, Packets, Volume and Errors, and the first eight destinations it reached ("… +n more" for the rest). An error to one destination does not stop the others; the console line names how many failed.
Repeating as a beacon
A beacon sends the same round — one datagram to each destination — on a schedule, until you stop it. Devices that listen for a periodic announcement need one.
- Set up the mode, destination and payload as for a single send.
- Under Repeat as a beacon, set Rate (/s), and if it should stop by itself, Rounds or Seconds.
- Press Start beacon. Stop beacon — or stopping its job in the console strip — ends it.
| Field | What | Default |
|---|---|---|
| Rate (/s) | Rounds per second; must be above 0 | 2 |
| Rounds | Stop after this many rounds; 0 — no limit | 0 |
| Seconds | Stop after this many seconds; 0 — no limit | 0 |
The rate times the number of destinations may be at most 50 000 datagrams a second. A sweep of a /24 (254 hosts) can therefore repeat about 196 times a second at most. While the beacon runs, Last emit shows Targets (the destinations in each round, from the first report on), the totals, Rounds and PPS (datagrams per second), updated four times a second, and Send once is unavailable. A beacon that has had more than 32 failed datagrams and not one sent — no route, broadcast not allowed — stops by itself and says why.
Listening for devices
The Discovery listener binds a UDP port and records every peer that sends to it: what answers a probe, or what a device announces on its own.
- Set Bind address, the port the devices send to.
- For multicast, list the groups in Join multicast groups.
- Press Listen. The settings lock until you press Stop listening.
| Field | What | Default |
|---|---|---|
| Bind address | Where to listen, IP:port. 0.0.0.0 listens on every network card. | 0.0.0.0:9000 |
| Join multicast groups | IPv4 multicast groups to join, comma separated; empty — unicast and broadcast only | 239.1.1.1 |
| Interface | The IPv4 address of the network card to join the groups on; empty — the system chooses | empty |
| share the port | Listen on a port another program also uses (SO_REUSEADDR). It works only if that program allows sharing too. | on |
| answer probes | Answer probes, as a device would (below) | off |
Peers
Peers lists who has sent something, the most recent first, with the number of peers seen, the packets heard and the replies sent above it:
| Column | What |
|---|---|
| Peer | The sender's IP:port; its dot shows whether it was heard in the last 3 seconds |
| Proto | osc when its last datagram decoded as OSC, else udp |
| Packets | How many it sent |
| Age | Seconds since its last datagram |
| Last message | Its last datagram: the OSC address and arguments, or the start of the text |
The list is refreshed a few times a second and holds up to 512 peers; past that, packets are still counted but new peers get no row.
Answering probes
With answer probes, the listener plays a device: it answers each datagram it receives, from the listening port, back to the sender's address and port.
| Field | What | Default |
|---|---|---|
| Payload | The reply: OSC, text or hex, as for sending | OSC /hello/here with the text signal-lab |
| Reply delay (ms) | Wait this long before answering, as a slow device would | 0 |
| Only if it contains | Answer only datagrams whose decoded text contains this — the OSC address and arguments, or the start of the text; empty — every one | empty |
The listener never answers a datagram identical to its own reply, so two listeners pointed at each other do not answer back and forth forever.
Firewalls and shared ports
Broadcast and multicast traffic from other machines is blocked by default by most Windows firewalls: allow Signal Lab on private networks when the app offers it. Broadcast never crosses a router. To listen on a port the real service already has, both sides must allow sharing (share the port here); without it, a taken port is refused with a hint to turn it on. See Troubleshooting.
In the Inspector
With capture armed, the screen's traffic appears with the protocol osc or udp, by its payload:
| Source | What | How many |
|---|---|---|
broadcast | Send once: each datagram, with the verdict fan-out, broadcast, multicast or sweep; a failed one with error: … | every one |
beacon | A beacon's rounds | at most one round every 50 ms |
discovery | Datagrams the listener receives | at most one every 40 ms |
discovery | Its answers, with the verdict auto-reply | every one |
What the Inspector leaves out of a beacon or the listener is counted: the next frame it draws carries the number in its verdict, +n not shown (for a beacon, one frame for each destination of each round left out). See Inspector.
On a server or in Docker
On a server, the screen sends and listens on the server's network. In Docker, broadcast, multicast and discovery reach the local network only when the container uses the host's network (--network host) on a Linux host. With Docker's default bridge network, or Docker Desktop, only unicast to hosts the container can reach works.
Elsewhere
signallab send udpsends one datagram to one host; there is no command-line broadcast, multicast or sweep.- A UDP datagram step sends a text datagram to one or more hosts, and a Wait for UDP step waits for one. See UDP and TCP.
- To play a device that answers by rules — several rules, replies built from what arrived — use a UDP device or OSC device emulator. See Emulators.
Problems
| What you see | Usual cause |
|---|---|
… is not a broadcast address | Broadcast takes 255.255.255.255:port or an address ending in .255. For another subnet mask, use Sweep. |
… is not a multicast group | The address is outside 224.0.0.0–239.255.255.255. |
… spans … addresses, and a sweep reaches at most 1024 hosts | The block is wider than a /22; narrow it. |
Set the port to sweep | Port is 0. |
… is over the … pps limit | The rate times the number of destinations is over 50 000 a second: lower Rate (/s), or narrow the destination. |
… is already in use — turn on “share the port” to listen alongside it | Another program has the port; tick share the port. |
Cannot join the multicast group … | The group or Interface is not usable on this machine — no network card with that address, or no multicast route. |
| Sent, but nobody answers | The devices listen on another port; the firewall here keeps their answers out; a router lies between you; or, in Docker, the container is not on the host network. |
| Probes go out, but the discovery listener hears no answers | Many devices answer to the address and port a probe came from — the emitter's own socket, which the screen does not read. Listen on the port the devices answer to, or send the probe from an experiment: a UDP datagram step with wait for a reply sends and listens on the same port. |
Every error message is listed in Error messages.