pipewire does not try to send audio to sonos over airplay
I am using arch so i am not sure but one moment sonos suddenly stopped to work with pipewire. most probably due to degrade of current version raop-discover. Sonos connected to network using Ethernet cable , computer as well.
This is output from avahi-browse _raop._tcp
Server version: avahi 0.8; Host name: ktotoPC.local
E Ifce Prot Name Type Domain
+ vlan1002 IPv4 Sonos-C43875707664@Media Room _sonos._tcp local
+ vlan1002 IPv4 sonosC43875707664 _spotify-connect._tcp local
+ vlan1002 IPv4 C43875707664@Media Room _raop._tcp local
+ vlan1002 IPv4 Media Room _airplay._tcp local
: Cache exhausted
....
not important stuff
.....
: All for now
During investigations i found that persist some kind of exchange between linux computer and port 7000 of Sonos over TCP . But Sonos just stay silent.
This is condition on Graph QT GUI during playing in firefox audio sample During this play i can hear sound using headphones connected to normal audio socket but sonos is silent. :
As i see in wireshark capture raop even dont try to stream audio to sonos.
**PIPEWIRE_DEBUG=3 pw-cli -m load-module libpipewire-module-raop-discover **
result :
[I][43007.700655] pw.context | [ pipewire.c: 647 pw_init()] version 0.3.70
[I][43007.701217] pw.conf | [ conf.c: 403 conf_load()] 0x5634f33cac00: loaded config '/usr/share/pipewire/client.conf' with 5 items
[I][43007.701423] pw.conf | [ conf.c: 951 pw_conf_section_for_each()] handle config '/usr/share/pipewire/client.conf' section 'context.properties'
[I][43007.701479] pw.context | [ context.c: 241 pw_context_new()] 0x5634f33ca310: parsed 1 context.properties items
[I][43007.703327] pw.conf | [ conf.c: 951 pw_conf_section_for_each()] handle config '/usr/share/pipewire/client.conf' section 'context.spa-libs'
[I][43007.703495] pw.context | [ context.c: 342 pw_context_new()] 0x5634f33ca310: parsed 2 context.spa-libs items
[I][43007.703561] pw.conf | [ conf.c: 951 pw_conf_section_for_each()] handle config '/usr/share/pipewire/client.conf' section 'context.modules'
[I][43007.703637] pw.module | [ impl-module.c: 162 pw_context_load_module()] 0x5634f33ca310: name:libpipewire-module-protocol-native args:(null)
[I][43007.704436] pw.conf | [ conf.c: 582 load_module()] 0x5634f33ca310: loaded module libpipewire-module-protocol-native
[I][43007.704531] pw.module | [ impl-module.c: 162 pw_context_load_module()] 0x5634f33ca310: name:libpipewire-module-client-node args:(null)
[I][43007.705114] pw.conf | [ conf.c: 582 load_module()] 0x5634f33ca310: loaded module libpipewire-module-client-node
[I][43007.705212] pw.module | [ impl-module.c: 162 pw_context_load_module()] 0x5634f33ca310: name:libpipewire-module-client-device args:(null)
[I][43007.705677] pw.conf | [ conf.c: 582 load_module()] 0x5634f33ca310: loaded module libpipewire-module-client-device
[I][43007.705740] pw.module | [ impl-module.c: 162 pw_context_load_module()] 0x5634f33ca310: name:libpipewire-module-adapter args:(null)
[I][43007.706234] pw.conf | [ conf.c: 582 load_module()] 0x5634f33ca310: loaded module libpipewire-module-adapter
[I][43007.706288] pw.module | [ impl-module.c: 162 pw_context_load_module()] 0x5634f33ca310: name:libpipewire-module-metadata args:(null)
[I][43007.706651] pw.conf | [ conf.c: 582 load_module()] 0x5634f33ca310: loaded module libpipewire-module-metadata
[I][43007.706705] pw.module | [ impl-module.c: 162 pw_context_load_module()] 0x5634f33ca310: name:libpipewire-module-session-manager args:(null)
[I][43007.707147] pw.conf | [ conf.c: 582 load_module()] 0x5634f33ca310: loaded module libpipewire-module-session-manager
[I][43007.707200] pw.context | [ context.c: 346 pw_context_new()] 0x5634f33ca310: parsed 6 context.modules items
[I][43007.707239] pw.context | [ context.c: 351 pw_context_new()] 0x5634f33ca310: parsed 0 context.objects items
[I][43007.707275] pw.context | [ context.c: 354 pw_context_new()] 0x5634f33ca310: parsed 0 context.exec items
[W][43007.707461] default | [ thread.c: 101 impl_acquire_rt()] acquire_rt thread:0x7fabb38bf6c0 prio:-1 not implemented
[I][43007.707583] pw.metadata | [ impl-metadata.c: 185 impl_set_property()] 0x5634f3401660: add id:0 key:log.level type: value:0
[I][43007.707650] pw.metadata | [ impl-metadata.c: 185 impl_set_property()] 0x5634f3401660: add id:0 key:clock.rate type: value:48000
[I][43007.707692] pw.metadata | [ impl-metadata.c: 185 impl_set_property()] 0x5634f3401660: add id:0 key:clock.allowed-rates type: value:[ 48000 ]
[I][43007.707731] pw.metadata | [ impl-metadata.c: 185 impl_set_property()] 0x5634f3401660: add id:0 key:clock.quantum type: value:1024
[I][43007.707768] pw.metadata | [ impl-metadata.c: 185 impl_set_property()] 0x5634f3401660: add id:0 key:clock.min-quantum type: value:32
[I][43007.707806] pw.metadata | [ impl-metadata.c: 185 impl_set_property()] 0x5634f3401660: add id:0 key:clock.max-quantum type: value:2048
[I][43007.707844] pw.metadata | [ impl-metadata.c: 185 impl_set_property()] 0x5634f3401660: add id:0 key:clock.force-quantum type: value:0
[I][43007.707880] pw.metadata | [ impl-metadata.c: 185 impl_set_property()] 0x5634f3401660: add id:0 key:clock.force-rate type: value:0
[I][43007.707921] pw.module | [ impl-module.c: 162 pw_context_load_module()] 0x5634f33ca310: name:libpipewire-module-link-factory args:(null)
[I][43007.708512] mod.protocol-native | [ local-socket.c: 70 try_connect()] connecting to 'pipewire-0' runtime_dir:/run/user/1000
[I][43007.716291] pw.module | [ impl-module.c: 162 pw_context_load_module()] 0x5634f33ca310: name:libpipewire-module-raop-discover args:(null)
[I][43007.738023] mod.raop-discover | [module-raop-disc: 340 create_stream()] loading module args:'{ "raop.ip": "10.111.222.190", "raop.ip.version": 4, "raop.port": 7000, "raop.name": "C43875707664@Media", "raop.hostname": "Sonos-C43875707664.local", "raop.domain": "local", "raop.audio.codec": "PCM", "raop.encryption.type": "auth_setup", "device.model": "One", "raop.transport": "udp"}'
[I][43007.738161] pw.module | [ impl-module.c: 162 pw_context_load_module()] 0x5634f33ca310: name:libpipewire-module-raop-sink args:{ "raop.ip": "10.111.222.190", "raop.ip.version": 4, "raop.port": 7000, "raop.name": "C43875707664@Media", "raop.hostname": "Sonos-C43875707664.local", "raop.domain": "local", "raop.audio.codec": "PCM", "raop.encryption.type": "auth_setup", "device.model": "One", "raop.transport": "udp"}
[I][43007.741585] mod.protocol-native | [ local-socket.c: 70 try_connect()] connecting to 'pipewire-0' runtime_dir:/run/user/1000
[I][43007.741772] pw.conf | [ conf.c: 951 pw_conf_section_for_each()] handle config '/usr/share/pipewire/client.conf' section 'stream.properties'
[I][43007.742920] spa.audioconvert | [ audioconvert.c: 1199 reconfigure_mode()] 0x5634f34a1fc0: port config direction:0 monitor:0 control:0 mode:2 0
[I][43007.743117] spa.audioconvert | [ audioconvert.c: 350 init_port()] 0x5634f34a1fc0: add port 0:0 position:UNK 0 0 0
[I][43007.743187] spa.audioconvert | [ audioconvert.c: 1199 reconfigure_mode()] 0x5634f34a1fc0: port config direction:1 monitor:0 control:0 mode:2 0
[I][43007.743294] spa.audioconvert | [ audioconvert.c: 350 init_port()] 0x5634f34a1fc0: add port 1:0 position:UNK 0 0 0
[I][43007.743367] spa.audioconvert | [ audioconvert.c: 1199 reconfigure_mode()] 0x5634f34a1fc0: port config direction:0 monitor:0 control:0 mode:3 1
[I][43007.743566] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'monitor.channel-volumes' val:'false'
[I][43007.743631] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'channelmix.disable' val:'false'
[I][43007.743688] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'channelmix.normalize' val:'false'
[I][43007.743743] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'channelmix.mix-lfe' val:'true'
[I][43007.743795] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'channelmix.upmix' val:'true'
[I][43007.743854] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'channelmix.lfe-cutoff' val:'0.000000'
[I][43007.743913] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'channelmix.fc-cutoff' val:'0.000000'
[I][43007.743969] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'channelmix.rear-delay' val:'0.000000'
[I][43007.744022] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'channelmix.stereo-widen' val:'0.000000'
[I][43007.744076] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'channelmix.hilbert-taps' val:'0'
[I][43007.744129] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'channelmix.upmix-method' val:'none'
[I][43007.744180] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'resample.quality' val:'4'
[I][43007.744233] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'resample.disable' val:'false'
[I][43007.744284] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'dither.noise' val:'0'
[I][43007.744334] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'dither.method' val:'none'
[I][43007.744387] spa.audioconvert | [ audioconvert.c: 864 parse_prop_params()] key:'debug.wav-path' val:''
[I][43007.744476][channelmix-ops.c: 227 make_matrix()] pairing UNK channels (1,000000)
[I][43007.744725] pw.node | [ impl-node.c: 983 check_properties()] (raop_sink.Sonos-C43875707664.local.ipv4-0) latency:0/0 -> 352/44100
[I][43007.744923] pw.node | [ impl-node.c: 388 node_update_state()] (raop_sink.Sonos-C43875707664.local.ipv4-0) creating -> suspended
[I][43007.745307] default | [ rtsp-client.c: 94 pw_rtsp_client_new()] new client 0x5634f34c1560
[I][43007.755030] spa.audioadapter | [ audioadapter.c: 548 reconfigure_mode()] 0x5634f34a1aa8: passthrough mode 0
[I][43007.755230] pw.context | [ context.c: 1176 pw_context_recalc_graph()] 0x5634f33ca310: busy:0 reason:node flags changed
[I][43007.755277] spa.audioconvert | [ audioconvert.c: 1199 reconfigure_mode()] 0x5634f34a1fc0: port config direction:0 monitor:1 control:0 mode:3 0
[I][43007.755317] spa.audioconvert | [ audioconvert.c: 350 init_port()] 0x5634f34a1fc0: add port 0:0 position:FL 1 0 0
[I][43007.755432] spa.audioconvert | [ audioconvert.c: 350 init_port()] 0x5634f34a1fc0: add port 1:1 position:FL 1 1 0
[I][43007.755542] spa.audioconvert | [ audioconvert.c: 350 init_port()] 0x5634f34a1fc0: add port 0:1 position:FR 1 0 0
[I][43007.755649] spa.audioconvert | [ audioconvert.c: 350 init_port()] 0x5634f34a1fc0: add port 1:2 position:FR 1 1 0
[I][43025.527999] pw.stream | [ stream.c: 603 impl_send_command()] 0x5634f349b6f0: command Spa:Pod:Object:Command:Node:ParamBegin
[I][43025.528162] default | [ rtsp-client.c: 479 pw_rtsp_client_connect()] 0x5634f34c1560: connect 10.111.222.190:7000
[I][43025.528386] default | [ rtsp-client.c: 526 pw_rtsp_client_connect()] 0x5634f34c1560: connecting
[I][43025.529671] pw.stream | [ stream.c: 603 impl_send_command()] 0x5634f349b6f0: command Spa:Pod:Object:Command:Node:ParamEnd
[I][43025.529764] spa.audioconvert | [ audioconvert.c: 1353 setup_in_convert()] 0x5634f34a1fc0: Spa:Enum:AudioFormat:F32P/2@48000->Spa:Enum:AudioFormat:F32P/2@48000
[I][43025.529856] spa.audioconvert | [ audioconvert.c: 1515 setup_channelmix()] in FL FR (0000000000000018)
[I][43025.529923] spa.audioconvert | [ audioconvert.c: 1517 setup_channelmix()] out FL FR (0000000000000018)
[I][43025.529978] spa.audioconvert | [ audioconvert.c: 1520 setup_channelmix()] 0x5634f34a1fc0: Spa:Enum:AudioFormat:F32P/2@48000->Spa:Enum:AudioFormat:F32P/2@48000 00000018:00000018
[I][43025.530048][channelmix-ops.c: 173 match_mix()] matched channel 1 (1,000000)
[I][43025.530119][channelmix-ops.c: 173 match_mix()] matched channel 2 (1,000000)
[I][43025.530174][channelmix-ops.c: 264 make_matrix()] unassigned downmix 00000000 00000000
[I][43025.530226][channelmix-ops.c: 504 make_matrix()] unassigned upmix 00000000 lfe:0,000000
[I][43025.530291][channelmix-ops.c: 660 make_matrix()] FL FR
[I][43025.530342][channelmix-ops.c: 662 make_matrix()] FL 1,000 1,000000
[I][43025.530409][channelmix-ops.c: 662 make_matrix()] FR 1,000 1,000000
[I][43025.530482] spa.audioconvert | [ audioconvert.c: 1558 setup_resample()] 0x5634f34a1fc0: Spa:Enum:AudioFormat:F32P/2@48000->Spa:Enum:AudioFormat:F32P/2@44100
[I][43025.532805] spa.audioconvert | [ audioconvert.c: 1632 setup_out_convert()] 0x5634f34a1fc0: Spa:Enum:AudioFormat:F32P/2@44100->Spa:Enum:AudioFormat:S16LE/2@44100
[I][43025.533182] pw.stream | [ stream.c: 603 impl_send_command()] 0x5634f349b6f0: command Spa:Pod:Object:Command:Node:Start
[I][43025.533359] default | [ rtsp-client.c: 179 handle_connect()] connected local ip 10.111.222.181
[I][43025.533440] mod.raop-sink | [module-raop-sink: 1401 rtsp_connected()] connected
[I][43025.533584] default | [ rtsp-client.c: 406 flush_output()] sent: SET_PARAMETER (null) RTSP/1.0
CSeq: 1
Content-Type: text/parameters
Content-Length: 19
volume: -0.526143
[I][43025.533685] default | [ rtsp-client.c: 406 flush_output()] sent: OPTIONS rtsp://10.111.222.181/2496374015 RTSP/1.0
CSeq: 2
Client-Instance: ff35ed14bdc4e686
Apple-Challenge: pCaEYdASfY3rFcqPatnZMQ
User-Agent: iTunes/11.0.4 (Windows; N)
[I][43025.534039] pw.node | [ impl-node.c: 388 node_update_state()] (raop_sink.Sonos-C43875707664.local.ipv4-0) suspended -> running
[I][43025.535968] default | [ rtsp-client.c: 243 process_status()] status: RTSP/1.0 455 Method Not Valid In This State
[I][43025.536562] default | [ rtsp-client.c: 317 process_header()] Content-Length: 0
[I][43025.536642] default | [ rtsp-client.c: 317 process_header()] Server: AirTunes/366.0
[I][43025.536696] default | [ rtsp-client.c: 317 process_header()] CSeq: 1
[I][43025.536748] default | [ rtsp-client.c: 276 dispatch_handler()] received reply to request with cseq:1
[I][43025.536803] mod.raop-sink | [module-raop-sink: 1475 rtsp_message()] message 455
[I][43025.536853] mod.raop-sink | [module-raop-sink: 1477 rtsp_message()] Content-Length: 0
[I][43025.536900] mod.raop-sink | [module-raop-sink: 1477 rtsp_message()] Server: AirTunes/366.0
[I][43025.536950] mod.raop-sink | [module-raop-sink: 1477 rtsp_message()] CSeq: 1
[I][43025.537154] default | [ rtsp-client.c: 243 process_status()] status: RTSP/1.0 403 Forbidden
[I][43025.537595] default | [ rtsp-client.c: 317 process_header()] Content-Length: 0
[I][43025.537664] default | [ rtsp-client.c: 317 process_header()] Server: AirTunes/366.0
[I][43025.537712] default | [ rtsp-client.c: 317 process_header()] CSeq: 2
[I][43025.537760] default | [ rtsp-client.c: 276 dispatch_handler()] received reply to request with cseq:2
[I][43025.537814] mod.raop-sink | [module-raop-sink: 1378 rtsp_options_reply()] options 403
^C[I][43060.466190] pw.stream | [ stream.c: 603 impl_send_command()] 0x5634f349b6f0: command Spa:Pod:Object:Command:Node:Suspend
[I][43060.466371] pw.node | [ impl-node.c: 388 node_update_state()] (raop_sink.Sonos-C43875707664.local.ipv4-0) running -> suspended
[I][43060.466895] pw.node | [ impl-node.c: 1904 pw_impl_node_destroy()] (raop_sink.Sonos-C43875707664.local.ipv4-0) destroy
[I][43060.467871] default | [ rtsp-client.c: 101 pw_rtsp_client_destroy()] destroy client 0x5634f34c1560
[I][43060.468018] mod.raop-sink | [module-raop-sink: 1461 rtsp_disconnected()] disconnected