pipewire issueshttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues2023-12-30T17:23:58Zhttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3739Module module-jackdbus-detect not starting on Ubuntu 23.10 when using jackd12023-12-30T17:23:58ZDan PModule module-jackdbus-detect not starting on Ubuntu 23.10 when using jackd1- PipeWire version (`pipewire --version`): 0.3.79
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Ubuntu 23.10 Mantic
- Desktop Environment: gnome flashback
- Kernel version (`uname -r`): 6.5.0-14-lowlaten...- PipeWire version (`pipewire --version`): 0.3.79
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Ubuntu 23.10 Mantic
- Desktop Environment: gnome flashback
- Kernel version (`uname -r`): 6.5.0-14-lowlatency
## Description of Problem:
I need to run OSSv4 so that my Lynx L22 card can work on Ubuntu. Doing so requires that I use the jackd1 package so that the I can access the OSS driver as jack2 does not support the OSS driver. In prior Ubuntu releases, I was able to issue the pactl commands from within qjackctl at startup so that pulseaudio would show up as a jack client enabling my non-pro audio programs such as firefox to work when I was using jack.
Upon upgrading to Ubuntu 23.10, pipewire has replaced pulseaudio but from what I understand, I should still be able to have pipewire show up as a jack client by issuing a pactl load-module module-jackdbus-detect command before starting qjackctl much like I would with pulseaudio. Unfortunately this does not work as expected.
Pipewire will not show up as a jack client in the qjackctl graph when using the jackd1 package unless module libpipewire-module-jack-tunnel is added to the context.modules section of pipewire-pulse.conf. Adding the following to pipewire-pulse.conf results in the pipewire client activating with jackd1
```
{ name = libpipewire-module-jack-tunnel
args = {
#jack.library = libjack.so.0
#jack.server = null
#jack.client-name = PipeWire
#jack.connect = true
#tunnel.mode = duplex
#midi.ports = 0
#audio.channels = 2
#audio.position = [ FL FR ]
# source.props = {
# extra sink properties
# }
# sink.props = {
# extra sink properties
# }
}
}
```
Adding this to the pipewire-pulse.conf file unfortunately results in pipewire-pulse starting jackd when pipewire-pulse is restarted. If I try to kill jackd it just starts up again.
## How Reproducible:
Always reproducible.
With default pipewire-pulse.conf file installed and issuing a pactl load-module module-jackdbus-detect before (or after) starting qjackctl results in no pipewire client activating in the qjackctl graph.
Editing pipewire-pulse.conf to add the libpipewire-module-jack-tunnel definition and restarting pipewire results in the pipewire client activating in the qjackctl graph.
But doing so automatically starts jackd when pipewire-pulse is restarted.
### Steps to Reproduce:
1. Install package jackd1 and qjackctl from repository
2. Issue: pactl load-module module-jackdbus-detect before starting qjackctl
3. Start qjackctl. Pipewire does not show up as a client
4. Edit /usr/share/pipewire/pipewire-pulse.conf and add libpipewire-module-jack-tunnel as noted above to the context.modules section.
5. Restart pipewire: systemctl --user restart wireplumber pipewire pipewire-pulse
6. Start qjackctl. Pipewire now shows up as a client
### Actual Results:
Pipewire does not show up as a client in the qjackctl graph unless pipewire-pulse.conf is modified as noted above.
### Expected Results:
Pipewire shows up as a client in qjackctl graph if pactl load-module module-jackdbus-detect is executed before starting qjackctl.
# Additional Info (as attachments):
Attached is pw-log file [pw_log](/uploads/d88bdbe0f71d46c5c63254d670b68a39/pw_log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3738a2dp profile not recognized by pipewire2024-01-15T21:43:58ZK. P.a2dp profile not recognized by pipewirehi. i've been struggling with my laptop's bluetooth headphones recently. my headphones can successfully connect using bluetooth, but regardless of which pair i test with (i have three), my system won't even detect or provide an option to...hi. i've been struggling with my laptop's bluetooth headphones recently. my headphones can successfully connect using bluetooth, but regardless of which pair i test with (i have three), my system won't even detect or provide an option to switch to A2DP. this occurs in multiple interfaces (gnome settings, blueman, pavucontrol) on debian 12 stable. asking for support from the debian reddit directed me here. i tried to follow the troubleshooting suggestions, but clearing the cache didn't help, and debian 12 doesn't seem to have a way to upgrade bluez past 5.66 that i can find.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3737Unable to hear audio or use mic when using mSBC/CVSD codecs2024-01-23T18:48:20ZArsalan2356Unable to hear audio or use mic when using mSBC/CVSD codecs<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
master doesn't show the errors but the audio still doesn't work (now in all codecs)
<!-- If you can, test also with Pulseaudio ...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
master doesn't show the errors but the audio still doesn't work (now in all codecs)
<!-- If you can, test also with Pulseaudio and list `pulseaudio --version`. -->
haven't tested in pulseaudio
- PipeWire version (`pipewire --version`):
Compiled with libpipewire 1.0.0
Linked with libpipewire 1.0.0
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`):
Arch Linux
- Desktop Environment:
GNOME Wayland
- Kernel version (`uname -r`):
6.6.8-zen1-1-zen
- BlueZ version (`bluetoothctl --version`):
bluetoothctl: 5.71
(from pacman the version is 5.71-3)
- `lsusb`:
```
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 1462:7c95 Micro Star International MYSTIC LIGHT
Bus 001 Device 004: ID 8087:0aa7 Intel Corp. Wireless-AC 3168 Bluetooth
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 046d:c08b Logitech, Inc. G502 SE HERO Gaming Mouse
Bus 005 Device 003: ID 320f:5000 Evision RGB Keyboard
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
```
- Bluetooth devices:
```
Device AC:BF:71:C9:B0:05 Black Diamond
```
## Description of Problem:
Unable to hear audio or use mic when using mSBC/CVSD codecs
Audio works in all other codecs
## How Reproducible:
Happens every time bluetooth headset is connected with the mSBC/CVSD codec
Switching from A2DP sinks to an mSBC codec always produces the error
### Steps to Reproduce:
1. Connect Bluetooth Headset with any audio profile
2. If in mSBC/CVSD, audio doesn't work.
3. If not, switching to mSBC/CVSD causes audio to stop working.
### Actual Results:
No audio or mic in mSBC/CVSD while audio works in other profiles
These errors are in my journalctl
pw.node: (bluez_input.AC_BF_71_C9_B0_05.0-147) suspended -> error (Received error event)
pw.node: (bluez_output.AC_BF_71_C9_B0_05.1-184) running -> error (Received error event)
### Expected Results:
Audio and mic work as expected in mSBC/CVSD profiles
# Additional Info (as attachments)
[pw-dump.log](/uploads/89d6433c0b6ba70eaf3ce6874cf2df3c/pw-dump.log)
[pipewire-bluez.log](/uploads/6b4fa562f0d34d00929bbb0d3fdb6aa7/pipewire-bluez.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3736After resuming from sleep, Pipewire causes Insta360 Link camera to continuous...2023-12-23T17:21:51ZBenjamin XiaoAfter resuming from sleep, Pipewire causes Insta360 Link camera to continuously disconnect and reconnect<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 1.0.0-2
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 1.0.0-2
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Arch Linux
- Desktop Environment: KDE Plasma 5.27.10, Frameworks 5.113.0
- Kernel version (`uname -r`): 6.6.7-arch1-1
## Description of Problem:
I just bought a Insta360 Link webcam. I noticed that my webcam's status light begins to flash periodically after resuming from sleep. Checking the journalctl logs, I realize that its actually disconnecting and reconnecting repeatedly and spamming the following logs every single time:
```
Dec 23 09:00:06 kernel: usb 1-6: USB disconnect, device number 79
Dec 23 09:00:06 wireplumber[377170]: [61:43:53.540998785] [377177] WARN DeviceEnumerator device_enumerator.cpp:282 Media device for node /dev/media0 not found
Dec 23 09:00:08 kernel: usb 1-6: new high-speed USB device number 80 using xhci_hcd
Dec 23 09:00:08 kernel: usb 1-6: New USB device found, idVendor=2e1a, idProduct=4c01, bcdDevice= 2.00
Dec 23 09:00:08 kernel: usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Dec 23 09:00:08 kernel: usb 1-6: Product: Insta360 Link
Dec 23 09:00:08 kernel: usb 1-6: Manufacturer: Amba
Dec 23 09:00:08 kernel: usb 1-6: Found UVC 1.10 device Insta360 Link (2e1a:4c01)
Dec 23 09:00:08 kernel: usb 1-6: Warning! Unlikely big volume range (=32767), cval->res is probably wrong.
Dec 23 09:00:08 kernel: usb 1-6: [9] FU [Mic Capture Volume] ch = 1, val = -32768/-1/1
Dec 23 09:00:08 mtp-probe[402931]: checking bus 1, device 80: "/sys/devices/pci0000:00/0000:00:01.2/0000:01:00.0/0000:02:08.0/0000:09:00.1/usb1/1-6"
Dec 23 09:00:08 mtp-probe[402931]: bus: 1, device: 80 was not an MTP device
Dec 23 09:00:08 wireplumber[377170]: [61:43:55.159383222] [377177] ERROR MediaDevice media_object.cpp:370 Device node /dev/video0 can't be accessed: Permission denied
Dec 23 09:00:08 wireplumber[377170]: [61:43:55.159401962] [377177] WARN DeviceEnumerator device_enumerator_udev.cpp:88 Failed to populate media device /dev/media0 (uvcvideo), skipping
Dec 23 09:00:08 mtp-probe[402935]: checking bus 1, device 80: "/sys/devices/pci0000:00/0000:00:01.2/0000:01:00.0/0000:02:08.0/0000:09:00.1/usb1/1-6"
Dec 23 09:00:08 mtp-probe[402935]: bus: 1, device: 80 was not an MTP device
Dec 23 09:00:08 pipewire[377168]: spa.v4l2: '/dev/video0' VIDIOC_QUERYCTRL: Input/output error
Dec 23 09:00:08 pipewire[377168]: spa.v4l2: '/dev/video0' VIDIOC_QUERYCTRL: Input/output error
Dec 23 09:00:08 wireplumber[377170]: <WpPortalPermissionStorePlugin:0x55a94f981020> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
```
Doing a `systemctl --user restart pipewire` temporarily fixes this until the next time I suspend to ram.
## How Reproducible:
Every time
### Steps to Reproduce:
1. Connect a Insta360 Link camera to your system
2. Suspend to RAM
3. Resume
### Actual Results:
Webcam starts to disconnect / reconnect repeatedly until Pipewire is restarted.
### Expected Results:
Webcam does not disconnect / reconnect after resuming from sleep and works properly
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: [pw-dump.log](/uploads/6956280432eee2b82b4a4ea266a4c337/pw-dump.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3735SOFA virtual surround is amazing and you should try it!!2024-03-27T23:28:17ZpallasweptSOFA virtual surround is amazing and you should try it!!I was asked a question in another issue and I felt like this deserved a post of its own. If anyone's on reddit or whatever, please feel free to re-post this. I want to spread the word. The people who did this deserve recognition.
> May ...I was asked a question in another issue and I felt like this deserved a post of its own. If anyone's on reddit or whatever, please feel free to re-post this. I want to spread the word. The people who did this deserve recognition.
> May I ask have you compared sofa filter vs atmos, or any hesuvi file
This is a long post because the short version is that SOFA is absolutely amazing and I want to encourage people as much as I possibly can, to try it, so they can enjoy it like I am, and so they can appreciate the people who gave it to us like I do.
#### Perspective...
Before I answer this I'm gonna say, I'm a bit of an audiophile snob and strongly opinionated about audio quality. It's not a status or fashion thing or anything, just a consequence of circumstance. Like, I'm a fish snob, because as a kid, I grew up around sailors, so when I ate a fish, we caught it, and we took this live fish and beheaded and gutted and scaled it right there on the gunwales, and took it into the galley and cooked it and then we ate it while we fished for more fish. Every fish I ate was alive 10 minutes ago. So I got used to fresh fish and became a fish snob. It was the same for me with music.
I started out playing musical instruments at a very young age (3 - mostly classical and jazz and blues guitar, and a little drumming) and was really into physics and electronics, and it all blended together and grew into a strong case of audiophilia.
Later on I used to run a small recording studio, as well as a substantial home studio worth more than the house it was in, I've done professional PA setups for large concerts (and conferences), high-end car audio systems professionally (a side gig but getting paid nonetheless).... Before you could buy headphone amps, I built my own based on the schematics for the amp from one of my mixing desks, it was as big as a cassette Walkman and had a battery life of just over an hour or so because this was long before lithium or rechargeable batteries, and I used it to drive full-size over-ear studio monitor headphones on the move, and people used to stare at me because back then, people didn't do that (although it's normal now, wearing beats by dre would make you a freak back then) my portable DAP was the size of a small backpack, literally, I carried a backpack so I could play music on the move.
When I set up home hifi systems for myself or friends (they always ask me to do it) I take room responses and measure speaker distances to calibrate the speakers and tune everything perfectly, I generally use 5.1 (because practically nothing is a 7.1 or more source yet) but I don't ever use a single subwoofer, because I don't subscribe to the notion that low frequency audio is omnidirectional (fight me, Dolby! :laughing: ), so all my sub channels are split into two subwoofers, so it's 5.2, 6.2 or 7.2 in all my gear, which usually means active amplification since most amps don't support that, and I don't do satellite speakers, all my drivers are full-range because I don't believe that just because it's on the side or behind me means I don't need to hear it all. Again this often amounts to multiple amps or active amped speakers.
I always tell all my friends to keep their speakers off the walls and off of cabinets and tabletops and away from corners and fill empty wall space because it all sounds cruddy, all my headphones are customised with special pads and tips and cables and all manner of stuff - although I don't go in for the stupid money grabbers like gold plated digital connectors (lol), or balanced cables for 1m long cable runs, that do nothing for quality at all, I do braid and solder and sheath my own cables to get the lengths correct for my body and the device, to avoid cable microphonics, and avoid ear fatigue...
....I'm an audio snob. So take my opinions from that perspective. You may think of this as over-cooked snobbery from some idiot who takes it way too seriously, or maybe you'll think this adds more weight to what I'm saying, maybe a little of both... that's up to you (and I take no offense either way), but I feel like understanding my perspective is important here, because I'll be rather blunt about it (although I removed expletives hehehe)
#### Observations:
**Contenders:**
Yep. I tried both atmos and hesuvi some time ago, a few times each over time, HeSuVi moreso, most recently a couple of years ago, when I was on Windows, and thought it was completely average at best, like all the other virtual surround solutions I'd ever heard. I was staunchly anti-virtual-surround, always had been, and try as I might - and I did try, because I believe in the theory that good quality virtual surround is 100% possible, I'd never heard anything that changed my mind. Even most true surround systems didn't do much for me, I mostly preferred good quality stereo (as in, two channel audio, but I didn't mind multiple speaker approaches to 2 channel, like quadraphonic speakers playing stereophonic signals) . I mentioned how I set up my surround systems but a great deal of the time they are only playing stereo, just three or four speakers per side.
The only superior solution I'd heard for virtual surround is in the battlefield game series starting from BF4 and the same tech in early BF1 (they broke it a little in later patches of BF1 and BFV was just ordinary), when they had Dolby engineers come on board at EA and they do a 360x360 degree practically infinite resolution sphere (pretty sure it's degrees measured in 32bit floating point, so... a lot of fractions of a degree (actually the math is easy 360/0xFFFFFFFF\*2= 0.00000016763806346982 degree resolution)) of audio, and position every sound in the game according to the location of the model in the game, so it's like infinite speakers. That really blew me away, you could stand next to a static audio source like a fire in a barrel, and turn your in-game character around in circles and look up and down and hear very clearly exactly where the sound was., and walk around with your eyes closed and tell how far you'd walked... it sounded real AF. They did a great job. There are a few similar implementations in games these days, because they can use the position of the in-game object as the source of the audio and it's all very precisely defined, so it was all about their algorithm for positioning, and naturally, Dolby are gonna kick some butt with that kind of thing. BF4 was ground-breaking. Not only in positioning but in occlusion and reflection (like the echoes of footsteps on hard floors indoors, or the sound of footsteps through a wooden wall vs through glass, etc)
**SOFA:**
But otherwise, I'd never heard virtual surround worth a damn. HeSuVi really improved a lot over the years (it's been around a LONG time now!) and to their credit, they've really got that going pretty well. No doubt, that takes second place. But it became a distant second when I read about the SOFA filter in pipewire, and thought, meh, I'll give it a try.... I'm always open to possibilities.... and I was **_b l o w n a w a y_** . Mind you, I spend an entire month finding the most correct model of my ears that I could out of the tens (hundreds?) of thousands of models freely available online - and **the model makes a BIG difference** (and I intend to make use of a tool that will take a 3D scan of your ear and make a model from that, when I have the time to get the equipment to take the scan) and two full days getting the speaker positions just right (which turned out to be _nowhere_ near where I expected). But the results are just astounding. I was so amazed, I was like "holy cow, people need to hear this" but it's kinda like VRR monitors, or high refresh rate.... you can't demonstrate it without actually looking at the real thing, and you can't explain this without actually hearing it.... so I played it to a tech savvy friend to be like "how amazing is this", intending to show off the technology, and played helicopter sounds flying around him... and he's a war vet and I gave him a PTSD attack I kid you not. I'm _not_ proud of that, it was a stupid accident and an absent-minded foolish choice for a demo sound, I'm a total frickin' idiot and I regret it terribly.... but it's a strong illustration of how real it sounds. He lasted about 3 or 4 seconds before he literally threw the headphones off his head and said, and I quote, "if this S### gets any better people are gonna end up killing themselves in movie theatres". And they were tuned for my ears, not his, so he wasn't even getting the full experience. With his hearing loss from artillery, not even close to the full experience. And his reaction was that strong.
Now I use it everywhere. My entire audio chain is surround, now. When I started using pipewire I was locked to stereo everywhere, unless it was a surround source playing to a surround speaker rig. If there was stereo anywhere in the chain, it was all mixed down to stereo at the source and treated as stereo throughout the entire chain. There are even posts on this issues log where you can see me talking about troubles I had locking it down that way. Now I upmix everything (a simple copy, no processing/filtering/delays/etc) because SOFA spreads it so perfectly that it doesn't distort the quality of the audio, which is a big deal to me as a musician and music lover. Usually virtual surround of upmixed music sounds like trash, the frequency response is all messed up and you lose a bunch of sound and it boosts certain other sounds... Hi-hats are super prone to distortion, guitars lose their tone, orchestras lose their depth and dynamics (that's one of the strongest ill-effects I find).... SOFA doesn't do any of that. You just feel like you're literally sitting in the middle of the band or orchestra sitting in a circle around you facing inward, like a reversed concert stage. I have a 5.1 recording of a concert I attended and it literally sounds like being there, it's amazing.
The only thing it's missing is a good tool to mix it with head tracking - and such tools DO exist, but they're a bit hard to set up, so I haven't done that yet, but I'm going to do it. Because the positioning is so strong that you feel like you can't move your head at all, or the whole 'world' in audio moves with your head and it's just bizarre to the brain.
But it's just amazing, there's a mind-blowing number of models available - which is a blessing and a curse, because you DO need to find the right model for your ears/head, to truly benefit from it, and it's like finding a needle in a haystack.... but pipewire's implementation makes it so easy to get it _just right_. Once you find the model, you just have to get the speaker positions _just so_, and it's literally just punch in the angles, really simple stuff.
I really want to encourage people to put in the effort - and it is a fairly considerable effort to be honest - to try it out, so they can experience it, and so they can appreciate thee amazing work that all the people involved have done - from uni nerds doing doctoral theses and publishing their models, to programmer nerds at pipewire making it a thing we can all experience, these people have done something amazing and I want everyone to know about it and to feel the enjoyment of it and to feel the appreciation for these people. I feel like nobody is talking about it and it's as if I'm the only person in the world who has ever eaten chocolate, I just want to give everyone a block of it and be like DUDE HOW AMAZING IS THIS?!
To quote my build instructions for my PC, just me thinking out loud to myself in a commented-out line
```plaintext
# These people amaze me
```
And I want everyone to know about it. Pipewire+SOFA is the absolute duck's nuts.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3734updating log topics on the fly2023-12-23T19:44:35ZBarnabás Pőczeupdating log topics on the flyContinuation of https://gitlab.freedesktop.org/pipewire/pipewire/-/merge_requests/1811#note_2218501.Continuation of https://gitlab.freedesktop.org/pipewire/pipewire/-/merge_requests/1811#note_2218501.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3733How much validation should spa_pod_is_array() and spa_pod_is_choice() do?2023-12-22T20:54:05ZDemi Marie Obenourdemiobenour@gmail.comHow much validation should spa_pod_is_array() and spa_pod_is_choice() do?How much validation should `spa_pod_is_array()` and `spa_pod_is_choice()` do?
At a minimum, I think they should validate that:
- If the element size of an array is zero, the container size must also be zero.
- If the element size is no...How much validation should `spa_pod_is_array()` and `spa_pod_is_choice()` do?
At a minimum, I think they should validate that:
- If the element size of an array is zero, the container size must also be zero.
- If the element size is nonzero, the container size must be a multiple of it, with no remainder. Otherwise the POD iterators will skip the last part.
- A choice must have enough elements for the type of choice it is:
- 1 for `SPA_CHOICE_None`, `SPA_CHOICE_Enum`, and `SPA_CHOICE_Flags`.
- 3 for `SPA_CHOICE_Range`.
- 4 for `SPA_CHOICE_Step`.
Should there be additional validation? For “simple” element types (None, Int, Long, Float, Double, Rectangle, Fraction), it’s safe to call the corresponding `spa_pod_is_*()` functions on the child POD even if the container is empty, but this is _not_ the case for String, Choice, Pod, Array, Object, Sequence, and possibly some others too. Furthermore, the POD iterators for arrays and choices assume that the elements are all the same size.
Therefore, I think that `spa_pod_is_array()` and `spa_pod_is_choice()` should check that either the type is a “simple” one, or that the size of the child POD is equal to the entire size of its parent (and that, therefore, the number of elements is 1). This ensures that one can always call `spa_pod_is_*()` on the result of `SPA_POD_ARRAY_CHILD()`/`SPA_POD_CHOICE_CHILD()` and it will guarantee that every element obtained by iteration is valid. Furthermore, I think that only “simple” types should be allowed for Choice elements, unless the Choice type is `SPA_CHOICE_None`. I’d prefer to disallow even that, but WirePlumber’s test suite creates a string Choice. IMO this is a bug in WirePlumber. It also [creates a too-small `Step`](https://gitlab.freedesktop.org/pipewire/wireplumber/-/blame/master/tests/wplua/scripts/pod.lua?ref_type=heads#L163) but that is a bug in the WirePlumber test suite.
Additionally, most types simply make no sense for non-`SPA_CHOICE_None` Choice PODs. Only `SPA_TYPE_Int` and `SPA_TYPE_Long` make sense for `SPA_CHOICE_Flags`, and only Int, Long, Float, Double, Rectangle, and Fraction make sense for Enum, Range, or Step Choices. The only exception is that a Bool Enum seems to be allowed.
For the fixed-size types, should `spa_pod_is_array()` and `spa_pod_is_choice()` also check that the element size is correct and (for Double and Long) that the pointer is properly aligned? Right now, `spa_pod_is_*()` allow for lengths that are overly long and are not aligned, so without these checks in `spa_pod_is_array()` and `spa_pod_is_choice()` one could dereference misaligned pointers during iteration. Alternatively, the `spa_pod_is_*()` functions could be changed to disallow overlong PODs and to perform an alignment check for Double and Long PODs. Doing both is the safest option, IMO.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3732Question: Can you explain the log outputs2023-12-22T17:57:28Zstefanu21Question: Can you explain the log outputsCan you explain the log output and its values
```bash
spa.alsa: hw:3,0c: follower delay:1350 target:3072 thr:1024 resample:1, resync (93 suppressed)
spa.alsa: hw:3,0c: follower delay:1489 target:3072 thr:1024 resample:1, resync (93 supp...Can you explain the log output and its values
```bash
spa.alsa: hw:3,0c: follower delay:1350 target:3072 thr:1024 resample:1, resync (93 suppressed)
spa.alsa: hw:3,0c: follower delay:1489 target:3072 thr:1024 resample:1, resync (93 suppressed)
spa.alsa: hw:3,0c: follower delay:1579 target:3072 thr:1024 resample:1, resync (93 suppressed)
spa.alsa: hw:3,0c: follower delay:1669 target:3072 thr:1024 resample:1, resync (93 suppressed)
spa.alsa: hw:3,0c: follower delay:1808 target:3072 thr:1024 resample:1, resync (93 suppressed)
spa.alsa: hw:3,0c: follower delay:1898 target:3072 thr:1024 resample:1, resync (93 suppressed)
.....
spa.alsa: hw:2,0c: follower:1 match:1 rate:1.000075 bw:0.128000 thr:1024 del:3593 target:3584 err:-9.000000 max:512.000000
spa.alsa: hw:3,0c: follower:0 match:0 rate:1.000019 bw:0.128000 thr:1024 del:1056 target:3072 err:15.647280 max:512.000000
spa.alsa: hw:3,0p: follower:1 match:0 rate:1.000000 bw:0.128000 thr:1024 del:2016 target:3072 err:-512.000000 max:512.000000
spa.alsa: hw:2,0p: follower:1 match:0 rate:1.000000 bw:0.128000 thr:1024 del:2044 target:3072 err:-512.000000 max:512.000000
spa.alsa: hw:2,0c: follower:1 match:1 rate:1.000070 bw:0.128000 thr:1024 del:3585 target:3584 err:-1.000000 max:512.000000
```
- What causes such a high error?
- What does the bt value says?https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3731overruns2024-01-21T09:46:49ZBruno SoverrunsHi,
i use Nobara(fedora38).
In Steam games i got many overruns with
pipewire
Compiled with libpipewire 1.0.0
Linked with libpipewire 1.0.0
any hints?
log
```
Dec 21 15:49:51 nobara-pc pipewire-pulse[2404]: mod.protocol-pulse: 0x55ab7...Hi,
i use Nobara(fedora38).
In Steam games i got many overruns with
pipewire
Compiled with libpipewire 1.0.0
Linked with libpipewire 1.0.0
any hints?
log
```
Dec 21 15:49:51 nobara-pc pipewire-pulse[2404]: mod.protocol-pulse: 0x55ab702dd720: [New World] overrun recover read:64233472 avail:32768 max:16384 skip:28672
Dec 21 15:49:51 nobara-pc pipewire-pulse[2404]: mod.protocol-pulse: 0x55ab702bc350: [New World] overrun recover read:63397888 avail:24576 max:16384 skip:20480
Dec 21 15:49:51 nobara-pc pipewire-pulse[2404]: mod.protocol-pulse: 0x55ab702dd720: [New World] overrun recover read:64266240 avail:24576 max:16384 skip:20480
Dec 21 15:49:51 nobara-pc pipewire-pulse[2404]: mod.protocol-pulse: 0x55ab70295470: [New World] overrun recover read:62701568 avail:65536 max:16384 skip:61440
Dec 21 15:49:51 nobara-pc pipewire-pulse[2404]: mod.protocol-pulse: 0x55ab702bc350: [New World] overrun recover read:63430656 avail:24576 max:16384 skip:20480
Dec 21 15:49:51 nobara-pc pipewire-pulse[2404]: mod.protocol-pulse: 0x55ab702dd720: [New World] overrun recover read:64299008 avail:24576 max:16384 skip:20480
Dec 21 15:49:52 nobara-pc pipewire-pulse[2404]: mod.protocol-pulse: 0x55ab70295470: [New World] overrun recover read:62767104 avail:32768 max:16384 skip:28672
Dec 21 15:49:52 nobara-pc pipewire-pulse[2404]: mod.protocol-pulse: 0x55ab702bc350: [New World] overrun recover read:63463424 avail:24576 max:16384 skip:20480
Dec 21 15:49:52 nobara-pc pipewire-pulse[2404]: mod.protocol-pulse: 0x55ab702dd720: [New World] overrun recover read:64331776 avail:24576 max:16384 skip:20480
```https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3730Feature request: `port-factory` module2023-12-21T16:22:24ZColin MarcFeature request: `port-factory` moduleIt's the requirement of the session manager to create port objects on nodes, and `pipewire-media-session` and WirePlumber have slightly different ways of doing that. Both, however, involve changing the `PortConfig` parameter on the node ...It's the requirement of the session manager to create port objects on nodes, and `pipewire-media-session` and WirePlumber have slightly different ways of doing that. Both, however, involve changing the `PortConfig` parameter on the node object. I'm new to working with pipewire as a developer, but this feels a bit like an implementation detail that should not leak outside the pipewire daemon.
It also seems to be violating the design concept of ownership, since client nodes are created by the clients. However, even setting aside whether it makes sense for this responsibility to be on the session manager at all, a `port-factory` module/factory would allow unifying the logic, validation, etc in different session managers. It would also allow ports to be defined in config using the same validation/logic - this exists for adapters with `auto-port-config`, but not for other nodes.
Context: I'm trying to implement a very very minimal session manager (for a two-node graph) in rust and finding it extremely tricky and error-prone to create ports.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3729Internal laptop microphone not working on latest KDE Neon (as well as other d...2024-01-12T12:20:47ZSerhij KišInternal laptop microphone not working on latest KDE Neon (as well as other distros)- PipeWire version: libpipewire 0.3.48
- Distribution and distribution version: KDE NEON 5.27.10
- Desktop Environment: KDE
- Kernel version: 6.2.0-39-generic (64-bit)
## Description of Problem:
Booting from live environment, my interna...- PipeWire version: libpipewire 0.3.48
- Distribution and distribution version: KDE NEON 5.27.10
- Desktop Environment: KDE
- Kernel version: 6.2.0-39-generic (64-bit)
## Description of Problem:
Booting from live environment, my internal mic of my new HP laptop does not work. In the audio settings it is not displayed. It gets displayed only when I pick Profile: Analog Stereo Duplex and check Show Inactive Devices.
Importantly, the problem is present across different distros and kernels. I have been trying out older and newer (newest) kerenels for about week now, and the problem persists. It is not due to live enviro either - one time I installed the distro on the laptop but nothing (I have dual boot with Win 11 where mic is fine).
Lastly, all the usual solutions (restarting pipewire, switching to pulseaudio, etc.) does not work.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3728Pointer arithmetic overflow in spa_pod_*_is_inside()2023-12-19T22:11:09ZDemi Marie Obenourdemiobenour@gmail.comPointer arithmetic overflow in spa_pod_*_is_inside()`spa_pod_*_is_inside()` allows out-of-bounds pointer arithmetic. This is undefined behavior and on 32-bit systems this could result in wraparound, allowing a bounds check to be bypassed. The patch might be similar to the patch for #3727.`spa_pod_*_is_inside()` allows out-of-bounds pointer arithmetic. This is undefined behavior and on 32-bit systems this could result in wraparound, allowing a bounds check to be bypassed. The patch might be similar to the patch for #3727.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3726SPA allows containers with sizes not a multiple of the element size2023-12-19T22:01:07ZDemi Marie Obenourdemiobenour@gmail.comSPA allows containers with sizes not a multiple of the element sizeIterating over such containers will perform out-of-bounds pointer arithmetic.Iterating over such containers will perform out-of-bounds pointer arithmetic.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3722SOFA spatializer doesn't work using the provided example2024-01-03T15:31:50ZDarkSwan86SOFA spatializer doesn't work using the provided example- PipeWire version (`pipewire --version`) :1.0.0
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Fedora 39
- Desktop Environment: KDE
- Kernel version (`uname -r`): 6.6.6-200.fc39.x86_64
## Description o...- PipeWire version (`pipewire --version`) :1.0.0
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Fedora 39
- Desktop Environment: KDE
- Kernel version (`uname -r`): 6.6.6-200.fc39.x86_64
## Description of Problem:
I'm trying to use the SOFA spatializer described on the [VIRTUAL SURROUND](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Filter-Chain#virtual-surround) section. I've created the folders as described, download different .sofa files, put them on a folder and changed the 7.1 spatializer.conf file paths to point to one of the .sofa files.
When i open the console and execute the pipewire -c filter-chain.conf, nothing happens, no errors on the console, no virtual sink is created. I've also tried absolute and relative paths on the .conf file, but nothing change. Also tried to reboot and apply the command above, nothing change.
I'm trying them with my Razer Kraken Tournament Edition (they works perfectly, recognized with all the profiles on the sound tray).
I am missing something? Is it possible to add a debug command to check if something is wrong or missing?
Thanks a lot for all the help and the fantastic project that is Pipewire!
## How Reproducible:
100%
### Steps to Reproduce:
### Actual Results:
No virtual sink created.
### Expected Results:
Virtual sink created and usable.
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: Attached[pw-dump.log](/uploads/e296564e89bbdbb5adf37cbe53ddb9a5/pw-dump.log)
The system is up to date as this date.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3721libpipewire-module-combine-stream doesn't do the right thing2023-12-20T16:23:19ZZaar Hailibpipewire-module-combine-stream doesn't do the right thing<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 0.3.71
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 0.3.71
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): NixOS 23.05 (Stoat)
- Desktop Environment: KDE 5.27.9
- Kernel version (`uname -r`): 6.1.67
## Description of Problem:
Good day, I'm trying to configure combined output to all devices as written in the [wiki](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Virtual-Devices#combine-sink-all-sinks) and it looks like it doesn't work as expected.
## How Reproducible:
### Steps to Reproduce:
1. Place the first example from the [wiki](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Virtual-Devices#combine-sink-all-sinks) in `~/.config/pipewire/pipewire.conf.d/combined-sink.conf`
2. `systemctl --user restart pipewire.service && systemctl --user restart pipewire-pulse.service`
3. Start playing a media
4. Select "My Combine Sink" in the output "devices"
### Actual Results:
No sound will be played. Looking at `helvum` below, I see that "My Combine Sink" is not connected to anything" actually. So no wonder nothing happens if I play sound through it
![image](/uploads/5266e2c1f1ebc05b00fb983571928752/image.png)
### Expected Results:
Sound will be played through any of they hardware devices.
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`:[pw-dump.log](/uploads/3f54505e411b35fccd3291cfca25679e/pw-dump.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3720Provide a SECURITY.md file2024-02-04T10:45:29ZDemi Marie Obenourdemiobenour@gmail.comProvide a SECURITY.md fileThis will make it clear what PipeWire’s security policy is, how to report security bugs, and how to be notified when one is found.This will make it clear what PipeWire’s security policy is, how to report security bugs, and how to be notified when one is found.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3719Rip out the trace ringbuffer2023-12-22T03:03:22ZDemi Marie Obenourdemiobenour@gmail.comRip out the trace ringbufferAs per [Wim Taymans’s comment](https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3719#note_2213903) it’s a bad idea.As per [Wim Taymans’s comment](https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3719#note_2213903) it’s a bad idea.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3718PipeWire makes more than one stream the driver at the same time2023-12-18T11:09:26ZDemi Marie Obenourdemiobenour@gmail.comPipeWire makes more than one stream the driver at the same timeQubes OS has a PipeWire module that provides support for Qubes OS’s paravirtual sound protocol. This module provides a capture stream and a playback stream. It currently (as of commit [cd160ef3f6483da22a7c492105a68e60cdfdb566](https://...Qubes OS has a PipeWire module that provides support for Qubes OS’s paravirtual sound protocol. This module provides a capture stream and a playback stream. It currently (as of commit [cd160ef3f6483da22a7c492105a68e60cdfdb566](https://github.com/QubesOS/qubes-gui-agent-linux/blob/cd160ef3f6483da22a7c492105a68e60cdfdb566/pipewire/qubes-pw-module.c)) has code to support being a driver, but uses a timer rather than interrupt-based scheduling.
It turns out PipeWire 1.0.0 makes _both_ streams the driver, as reported by `pw_stream_is_driving()`! In my case this is harmless as both streams are mostly independent, but in other cases I could see this confusing a module that is not expecting it. Is this a bug in PipeWire, a bug in my code, or something else entirely?https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3717Valve Index sound occasionally cuts out as new audio sources spawn2023-12-18T04:01:33ZBabble BonesValve Index sound occasionally cuts out as new audio sources spawnWe are having an issue with the valve index specifically with monado (A native linux XR runtime) where newly spawned audio sources on pipewire can cause complete silence to occur for a few seconds following their playback to the HMD.
Th...We are having an issue with the valve index specifically with monado (A native linux XR runtime) where newly spawned audio sources on pipewire can cause complete silence to occur for a few seconds following their playback to the HMD.
This happens both ways with microphone being affected by certain sound sources under the right conditions.
Anyone in possession of an index HMD to reproduce? If not, it might be possible to reproduce this over displayport audio. This may occur under other HMDs with display+audio pairs like the vive and vive pro.
Currently on pipewire 0.3.80, system is Gentoo but has been reproduced across distros.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3716Support config templating2023-12-21T18:11:26ZDmitry SharshakovSupport config templating# Proposal
Add special format sequences to insert CLI arguments (unbound ones, not including options) to the config file template.
## Goal
Useful for #3217 and other things. This way a template systemd unit could be created and used f...# Proposal
Add special format sequences to insert CLI arguments (unbound ones, not including options) to the config file template.
## Goal
Useful for #3217 and other things. This way a template systemd unit could be created and used for instantiation of the pipewire-aes67 per interface (as it should be). This will reduce user configuration effort required thus be attractive for less sysadmin-skilled engineers.