1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# List of hardware/kernel features, which cannot be detected generically.
#
# The `feature` is enabled only if all three of adapter, device, and
# kernel have it.
#
# For each of the adapter/device/kernel, the match rules are processed
# one at a time, and the first one that matches is used.
#
# Features and tags:
# msbc "standard" mSBC (60 byte tx packet)
# msbc-alt1 USB adapters with mSBC in ALT1 setting (24 byte tx packet)
# msbc-alt1-rtl Realtek USB adapters with mSBC in ALT1 setting (24 byte tx packet)
# hw-volume AVRCP and HSP/HFP hardware volume support
# hw-volume-mic Functional HSP/HFP microphone volume support
# sbc-xq "nonstandard" SBC codec setting with better sound quality
# faststream FastStream codec support
# a2dp-duplex A2DP duplex codec support
#
# Features are disabled with the key "no-features" whose value is an
# array of strings in the match rule.
bluez5.features.device = [
# properties:
# - name
# - address ("ff:ff:ff:ff:ff:ff")
# - vendor-id ("bluetooth:ffff", "usb:ffff")
# - product-id
# - version-id
{ name = "Air 1 Plus", no-features = [ hw-volume-mic ] },
{ name = "AirPods", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
{ name = "AirPods Pro", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
{ name = "AXLOIE Goin", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
{ name = "BAA 100", no-features = [ hw-volume ] }, # Buxton BAA 100, doesn't remember volume, #pipewire-1449
{ name = "D50s", address = "~^00:13:ef:", no-features = [ hw-volume ] }, # volume has no effect, #pipewire-1562
{ name = "FiiO BTR3", address = "~^40:ed:98:", no-features = [ faststream ] }, # #pipewire-1658
{ name = "JBL Endurance RUN BT", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
{ name = "JBL LIVE650BTNC" },
{ name = "Motorola DC800", no-features = [ sbc-xq ] }, # #pipewire-1590
{ name = "Motorola S305", no-features = [ sbc-xq ] }, # #pipewire-1590
{ name = "Soundcore Life P2-L", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
{ name = "Soundcore Motion B", no-features = [ hw-volume ] },
{ name = "SoundCore mini", no-features = [ hw-volume ] }, # #pipewire-1686
{ name = "SoundCore 2", no-features = [ sbc-xq ] }, # #pipewire-2291
{ name = "Tribit MAXSound Plus", no-features = [ hw-volume ] }, # #pipewire-1592
{ name = "Urbanista Stockholm Plus", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
{ address = "~^44:5e:cd:", no-features = [ faststream, a2dp-duplex ]}, # #pipewire-1756
{ address = "~^94:16:25:", no-features = [ hw-volume ]}, # AirPods 2
{ address = "~^9c:64:8b:", no-features = [ hw-volume ]}, # AirPods 2
{ address = "~^a0:e9:db:", no-features = [ hw-volume ]}, # Ausdom M05
{ address = "~^0c:a6:94:", no-features = [ hw-volume ]}, # deepblue2
{ address = "~^00:14:02:", no-features = [ hw-volume ]}, # iKross IKBT83B HS
{ address = "~^44:5e:f3:", no-features = [ hw-volume ]}, # JayBird BlueBuds X
{ address = "~^d4:9c:28:", no-features = [ hw-volume ]}, # JayBird BlueBuds X
{ address = "~^00:18:6b:", no-features = [ hw-volume ]}, # LG Tone HBS-730
{ address = "~^b8:ad:3e:", no-features = [ hw-volume ]}, # LG Tone HBS-730
{ address = "~^a0:e9:db:", no-features = [ hw-volume ]}, # LG Tone HV-800
{ address = "~^00:24:1c:", no-features = [ hw-volume ]}, # Motorola Roadster
{ address = "~^00:11:b1:", no-features = [ hw-volume ]}, # Mpow Cheetah
{ address = "~^a4:15:66:", no-features = [ hw-volume ]}, # SOL REPUBLIC Tracks Air
{ address = "~^00:14:f1:", no-features = [ hw-volume ]}, # Swage Rokitboost HS
{ address = "~^00:26:7e:", no-features = [ hw-volume ]}, # VW Car Kit
{ address = "~^90:03:b7:", no-features = [ hw-volume ]}, # VW Car Kit
# All features are enabled by default; it's simpler to block non-working devices one by one.
]
bluez5.features.adapter = [
# properties:
# - address ("ff:ff:ff:ff:ff:ff")
# - bus-type ("usb", "other")
# - vendor-id ("usb:ffff")
# - product-id ("ffff")
# Realtek Semiconductor Corp.
{ bus-type = "usb", vendor-id = "usb:0bda" },
# Generic USB adapters
{ bus-type = "usb", no-features = [ msbc-alt1-rtl ] },
# Other adapters
{ no-features = [ msbc-alt1-rtl ] },
]
bluez5.features.kernel = [
# properties (as in uname):
# - sysname
# - release
# - version
# See https://lore.kernel.org/linux-bluetooth/20201210012003.133000-1-tpiepho@gmail.com/
# https://lore.kernel.org/linux-bluetooth/b86543908684cc6cd9afaf4de10fac7af1a49665.camel@iki.fi/
{ sysname = "Linux", release = "~^[0-4]\\.", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
{ sysname = "Linux", release = "~^5\\.[1-7]\\.", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
{ sysname = "Linux", release = "~^5\\.(8|9)\\.", no-features = [ msbc-alt1 ] },
{ sysname = "Linux", release = "~^5\\.10\\.(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|51|52|53|54|55|56|57|58|59|60|61)($|[^0-9])", no-features = [ msbc-alt1 ] },
{ sysname = "Linux", release = "~^5\\.12\\.(18|19)($|[^0-9])", no-features = [ msbc-alt1 ] },
{ sysname = "Linux", release = "~^5\\.13\\.(3|4|5|6|7|8|9|10|11|12|13)($|[^0-9])", no-features = [ msbc-alt1 ] },
{ no-features = [] },
]
|