CVE and update status of the FreeBSD ports tree3,295 unaddressed CVEs in 670 portsAll times are CET
Port details

audio/pipewire-spa-oss-ng 0.9.12_2

PipeWire SPA plugin implementing a FreeBSD OSS backend

Port info

Maintainer
kbowling@FreeBSD.org
Packages
latest: 0.9.12_2
Upstream
up to date
Last update
to 0.9.12_2 · 9c878207a1
Quarterly
2026Q4: 0.9.12_1
WWW
https://github.com/kev009/pw-oss
Links
cgit · VuXML · Report wrong data

Install

Package
# pkg install pipewire-spa-oss-ng
installs 0.9.12_2 from latest; from quarterly (2026Q4) 0.9.12_1
Port
# cd /usr/ports/audio/pipewire-spa-oss-ng && make install clean
Size
697 KiB download · 2.4 MiB installed
Depends on
devel/llvm19 19.1.7_4, multimedia/pipewire 1.6.9
License
MIT

Packages by version and architecture

latest

FreeBSD versionamd64aarch64i386
FreeBSD 160.9.12_20.9.12_1–
FreeBSD 150.9.12_20.9.12_2–
FreeBSD 140.9.12_20.9.12_1✗

quarterly (2026Q4)

FreeBSD versionamd64aarch64i386
FreeBSD 150.9.12_10.9.12_1–
FreeBSD 140.9.12_10.9.12_1✗

version as in the ports tree (latest) or the most common one (quarterly) · different version · ✗ not built · – no packages for this platform. Package sets that have not been rebuilt for 60 days are left out.

Unaddressed and VuXML only (0)

No unaddressed CVE and nothing reported by pkg audit for the packaged version 0.9.12_2.

Fixed (0)

No VuXML entries for this package.

Problem reports (0) · open in Bugzilla, most recently changed first

None.

Commits (16)

Mikael Urankar (mikael) · 0.9.12_2
lang/rust: Bump revisions after 1.99.0

PR:		299016
9c878207a1
Mikael Urankar (mikael) · 0.9.12_1
lang/rust: Bump revisions after 1.98.1

PR:		298139
7316461925
Kevin Bowling (kbowling) · 0.9.12
audio/pipewire-spa-oss-ng: Update to 0.9.12

Match FreeBSD's scaled PCM secondary-buffer policy and cache
nonuniform silence fills so larger rings remain allocation-free on
the data loop.

Stabilize native timer readiness coverage, harden checked SPA FFI
pointers, and refresh Rust dependencies.
774b6e73a0
Kevin Bowling (kbowling) · 0.9.11
audio/pipewire-spa-oss-ng: Update to 0.9.11

Harden live FreeBSD OSS behavior: reconnect devd monitors, improve
busy-owner diagnostics, probe exclusive rates without consuming PCM
channels, keep capture nonblocking, correct mixer state, release streams
on Suspend, and guard setup-phase streams from a live queue-sampling
assertion that could abort the data thread.

Expand OSS format support, cache companded silence fills, stabilize
adaptive scheduling, and adopt libc's typed FreeBSD ioctl helpers.
085302c293
Mikael Urankar (mikael) · 0.9.10_1
lang/rust: Bump revisions after 1.97.1

PR:		296645
9c892d2601
Kevin Bowling (kbowling) · 0.9.10
audio/pipewire-spa-oss-ng: Update to 0.9.10

Use oss APIs for channel mapping
0a8d56e7ef
Kevin Bowling (kbowling) · 0.9.9
audio/pipewire-spa-oss-ng: Update to 0.9.9

Improve playback timing and OSS event handling: avoid locked polling on
audio cycles, use enriched kqueue events for wakeups (with an optional
timer-based path), retain partial writes, retune without inserting
silence, and keep queued playback across Pause.

Generate format-correct PCM silence and harden host input and reentrant
event handling on the device and node paths.
6b4d861d00
Kevin Bowling (kbowling) · 0.9.8
audio/pipewire-spa-oss-ng: Update to 0.9.8

Advertise signed 24-bit, 32-bit float, and unsigned 8-bit PCM formats when
the OSS device or feeder supports them, alongside the existing 16- and
32-bit integer formats. Negotiation order, frame widths, and bitperfect
filtering are covered by tests.

Register per-module SPA log topics (spa.oss.device, .sink, .source,
.monitor) so PIPEWIRE_DEBUG='spa.oss.*:LEVEL' filters the plugin's output,
matching the spa.alsa convention.

Internally the FFI surface was reworked - unsafe confined to small kernels,
cross-loop device rebuilds moved onto owned messages instead of shared
state pointers, and the implementation organized by subsystem - with no
change to the audio path.
d4753024a1
Kevin Bowling (kbowling) · 0.9.7
audio/pipewire-spa-oss-ng: Update to 0.9.7

Keep the device byte stream frame-aligned across short writes and reads.
008647e34d
Kevin Bowling (kbowling) · 0.9.6
audio/pipewire-spa-oss-ng: Update to 0.9.6

pin EnumFormat stereo last so Pulse volume width stays stable after idle
(device close and reopen shows volume slider on Plasma6).
1c42660a0c
Kevin Bowling (kbowling) · 0.9.5
audio/pipewire-spa-oss-ng: Update to 0.9.5

Retune in place across graph quantum changes
8610f95231
Kevin Bowling (kbowling) · 0.9.4
audio/pipewire-spa-oss-ng: Update to 0.9.4

Capture (source) fixes for cramped rings and fat strides

Fixes a field report of skipping audio when recording and playing back
at once on a fat-stride USB capture device (20-channel S32, 80
bytes/frame): FreeBSD clamps the soft ring at CHN_2NDBUFMAXSIZE, so it
holds only ~1.6 graph periods there, and the capture path had no
headroom for arrival jitter.
8333ae0e59
Kevin Bowling (kbowling) · 0.9.3
audio/pipewire-spa-oss-ng: Update to 0.9.3

Fixes a field report of periodic drops with crackles on USB audio: the
sink's near-full fill branch keyed on small driver-forced fragments as a
proxy for a small total buffer, which uaudio breaks (1 ms soft fragments,
large grant) - near-full targeting added 100+ ms of latency and left one
fragment of overshoot headroom, so every normal servo excursion
short-wrote and dropped the tail.

Validated by a discrete-event simulation of the servo (exact DLL and
bandwidth-adaptation ports) that reproduces the field failure with the
old target and shows zero drops with the new one across +/-2000 ppm
drift, jitter storms and 4-hour runs, plus the live battery on hdspe(4).
7ff026ea1f
Kevin Bowling (kbowling) · 0.9.2
audio/pipewire-spa-oss-ng: Update to 0.9.2

robustness fixes, driver-clock overhaul, hardware volume control
108390b1e7
Kevin Bowling (kbowling) · 0.9.1
audio/pipewire-spa-oss-ng: Update to 0.9.1

Threading / robustness:
- Serialize all reconfiguration onto the data loop and stop the driver
  timer cleanly on pause/suspend (closes the renegotiation window behind
  a PipeWire audioconvert crash).
- Detach loop sources and close the timerfd on clear().
- Fail negotiation instead of aborting when the device won't open or
  rejects the format/channels/rate; validate peer-provided formats and
  buffers; return errors from all unhandled SPA entry points.
- Run without devd (hotplug disabled instead of aborting).

Audio / OSS:
- Probe device caps and advertise real formats, rates and channel
  layouts (mono through 7.1 in FreeBSD kernel interleave order, plus
  the device's native width as AUX channels).
- Open capture read-only so asymmetric play/rec channel counts work
  (shkhln/pw-oss#3).
- Run a DLL on capture: real clock delay/rate_diff and rate matching;
  prime capture with silence and a drained ring at startup.
- Report OSS underruns/overruns via the xrun callback.

Params / session:
- Store and replay the port Latency param; ProcessLatency and
  latencyOffsetNsec support.
- Device profiles (Off/Default) with node add/remove.
- Source port param parity: Format readback, Buffers info, re-emit.
- oss.delay: PropInfo entry, Props readback, per-device defaults via
  monitor.oss.rules, live re-apply.
- Log through the spa.oss topic (PIPEWIRE_DEBUG=spa.oss:N).
7fce4822bd
Kevin Bowling (kbowling) · 0.9.0
audio/pipewire-spa-oss-ng: New port

PipeWire SPA plugin implementing a FreeBSD OSS backend, tracking the
pw-oss fork at https://github.com/kev009/pw-oss.

Changes over upstream shkhln/pw-oss:

Audio / OSS:
- Size the OSS buffer to the device and fix data-loop aborts.
- Adapt the fill target to the device's real fragment size.
- Report clock delay and rate; require MemPtr buffers.
- Reset the channel before close so close() doesn't block draining.
- Close the device when the format is cleared.
- Advertise and re-emit the port Format param (ALSA-sink pattern).
- Don't abort the process on an oversized chunk or a bad/unpositioned
  format.

Session / config:
- Don't launch a second WirePlumber from exec.conf; the stock config
  already starts one, and the duplicate bricked audio.

Packaging / dependencies:
- Refresh all dependencies; migrate to libspa 0.10 (its pod builder
  now returns rustix::io::Errno).
- Rename the crate to spa-freebsd-oss-ng; the installed
  libspa_freebsd_oss.so is unchanged.
- Add package metadata and install docs for the
  audio/pipewire-spa-oss-ng port.
- Quiet clippy and dead_code warnings.

Conflicts with audio/pipewire-spa-oss as both install the same files.
84f3f80102