I figured out the issue. It seems it's a feature not a bug :-) I created ~/.config/wireplumber/wireplumber.conf.d/bluetooth.conf containing : [...] monitor.bluez.rules = [ ## The list of monitor rules # This rule example allows changing properties on all Bluetooth devices. { matches = [ { ## This matches all bluetooth devices. device.name = "~bluez_card.*" } ] actions = { update-props = { ## Auto-connect device profiles on start up or when only partial ## profiles have connected. Disabled by default if the property ## is not specified. bluez5.auto-connect = [ a2dp_sink a2dp_source ] # # ## Hardware volume control (default: [ hfp_ag hsp_ag a2dp_source ]) # bluez5.hw-volume = [ hfp_hf hsp_hs a2dp_sink hfp_ag hsp_ag a2dp_source ] # # ## LDAC encoding quality # ## Available values: auto (Adaptive Bitrate, default) # ## hq (High Quality, 990/909kbps) # ## sq (Standard Quality, 660/606kbps) # ## mq (Mobile use Quality, 330/303kbps) # bluez5.a2dp.ldac.quality = "auto" # # ## AAC variable bitrate mode # ## Available values: 0 (cbr, default), 1-5 (quality level) # bluez5.a2dp.aac.bitratemode = 0 # # ## Opus Pro Audio encoding mode: audio, voip, lowdelay # bluez5.a2dp.opus.pro.application = "audio" # bluez5.a2dp.opus.pro.bidi.application = "audio" } } } setting property: bluez5.auto-connect = [ a2dp_sink a2dp_source ] causes desired behavior, headphones are automatically connecting upon logging into user session, when they are already paired and powered on. I think this setting was enabled by default in leap 15.5, because I did not set it previously for sure. Otherwise everything seems to work as expected.