Repository navigation
triib 1.2.0
The network map draws the traffic on each link and places every device
in its clock domain, those running AVB Lite behind the non-AVB switch in
front of them, and the connection matrix keeps talkers and listeners in
different domains from connecting. triib follows entities that send no
notifications, shows entities' logos and their vendors', and on a Mac
has a menu bar. On Linux only a small helper holds CAP_NET_RAW, and
triib-endpointd shares its MSRP participant with other programs such as
plaa, hears other computers' AVB Lite declarations on the Intel I210 and
offers the same stream formats as plaa. The app ID is now run.triib.
The entity list and the connection matrix filter from menus and carry
their titles, agents can diagnose streams that do not play, and triib
carries on by itself once raw Ethernet is granted.
Controller
- On a Mac, the menu bar has triib's menus: Settings and Quit in the
triib menu, Presets and Close Window in File, Cut, Copy, Paste and
Select All in Edit, the three views, the log and the inspector in
View, and Window and Help menus, in the interface's language. - The network map draws the traffic on each link: a multicast stream to
several listeners takes one wire as far as their paths run together
and branches where they part, all in its color, while a unicast stream,
as AVB Lite can send, has a wire to each listener from its talker. A
device counts each stream it sends once however many listeners it
has, and a bridge each stream passing through. Clicking a shared wire
brings the whole stream forward with all its listeners. - A stream its talker says it sends with no known listener bound to it
still shows, on a wire from the talker to its bridge. - The network map shows every entity and bridge it hears in its clock
domain, each labelled with its number: a gPTP domain from its
grandmaster down through the AVB bridges, or a PTP domain whose devices
run AVB Lite, those that found no AVB bridge and fell back to it hanging
under a dashed card for the non-AVB switch in front of them, with their
streams crossing it; their details say why they run AVB Lite. A device
that shares its domain with no other, as an AVB device alone on a
non-AVB switch, has an area of its own, and only those whose domain is
not known sit apart. The map is the same whether this computer's
entities run gPTP, AVB Lite or nothing, its choices always Sync, Audio
and CRF. - The connection matrix keeps talkers and listeners in different clock
domains, as the network map shows them, from connecting: their cell
says so and does nothing, and hiding what cannot connect hides them. - Where this computer runs none of its own entities, the network map and
triib-cli networktell what it is plugged into from the gPTP
messages on its link: an AVB bridge's port, or a switch taking no part
in AVB, which lets the endpoints' own peer delay requests through, AVB
Lite's declaring themselves and others known by their clocks. Behind
one it hangs under the card for the devices running AVB Lite there,
rather than taking an endpoint for its bridge. - Entities that send no notifications, as some ESP32 endpoints do not,
stay current as other controllers change them: triib reads each
entity's names, stream formats, sampling rates and clock sources again
in turn, asks every second how the stream the inspector's Streams tab
shows stands, and learns at once from the responses entities send
another controller on this computer. An entity that sends triib a
notification is asked nothing again until it goes or restarts. - triib reads entities' logos, their own and their vendors', through
Address Access: the entity list can show each in a column of its own,
and the inspector's Entity tab shows both. - The connection matrix and the entity list have their title at the
start of the row above them, as the network map has. Each view's title
shows wherever the row has room for it beside the rest, rather than
only on windows over 1040 points wide: with the inspector open, say. - Where raw Ethernet needs a permission a command grants, as
setcap
on the helper on Linux, triib tries again every 2 s and carries on as
soon as the command has run, rather than waiting for a restart, and
says so under the command. - Opening Settings or Presets, or an agent's prompt, leaves the window
under it as it was: the inspector no longer slides in again, nor do
the lists scroll back. - The entity list has a filter menu, as the interface picker has, in
place of the button that showed only this computer's entities. It
hides entities on other devices, on Linux and on a Mac; controllers;
and entities outside this computer's clock domain, while this
computer is in sync in one. Beside it, as beside the matrix's
filters, is how many entities they hide. - The connection matrix's option to hide what cannot connect is a filter
menu, as the entity list's, which also hides entities running AVB
Lite, not those only able to, and wireless entities, with all their
streams. How many streams the filters hide shows while they hide any. - Agents can diagnose streams that do not play:
list_problemslists
what triib finds wrong, errors first, from failed reservations and
formats that differ to devices out of sync and counters gone wrong;
stream_diagnosticsasks a device afresh how one stream stands, and
withsample_secondswhat its counters did over that time; and
clock_treegives the gPTP tree as the network view shows it. - Entity and vendor images in the entity list and the inspector are
smooth: each is shrunk once to the pixels it shows at, averaging what
each covers, rather than sampled jagged as it is drawn. - Sheets and floating bars slide by whole pixels, so their icons and
labels no longer hop against them as they settle.
Linux
- triib, triib-cli and triib-endpointd no longer hold
CAP_NET_RAW:
/usr/lib/triib/triib-netraw, the one program the packages grant it,
opens their raw sockets and passes them over. The desktop's portals
answer triib directly again, and debuggers and crash reports see it as
any other program. - triib-endpointd shares its MSRP participant with other programs on
this computer, such as plaa sending what it plays, which ask it on a
socket in the user's runtime folder to declare their talkers and to
listen to streams for them, and hear from it as their listeners and
the talkers of the streams they listen to come and go, this computer's
entities among them, which take those streams as they take their own;
it withdraws a program's declarations when the program goes. It says
hello to each program with its version and features, and answers each
request to declare a talker, so a program can tell what it can do and
why it refused. In AVB Lite it declares for the programs that run it
too, by CVU SRP in their entities' names, admitting their listeners
with its own entities' and telling them where to send each copy. - Two of triib-endpointd's inputs on one stream no longer withdraw each
other's listener declaration as one of them stops: a stream has one,
for all its listeners on this computer, in AVB Lite too. - This computer's entities carry triib's app icon as their logo and
Scramble Tools' as their vendor's, PNG memory objects that controllers
such as Hive read through Address Access. - triib-endpointd rides out a fault of ptp4l's own, as a transmit time
stamp coming late while the computer is busy, rather than falling
back to AVB Lite as though no gPTP peer answered. - triib-endpointd keeps its entities off AVB Lite on an interface
without a PTP hardware clock, which AVB Lite needs: it no longer falls
back to it there, says it can run it, or takes the link down to turn
EEE and PAUSE off for it. - triib starts triib-endpointd again whenever it stops while triib runs
and this computer's entities are listed, as after a crash, not only
as triib opens, waiting longer after each start that does not last;
the log of the run before is kept asendpointd.log.1. A daemon triib
started no longer lingers as a zombie once it stops, which triib took
for one still running. - An input of triib-endpointd's that stops listening while locked to its
stream counts an unlock, so a controller reading its counters no
longer takes it for still receiving. - This computer's entities answer for their AVB interface's counters:
how often its link came up and went down, and how often its gPTP
grandmaster changed, as Milan has a controller ask. - In AVB Lite, triib-endpointd hears other computers' CVU SRP on an
interface that drops frames of unregistered VLANs in hardware, as the
Intel I210 does: it holds the interface promiscuous while AVB Lite
runs, where before it heard them only while one of its inputs
listened. - In AVB Lite, a talker of triib-endpointd's serves up to 5 listeners
unicast unlessunicast_fanoutsays otherwise, as the profile now
recommends, where before it served 2. - triib-endpointd's streams offer the same formats as plaa's, from avb's
shared set: each of a stream's sizes at every rate where it fits a
frame, as the Extended Audio profile asks, where before a size went
only at the rates its stream's own channels fit. A stream of many
channels now offers 96 and 192 kHz at the smaller sizes, and a new
rate moves a stream too large for it to the most channels of its
packing that fit. AM824 is declared as MOTU's 8D declares it, of its
channels or fewer; a stream saved in the old AM824 comes back in the
new one. - An entity added to this computer is listed at once, greyed, its State
saying what it waits on: triib-endpointd starting, the interface being
set up for AVB, its link. The bar above the list says what the daemon
is doing until it is done, such as setting up the interface or starting
ptp4l, or that linuxptp is not installed. - This computer's entities advertise again as soon as their link comes
back up, as after triib-endpointd turns EEE and PAUSE off, rather than
10 s later: a new entity reached triib's list only after that wait.
Packages
- triib's app ID is
run.triib, triib.run reversed, as registered with
Apple, in place ofio.github.scrambletools.triib: the Mac bundle and
its BPF launch daemon, the desktop file, AppStream ID, icons and
Wayland app ID. The Mac package removes the launch daemon and receipt
earlier releases installed under the old ID, and the AppStream data
says it replaces it. macOS asks again once for the microphone and
audio capture, which it grants by bundle ID.
Development
- The AVB crates moved, with their history, to
scrambletools/avb, to be shared
with other apps:atdecc,avb-mrp,avb-net, andtriib-streamas
avb-stream. They are published on crates.io, where triib takes them
from.