- Monitor to use the JSON APIs and move away from config/lua
- Enhance logic in wpsettings to parse settings which are JSON arrays,
some of the bluetooth properties are JSON arrays and parsing
logic confused them for a rule.
- Add corresponding tests around this logic as well.
- switch stream based lua script and their configs to wpsettings,
remove all the config/lua references
- move last remaining scripts and modules from 90-enable-all.lua to
wireplumber.conf
- delete all files in main.lua.d
For Bluetooth LE Audio device sets (e.g. pair of earbuds), bluez5-device
emits "internal" nodes for each individual device, and a combine node
for the device set.
Make the bluetooth monitor to create the combine nodes using
module-combine-stream.
Do some shenanigans to route ObjectConfig events from bluez5-device to
the correct combine node: look for combine nodes associated with device
sets, and put them as managed objects of the Spa devices.
Add support for BLE MIDI devices and local endpoints.
Disabled by default for now, as the feature currently faces some
DBus/SELinux policy issues e.g. on Fedora.
For offload SCO, the audio stream should be routed to/from Bluetooth
chipset via ALSA.
To do this, this commit prevent the creation of the sco-source or sco-sink
nodes, and replace them by loopback nodes.
It's up to the platform to correctly the the route to the Bluetooth chipset
ALSA entries.
When the loopback node state change to running, the script also call the
bluetoothOffloadActive param of the device to start/stop the SCO link.
entities here are the device cards and the device nodes.
sometimes null device objects are reported by monitor, this results in lua
exceptions handle this use case.
Fixes#361
Don't include profile name in node names for HFP and A2DP. Instead,
append the id number from the spa.bluez5 backend. The backend takes
care of choosing the unique id numbers appropriately.
This makes the sink/source names the same for A2DP and HFP. This allows
outputs directed to the Bluetooth device to remain there when switching
profiles between A2DP and HFP, without needing to determine the new
sink/source name.
The move to the WpDbus API dropped the "state" property from the plugin,
but left the property enum and use of it in alsa.lua. Remove the enum and
port over the code in alsa.lua.
This causes a crash when running in a VM because the code tries to
execute lua's "type()" and ends up executing the local string variable...
Fixes: #303
Currently v4l2 nodes will get higher priority than libcamera ones.
The default can be changed, of course, with wpctl.
Things are still not great if a camera is enumerated by both monitors.
The first node to be linked will grab the device and the second one
from the other subsystem will fail to negotiate.
Some devices (Mostly USB devices) have a generic pcm name (USB Audio)
that is quite useless. Filter this out and fall back to the device nick
in that case.
This avoids using device.nick, which is the card name, on all nodes
of a card. Useful on UCM, where analog, hdmi, etc are all exposed
as nodes on a single profile.
Currently, spa-bluez5 devices start in non-off profile, which causes
m-device-activation logic to set the highest priority profile instead of
the saved one.
Fix this by having spa-bluez5 start devices in off profile, similarly as
spa-alsa does.