pipewire issueshttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues2022-04-15T02:41:00Zhttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1642Game and Chat Audio not working on Steelseries Arctis 9 Wireless2022-04-15T02:41:00ZCentziliusGame and Chat Audio not working on Steelseries Arctis 9 Wireless# Version, Distribution, Desktop Environment:
Version (compiled on 2021-09-22 from the AUR package pipewire-git):
```
# pacman -Q | grep pipewire
gst-plugin-pipewire 1:0.3.36-1
manjaro-pipewire 20210425-2
pipewire-alsa-git 0.3.36.56.g8...# Version, Distribution, Desktop Environment:
Version (compiled on 2021-09-22 from the AUR package pipewire-git):
```
# pacman -Q | grep pipewire
gst-plugin-pipewire 1:0.3.36-1
manjaro-pipewire 20210425-2
pipewire-alsa-git 0.3.36.56.g884ecab42-1
pipewire-git 0.3.36.56.g884ecab42-1
pipewire-jack-git 0.3.36.56.g884ecab42-1
pipewire-media-session-git 0.3.36.56.g884ecab42-1
pipewire-pulse-git 0.3.36.56.g884ecab42-1
```
```
# pipewire --version
pipewire
Compiled with libpipewire 0.3.36
Linked with libpipewire 0.3.36
```
Distribution: Manjaro
Desktop Environment: Gnome
# Description of Problem:
Whenever both outputs of the Steelseries Arctis 9 Wireless (Chat and Game) are used simultaneously no audio can be heared on the headset anymore and the microphone input is also not coming in.
# How Reproducible:
Always
# Steps to Reproduce:
1. Plug in Headset with Pipewire master or udev rule setting the environment variable `ACP_PROFILE_SET=usb-gaming-headset.conf`
2. Start an application (like Mumble) and set audio output to "Steelseries Arctis 9 Chat" (and connect to a server)
3. Start an application (like Spotify) and set audio output to "Steelseries Arctis 9 Game" (and play a song)
2 and 3 can be accomplished by e.g. catia or the settings of mumble while having the game output as default (for spotify).
# Actual Results:
Audio output can no longer be heared and people can no longer hear me.
# Expected Results:
Audio works fine.
# Additional Info Eg. `pw-dump -N > file` (As Attachment Please):
[dump](/uploads/5f881361c30a2cac81bc63ef3f7ca3f7/dump)![Bildschirmfoto_von_2021-09-22_17-26-55](/uploads/d13d57df7480cfb96d52e4d5f85d020e/Bildschirmfoto_von_2021-09-22_17-26-55.png)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3145[Gamescope/Gamepadui] Steam Deck boot animation broke and no audio (bisected)2023-04-11T14:55:59ZMatthew Anderson[Gamescope/Gamepadui] Steam Deck boot animation broke and no audio (bisected)Immediately after upgrading pipewire on ChimeraOS I was presented with two problems:
- Steam Deck animation logo is static (first frame rendered and froze)
- No audio regardless of device profile selected in settings
I bisected to the ...Immediately after upgrading pipewire on ChimeraOS I was presented with two problems:
- Steam Deck animation logo is static (first frame rendered and froze)
- No audio regardless of device profile selected in settings
I bisected to the exact commit that causes this regression:
```
9664787cffb3eec096b257f52f7420afc6e381f6 is the first bad commit
commit 9664787cffb3eec096b257f52f7420afc6e381f6
Author: Wim Taymans <wtaymans@redhat.com>
Date: Mon Apr 3 17:00:49 2023 +0200
context: Only activate runnable nodes
Rework the runnable state calculation. It works in 2 steps now:
1. Collect all nodes linked to a driver in some way. Mark nodes that
are reachable with a non-passive link as runnable.
2, Go through all runnable nodes and set all linked nodes to the
runnable state as well, up to the driver.
Step 2 is new. Previously if there was just one runnable node, *all*
nodes would be set to runnable. With the addition of step 2, some nodes
might remain idle when they are not used.
This has the effect that virtual sinks without inputs stay idle when
the driver is otherwise running. Grouped nodes (like the RTP session)
will now also only run the linked nodes.
src/pipewire/context.c | 108 +++++++++++++++++++++
```
Downgrading to v 0.3.67 resolves the issue and I narrowed down the exact packages causing the issues.
- libpipewire-1:0.3.68-1 pipewire-1:0.3.68-1 causes the boot animation to freeze
- pipewire-audio-1:0.3.68-1 breaks the audio
Hardware: \
One X Player Mini \
CPU: Ryzen 7 5800U (APU) \
OS: ChimeraOS v42 (unstable) \
Kernel: 6.2.10 arch1-1
If you need any logs or any information I'll gladly provide them. The OS uses a modified gamescope-session from the Steam Deck and gamescope with steam embedded with the GamepadUI. Audio works on the gnome desktop when doing the tests, but the one game I played on from the desktop did not have any audio.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2621gcc verion requirement for PipeWire2022-08-05T17:26:40ZSavidha Egcc verion requirement for PipeWireObserved below error while compiling PipeWire with 4.8 gcc version.
FAILED: spa/plugins/alsa/libspa-alsa.so.p/alsa.c.o
cc -Ispa/plugins/alsa/libspa-alsa.so.p -Ispa/plugins/alsa -I../spa/plugins/alsa -I. -I.. -Ispa/include -I../spa/inc...Observed below error while compiling PipeWire with 4.8 gcc version.
FAILED: spa/plugins/alsa/libspa-alsa.so.p/alsa.c.o
cc -Ispa/plugins/alsa/libspa-alsa.so.p -Ispa/plugins/alsa -I../spa/plugins/alsa -I. -I.. -Ispa/include -I../spa/include -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -O2 -g -fvisibility=hidden -Werror=suggest-attribute=format -Wsign-compare -Wpointer-arith -Wpointer-sign -Wformat -Wformat-security -Wmissing-braces -Wtype-limits -Wvariadic-macros -Wmaybe-uninitialized -Wno-missing-field-initializers -Wno-unused-parameter -Wno-pedantic -Wold-style-declaration -Wdeprecated-declarations -Wunused-result -D_GNU_SOURCE -DFASTPATH -fPIC -DHAVE_ALSA_UCM -DHAVE_READLINK -MD -MQ spa/plugins/alsa/libspa-alsa.so.p/alsa.c.o -MF spa/plugins/alsa/libspa-alsa.so.p/alsa.c.o.d -o spa/plugins/alsa/libspa-alsa.so.p/alsa.c.o -c ../spa/plugins/alsa/alsa.c
In file included from ../spa/plugins/alsa/alsa.c:28:0:
../spa/include/spa/support/log.h:215:12: error: initializer element is not constant
(struct spa_log_topic){ .version = v, .topic = (t)}
**Requesting to provide required minimum gcc version to compile PipeWire component.**https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1477GDM screen lock changes audio configuration2022-04-15T02:19:03ZdarixGDM screen lock changes audio configurationGDM seems to have created pipewire config files now:
```
~gdm # find .config/pipewire
.config/pipewire
.config/pipewire/media-session.d
.config/pipewire/media-session.d/restore-stream
.config/pipewire/media-session.d/default-routes
```...GDM seems to have created pipewire config files now:
```
~gdm # find .config/pipewire
.config/pipewire
.config/pipewire/media-session.d
.config/pipewire/media-session.d/restore-stream
.config/pipewire/media-session.d/default-routes
```
I can see how this can be useful when it should play audio from the login screen.
But if I just use screen lock, it should *not* fiddle with the audio configuration.
1. it changes the audio profile for one of my audio devices, switching it to the port that has no cable plugged in. (HDMI audio via GPU)
2. it changes the default audio sink and source.
So you can not turn on music, lock your screen, because if you do that it switches to a different audio sink. This had been a problem with pulseaudio as well and I was actually happy that pipewire did not do that in the beginning.
Also tracked here https://bugzilla.opensuse.org/show_bug.cgi?id=1188978https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1084General problems with dmabufs2022-04-10T14:17:27ZcolumbariusGeneral problems with dmabufsThe current negotiation of formats is not really suitable for the usual workflow with dmabufs.
# Example dmabuf workflow
The usual flow between a producer and consumer of dmabufs is as follows:
1. The consumer queries its backend (gbm,...The current negotiation of formats is not really suitable for the usual workflow with dmabufs.
# Example dmabuf workflow
The usual flow between a producer and consumer of dmabufs is as follows:
1. The consumer queries its backend (gbm, vulkan, vaapi, etc.) for supported formats and modifiers.
2. The consumer sends a list of (format, modifier) pairs to the producer.
3. The producer takes the list (or the intersection of lists from multiple consumers), chooses a format and sends a list of modifiers corresponding to the given format to the buffer allocator (gbm, vulkan, ...) along with the size of the buffer.
4. The allocator will choose the "best" modifier from the list taking the buffer size into consideration and returns a buffer.
5. The producer renders to this buffer and sends it to the consumer along with the selected format and modifier.
6. The consumer imports the buffer to its backend with the given metadata.
# Problems with the current implementation
## Problems regarding a dmabuf only negotiation (I)
Currently both producer and consumer send their capabilities regarding the videostream (dimensions, formats, modifiers, etc.) to pipewire. Pipewire chooses a combination which should work for both and returns the choosen result. This has the following problems:
1. Formats and modifers are not paired. As such pipewire can return format, modifier combinations, which are invalid, see [modifier test](https://gitlab.freedesktop.org/columbarius/pipewire-modifier-test).
2. Even if we pair formats and modifiers in `SPA_PARAM_EnumFormat` (for example replacing the `SPA_FORMAT_modifer` in `SPA_PARAM_EnumFormat` with a list of pairs. `SPA_FORMAT_modifer` in `SPA_PARAM_Format` should stay the selected modifier as a long), the process of choosing the used Formats will still happen inside pipewire. But to select a good Format requires knowledge only available from the driver/hardware. In that case either pipewire has to add an allocator as a dependency (egl, vulkan, gbm, etc.) and queries it for a combination (and could allocate the buffer at this step right away) or it has to move this decision to an instance, which has this information. On options would be to select a format and send its modifier list to the producer which should do the allocation anyway. The producer can then allocate buffers with this list and has to update pipewire with the used modifier, so pipewire can set the correct `SPA_PARAM_Format`.
## Problems regarding dmabufs and shm buffers (II)
While formats are handled with `SPA_PARAM_Format`, the buffertype is handled by `SPA_PARAM_Buffers`. This Parameters are evaluated and merged independent from another. This creates the following problem:
1. Pipewire clients might support some formats both as dmabuf and shm, while other formats are only viable with one buffer type. It is not possible to specify this beforehand. This results in clients negotiating a format only to find no viable shared buffertype.
# Proposed requirements for dmabuf usage
If pipewire doesn't want to allocate dmabufs the following things would be needed:
* A way to correlate buffertype and format
* The node, which is responsible for creating the buffers, needs to receive a list of (format, modifier) pairs to choose the used modifier and to emit it back.
# Ideas
* Replace `SPA_FORMAT_modifer` in `SPA_PARAM_EnumFormat` with a list of (format, modifier) pairs. Formats only supported by shm can be marked as (format, SPA_DATA_Invalid). Clients not specifying `SPA_FORMAT_modifer` would be treated as shm only.
* Add an additional object to `SPA_PARAM_EnumFormat` for each buffertype (MemPtr and Memfd use the same underlying buffertype and would be identical) to specify format, modifiers an other differences there.
# Appendix:
Discussion about modifiers in libva:
[https://github.com/intel/libva/pull/505](https://github.com/intel/libva/pull/505#issuecomment-814778614)
irc discussion with emersion
```
columbarius about pipewire: If i didn't have a misconception on how to use pipewire, this should demonstrate the current shortcommings:
columbarius https://gitlab.freedesktop.org/columbarius/pipewire-modifier-test/-/tree/master
columbarius linked it to this issue https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1055
emersion oh nice!
emersion that's a pretty big issue indeed
emersion oh there's also some shm vs. dmabuf format mixing?
emersion great :/
columbarius there is no "real" mixing, because they are handled separately, so first you negotiate the format, then the buffer. If the buffer doesn't match the format .... probably try again and remove some possibilities.
columbarius So pipewire doesn't keep track of format buffertype combinations, you have to
columbarius *the pipewire client has to
columbarius does gbm offer me a list of "usefull" format/modifier pairs? because pipewire probably would need a value for any modifier, if a client just imports buffers with gbm and doesn't care / doesn't know better
emersion why do you want to use gbm?
emersion ah, because screencopy wants the client to allocate a dmabuf, and pipewire wants the producer to allocate the dmabuf?
emersion gbm doesn't give you lists for formats/modifiers
emersion even if it did, you need to pick one supported by the compositor
emersion i'd suggest using the linux-dmabuf protocol's "modifier" event for that
columbarius not only. I was more thinking, if there is a way to use dmabufs without an instance, which gives you format/modifier pairs. You probably don't want to give pipewire a list with every modifier for each format
emersion wlroots won't let you pick the format
emersion the compositor dictates the format
columbarius so you probably just want to announce, you can handle almost all
columbarius in this case you would just announce the formats/modifiers from the compositor
columbarius i was thinking about pipewire clients like obs
columbarius if they use vaapi, they will recieve this list in the future, but if they wan't to do sth. with gbm on their own ...
columbarius is this a possible usecase, without increasing the format/modifier list to all possible combinations?
emersion i'm not sure i'm following?
columbarius if i write a consumer, which (for some reason and with good performance) can handle all possible formats and modifier pairs my hardware supports (vendor specific, etc.) via mapping by gbm or some other mechanism. Then I probably can assume, that any producer will also only send format/modifier pairs, which are supported by the hardware and I have two options: Send all combinations of pairs/modifiers, which
columbarius the hardware supports (crawling the header file of modifiers), and have a really long list, or use a specific "meta" modifier, which signals for every format I support, every modifier will work just fine.
emersion you cannot assume gbm supports all modifiers
columbarius but can you assume, that all software working with modifiers on one hardware has the same restrictions wrt. modifiers?
emersion no
columbarius hmmm ....
emersion for instance, on amdgpu, kms can only do a subset of modifiers, gl/gbm can do a bigger subset, vaapi/vulkan can do a smaller subset
emersion also not all software is released/upgraded at the same time
columbarius Then the problem is, how to get a usefull list of pairs for every software, which want's to use dmabufs
emersion one component could add support for a new modifier, when other components still don't support it
emersion it would probably be sensible for the pipewire consumer to send (format, modifier) pairs it can deal with
columbarius yes. I just wanted to make sure, if/that any consumer has access to this information
emersion some parts are still missing
emersion gl/vulkan def support it
emersion vaapi is missing it
emersion (but that's vaapi's issue)
columbarius If that's the case, we probably only need a fast merging algorythm for ling lists ^^'
columbarius *long
emersion the negociation only happens once, so no need to optimize it
emersion it's not a hot codepath
emersion negotiation*
columbarius But it might be a lot of data? (don't have any clue on how many combinations are possible, but uint64_t has a lot of space))
columbarius s/possible/realistic/
emersion if you have 100 formats, each with 50 possible modifiers, it's 40KiB
emersion (100*4 + 100*50*8)
emersion plus maybe a few more bytes for lengths and whatnot
emersion wayland just sends the whole thing over the wire, fwiw
emersion with today's drivers, expect maybe 20 formats, with 5 modifiers each
emersion see for yourself with wayland-info i guess
columbarius I think the vaapi changes are in, before pipewire wants to break its api, but i can't think of a simple solution, which doesn't require breakage.
columbarius nit: shouldn't it be (100*50*(4+8)) = 60KiB since they are in pairs?
columbarius ok then it is fine. was just a knowledge gap, that's why i could not evaluate it. thankst
emersion maybe introduce a DMABUF2 buffer type, and let everyone know that DMABUF is broken
emersion yeah, it kind of depends how you send it
emersion fwiw, the kernel has an optimized packed struct to store format/modifier pairs
emersion see drm_format_modifier_blob
columbarius thing is FORMAT and BUFFER are two separate Objects
columbarius we either have to pair those, or create a Format and a FORMAT_DMABUF
columbarius ahh nice
columbarius * separate Objects without connection/reference
emersion mind, the packed struct is annoying to decypher
emersion it's using a 64-bit bitfield with a sliding window
columbarius pipewire assumes, that all formats are equal, just with differend kind of "packing"
emersion there is a libdrm MR to add a helper to decypher it
emersion sorry, i don't remember anything about pipewire's APIs :P
columbarius nice, when you create sth. that the next person looking at it writes a helper to not get confused xD
emersion yea :S
columbarius I think it would be nice, to try to specify how dmabuf and modifiers work in a usual mediapipeline
columbarius so should producer and consumer send pipewire all supported formats in a somehow prioritised list and pipewire will guess the best one, or would it better for pipewire to only intersect those lists and return the result to the producer in a way, that the producer can choose the "best" format/modifier combination? Or should the consumer do this.
columbarius additional: how does this work with multiple planes having different modifiers?
columbarius So probably a specific question for you: When using multiple planes, do they share a format and only can have different modifiers, or is it possible to have an arbitrary formats with an arbitrary modifier per plane?
emersion it's not possible to have a different modifier per plane
emersion there cannot be an ordered list of modifiers, because the "best" modifier depends on many parameters (e.g. buffer size)
emersion only the driver knows which modifier would be the best one, and can only decide at allocation time (where it knows about the size, format, usage, etc)
emersion some rules are explained here https://github.com/intel/libva/pull/505#issuecomment-814778614
emersion i'm supposed to write kernel docs for all of this, but haven't got the chance to do so yet
columbarius is there another example where two programs share a dmabuf and have to negotiate format and modifier?
emersion many: wayland compositors and clients, the kernel and the compositor, etc
emersion the consumer sends a list of acceptable (format, modifiers) pairs, then the producer allocates a buffer by intersecting pairs from multiple consumers, picking a format, and providing the list of modifiers for that format to gbm/vaapi/vulkan/?
columbarius thanks for the explanation. may i paste the relevant bits to the pipewire issue?
columbarius so the flow would be: obs want's to capture the screen. Asks egl for (format, modifier) pairs, sends them via pipewire to xdpw. xdpw takes the list, queries wlroots. wlroots will return the format of the buffers it uses internally. xdpw queries gbm with that format to get modifiers, intersect the modifiers with those from pipewire and will create a dmabuf. This dmabuf is handed over to wlroots to copy the
columbarius screen to it. After it returned xdpw will send it via pipewire to obs and has to declare the used modifier via pipewire params?
columbarius wouldn't wlr-screencopy-unstable-v1 need an extension to send a modifier list in the linux_dmabuf event?
emersion right now any (format, modifier) pair supported by the linux-dmabuf protocol is also supported by screencopy
emersion > xdpw queries gbm with that format to get modifiers
emersion there's no such query, but also no need for it:
emersion xdpw queries (format, modifier) pairs from the compositor and from the consumer, then picks the format indicated by screencopy, then passes the modifier list to gbm at alloc time (gbm_bo_create)
emersion yes, xdpw needs to send the whole dmabuf parameters (FDs, offsets, modifier, format, width, height, etc) to the consumer
columbarius all modifiers by linux-dmabuf supported, will this still be true for pixman or vulkan renderer? or custom renderers?
emersion pixman doesn't do dmabufs
emersion in theory, a driver could support texturing from a (format, modifier), but not support rendering to it
emersion but i'm not aware of such a case, yet
columbarius so we have two requirements for pipewire (as long as pipewire doesn't want o allocate dmabufs):
emersion feel free to copy-paste yeah
columbarius * allow a way to correlate buffertype with the format
columbarius * allow to send a list of (format, modifier) pairs from the consumer to the producer
emersion yeah sounds about right
```https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2207general protection fault in libpipewire-module-protocol-pulse.so2022-03-16T11:21:34ZJakub Buriánekgeneral protection fault in libpipewire-module-protocol-pulse.so<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): pipewire
Compiled with libpipewire 0.3.47
Linked with libpipewire 0.3.47
- Distribut...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): pipewire
Compiled with libpipewire 0.3.47
Linked with libpipewire 0.3.47
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): openSUSE Leap 15.3
- Desktop Environment: KDE Plasma 5.18.6
- Kernel version (`uname -r`): 5.17.0-rc7-lp153.2.g04b7727-default (happened also on 5.16)
## Description of Problem:
Pipewire crashes when changing audio volume, killing all audio.
## How Reproducible:
Keep changing audio volume
# Additional Info (as attachments):
- dmesg:
```
[16930.385734] show_signal_msg: 7 callbacks suppressed
[16930.385738] pipewire-pulse[1781]: segfault at 64692e6e6f91 ip 00007f392f4fdf78 sp 00007ffd0a160750 error 4 in libpipewire-module-protocol-pulse.so[7f392f4d4000+77000]
[16930.385746] Code: ff e9 29 ff ff ff e8 87 f8 fd ff 0f 1f 80 00 00 00 00 41 55 41 54 55 48 89 f5 53 48 89 fb 48 83 ec 08 48 8b 47 18 48 8b 7d 58 <8b> 70 28 e8 d0 23 fe ff 41 89 c5 48 8d 05 3e 16 25 00 48 8b 30 48
[16930.960550] traps: pipewire-pulse[25561] general protection fault ip:7fdedf70df78 sp:7fff894652e0 error:0 in libpipewire-module-protocol-pulse.so[7fdedf6e4000+77000]
```
- `pw-dump > pw-dump.log`: [pwdump.txt](/uploads/ada3710809a37bad9acc44150b82579f/pwdump.txt)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2035Generic/ambiguous video device names exposed by pipewiresrc GStreamer plugin2022-01-23T14:26:32ZSam MorrisGeneric/ambiguous video device names exposed by pipewiresrc GStreamer plugin- PipeWire version (`pipewire --version`): 0.3.43-2
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Debian GNU/Linux 11 (bullseye)
- Desktop Environment: GNOME
- Kernel version (`uname -r`): `5.15.0-2-amd6...- PipeWire version (`pipewire --version`): 0.3.43-2
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Debian GNU/Linux 11 (bullseye)
- Desktop Environment: GNOME
- Kernel version (`uname -r`): `5.15.0-2-amd64` `#1 SMP Debian 5.15.5-2 (2021-12-18)`
## Description of Problem:
I've got two webcams attached to my laptop. The device names exposed by pipewire are generic (infro from the kernel about the camera vendor/model name is not exposed) and ambiguous (there are two "Video Capture 3" devices), so I don't know which device I'm actually choosing on this screen:
![image](/uploads/1ba7f6188d839ca7a365e0dc52fd65a5/image.png)
## How Reproducible:
Always
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: [pw-dump.log](/uploads/e68aaf751eacba5aeaf04737440efd90/pw-dump.log)
- `gst-device-monitor Video`: [gst-device-monitor-video.txt](/uploads/7870eb0292360f7da9ff9a0c71923aa4/gst-device-monitor-video.txt)
- v4l2-ctl --list-devices: [v4l2-devices.txt](/uploads/c5c2444ee5303a3e975342b99e5a9d59/v4l2-devices.txt)
Of course, you can't do much when the kernel tells you the device is called `Video Capture 3`. But on the other hand:
1. Before pipewire, the dialog box I screenshotted above used to show me "Microsoft LifeCam VX-5000" and "Toshia Web Camera - HD", and this information does appear in the output of `pw-dump`, so it's being captured, but not used to construct the device name as exposed by `pipewiresrc`.
2. Where two devices with the same name are constructed (e.g., `Video Capture 3`) it would be helpful to provide extra information such as the vendor and device name as well, and make that part of the device name. Or maybe just do this in any case if the kernel's name for the device tends to be so generic/useless...https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3573getsockopt(SCO_OPTIONS) failed, loading defaults2023-10-16T06:36:34ZAsela Fernandogetsockopt(SCO_OPTIONS) failed, loading defaults- PipeWire version (`pipewire --version`):
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Debian GNU/Linux 12 (bookworm)
- Desktop Environment: No window manager
- Kernel version (`uname -r`): 6.1.0-rpi4-...- PipeWire version (`pipewire --version`):
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Debian GNU/Linux 12 (bookworm)
- Desktop Environment: No window manager
- Kernel version (`uname -r`): 6.1.0-rpi4-rpi-v8
- BlueZ version (`bluetoothctl --version`): 5.66
- `lsusb`:
```
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 1235:8211 Focusrite-Novation Scarlett Solo (3rd Gen.)
Bus 001 Device 003: ID 0eef:0005 D-WAV Scientific Co., Ltd WS170120
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```
- Bluetooth devices:
```
Device F0:39:XX:XX:XX:XX AceSailor S21
```
## Description of Problem:
With ofono, the MTU for the SCO audio path is not negotiated and the default of 48 is used which is too small. This results in choppy audio.
If ofono is disabled the MTU is negotiated fine and the audio is perfect.
In either case A2DP audio is fine.
Pulseaudio also had this issue in v14.x however they increased the default MTU from 48 to 144 to fix this.
https://github.com/pulseaudio/pulseaudio/blob/13ef02da1bc55b8a36ff35ca5f9d15cf7495932a/src/modules/bluetooth/backend-ofono.c#L331
https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/spa/plugins/bluez5/backend-ofono.c?ref_type=heads#L96
## How Reproducible:
Reproducible
### Steps to Reproduce:
1. Install ofono: ```sudo apt -y install ofono```
2. Modify dbus config to ensure the user can send information to ofono (/etc/dbus-1/system.d/ofono.conf)
3. Enable ofono ```sudo systemctl enable ofono```
4. Configure wireplumber to use ofono backend ```sed -i '/bluez5.hfphsp-backend/s/--//;s/native/ofono/' /etc/wireplumber/bluetooth.lua.d/50-bluez-config.lua```
5. Reboot and login
6. Connect the hfp_ag service with a phone
7. Make a phone call
### Actual Results:
wireplumber: getsockopt(SCO_OPTIONS) failed, loading defaults
### Expected Results:
Expect wireplumber to have obtained the MTU from the ofono socket
# Additional Info (as attachments):
```
ofonod --version
1.31
```
```
systemctl --user status wireplumber
Oct 15 21:56:01 MR2 systemd[767]: Started wireplumber.service - Multimedia Service Session Manager.
Oct 15 21:56:02 MR2 wireplumber[784]: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
Oct 15 21:56:02 MR2 wireplumber[784]: PipeWire's libcamera SPA missing or broken. libcamera not supported.
Oct 15 21:56:03 MR2 wireplumber[784]: Trying to use legacy bluez5 API for LE Audio - only A2DP will be supported. Please upgrade bluez5.
Oct 15 21:56:29 MR2 wireplumber[784]: getsockopt(SCO_OPTIONS) failed, loading defaults <---- Happens as call is made
Oct 15 21:56:45 MR2 wireplumber[784]: sco-sink: write failure: -9 (Bad file descriptor) <-- Happens as the call is terminated
```
```
systemctl --user status pipewire
Oct 15 21:56:01 MR2 systemd[767]: Started pipewire.service - PipeWire Multimedia Service.
Oct 15 21:56:03 MR2 pipewire[783]: spa.v4l2: '/dev/video14' VIDIOC_ENUM_FRAMEINTERVALS: Inappropriate ioctl for device
Oct 15 21:56:03 MR2 pipewire[783]: spa.v4l2: '/dev/video15' VIDIOC_ENUM_FRAMEINTERVALS: Inappropriate ioctl for device
Oct 15 21:56:03 MR2 pipewire[783]: spa.v4l2: '/dev/video21' VIDIOC_ENUM_FRAMEINTERVALS: Inappropriate ioctl for device
Oct 15 21:56:03 MR2 pipewire[783]: spa.v4l2: '/dev/video22' VIDIOC_ENUM_FRAMEINTERVALS: Inappropriate ioctl for device
Oct 15 21:56:03 MR2 pipewire[783]: spa.v4l2: '/dev/video14' VIDIOC_ENUM_FRAMEINTERVALS: Inappropriate ioctl for device
Oct 15 21:56:03 MR2 pipewire[783]: spa.v4l2: '/dev/video15' VIDIOC_ENUM_FRAMEINTERVALS: Inappropriate ioctl for device
Oct 15 21:56:03 MR2 pipewire[783]: spa.v4l2: '/dev/video21' VIDIOC_ENUM_FRAMEINTERVALS: Inappropriate ioctl for device
Oct 15 21:56:03 MR2 pipewire[783]: spa.v4l2: '/dev/video22' VIDIOC_ENUM_FRAMEINTERVALS: Inappropriate ioctl for device
```
During a phone call
```
wpctl status
PipeWire 'pipewire-0' [0.3.65, asela@MR2, cookie:684911199]
└─ Clients:
31. pipewire [0.3.65, asela@MR2, pid:785]
33. WirePlumber [0.3.65, asela@MR2, pid:784]
34. WirePlumber [export] [0.3.65, asela@MR2, pid:784]
90. wpctl [0.3.65, asela@MR2, pid:826]
Audio
├─ Devices:
│ 53. Scarlett Solo (3rd Gen.) [alsa]
│ 54. Built-in Audio [alsa]
│ 55. Built-in Audio [alsa]
│ 77. AceSailor S21 [bluez5]
│
├─ Sinks:
│ 32. Built-in Audio Digital Stereo (HDMI) [vol: 0.40]
│ * 69. Scarlett Solo (3rd Gen.) Analog Stereo [vol: 1.00]
│
├─ Sink endpoints:
│
├─ Sources:
│ * 70. Scarlett Solo (3rd Gen.) Analog Stereo [vol: 1.00]
│
├─ Source endpoints:
│
└─ Streams:
78. bluez_input.F0_39_XX_XX_XX_XX.0
79. output_FR > Scarlett Solo USB:playback_FR [active]
82. output_FL > Scarlett Solo USB:playback_FL [active]
80. bluez_output.F0_39_XX_XX_XX_XX.1
81. input_FL < Scarlett Solo USB:capture_FL [active]
83. monitor_FL
84. input_FR < Scarlett Solo USB:capture_FR [active]
85. monitor_FR
Video
├─ Devices:
│ 39. rpivid [v4l2]
│ 40. bcm2835-codec-decode [v4l2]
│ 41. bcm2835-codec-encode [v4l2]
│ 42. bcm2835-codec-isp [v4l2]
│ 43. bcm2835-codec-image_fx [v4l2]
│ 44. bcm2835-codec-encode_image [v4l2]
│ 45. bcm2835-isp [v4l2]
│ 46. bcm2835-isp [v4l2]
│ 47. bcm2835-isp [v4l2]
│ 48. bcm2835-isp [v4l2]
│ 49. bcm2835-isp [v4l2]
│ 50. bcm2835-isp [v4l2]
│ 51. bcm2835-isp [v4l2]
│ 52. bcm2835-isp [v4l2]
│
├─ Sinks:
│
├─ Sink endpoints:
│
├─ Sources:
│ 61. bcm2835-isp (V4L2)
│ 63. bcm2835-isp (V4L2)
│ 65. bcm2835-isp (V4L2)
│ 67. bcm2835-isp (V4L2)
│
├─ Source endpoints:
│
└─ Streams:
Settings
└─ Default Configured Node Names:
```https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/111Getting a lot of errors after/during usage of GNOME ScreenCast portal2021-12-30T16:38:04ZBenjamin BergGetting a lot of errors after/during usage of GNOME ScreenCast portalMy log is being spammed with the following message:
```
Dec 08 13:24:51 ben-x1 pipewire[17474]: [E][connection.c:513 pw_protocol_native_connection_flush()] could not sendmsg: Resource temporarily unavailable
```
To be honest, I a...My log is being spammed with the following message:
```
Dec 08 13:24:51 ben-x1 pipewire[17474]: [E][connection.c:513 pw_protocol_native_connection_flush()] could not sendmsg: Resource temporarily unavailable
```
To be honest, I am currently not sure how I triggered this situation. A quick try to reproduce it with the example python code did not result in any issue.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/880Getting run time error while run pipewire binary.2022-04-27T10:05:30ZSavidha EGetting run time error while run pipewire binary.Hi,
Integrating pipewire in Raspberrypi.
Intergrated pipewire version - 0.3.1 ( 74a1632f0720886d5b3b6c23ee8fcd6c03ca7aac )
our intention is to validate live streaming with raspberrypi camera module using pipewiresrc plugin.
Facing b...Hi,
Integrating pipewire in Raspberrypi.
Intergrated pipewire version - 0.3.1 ( 74a1632f0720886d5b3b6c23ee8fcd6c03ca7aac )
our intention is to validate live streaming with raspberrypi camera module using pipewiresrc plugin.
Facing below list of error while run the pipewire binary
**root@xxxxxxxxxx:~# pipewire
[E][000000063.099588][module-protocol-native.c:434 init_socket_name()] server 0xf58018: XDG_RUNTIME_DIR not set in the environment
[E][000000063.099701][impl-module.c:281 pw_context_load_module()] "/usr/lib/pipewire-0.3/libpipewire-module-protocol-native.so": failed to initialize: No such file or directory
[E][000000063.099946][daemon-config.c:202 pw_daemon_config_run_commands()] could not run command load-module: could not load module "libpipewire-module-protocol-native": No such file or directory
[E][000000063.100088][main.c:122 main()] failed to run config commands: No such file or directory **
Is there any configuration should we need to configure before running the pipewire binary?
Any pointers could be great help...https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/160Getting `unable to lock lockfile` Error On Make Run2021-12-30T16:38:06ZArun RaghavanGetting `unable to lock lockfile` Error On Make Run*Created by: Eoin-ONeill-Yokai*
Hi there, I've been curious to try out Pipewire so I followed some of the build instructions and have had some difficulties. I get this error message specifically:
```
SPA_PLUGIN_DIR=build/spa/plugins...*Created by: Eoin-ONeill-Yokai*
Hi there, I've been curious to try out Pipewire so I followed some of the build instructions and have had some difficulties. I get this error message specifically:
```
SPA_PLUGIN_DIR=build/spa/plugins \
PIPEWIRE_MODULE_DIR=build \
PIPEWIRE_CONFIG_FILE=build/src/daemon/pipewire.conf \
build/src/daemon/pipewire
[E][module-protocol-native.c:418 lock_socket()] unable to lock lockfile '/run/user/1000/pipewire-0.lock': Resource temporarily unavailable (maybe another daemon is running)
[E][module.c:277 pw_module_load()] "build/src/modules/libpipewire-module-protocol-native.so": failed to initialize: Resource temporarily unavailable
[E][main.c:106 main()] failed to run config commands
make: *** [Makefile:11: run] Error 255
```
I'm admittedly very new to building daemons on linux systems. My system is currently running Manjaro Gnome and I have a Scarlett 2i2 as my audio interface, for what it's worth. https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3552Getting your Asus ROG motherboard (or other HDA audio chips) to work like it ...2023-10-09T09:24:40ZpallasweptGetting your Asus ROG motherboard (or other HDA audio chips) to work like it did in windows.I've seen a bunch of issues here about Asus ROG motherboards and their sound devices that work fine in windows, not working in linux/pipewire. A quick web search shows that it's not uncommon. I had to go to a lot of trouble to get mine t...I've seen a bunch of issues here about Asus ROG motherboards and their sound devices that work fine in windows, not working in linux/pipewire. A quick web search shows that it's not uncommon. I had to go to a lot of trouble to get mine to behave, so I'm making an issue here with the solutions I found, so that there's some kind of record for others to use if they want to get good results.
This is all because every sound chip on every motherboard has it's own special setup, and asus modifies the stock realtek driver for your specific hardware, on windows, but linux uses a generic one-size-fits-all driver, then applies some specific 'quirks' as required, which may or may not include the changes you need for your specific setup. This is especially true of new, rare, or high-end boards (this includes gaming laptops) which haven't had their specific setup's quirks built into the kernel/ALSA stack, yet.
In my case, I have a motherboard which, in windows, I can open the realtek control panel and tick a box and it treats every output as a separate sound device. This lets me use the front panel's, and both sets of rear panel's, inputs and outputs, as separate devices, playing different sounds at the same time. In linux, my audio worked 'out of the box', but this feature was nowhere to be found. And I need it working.
First off, some links to kernel documentation about this:
https://www.kernel.org/doc/html/latest/sound/hd-audio/notes.html
https://www.kernel.org/doc/html/latest/sound/hd-audio/models.html
https://www.kernel.org/doc/html/latest/sound/hd-audio/controls.html#realtek-codecs
Next up, if you really need to tinker with it, you might need to use a tool call `hdajackretask`. This lets you specify what the kernel *thinks* your jacks do, and tell it specifically what they *really* do.
Last of all, even once you get all that working, ALSA ACP/UCM profiles will apply further settings to your system, which include such 'useful' (read: 'potentially breaking') things as muting inputs and outputs, disabling volume controls, disabling input or output selectors in the mixer, etc.
I can't tell you what specific changes will be needed for your specific motherboard and codec (chip), but what I'll do here is leave the changes I needed for mine - FWIW that's an Asus ROG Strix B550-E Gaming (and I'd bet that all of the ROG B550 and X570 boards will need these same tweaks), to give you an idea of what's in store.
Thankfully in my case in `hdajackretask`, the default pin configurations were actually correct. That being said, I still needed to use the tool to create a firmware patch which included three important items, to get things working. Those were the `model` of the codec to use (which could be specified elsewhere but since I needed these other two I make use of it here), and two kernel `hints`, enabling the option to select line-level or headphone-level outputs on those jacks, and enabling a separate volume control for my front panel headphone jack (so that it didn't have to share that control with the rear panel).
That file is named /lib/firmware/hda-jack-retask.fw and mine looks like this:
cat /lib/firmware/hda-jack-retask.fw
```
[codec]
0x10ec1168 0x104387d3 0
[pincfg]
0x12 0x40170040
0x14 0x01014010
0x15 0x01011012
0x16 0x01016011
0x17 0x01a18030
0x18 0x01a19031
0x19 0x02a19040
0x1a 0x0181303f
0x1b 0x02214020
0x1d 0x4047e629
0x1e 0x01456150
[model]
dual-codecs
[hints]
add_jack_modes=yes
indep_hp=yes
```
The `codec` and `pincfg` are the defaults and `hdajackretask` leaves them in place. I could probably just remove them, but I'm inclined to leave them as they are since they work.
The dual-codecs `model` is what enables the separate physical outputs to be treated as independent sound cards and not just one card with a bunch of outputs that can only be used one-at-a-time (ie, now if I plug headphones in the front and rear panel, they don't play the same sound, they each have their own output I can choose to play different sounds, which is important if you want to apply headphone treatment like AutoEQ or virtual surround (tip: try the pipewire SOFA filter, it will blow your mind), or if I want to take a pro-audio approach to things and use one set as a headphone monitor and the other set as line-level I/O for a hardware synthesizer. The `hints` section gives me `add_jack_modes` so that in alsamixer I can now select whether the jacks are supposed to amplify the signal for headphones, or leave it at line-level for the synths. The `indep_hp` hint gives me a separate volume control for the front and for the rear panel audio, rather than just sharing one slider for both.
Now, in order to actually _apply_ this firmware patch, I have to have another file in place, in `modprobe.d` (this is where you could just apply the `model`, if that's all you need)
That file is as follows:
cat /etc/modprobe.d/hda-jack-retask.conf
```
# This file was added by the program 'hda-jack-retask'.
# If you want to revert the changes made by this program, you can simply erase this file and reboot your computer.
options snd-hda-intel enable_msi=on patch=hda-jack-retask.fw,hda-jack-retask.fw,hda-jack-retask.fw,hda-jack-retask.fw
```
All of that is enough to get it working - kinda-sorta. The ability for things to work was there, but every time I'd reboot, it'd be broken again. Outputs were disabled, inputs were disabled, and volumes were set to 60% (why 60? because reasons I guess.)
Turns out that's UCM profiles being set up to disable things I need. I modify the profiles directly by means of search+replace with `sed`:
```
# Stop ALSA UCM from disabling our I/O
sudo sed -i "s/Playback Switch' off\"/Playback Switch' on\"/" /usr/share/alsa/ucm2/HDA/DualCodecs/HiFi.conf
sudo sed -i "s/Capture Switch' off\"/Capture Switch' on\"/" /usr/share/alsa/ucm2/HDA/DualCodecs/HiFi.conf
sudo sed -i "s/60\%/100\%/" /usr/share/alsa/ucm2/HDA/init.conf
```
This next step could be done manually in alsamixer but while I'm copypasting from my setup doc ;)
```
# Headphones are turned down by default, let's fix that
amixer -c1 cset numid=9 100%
```
The specific `model` and `hints` and `pincfg` settings you need, and the modifications you'll need to make to UCM to stop it from turning off your expensive features, are specific to your motherboard model, and I can't tell you what they are, you're just going to have to figure it out (or hope someone else did and shared it online like I'm doing right now).
Once all of that is done, if your distro is set up properly, when you reboot, it should save that state and then restore it when you boot up again, so you shouldn't need to touch it. All your volume and mute controls in pipewire are respected, these changes we've made are effecting things at a lower level, so you needn't worry about that.
As for the mechanics of how all that works, again, while I'm copypasting from my build docs, I'll just keep going (with minor modifications to remove my machine-specific backup location, and some foul language hahah:
```
# After this, it should be saved at shutdown and restored at startup, systemd's alsa-restore.service:
sudo systemctl status alsa-restore.service
# But you can make sure of it by running it manually with
sudo /usr/sbin/alsactl store
# and it will write it to /var/lib/alsa/asound.state
# So you can back that up:
sudo cp /var/lib/alsa/asound.state /some/place/you/make/your/backups/
# And restore it like should happen at boot time, with
sudo cp /some/place/you/make/your/backups/asound.state /var/lib/alsa/
sudo /usr/sbin/alsactl restore
# But it SHOULD all be automatic. Once the UCM files are 'modified'.
```
So, if you've got an Asus AM4 (B550 or X570) motherboard, or any other motherboard with the high-end gaming sound chips from realtek on it, I hope you enjoy having its full functionality, and if you've got some other board with similar issues, I hope this gives you some hints and direction to take, to hopefully find a way to get it to work.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2565Give advice for common cases like USB headphones in FAQ under "What are those...2022-07-18T08:19:00ZMikeGive advice for common cases like USB headphones in FAQ under "What are those Analog Stereo and Digital Stereo (IEC958) profile?"The FAQ has a question [What are those Analog Stereo and Digital Stereo (IEC958) profile?](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#what-are-those-analog-stereo-and-digital-stereo-iec958-profile) I was not able to fig...The FAQ has a question [What are those Analog Stereo and Digital Stereo (IEC958) profile?](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#what-are-those-analog-stereo-and-digital-stereo-iec958-profile) I was not able to figure out from it what to use for my USB headphones. I also found [a question](https://www.reddit.com/r/linuxaudio/comments/uvt05d/question_about_usb_dac_and_pipewire/) where the OP was, like me, confused about what to use, in this case for their "IFI hip dac" after having read the same FAQ.
My suggestion would be to add some advice like "For USB headphones, use analog" based on [this answer in reddit](https://www.reddit.com/r/Jabra/comments/w0wj2g/comment/ighpue3/?utm_source=share&utm_medium=web2x&context=3). That assumes that the advice was not just for my Jabra Evolve II 30 headset but for all USB headphones. If it is not possible or correct to give an answer that covers the vast majority of USB headphones, then give advice for well known brands eg. Jabra, Poly.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1873Glitches and skips when using builtin convolver and latency changes2021-12-08T19:41:22ZEvan ChangGlitches and skips when using builtin convolver and latency changes<!-- 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.40
- 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.40
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Arch Linux
- Desktop Environment: KDE Plasma 5.23.3
- Kernel version (`uname -r`): 5.15.5-arch1-1
## Description of Problem:
If the builtin convolver is active and the graph latency changes (such as when receiving a notification), audio will glitch/skip.
A workaround is to force a quantum with `pw-metadata -n settings 0 clock.force-quantum ${LATENCY}`, but I'd rather not have to give up dynamic latency.
A similar issue exists in [EasyEffects](https://github.com/wwmm/easyeffects/issues/1023) and [Jconvolver](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Simple-audio-post-processing), but I would expect that the native Pipewire implementation should work without glitches
## How Reproducible:
Always.
### Steps to Reproduce:
1. Start the builtin convolver as a sink.
2. Play music or other high latency audio.
3. Play another sound with a low latency (such as receving a notification, or toggling Discord's mute toggle, or terminal beep)
### Actual Results:
Audio glitches and skips.
### Expected Results:
Audio doesn't glitch.
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: [pw-dump.txt](/uploads/aa24b47b4ed1960766cfd749bec4b59a/pw-dump.txt)
- Convolver configuration: [hd600_autoeq.conf](/uploads/6f735521e9718b16fb949ab9adb601d2/hd600_autoeq.conf)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/529Glitching sound when CPU is used on 100%2021-12-30T16:38:36ZIgor RaitsGlitching sound when CPU is used on 100%Hello, on pipewire-0.3.18-1.fc34.x86_64 I observe some strange behavior. When CPU is fully occupied, music that I listen in Google Chrome produces glitches. I remember many years ago this was same in PulseAudio but haven't seen such beha...Hello, on pipewire-0.3.18-1.fc34.x86_64 I observe some strange behavior. When CPU is fully occupied, music that I listen in Google Chrome produces glitches. I remember many years ago this was same in PulseAudio but haven't seen such behavior for long time.
Not sure what additional information I could provide..https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/501Gnome Control Center Crashing2021-12-30T16:38:34Zjasker5183Gnome Control Center CrashingKeep getting these crashes in ABRT but libreport is unable to send the report to the server. I have the feeling pipewire is having something to do with this. I usually get this to happen by changing the output device, the volumes (top ic...Keep getting these crashes in ABRT but libreport is unable to send the report to the server. I have the feeling pipewire is having something to do with this. I usually get this to happen by changing the output device, the volumes (top icon and system) will detach from one another and gnome-control-center will crash. Here is core back trace file from crash directory.
[core_backtrace](/uploads/e70500c46bbc0512e5a9c2661acdfb1f/core_backtrace)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/53Gnome Desktop screencast (no audio)2022-03-30T12:57:04ZArun RaghavanGnome Desktop screencast (no audio)*Created by: lineber*
"In Fedora 27 Workstation, PipeWire provides screen capture and screencast recording in GNOME Shell."
In recent times, using other distros, I noticed that the Gnome screencast feature also captures audio. It doesn...*Created by: lineber*
"In Fedora 27 Workstation, PipeWire provides screen capture and screencast recording in GNOME Shell."
In recent times, using other distros, I noticed that the Gnome screencast feature also captures audio. It doesn't work with my Fedora 27 workstation. Doing a search I found that Ubuntu or other distro users would use a setting like:
`gsettings set org.gnome.shell.recorder`
but this will not work because the recorder is not know to the system.
Looking through the documentation, I cannot seem to find how to turn on the audio portion of the Gnome screencast with Fedora 27 or PipeWire.
Please provide me with a url on fixing this, or if it doesn't work in Fedora 27 due to PipeWire, then fix this feature. It should configure automatically, tho.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1857Gnome-{music, videos} loses audio on seeking forward2022-01-03T04:39:40ZPetar MargetićGnome-{music, videos} loses audio on seeking forward- PipeWire version (`pipewire --version`):
```
~ ▶ pipewire --version
pipewire
Compiled with libpipewire 0.3.40
Linked with libpipewire 0.3.40
```
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`):
Arch Linux...- PipeWire version (`pipewire --version`):
```
~ ▶ pipewire --version
pipewire
Compiled with libpipewire 0.3.40
Linked with libpipewire 0.3.40
```
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`):
Arch Linux
- Desktop Environment:
gnome
- Kernel version (`uname -r`):
5.15.4-arch1-1
## Description of Problem:
Gnome apps {gnome music, videos, web} lose audio on seeking forward.
## How Reproducible:
100% of the time.
### Steps to Reproduce:
1. Play some file in one of the aforementioned apps
1. Seek forward
1. [pw-dump.log](/uploads/dc60f22654aeba2eca770589f74108b3/pw-dump.log)Observe audio is out while progress bar and video playback resume normally
### Actual Results:
Loss of audio on seeking forward
### Expected Results:
Audio is played normally
### Notes:
I've tried with pipewire 0.3.39 and it's broken there too. Replacing pipewire with pulseaudio allows for normal audio playback on seeking forward in gnome apps. It's possible to recover audio in the playback by seeking backwards far enough. Sometimes audio does play normally when seeking forwards, assumption is I fast forward close enough to a key frame in a video.
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`:https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/340GNOME Shell crashes when changing outputs back and forth2021-12-30T16:38:17ZGeorges Basile Stavracas NetoGNOME Shell crashes when changing outputs back and forthThe second time I run `systemctl --user restart pipewire.service`, GNOME Shell crashes. It seems to be caused by a double-free. Here's the backtrace:
```
Core was generated by `/usr/bin/gnome-shell'.
Program terminated with signal SIGSE...The second time I run `systemctl --user restart pipewire.service`, GNOME Shell crashes. It seems to be caused by a double-free. Here's the backtrace:
```
Core was generated by `/usr/bin/gnome-shell'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f8cac147451 in loop_destroy_source (object=0x7f8c680a0fc8, source=0x4) at ../spa/plugins/support/loop.c:651
651 spa_log_trace(impl->impl->log, NAME" %p ", impl);
[Current thread is 1 (Thread 0x7f8c63f40640 (LWP 56362))]
(gdb) bt
#0 0x00007f8cac147451 in loop_destroy_source (object=0x7f8c680a0fc8, source=0x4) at ../spa/plugins/support/loop.c:651
#1 0x00007f8c8c582662 in on_remote_data (data=0x7f8c340187f0, fd=<optimized out>, mask=<optimized out>) at ../src/modules/module-protocol-native.c:762
#2 0x00007f8cac146b7b in loop_iterate (object=0x7f8c680a0fc8, timeout=<optimized out>) at ../spa/plugins/support/loop.c:306
#3 0x00007f8cbf57ec86 in do_loop (user_data=0x7f8c680156e0) at ../src/pipewire/thread-loop.c:241
#4 0x00007f8cc1a8f3e9 in start_thread () at /usr/lib/libpthread.so.0
#5 0x00007f8cc2684293 in clone () at /usr/lib/libc.so.6
```
Full backtrace:
```
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f8cac147451 in loop_destroy_source (object=0x7f8c680a0fc8, source=0x4) at ../spa/plugins/support/loop.c:651
651 spa_log_trace(impl->impl->log, NAME" %p ", impl);
[Current thread is 1 (Thread 0x7f8c63f40640 (LWP 56362))]
(gdb) bt full
#0 0x00007f8cac147451 in loop_destroy_source (object=0x7f8c680a0fc8, source=0x4) at ../spa/plugins/support/loop.c:651
_l = <optimized out>
impl = 0x4
__func__ = "loop_destroy_source"
#1 0x00007f8c8c582662 in on_remote_data (data=0x7f8c340187f0, fd=<optimized out>, mask=<optimized out>) at ../src/modules/module-protocol-native.c:762
_f = <optimized out>
_o = <optimized out>
impl = 0x7f8c340187f0
this = 0x7f8c34035150
conn = <optimized out>
context = <optimized out>
loop = 0x7f8c6804c200
res = -32
__func__ = "on_remote_data"
#2 0x00007f8cac146b7b in loop_iterate (object=0x7f8c680a0fc8, timeout=<optimized out>) at ../spa/plugins/support/loop.c:306
s = <optimized out>
impl = 0x7f8c680a0fc8
loop = 0x7f8c680a0fe0
ep =
{{events = 17, data = 0x7f8c34004930}, {events = 0, data = 0x0}, {events = 1021088792, data = 0x0}, {events = 4294967295, data = 0x0}, {events = 1073751872, data = 0x45b19132a76cf900}, {events = 4294967295, data = 0x557c9c6a7a10}, {events = 1074025104, data = 0x7f8c40046ac0}, {events = 3052, data = 0x1}, {events = 1676936768, data = 0x7f8cc34c2b5d}, {events = 2, data = 0x800000000000000e}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 2048, data = 0x7f0}, {events = 128, data = 0x6e}, {events = 119, data = 0x7f8cc260ed59 <_int_malloc+3465>}, {events = 0, data = 0x7f8c40000080}, {events = 126, data = 0x7}, {events = 0, data = 0x7f0}, {events = 80, data = 0x8e}, {events = 2080, data = 0x20}, {events = 128, data = 0x0}, {events = 0, data = 0x7f8cc260c305 <malloc_consolidate+373>}, {events = 1811939456, data = 0x7f8cc260c9cb <_int_free+1675>}, {events = 8, data = 0x7f8c63f3f890}, {events = 1676933200, data = 0x45b19132a76cf900}, {events = 1811939360, data = 0x7f8c680157e0}, {events = 1744918496, data = 0x20}, {events = 1676936768, data = 0x27}, {events = 2690000160, data = 0x7f8cc1a9b20f <pthread_setname_np+255>}, {events = 0, data = 0x0}, {events = 1676936768, data = 0x7f8cc3a19397 <_dl_deallocate_tls+87>}}
i = 0
nfds = <optimized out>
#3 0x00007f8cbf57ec86 in do_loop (user_data=0x7f8c680156e0) at ../src/pipewire/thread-loop.c:241
_f = <optimized out>
_res = -95
_o = <optimized out>
this = 0x7f8c680156e0
res = <optimized out>
__func__ = "do_loop"
#4 0x00007f8cc1a8f3e9 in start_thread () at /usr/lib/libpthread.so.0
#5 0x00007f8cc2684293 in clone () at /usr/lib/libc.so.6
```https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/393gnome-shell crashes with pipewire-pulse2021-12-30T16:38:26ZOschowagnome-shell crashes with pipewire-pulse```
(gdb) bt full
#0 0x00007fc9ead3f0fd in update_card (info=<optimized out>, control=0x5634e8504b00)
at ../gnome-shell/subprojects/gvc/gvc-mixer-control.c:2605
m = 0x0
card = 0x5634e8b342b0
i = <optimized ou...```
(gdb) bt full
#0 0x00007fc9ead3f0fd in update_card (info=<optimized out>, control=0x5634e8504b00)
at ../gnome-shell/subprojects/gvc/gvc-mixer-control.c:2605
m = 0x0
card = 0x5634e8b342b0
i = <optimized out>
key = <optimized out>
state = 0xffffffffffffffff
card_ports = 0x0
is_new = 1
control = 0x5634e8504b00
#1 _pa_context_get_card_info_by_index_cb (context=<optimized out>, i=<optimized out>, eol=0, userdata=<optimized out>)
at ../gnome-shell/subprojects/gvc/gvc-mixer-control.c:2800
control = 0x5634e8504b00
#2 0x00007fc9eac780f8 in () at /usr/lib/libpulse.so.0
#3 0x00007fc9eac0e034 in () at /usr/lib/pulseaudio/libpulsecommon-13.99.so
#4 0x00007fc9eac0fccf in pa_pdispatch_run () at /usr/lib/pulseaudio/libpulsecommon-13.99.so
#5 0x00007fc9eac65ad1 in () at /usr/lib/libpulse.so.0
#6 0x00007fc9eac1310f in () at /usr/lib/pulseaudio/libpulsecommon-13.99.so
#7 0x00007fc9eac14bef in () at /usr/lib/pulseaudio/libpulsecommon-13.99.so
#8 0x00007fca0806a65e in () at /usr/lib/libpulse-mainloop-glib.so.0
#9 0x00007fca7f2ea914 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#10 0x00007fca7f33e7d1 in () at /usr/lib/libglib-2.0.so.0
#11 0x00007fca7f2e9e63 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#12 0x00007fca7e6ed5bf in meta_run () at /usr/lib/libmutter-7.so.0
#13 0x00005634e770047f in main (argc=<optimized out>, argv=<optimized out>) at ../gnome-shell/src/main.c:550
ctx = <optimized out>
error = 0x0
ecode = <optimized out>
```
These happen somewhat randomly when the shell (or gdm) starts and don't happen with real pulse. I have a suspicion it is caused by the active profile of the default sink being unavailable at that point, which happens a lot for me with HDMI audio and multiple monitors. I.e. if you have 2 monitors with HDMI audio and only one is active at a time, the available card profile changes depending on which monitor is active, so if e.g. monitor 2 is active and the default HDMI audio sink when you shut gnome-shell down, and then start it up with monitor 1 active, the default sink has an unavailable profile.
edit: this is on pipewire 908dc6b10