Skip to content

Releases

triib 1.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 09:26

Host entities on Linux keep the network's time with gptpd, an 802.1AS
daemon whose packages come with triib's, in place of linuxptp's ptp4l:
their links and streams ride through grandmaster changes, restarts and
link bounces, and this computer can be the grandmaster. triib changes
the format of a running stream where the entity lets it, warns when a
Mac drops audio on its own clock, and names bridges' makers from the
IEEE's registries on every system.

Programs sharing triib-endpointd, such as plaa, keep their streams as it
stops or starts again, host entities' streams keep their frames in
order, and host entities send and analyze test tones and refuse the
format changes Milan 1.3 forbids while bound or streaming.

Controller

  • A stream input that will not take a new format while it runs, or a
    stream output whose entity can stop it, is stopped, set and started
    again, instead of asking for it to be disconnected first;
    triib-cli format does the same. Milan entities, triib's own host
    entities among them, take no new format on an input while it is bound
    or on an output while it streams, stopped or not, so those still ask.
  • A Mac's AVB entity receiving a stream on its own clock, as macOS
    starts it on Mac System Clock, drops audio from what it receives. It
    now raises an alarm, with a button in its Diagnostics tab to follow
    the stream's clock instead, and agents find it in list_problems.

Host entities (Linux)

  • Host entities keep the network's time with gptpd, an 802.1AS daemon in
    a package of its own, where triib-endpointd ran linuxptp's ptp4l.
    gptpd never steps or slews the card's clock, which stamps the peer
    delay exchanges the neighbor measures the link with, so those stay
    clean through the first lock, grandmaster changes, restarts and link
    bounces, where ptp4l could slew the clock for seconds faster than a
    bridge accepts; and streams follow a new grandmaster within a Sync or
    two, where they held the old time through ptp4l's slew and then
    jumped. gptpd marks its messages PTP 2.0 on every distribution, as a
    PreSonus AVB switch needs. triib-endpointd starts gptpd@<interface>
    where none answers, and triib says when gptpd is not installed, or will
    not start because another PTP daemon, such as a ptp4l run by hand,
    holds the interface.
  • This computer is grandmaster capable, with priority1 248 as Milan
    asks, where its entities never took the grandmaster's place.
    priority1 in gptpd's /etc/gptpd/<interface>.conf sets it: 255 for
    never, 246 to be preferred. Behind a switch taking no part in AVB, the
    network map shows this computer as the grandmaster where it is one,
    rather than out of sync.
  • gptpd decides when to fall back to AVB Lite and when to go back, and
    the entities follow it, where triib-endpointd weighed it and moved
    ptp4l between two units of triib's; a program sharing the port, such
    as plaa, sees the same decision.
  • For testing streams with other devices, an output with
    audio = "tones" sends a tone of its own on each channel, 500 Hz and
    125 Hz more for each channel after, and an input with
    audio = "analyze" checks what it receives against the tones it
    carries: the log says, for each time it listens, its samples and
    each channel's clicks, gaps, tone and peak, when the first clicks
    and gaps came, the clock it recovered and its stream's counters.
  • A talker that stops for want of listeners logs what it sent.
  • A host entity refuses a new stream format on an input while it is
    bound, and a new format or max transit time on an output while it
    streams, as Milan 1.3 asks (5.4.2.7, 5.4.2.30), where it took them and
    started the stream again.
  • triib-endpointd tells the programs sharing its MSRP participant, such
    as plaa, that it leaves as it stops or starts again, and keeps what
    they declared registered on the bridge for them to take over at once,
    where they lost their streams for 15 s; as it starts, they hand it
    back.
  • triib warns of a program sharing triib-endpointd that cannot take its
    streams over, such as an older plaa, in the Entities view and under
    Settings' entities file, where a change would start triib-endpointd
    again.
  • Starting, triib-endpointd has the bridge declare its streams again at
    once, rather than hearing of them at the bridge's next LeaveAll, up to
    10 s later.

Fixed

  • A host entity takes a stream format a controller adapts from one it
    offers as up to so many channels, such as AM824 at its exact
    channels, as Hive does on connecting; it refused all but the formats
    it lists.
  • A host entity's stream at four times its audio device's rate, such
    as 192 kHz into a 48 kHz virtual device, no longer stops its listener
    after a few seconds.
  • A host entity's output given a format that takes more bandwidth goes
    on as another of four stream IDs, which a bridge holds nothing of,
    where a MOTU switch went on policing the stream to its old frame size
    and dropped a third of its frames; listeners take the new ID as they
    connect. Where that ID was given up within 32 s, and for a talker of a
    program sharing the port such as plaa, the new format is declared
    once the bridge has let the old reservation go, two of its LeaveAlls
    later.
  • triib-endpointd's LeaveAll goes for every MSRP attribute type, as a
    switch's does, where it went only for those it declared, so that a
    switch declared its talkers again only at its own LeaveAll.
  • triib-link@ sends all of the AVB interface's frames on its first
    transmit queue: a card with several, such as the Intel I210, spread a
    stream's frames over them, and some left out of order.
  • A host entity's talker sends with priority 3, so the default fq_codel
    queue keeps a stream's frames in one flow, where each frame could take
    a flow of its own and leave out of order when the queue backed up, as
    when a talker catches up after waking late.
  • A host entity's talker starting its media clock again twice with no
    frame sent between, as after a late send and then a jump of gPTP time,
    changes the mr bit once, where the two changes cancelled and a
    listener saw the stream's time jump with no media reset.
  • A host entity withdrawing a declaration moments after making it sends
    its Leave, so a quick connect and disconnect no longer leaves a talker
    counting a listener that has gone.
  • A host entity's input keeps its talker when a bridge declares the
    talker failed and then advertised again without withdrawing the
    advertisement, as a PreSonus switch does while the talker's port comes
    up, where the input lost the talker for good once the failure cleared.
  • triib-endpointd answers a bridge's LeaveAll that carries the bridge's
    own declaration of VLAN 2 or an SR class domain with its own at once,
    where the bridge's registration of triib-endpointd's lapsed at each of
    those LeaveAlls until triib-endpointd's next one.
  • The Diagnostics tab's egress bar shows its empty track when an
    interface sends nothing, where it was drawn full, and would have been
    drawn empty at a full link.
  • The network map names a bridge's maker on macOS and Windows too, from
    the IEEE's registries built into triib, where it read the list a
    Linux system keeps. A bridge whose MAC address is in an MA-M, MA-S or
    IAB block is named by the company that block went to, where it showed
    as "IEEE Registration Authority".

Packages

  • The packages recommend gptpd, where they recommended linuxptp, and the
    PKGBUILD depends on it; gptpd's own packages come with triib's
    releases. The ptp4l units, their configurations and their polkit rule
    are gone, and installing stops any ptp4l unit an older triib started.
    Upgrading a Debian package removes the configurations in /etc/triib,
    keeping a changed one as .dpkg-bak, where dpkg would have kept them
    for good. A polkit rule still lets the person at the computer run triib-link@
    and triib-link-reset@.
  • The AppStream data dates 1.2.0 October 24, the day it was released.
  • The Windows installer's last page says this computer cannot be an AVB
    endpoint on Windows, no longer "yet": Windows gives no hardware time
    stamps for gPTP frames sent from user space, on the Intel I210 too.

triib 1.2.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 05:24

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 network tell 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_problems lists
    what triib finds wrong, errors first, from failed reservations and
    formats that differ to devices out of sync and counters gone wrong;
    stream_diagnostics asks a device afresh how one stream stands, and
    with sample_seconds what its counters did over that time; and
    clock_tree gives 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 as endpointd.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 unless unicast_fanout says 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 ab...
Read more

triib 1.1.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 21:51

A close button in the toolbar under compositors that draw no title bar,
and fixes for computers that 1.1.0 did not start on or listed too many
interfaces on: a Windows without the Visual C++ runtime, Linux without a
Vulkan driver, and a Mac's Thunderbolt Bridge and USB-C interfaces. Every
package is now tested in clean systems before each release.

Controller

  • On Linux, under a compositor that draws no title bar, Hyprland, niri,
    river or dwl, the toolbar ends with a button that closes the window.
    SCRAMBLE_UI_TITLE_BARS=0 shows it elsewhere, such as on sway set up
    without title bars, and SCRAMBLE_UI_TITLE_BARS=1 hides it.

Fixed

  • On Windows, triib and triib-cli carry the C runtime they were built
    with, so they start on a Windows without the Visual C++ runtime, such
    as a fresh install, where 1.1.0 could not.
  • On Linux without a Vulkan driver, triib draws with its software
    renderer rather than OpenGL, which made it quit as it opened under
    some compositors, such as one without a GPU on Debian 13 or Ubuntu
    26.04. WGPU_BACKEND=gl still asks for OpenGL.
  • On a Mac, the interfaces without an Ethernet port of their own,
    Thunderbolt Bridge's and those of USB-C ports being USB network
    devices, count as virtual, so the interface picker leaves them out
    with the others; an M4 Mac mini listed six of them.

Packages

  • Every package is installed, upgraded from the last release, run and
    removed in clean systems before each release: fresh Debian, Ubuntu,
    Fedora and Arch containers, a Windows container and GitHub's Windows
    and macOS runners.

triib 1.1.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 01:39

The Streams tab with peak meters, max transit times, media clock streams
on host entities with one chosen as their clock source, and host talkers
and listeners folded into host entities. On a Mac, the Mac's own AVB
entity as a host entity, with its configurations, and Listen controls
for what it receives and sends. The macOS app and installer are signed
with Scramble Tools' Developer ID and notarized.

Controller

  • The Streams tab lists an entity's streams, outputs then inputs, five
    before it scrolls, and shows the picked one's details under the list:
    its name, format, state, stream ID, destination and VLAN, and for this
    computer's entities its audio and channels. The Entity tab no longer
    shows streams.
  • Each stream in the Streams tab's list has a peak meter of its first two
    channels before its format, green, yellow from -12 dBFS and red from
    -6 dBFS, wherever this computer carries its audio: its own entities'
    streams, and other entities' streams connected to them.
    triib-endpointd measures its entities' streams and writes them 20
    times a second while the app shows them. On a Mac, a helper,
    triib --meters, measures the Mac's own entity's from its Core Audio
    device: what it receives from the device's input, what apps send it
    through a Core Audio tap. The list's rows line up with the inspector's
    headings and fields, and their formats with each other.
  • An output's max transit time is picked in its details, from 0.25 ms to
    50 ms, on any entity that answers GET_MAX_TRANSIT_TIME, Milan or not,
    the Mac's AVB entity among them. A running stream's refusal says to
    disconnect it first.
  • While a media clock stream is picked, the Streams tab leaves out the
    entity's channel mappings, which are its audio streams'.
  • The matrix remembers which entities are folded, across restarts.
  • An entity with several configurations has a configuration picker,
    each by its own name, read from its own strings, or by what it holds
    where names are missing or repeat: "16 in, 16 out, 8 ch streams".
    triib-cli configuration changes it, and triib-cli describe lists
    them.
  • A stream output's details list its listeners where its talker keeps
    them, as talkers outside Milan do, those not online marked, each with
    a button that disconnects it; triib-cli streams lists them too.
  • On a Mac, the Mac's own entity has Listen controls: a channel or a
    pair of what it receives, or of what apps send to one of its output
    streams, heard through a Core Audio tap (macOS 14.2 and later), played
    through an output picked, with a gain.
    The audio runs in a helper, triib --monitor, started again when it
    ends or hangs, which waits for a device that is not there, as the
    Mac's is not while none of its streams is connected; the choice is
    kept. Agents set it through the set_audio_monitor, audio_monitor
    and list_audio_devices tools. macOS asks once for the microphone,
    to hear what the Mac receives, and for audio recording, to hear what
    it sends. Before macOS 14.2, which has no taps, the controls offer
    what the Mac receives alone and say why.
  • On a Mac, the Mac's own AVB entity shows as a host entity, with its
    Core Audio device, which macOS makes only while one of its streams is
    connected, and a button that opens Audio MIDI Setup; where AVB is
    off, the Entities view says where to turn it on.
  • Controllers that do not advertise, as the Mac's own does not, are
    listed from the commands triib hears them send: their connection
    commands, which reach every station, and their commands to this
    computer's entities. Each is named for the computer it runs on, as
    "Controller on Mac mini", and stays listed for 5 minutes after its
    last command.
  • The network view leaves out controllers, which take no part in the
    clock or the streams, and shows the local host as its host entities
    where there is one, rather than as This computer beside them.
  • Controllers have an icon of their own, a traffic light, rather than
    the host's. triib's controller, which has no model to read, is
    named for the computer it runs on: "triib on Mac mini" after an entity
    from the same address, "triib on this computer", else "triib
    controller".
  • Settings has a Storage tab, as prev has: the presets folder and the
    entities file, each typed or chosen with Choose…, and checked before
    it is taken.
  • The interface picker's filter opens a menu that hides virtual
    interfaces, as before by default, wireless interfaces, and interfaces
    without a PTP hardware clock, each checked on its own.
  • An entity advertising another model is read again in place: the list
    and the inspector keep showing what was read before until the new
    read is done.
  • A stream that offers CRF formats counts as a media clock stream
    whatever it sends, as the Mac's media clock outputs sending one
    channel of AAF do.
  • triib-cli streams prints each input's counters, and its probing
    state and last ACMP answer where Milan's stream info gives them.
  • The new app icon.
  • The entity list's column and the inspector's field for the gPTP
    grandmaster an entity advertises say Grandmaster, rather than BTC, as
    does triib-cli discover; a column kept as btc in the settings
    loads as it.
  • The inspector is titled by the picked entity's name, cut short to
    leave the close button its room.
  • In the inspector, a value short enough to sit beside its label does:
    a rate, a channel count, a format, or a picker whose widest choice
    fits. Longer ones stay under their labels.
  • The entity list's rows are 40 pixels tall rather than 56, its Name
    heading lines up with the names rather than their icons, and the line
    after the names ends with the last row.
  • Each view has the same 16 pixel margin at the window's sides, below
    the toolbar and above the status bar; the matrix's sides were 24.
  • On a narrow window, the matrix's Hide what cannot connect shrinks to
    its icon, its label a tooltip, and the network view's "Showing …
    streams" goes below the map, so neither moves the view down.
  • Every scroll bar is as thin as the matrix's; the stream list's was
    thicker.
  • The Streams tab marks an output with an arrow out of a circle,
    pointing right, and an input with one into a circle, pointing left.
  • Settings and Presets open at once, rather than growing in.
  • On macOS, the toolbar's color runs up behind the title bar, which is
    transparent, rather than the system's tinted bar with a seam under
    it; a double-click there zooms or minimizes as the system's setting
    says.

Host entities (Linux)

  • Installing triib is all a host entity takes on an interface with a
    PTP hardware clock: where no ptp4l answers for the interface, the
    daemon starts triib's triib-ptp4l-gptp@<interface> unit itself,
    which the polkit rule lets it, rather than waiting for one to be
    enabled by hand. A ptp4l run another way on the interface stays as it
    is, and where linuxptp is missing the daemon says to install it.
  • triib opens with the host entities listed for its interface back on
    the network, starting the daemon, as after a restart; it started only
    as one was added or a preset recalled.
  • A host entity whose ptp4l clock is more than a millisecond off the
    grandmaster's reports itself not asCapable, so controllers show it out
    of sync, and the daemon says how far off it is; it reported asCapable
    however far off. Out of sync for 10 s, as when a driver reset the
    hardware clock, triib's own ptp4l unit starts again, ptp4l stepping
    the clock as it starts.
  • A stream's report says how many frames its socket dropped, its thread
    behind, telling frames lost here from frames lost on the way, and the
    socket holds about a tenth of a second of a stream rather than a few
    hundredths, where the system allows.
  • Every audio stream takes 2 and 8 channels as well as its own count, as
    the AVB community's Basic Audio profile has every talker and listener
    do, and the profile's 16 and 32 below a larger stream's own, at its
    own rates, so a stereo talker and an 8-channel input meet once a
    controller picks the format both take. A talker sends its audio's
    channels as the stream's first, with silence in the rest; a listener
    plays the stream's channels from the first, with silence where the
    stream has fewer. A format chosen so is kept. The entities' model IDs
    change, so controllers read them again once.
  • An output's SR class follows its format: class B's own formats, a frame
    each 250 µs, send it in class B, and the others in class A, so a
    controller picks the class by picking the format, and a class B stream
    is never Milan's frames sent two to an interval. Its max transit time
    moves from one class's default to the other's, where a controller set
    none. class = "B" in entities.toml starts an output in class B's
    formats. Every stream's descriptor says which classes its formats go
    in, and an entity with audio streams advertises class B support.
  • A change of sampling rate keeps a stream in its SR class: class B's own
    format moves to class B's own at the new rate, not to Milan's.
  • Talkers and listeners are folded into entities of any number of
    streams, as one of one stream does what they did. The Entities view's
    one button, Add entity, adds an entity with a stream each way, and its
    Streams tab adds and removes streams. triib 1.0's talker and listener
    entries, in entities.toml and in presets, read as entities of their
    one stream, named as the entity is, with their audio, format, binding,
    transit time and class. Their entity IDs stay; their model IDs change,
    so controllers read them again once.
  • One Add stream button, whose menu adds an audio input or output, or a
    media clock input or output.
  • Media clock streams: CRF in Milan's format, 48 kHz with a ti...
Read more

triib 1.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 04:10

AVB Wireless, devices of the computer's own with several streams each
way, AI agents through MCP, and on a Mac the Mac's own AVB entity.

Controller

  • AVB Wireless: triib asks each entity's AVB interfaces for their
    wireless status and shows it in the inspector, the entity list and the
    network map: the link, the time mode, and on an access point its
    stations and the frames a second it can deliver, which decide whether
    it admits Class A (12000 or more). Wi-Fi hops are marked on the map.
  • A matrix cell whose input must change its format first opens a menu of
    the formats both ends take; picking one changes them and connects.
  • The entity list keeps its headings and the names in view while the
    rest of it scrolls, and lines up plain media clock values with the
    menus.
  • On a Mac, triib reads and controls the Mac's own AVB entity, through
    Apple's AudioVideoBridging framework, as macOS never hands that entity
    what a program writes to BPF.
  • AI agents such as Claude Code can see and change the network through
    triib --mcp, a Model Context Protocol server: read the entities,
    their streams, formats, clocks and connections, connect and
    disconnect, change formats, sampling rates, clock sources and names,
    and identify. triib asks before each new agent, and Settings turns
    outside control off.
  • Shift turns rediscover into clear and rescan.
  • triib-cli wireless and wireless-config read AVB Wireless status
    and set whether an access point admits Class A; triib-cli network
    marks Wi-Fi hops.

This computer's talkers and listeners (Linux)

  • Devices: one entity with any number of streams each way, each set up
    on its own, with its own virtual audio device in PipeWire unless it
    uses a sound card. Its outputs send from one thread and its inputs
    take their streams on another.
  • Talkers can send in SR class B, with class B's own formats.
  • Talkers, listeners and devices each have their own icon.
  • MRP runs once for the port, for all the endpoints, and the port
    declares both SR classes' domains, so a bridge passes class B
    streams as well.

Packages

  • The Linux packages are built on Ubuntu 24.04, as PipeWire's Rust
    bindings need its headers, so they need glibc 2.39 or newer: Ubuntu
    24.04, Debian 13, Fedora 40 and later. Ubuntu 22.04 and Debian 12 are
    no longer covered.

Fixed

  • Connections to a class B talker say so, and a class B talker
    advertises class B support.
  • An output says it is sending only while a listener takes its stream.
  • Entities sharing a clock each show in the map, and a Wi-Fi station
    without a gPTP path shows under its access point.
  • Wireless status queries left unanswered are asked again.
  • This computer's entities offer only their internal clock.
  • triib-cli says when a listener's binding is not known.

triib 0.9.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 09:02

The first release: an ATDECC (IEEE 1722.1) controller with Milan and AVB
Lite support for Linux, Windows and macOS, and on Linux talkers and
listeners of the computer's own.

Controller

  • Discovers the ATDECC entities on the interface you pick, reads each
    entity model, its names, streams, clocks and Milan support, and keeps
    it, so a device seen before shows in full at once.
  • A connection matrix, talker outputs across and listener inputs down,
    each cell showing whether the stream flows, waits or has failed, and
    whether the two formats can meet.
  • A map of the network from each entity's gPTP path: bridges, devices,
    every stream as its own wire, failed reservations where they stop,
    and the clock tree from the grandmaster with each device in sync or
    not.
  • Renames entities, changes stream formats, sampling rates and clock
    sources, maps channels to streams, sets controls such as gain and
    mute, and makes a device identify itself.
  • Presets of each entity's clock sources, sampling rates, stream
    formats, controls and connections, recalled by changing only what
    differs.
  • A log of every ATDECC frame sent and heard, decoded in plain words,
    with the frames that break the rules marked and the reason given.
  • AVB Lite: each device's mode and why, its PTP offset, what its streams
    take of each link, and the alarms the profile calls for.
  • triib-cli does the same from scripts.

This computer's talkers and listeners (Linux)

  • triib-endpointd runs Milan talkers and listeners streaming AAF or
    AM824 at 48, 96 or 192 kHz to and from the computer's audio devices,
    on a wired interface with a PTP hardware clock and linuxptp's ptp4l.
  • Where no AVB bridge answers, they fall back to AVB Lite over switches
    that are not AVB bridges, and the daemon moves ptp4l between gPTP and
    the AVB Lite PTP profile through the triib-ptp4l-gptp@ and
    triib-ptp4l-lite@ units.
  • triib-link@ keeps Energy-Efficient Ethernet and PAUSE off the link,
    as AVB Lite asks, and triib-link-reset@ restarts an interface whose
    driver keeps its time stamps on received PTP frames.

Everywhere

  • 38 languages, following the system's or the one picked in Settings,
    right-to-left languages mirrored.
  • Material 3 design, light and dark, shared with prev.
  • Packages for Linux on x86_64, ARM64 and RISC-V (.deb, .rpm, tarball,
    and a PKGBUILD for Arch), Windows on x64 and ARM64 (.msi and .zip,
    signed by Scramble Tools LLC), and macOS on Apple Silicon (.pkg), each
    setting up what triib needs to send and receive raw Ethernet.
  • The protocols are Rust crates of their own, atdecc, avb-mrp and
    avb-net, which build without std for microcontrollers.

Known limits

  • The macOS package is not signed with a Developer ID or notarized, so
    macOS blocks it until you choose Open Anyway in System Settings,
    Privacy & Security.
  • Talkers and listeners of the computer's own run on Linux only.
  • The translations await review by native speakers.
  • The AVB Lite Endpoint Declaration TLV goes out only while ptp4l does
    not run gPTP on the interface, until linuxptp can carry it.
  • On Aquantia cards (Linux atlantic), the driver cuts unicast PTP
    frames short, so AVB Lite's delay requests stay multicast, and keeps
    time stamps on received PTP frames after the link renegotiates, which
    the daemon works around by restarting the interface.