# Below are the guidelines/instructions for editing this database file.
# Note 1: User should turn of the BT, before updating this database file.
# Note 2: Line started with the # is treated as comments.
# Note 3: Comment lines in between the entries are not allowed.
# Note 4: All duplicated entries including main BL types will be ignored.
#
#1. Below are the four tags for denylist
#   A. Address_Based   C. Manufacturer_based
#   B. Name_Based      D. Vndr_Prdt_Based
#   E. SSR_Max_Lat_Based F. Version_Based
#   G. LMP_Version_Based H. Address_Range_Based
##
#   A. Address_Based :  This tag refers to Address based denylist
#   Input Type       :   Input value should be only 3 to 4 bytes of BD address
#   Format Type      :   Address should be in XX:XX:XX format
#   Examples         :   00:01:03 = Address_Based
###
#   B. Name_Based :   This tag refers to Name based denylist.
#   Input type    :   Input should be only string and length of the string
#                     should not be more than 248 characters.
#   Format Type   :   string
#   Examples      :   Sample Headset name = Name_Based
####
#   C. Manufacturer_Based :  This tag refers to Manufacturer based denylist
#   Input type  : Input should be in Hexadecimal Number of Manufacturer
#   Format Type : 2 Bytes Hexadecimal Value
#   Examples    : 0X0023 = Manufacturer_Based
#####
#   D. Vndr_Prdt_Based : This tag refers to vendor and product based denylist
#   Input type  : Input should be in Hexadecimal value
#   Format Type : 4 bytes hex value( 2 bytes of vendor  and 2 bytes of product),
#                 Vendor and product hex values should be separated with delimiter(-).
#   Examples    : 0X00AB-0X00BC = Vndr_Prdt_Based
#####
#   E. SSR_Max_Lat_Based : This tag refers to SSR Max Latency based denylist
#   Input type  : Input value should be combination of first 3 bytes of BD address and
#                 Hexadecimal value of SSR Max Latency
#   Format Type : Address should be in XX:XX:XX format followed by 2 bytes hex value
#                 of max latency Address and Max Latency should be separated with delimiter(-).
#   Examples    : 00:01:03-0X00AB = SSR_Max_Lat_Based
#####
#   F. Version_Based : This tag refers to DID Version based denylist
#   Input type  : Input value should be Hexadecimal value
#   Format Type : 2 bytes hex value
#   Examples    : 0X00AB = Version_Based
#####
#   G. LMP_Version_Based : This tag refers to LMP Version based denylist
#   Input type  : Input value should be combination of first 3 bytes of BD address and
#                 Hexadecimal value of LMP version and Sub version
#   Format Type : Address should be in XX:XX:XX format followed by 1 bytes hex value
#                 of LMP versiion and 2 bytes of sub version
#                 Address, LMP version and sub version should be separated with delimiter(-).
#   Examples    : 00:01:03-0X01-0XABCD = LMP_Version_Based
##
#   H. Address_Range_Based :  This tag refers to Address Range based denylist
#   Input Type       :   Input value should be only 6 bytes of start BD address
#                        & 6 bytes of end BD address.
#   Format Type      :   Start Address should be XX:XX:XX:XX:XX:XX format followed by
#                        End BD address should be XX:XX:XX:XX:XX:XX format
#   Examples         :   00:0f:59:50:00:00-00:0f:59:6f:ff:ff = Address_Range_Based
#####
# ******************************* Start of denylist Database ********************************
#Disable secure connections
#This is for pre BT 4.1/2 devices that do not handle secure mode very well.
[INTEROP_DISABLE_LE_SECURE_CONNECTIONS]
08:62:66 = Address_Based
38:2C:4A:C9 = Address_Based
38:2C:4A:E6 = Address_Based
54:A0:50:D9 = Address_Based
AC:9E:17 = Address_Based
F0:79:59 = Address_Based
80:E4:DA:70 = Address_Based
1C:96:5A = Address_Based
80:EA:CA = Address_Based
51:01:00 = Address_Based
61:01:00 = Address_Based

# Devices requiring this workaround do not handle Bluetooth Absolute Volume
# control correctly, leading to undesirable (potentially harmful) volume levels
# or general lack of controlability.
[INTEROP_DISABLE_ABSOLUTE_VOLUME]
A0:E9:DB = Address_Based
00:14:02 = Address_Based
1C:48:F9 = Address_Based
44:5E:F3 = Address_Based
D4:9C:28 = Address_Based
00:18:6B = Address_Based
B8:AD:3E = Address_Based
00:11:B1 = Address_Based
A4:15:66 = Address_Based
00:14:F1 = Address_Based
00:26:7E = Address_Based
90:03:B7 = Address_Based
04:F8:C2 = Address_Based
00:18:91 = Address_Based
00:24:1C = Address_Based
00:08:8b = Address_Based
94:16:25 = Address_Based
00:25:DB = Address_Based
A0:C9:A0 = Address_Based
4C:BC:42 = Address_Based
EC:41:18 = Address_Based
C8:FD:19 = Address_Based
04:7F:0E = Address_Based
0C:A6:94 = Address_Based
00:0f:59:50:00:00-00:0f:59:6f:ff:ff = Address_Range_Based

# Disable automatic pairing with headsets/car-kits
# Some car kits do not react kindly to a failed pairing attempt and
# do not allow immediate re-pairing. Denylist these so that the initial
# pairing attempt makes it to the user instead
[INTEROP_DISABLE_AUTO_PAIRING]
34:C7:31 = Address_Based
00:07:04 = Address_Based
E0:75:0A = Address_Based
Audi = Name_Based
BMW = Name_Based
Parrot = Name_Based
Car = Name_Based
NISSAN = Name_Based
CAR = Name_Based

# Use a fixed pin for specific keyboards
# Keyboards should use a variable pin at all times. However, some keyboards
# require a fixed pin of all 0000. This workaround enables auto pairing for
# those keyboards.
[INTEROP_KEYBOARD_REQUIRES_FIXED_PIN]
00:0F:F6 = Address_Based

# Some headsets have audio jitter issues because of increased re-transmissions as the
# 3 Mbps packets have a lower link margin, and are more prone to interference. We can
# disable 3DH packets (use only 2DH packets) for the ACL link to improve sensitivity
# when streaming A2DP audio to the headset. Air sniffer logs show reduced
# re-transmissions after switching to 2DH packets.
# Disable 3Mbps packets and use only 2Mbps packets for ACL links when streaming audio.
[INTEROP_2MBPS_LINK_ONLY]
00:18:91 = Address_Based
00:21:4F = Address_Based
20:15:06 = Address_Based
9C:DF:03 = Address_Based
04:52:C7 = Address_Based
30:14:4A = Address_Based
00:54:AF = Address_Based
7C:1C:4E = Address_Based
50:65:83 = Address_Based
00:1E:7C = Address_Based
C8:84:47 = Address_Based
D0:8A:55 = Address_Based
48:F0:7B = Address_Based
00:0A:08 = Address_Based
00:11:2D = Address_Based
A8:54:B2 = Address_Based
AC:7A:4D = Address_Based
E8:EC:A3 = Address_Based
98:52:3D = Address_Based

# Some HID pointing devices have proven problematic behaviour if pairing is initiated with
# them, resulting in no response for authentication request and ultimately resulting
# in connection failure.
# To avoid degrading the user experience with those devices, authentication request
# is not requested explicitly.
[INTEROP_DISABLE_AUTH_FOR_HID_POINTING]
00:12:A1 = Address_Based
Targus BT Laser Notebook Mouse = Name_Based

# HID Keyboards that claim support for multitouch functionality have issue with
# normal functioning of keyboard because of issues in USB HID kernel driver.
# To avoid degrading the user experience with those devices, digitizer record
# is removed from the report descriptor.
[INTEROP_REMOVE_HID_DIG_DESCRIPTOR]
Motorola Keyboard KZ500 = Name_Based
Motorola Keyboard KZ500 v122 = Name_Based
0x22b8-0x093D = Vndr_Prdt_Based

# Some HID devices have problematic behaviour where when hid link is in Sniff
# and DUT is in Slave role for SCO link ( not eSCO) any solution cannot maintain
# the link as  SCO scheduling over a short period will overlap with Sniff link due to
# slave drift.
# To avoid degrading the user experience with those devices, sniff is disabled from
# link policy when sco is active, and enabled when sco is disabled.
[INTEROP_DISABLE_SNIFF_DURING_SCO]
20:4C:10 = Address_Based
0x004C = Manufacturer_Based

# Few carkits take long time to start sending AT commands
# Increase AG_CONN TIMEOUT so that AG connection go through
[INTEROP_INCREASE_AG_CONN_TIMEOUT]
00:14:09 = Address_Based
00:06:F5 = Address_Based

# Some HOGP devices do not respond well when we switch from default LE conn parameters
# to preferred conn params immediately post connection. Disable automatic switching to
# preferred conn params for such devices and allow them to explicitly ask for it.
[INTEROP_DISABLE_LE_CONN_PREFERRED_PARAMS]
BSMBB09DS = Name_Based
ELECOM = Name_Based

# Disable role switch for headsets/car-kits
# Some car kits allow role switch but when DUT initiates role switch
# Remote will go to bad state and its leads to LMP time out.
[INTEROP_DISABLE_ROLE_SWITCH]
FC:C2:DE = Address_Based
00:26:B4 = Address_Based
00:04:3E = Address_Based
00:23:01 = Address_Based
1C:48:F9 = Address_Based
00:54:AF = Address_Based
00:26:E8 = Address_Based
00:37:6D = Address_Based
9C:3A:AF = Address_Based
00:18:91 = Address_Based
0C:E0:E4 = Address_Based
00:07:04 = Address_Based
A4:15:66 = Address_Based
D0:13:1E = Address_Based
8F:20:B4 = Address_Based
A8:B9:B3 = Address_Based
00:0D:F0 = Address_Based
00:08:E0 = Address_Based
00:25:52 = Address_Based
1C:52:16 = Address_Based
00:06:66 = Address_Based
00:24:E4 = address_Based
00:1C:D8 = Address_Based
AC:FD:CE = Address_Based
08:76:95 = Address_Based
00:00:45 = Address_Based
EB:06:EF = Address_Based
74:95:EC = Address_Based
AC:FD:93 = Address_Based
AA:A8:AC = Address_Based
B8:D5:0B = Address_Based
50:1A:A5 = Address_Based
E4:22:A5 = Address_Based
4C:BC:42 = Address_Based
9C:DF:03 = Address_Based
00:0A:30 = Address_Based
00:1D:86 = Address_Based

# Disable role switch policy for headsets/car-kits
# Some car kits initiate a role switch but won't initiate encryption
# after role switch complete
# B8:69:C2:9C:20:A8 - JBL Charge 2+
[INTEROP_DISABLE_ROLE_SWITCH_POLICY]
00:0D:FD = Address_Based
00:1B:DC = Address_Based
00:07:04 = Address_Based
A4:15:66 = Address_Based
00:54:AF = Address_Based
00:23:7F = Address_Based
B8:69:C2 = Address_Based

# certain remote A2DP sinks have issue playing back Music in AAC format.
# disable AAC for those headsets so that it switch to SBC
# 1. byte alignment issues with encoder (solo3::20:3c:ae,airpods::4c:32:75)
# 2. remote sending 128 instead of 128k as bitrate (cadillac::28:a1:83, Chevrolet Tahoe,
#    buick_verano::ac:7a:4d(moved to name based, maruti_brezzai:28:a1:83,
#    cadillac cue::e0:75:0a, 30:C3:D9)
# 3. remote supporting only 44.1Khz (BIG-JAM-BOX::00-21-3c,JVC CK::00:1D:86,BMW CK::9C:DF:03)
[INTEROP_DISABLE_AAC_CODEC]
28:A1:83 = Address_Based
A0:14:3D = Address_Based
90:03:B7 = Address_Based
00:21:3c = Address_Based
9C:DF:03 = Address_Based
E0:75:0A = Address_Based
48:F0:7B = Address_Based
04:52:C7 = Address_Based
30:C3:D9 = Address_Based
00:E0:4C = Address_Based
abramtek M1 = Name_Based
Buick Verano = Name_Based

# certain remote A2DP sinks have issue playing back Music in AAC VBR mode.
# disable AAC VBR for those headsets so that it switch to either AAC CBR
# or SBC codec
# 0xb0-00-73-e2-61-dd  ==> Name: Audi_MMI_2781
# 0x28-83-35-7a-5f-23  ==> Name: SS Level Pro

[INTEROP_DISABLE_AAC_VBR_CODEC]
B0:00:73 = Address_Based
Audi_MMI_2781 = Name_Based
28:83:35 = Address_Based

#Enable AAC encoder only for allowlist devices

#0xb8-ad-3e-d2-4b-4b  ==> Name: LG HBSA100
#0xb8-ad-3e-e7-13-84  ==> Name: LG HBS1100
#0x00-18-09-95-04-c1  ==> Name: MDR-XB80BS
#0x00-18-09-95-04-c1  ==> Name: MDR-1RBT
#0x7c-04-d0-9a-75-ad  ==> Name: AirPods
#24:F6:77:A7:57:F7    ==> Name: AirPods
#A8:BE:27:03:4A:2F    ==> Name: BeatsX
#E0:D1:E6:09:AB:B2    ==> Name: MINIJAMBOX by Jawbone
#2C:41:A1:3D:2B:B9    ==> Name: Bose SoundSport
#2C:41:A1:48:FB:9A    ==> Name: Bose QC35 II
#94:B2:CC:42:C9:59    ==> Name: AVH-A208BT
#DC:A4:CA:C0:C6:0B    ==> Name: Beats Solo³
#BB:27:4D:41:BB:FC    ==> Name: PH300
#C4:30:18:9C:9F:C7    ==> Name: LG-PL7(C7)
#6C:DD:BC:62:F3:75    ==> Name: Galaxy Buds+ (F375)
#2C:4C:C6:AA:51:CC    ==> Name: KW-V950BW
#C6:58:19:40:88:EC    ==> Name: S8
#23:05:21:08:7E:12    ==> Name: TOZO-T10
#2C:FD:B3:66:C2:27    ==> Name: Soundcore Life Q20
#04:21:44:0C:0F:15    ==> Name: JBL Quantum800
#6C:47:60:3D:2E:4F    ==> Name: Sony SRS-XB13
#B0:F1:A3:74:D1:D6    ==> Name: Ear Fun Free Pro
#b4:9a:95:55:56:47    ==> Name: Realme Buds Air 2 Neo
#00:88:79:59:F5:F6    ==> Name: TAOTRONICS Soundliberty	53
#70:BF:92:5E:82:48    ==> Name: Jabra Elite 75t
#9C:64:8B:5D:0D:0B    ==> Name: Beats Pill+
#0x48-d6-d5-bc-79-43  ==> Name: Pixel Buds 7943
#0x8c-de-52-df-79-8e  ==> Name: SRS-X33
#0x04-5d-4b-ec-2c-4c  ==> Name: WH-1000XM2
#0x04-5d-4b-40-e7-1e  ==> Name: h.ear (MDR-100ABN)
#0x04-5d-4b-df-3e-70  ==> Name: WI-1000X
#0x04-5d-4b-eb-69-87  ==> Name: WH-H800 (h.ear)
#0x04-5d-4b-66-bd-26  ==> Name: MDR-1000X
#0x04-5d-4b-66-c1-f6  ==> Name: WI-H700 (h.ear)
#0x04-5d-4b-99-f0-5d  ==> Name: WH-H900N (h.ear)
#0x10-4f-a8-e9-79-eb  ==> Name: MDR-1ABT
#0x10-4f-a8-15-b9-5a  ==> Name: h.ear (MDR-EX750BT)
#0xac-9b-0a-bd-1f-20  ==> Name: MDR-ZX770BN
#0x04-52-c7-c5-d2-94  ==> Name: Bose QuietComfort 35
#0x0c-e0-e4-64-26-a3  ==> Name: PLT_BBTPRO
#0xa4-15-66-4b-4d-24  ==> Name: Tracks Air
#0x00-1a-7d-82-36-4b  ==> Name: 66 Audio BTS
#0x88-e6-03-80-48-6b  ==> Name: XB10
#0xb8-69-c2-eb-ae-66  ==> Name: SRS-XB3
#0x58-e2-8f-e9-09-7b  ==> Name: BeatsStudio Wireless
#0xE4-19-C1-DC-10-10  ==> Name: FreeBuds 3
#0xa0-56-b2-2b-43-ec  ==> Name: MB Bluetooth
#0x1c-e6-1d-93-83-b5  ==> Name: Galaxy Buds pro(83B5)

#CarKits
#0x94-b2-cc-28-99-77  ==> Name: AVH-X5890BT  ==>pioneer
#0x74-5e-1c-98-88-64  ==> Name: AVH-X5790BT ==>pioneer
#0x00-1d-86-a4-ea-a6  ==> Name: Car Multimedia ===>JVC
#0x00-1d-86-a0-79-c2  ==> Name: DDX6 ==>kenwood
#0x90-03-b7-6c-89-aa  ==> Name: Parrot ASTEROID
#0x30-c3-d9-85-34-ce  ==> Name: MB Bluetooth 84389
#0x00-02-5b-00-85-ca  ==> Name: HATS_00025B0085E9
#0xa0-56-b2-5b-cc-00  ==> Name: BMW Europe
#0x94-e3-6d-dc-e4-d4  ==> Name: BMW Evo

[INTEROP_ENABLE_AAC_CODEC]
B8:AD:3E = Address_Based
LG HBSA100 = Name_Based
LG HBS1100 = Name_Based
00:18:09 = Address_Based
MDR-XB80BS = Name_Based
00:18:09 = Address_Based
MDR-1RBT = Name_Based
7C:04:D0 = Address_Based
24:F6:77 = Address_Based
AirPods = Name_Based
48:D6:D5 = Address_Based
Pixel Buds 7943 = Name_Based
8C:DE:52 = Address_Based
SRS-X33 = Name_Based
04:5D:4B = Address_Based
WH-1000XM2 = Name_Based
h.ear (MDR-100ABN) = Name_Based
WI-1000X = Name_Based
WH-H800 (h.ear) = Name_Based
MDR-1000X = Name_Based
WI-H700 (h.ear) = Name_Based
WH-H900N (h.ear) = Name_Based
10:4F:A8 = Address_Based
MDR-1ABT = Name_Based
h.ear (MDR-EX750BT) = Name_Based
AC:9B:0A = Address_Based
MDR-ZX770BN = Name_Based
04:52:C7 = Address_Based
Bose QuietComfort 35 = Name_Based
94:B2:CC = Address_Based
AVH-X5890BT = Name_Based
AVH-A208BT = Name_Based
74:5E:1C = Address_Based
AVH-X5790BT = Name_Based
00:1D:86 = Address_Based
Car Multimedia = Name_Based
DDX6 = Name_Based
90:03:B7 = Address_Based
Parrot ASTEROID = Name_Based
0C:E0:E4 = Address_Based
PLT_BBTPRO = Name_Based
A4:15:66 = Address_Based
Tracks Air = Name_Based
00:1A:7D = Address_Based
66 Audio BTS = Name_Based
88:E6:03 = Address_Based
XB10 = Name_Based
B8:69:C2 = Address_Based
SRS-XB3 = Name_Based
30:C3:D9 = Address_Based
MB Bluetooth 84389 = Name_Based
00:02:5B = Address_Based
HATS_00025B0085E9 = Name_Based
A8:BE:27 = Address_Based
BeatsX = Name_Based
E0:D1:E6 = Address_Based
MINIJAMBOX by Jawbone = Name_Based
2C:41:A1 = Address_Based
Bose SoundSport = Name_Based
Bose QC35 II = Name_Based
DC:A4:CA = Address_Based
Beats Solo³ = Name_Based
58:E2:8F = Address_Based
BeatsStudio Wireless = Name_Based
FC:4B:BC = Address_Based
XAV-AX100 = Name_Based
00:18:6b = Address_Based
LG HBS730 = Name_Based
8C:57:9B = Address_Based
h.ear go (SRS-HG1) = Name_Based
40:ED:98 = Address_Based
FiiO BTR1K = Name_Based
0C:A6:94 = Address_Based
HK Soho Wireless = Name_Based
00:09:A7 = Address_Based
Beoplay H4 = Name_Based
70:26:05 = Address_Based
WF-SP700N = Name_Based
48:D6:D5 = Address_Based
Pixel Buds = Name_Based
00:09:a7 = Address_Based
Beoplay E8 = Name_Based
2C:41:A1 = Address_Based
Bose SoundWear = Name_Based
2C:41:A1 = Address_Based
Bose Free SoundSport = Name_Based
00:18:09 = Address_Based
Samsung Level On = Name_Based
a0:56:b2 = Address_Based
BMW 08939 = Name_Based
MB Bluetooth = Name_Based
94:e3:6d = Address_Based
BMW 99999 = Name_Based
E4:19:C1 = Address_Based
FreeBuds 3 = Name_Based
28:83:35 = Address_Based
Level U Pro (5F23) = Name_Based
1C:E6:1D = Address_Based
Galaxy Buds Pro (83B5) = Name_Based
BB:27:4D = Address_Based
PH300 = Name_Based
C4:30:18 = Address_Based
LG-PL7(C7) = Name_Based
6C:DD:BC = Address_Based
Galaxy Buds+ (F375) = Name_Based
2C:4C:C6 = Address_Based
KW-V950BW = Name_Based
C6:58:19 = Address_Based
S8 = Name_Based
23:05:21 = Address_Based
TOZO-T10 = Name_Based
2C:FD:B3 = Address_Based
Soundcore Life Q20 = Name_Based
04:21:44 = Address_Based
JBL Quantum800 = Name_Based
6C:47:60 = Address_Based
Sony SRS-XB13 = Name_Based
B0:F1:A3 = Address_Based
Ear Fun Free Pro = Name_Based
b4:9a:95 = Address_Based
Realme Buds Air 2 Neo = Name_Based
00:88:79 = Address_Based
TAOTRONICS Soundliberty 53 = Name_Based
70:BF:92 = Address_Based
Jabra Elite 75t = Name_Based
9C:64:8B = Address_Based
Beats Pill+ = Name_Based
#E0:D1:E6 = Address_Based
#00:18:6b = Address_Based
#20:3c:ae = Address_Based
#04:88:e2 = Address_Based
#4c:32:75 = Address_Based
#00:14:07 = Address_Based
#94:20:53 = Address_Based

# Devices requiring this workaround do not handle Bluetooth PBAP 1.2
# version correctly, leading them to go in bad state. So for better
# interoperability respond with PBAP 1.1 as supported version.
[INTEROP_ADV_PBAP_VER_1_1]

# Devices requiring this workaround do not handle Bluetooth PBAP 1.1
# version correctly, leading them to go in bad state. So for better
# interoperability respond with PBAP 1.2 as supported version.
[INTEROP_ADV_PBAP_VER_1_2]
PTS = Name_Based

# Devices requiring this workaround do not handle PBAP SDP request correctly,
# and lead to connection failures. To prevent this scenario, device requiring this
# workaorund need to avoid sending SDP request during pairing time
[INTEROP_DISABLE_PCE_SDP_AFTER_PAIRING]
AC:FD:CE = Address_Based

# Devices requiring this workaround do not handle SSR max latency values as mentioned,
# in their SDP HID Record properly and lead to connection timeout or lags. To prevent
# such scenarios, device requiring this workaorund need to use specific ssr max latency
# values.
[INTEROP_UPDATE_HID_SSR_MAX_LAT]
00:1B:DC-0x0012 = SSR_Max_Lat_Based
DC:2C:26-0x0000 = SSR_Max_Lat_Based
54:46:6B-0x0001 = SSR_Max_Lat_Based

#Some device reports support for hf indicator, but it's HFP version as 1.5. The
#behaviour violates spec and shall cause problem when DUT support HFP1.7, thus
#denylisting such devices and remove remote's hf indicator bit if not support HFP1.7.
[INTEROP_DISABLE_HF_INDICATOR]
98:7b:f3 = Address_Based

#Ensure that call active indicator is sent prior to SCO connection
#request by adding some delay. Some remotes are very strict in the
#order of call indicator and SCO connection request.
#1 04:52:c7 - Bose Mini II sound link
#2 24:A8:7D - Maruti Suzuki CIAZ 2018 - Delta
[INTEROP_DELAY_SCO_FOR_MT_CALL]
04:52:c7 = Address_Based
AirPods Pro = Name_Based
24:A8:7D = Address_Based
f0:45:da = Address_Based

# Some remotes ara taking longer to respond to +BCS during codec negotiation.
# Disable codec negotiation and directly initiate SCO connection for those.
# 1. M12 - 00:08:8a:f0:1d:8a
# 2. HAVIT I39 - 55:55:55:67:0b:d7
[INTEROP_DISABLE_CODEC_NEGOTIATION]
00:08:8a = Address_Based
JABRA EASYGO = Name_Based
55:55:55 = Address_Based
LG HBSF110 Master = Name_Based

# Disallow sending Player Application Setting Commands for some CK as they are unable
# to send Passthrough Command while Streaming is in progress
# Porsche Panamera :: 74:6f:f7:8c:bf:61
# BMW X3 :: a0:56:b2:4f:86:a8
# Land Rover :: 00:00:2e:b0:12:5c
# BMW USAX5 :: a0:56:b2:5a:7f:b0
[INTEROP_DISABLE_PLAYER_APPLICATION_SETTING_CMDS]
00:09:93 = Address_Based
74:6f:f7 = Address_Based
A0:56:B2:4F = Address_Based
00:54:AF = Address_Based
00:00:2E = Address_Based
A0:56:B2:5A = Address_Based

[INTEROP_DISABLE_CONNECTION_AFTER_COLLISION]
A0:14:3D = Address_Based

# Do not use supervision timeout value received from preferred connection
# parameters, use 3s instead. Use with HID only.
[INTEROP_HID_PREF_CONN_SUP_TIMEOUT_3S]
08:62:66 = Address_Based
38:2C:4A:C9 = Address_Based
38:2C:4A:E6 = Address_Based
54:A0:50:D9 = Address_Based
AC:9E:17 = Address_Based
F0:79:59 = Address_Based

# Do not use AVDTP RECONFIGURE when reconfiguring A2DP streams.
# Some A2DP Sink devices report SUCCESS to the AVDTP RECONFIGURE command,
# but fail to play the reconfigured audio stream.
[INTEROP_DISABLE_AVDTP_RECONFIGURE]
00:1D:86 =  Address_Based
KMM-BT51*HD = Name_Based

[INTEROP_GATTC_NO_SERVICE_CHANGED_IND]
Pixel C Keyboard = Name_Based
MiMouse = Name_Based
HTC Fetch = Name_Based

#Some LE devices have proven problematic behaviour if LE connection update is initiated with
#them, resulting in no response after initiating LE connection update and ultimately resulting
#in connection timeout. To avoid degrading the user experience with those devices,
#LE connection update is not requested explicitly for those devices.
[INTEROP_DISABLE_LE_CONN_UPDATES]
LG Lighting = Name_Based
KS_5w4Zu = Name_Based
ZUK = Name_Based
ITAG = Name_Based
Pokemon GO Plus = Name_Based
FeiZhiX8/X8Pro = Name_Based
FeiZhiAPEX = Name_Based
FeiZhiWee = Name_Based
FeiZhi Wee 2T = Name_Based
#Few remote sends avrcp browsing request just after host sends avrcp browsing request leading
#collision which results in browsing channel open failure. For such devices, collision timer
#of 1 sec is used avoid collision.
#Porsche Macan 2018 :: 2c:dc:ad:08:91:89
#Porsche Panamera  :: 74:6f:f7:8c:bf:61
[INTEROP_AVRCP_BROWSE_OPEN_CHANNEL_COLLISION]
2c:dc:ad:08 = Address_Based
74:6f:f7 = Address_Based
90:03:b7 = Address_Based
00:06:F5 = Address_Based

#Some remote devices don't support sniff mode when the SCO is connected.
#For such devices, disable sniff mode after SCO is connected and make
#the link as active.
#Benz Car kit :: 50:65:83:8e:1d:43
#Sony Ear Duo :: 28:3f:69:ff:50:bd
#AirPods
#Airoha Technology Corp --> 0x0094
[INTEROP_DISABLE_SNIFF_LINK_DURING_SCO]
50:65:83 = Address_Based
28:3f:69 = Address_Based
AirPods = Name_Based
0x0094 = Manufacturer_Based

#For some remote devices, disable sniff mode during the call
#as some remotes need call indicators in active mode
#Leviathan Mini :: 10:b7:f6:03:38:b0
[INTEROP_DISABLE_SNIFF_DURING_CALL]
10:b7:f6 = Address_Based
AirPods = Name_Based

#Skip sending incoming call state to denylisted devices
# 00:0E:9F : Porsche Carkit
[INTEROP_SKIP_INCOMING_STATE]
00:0E:9F = Address_Based

#Nintendo Switch Pro Controller - does not set sniff interval dynamically.
#Requires custom HID report command to change mode.
[INTEROP_HID_HOST_LIMIT_SNIFF_INTERVAL]
98:B6:E9 = Address_Based
Pro Controller = Name_Based
Joy-Con = Name_Based

#For some remote devices disable setting of refresh_sig_timer while responding
#to incoming AVDTP signalling. While incoming connection remote device is sending
#set_config and delay report back to back, which is violating spec(As per the spec,
#remote should wait for set_config response and then it should send delay report).
#Due to which HOST is responding BAD_STATE for delay_report sent by remote, which
#resulted in remote is going to bad state and sent AVDTP_OPEN with ACP Stream
#Endpoint ID: 0, for which DUT responded with Error Code: BAD_ACP_SEID
#04:4e:af:a8:a0:01 ==> Name: HB20
[INTEROP_DISABLE_REFRESH_ACCEPT_SIG_TIMER]
04:4E:AF = Address_Based
HB20 = Name_Based
HB 20 = Name_Based

# List of Media Players allowed to be considered as potential
# candidates of supporting AVRCP Browsing featute are to be
# included in this Name Based Allowlist
# Name Based Format addition must be made with the string having
# Player's package Name (Not Player's displayable Name) like below:
# Player's Package Name = Name Based
#
# Like below players are part of our Allowlist
# Youtube(YT) Music = Name Based
# Gaana = Name Based
[INTEROP_BROWSE_PLAYER_ALLOW_LIST]
com.google.android.apps.youtube.music = Name_Based
com.gaana = Name_Based

# For some certain remote devices, when a2dp is playing and music
# player is paused, if we update avrcp paused to remote device, remote device will
# not output audio even after avrcp becomes playing again. Denylist these devices
# to not update avrcp paused to them when a2dp is playing.
# This denylist is migrated from playerStateUpdateBlackListed of Avrcp_ext.java
# bc-30-7e-5e-f6-27 => Name: Porsche BT 0310
# bc-30-7e-8c-22-cb => Name: Audi MMI 1193
# 2C-DC-AD-BB-2F-25 => Name: PORSCHE
# 00-1e-43-14-f0-68 => Name: Audi MMI 4365
# 9C:DF:03:D3:C0:17 => Name: Benz S600L
# 00:0A:08:51:1E:E7 => Name: BMW530
# 00-04-79-00-06-bc => Name: radius HP-BTL01
# 28-A1-83-94-90-AE => Name: VW Radio
# 24-df-6a-f4-0a-7e => Name: HUAWEI WATCH
# 30-c3-d9-8d-5b-83 => Name: VW RadioBin
[INTEROP_NOT_UPDATE_AVRCP_PAUSED_TO_REMOTE]
BC:30:7E = Address_Based
2C:DC:AD = Address_Based
00:1E:43 = Address_Based
9C:DF:03 = Address_Based
00:0A:08 = Address_Based
00:04:79 = Address_Based
28:A1:83 = Address_Based
24:df:6a = Address_Based
30:C3:D9 = Address_Based
Audi = Name_Based
Porsche = Name_Based

# Some certain devices reject DUT initiated connection
# when DUT tries to connect other auto-connectable profiles 6s after
# peer connects the first one. To avoid such race condition, raised
# connect other profiles timeout to 10s to make sure there is no
# connection rejection from remote because of connection collision.
# This denylist is migrated from delayConnectTimeoutDevice
# of PhonePolicy.java.
# 00:23:3D => Name: volkswagen carkit
[INTEROP_PHONE_POLICY_INCREASED_DELAY_CONNECT_OTHER_PROFILES]
00:23:3D = Address_Based

# As per the implementation for the incoming connection scenario if one
# profile got connected and other profile didn't get connected, DUT starts
# connect other profiles after 6sec timeout. For some certain device,
# this timeout has been reduced to 2sec for triggering auto connect to
# otherprofiles from DUT. So that Audio will get routed to BT device with
# reduced delay.
# This denylist is migrated from delayReducedConnectTimeoutDevice
# of PhonePolicy.java.
# 10:4F:A8 => Name: h.ear (MDR-EX750BT)
[INTEROP_PHONE_POLICY_REDUCED_DELAY_CONNECT_OTHER_PROFILES]
10:4F:A8 = Address_Based

# Some remote devices are misbehaving when there is an active
# call and MT call is in progress. We send call indicators for
# active call and MT Call in progess. When active call is
# terminated, we send call end indicator only to remote. This
# is confusing remote and remotes are going into bad state.
# Denylist remote devices to disconnect SCO when active call is
# ended, fake MT call indicator again with some delay.
# This denylist is migrated from BlacklistDeviceAddrToDelayCallInd
# of HeadsetStateMachine.java.
# 00:15:83 => Name: Beiqi Carkit
# 2a:eb:00 => Name: BIAC Carkit
# 30:53:00 => Name: BIAC series
# 00:17:53 => Name: ADAYO Carkit
# 40:ef:4c => Name: Road Rover Carkit
# 00:07:04 => Name: Tiguan RNS315
[INTEROP_HFP_FAKE_INCOMING_CALL_INDICATOR]
00:15:83 = Address_Based
2a:eb:00 = Address_Based
30:53:00 = Address_Based
00:17:53 = Address_Based
40:ef:4c = Address_Based
00:07:04 = Address_Based
18:48:ca = Address_Based

# Some certain devices not rendering VOIP call audio if call indicators
# are sent with a delay. Denylist the devices to send call
# indicators back to back.
# This denylist is migrated from BlacklistDeviceForSendingVOIPCallIndsBackToBack
# of HeadsetStateMachine.java.
# f4:15:fd => Name: Rongwei 360 Car
[INTEROP_HFP_SEND_CALL_INDICATORS_BACK_TO_BACK]
f4:15:fd = Address_Based
94:B2:CC:52 = Address_Based
94:B2:CC:4C = Address_Based

# Some CKs need SCO immediately after SLC if there is an ongoing call on phone
[INTEROP_SETUP_SCO_WITH_NO_DELAY_AFTER_SLC_DURING_CALL]
Geely_BT = Name_Based
#Some LE mouses need preferred connection parameters
[INTEROP_ENABLE_PREFERRED_CONN_PARAMETER]
Microsoft Bluetooth Mouse = Name_Based

# Some CKs drop SCO connection immediately after accept,
# Retry setup SCO once for those remote devices.
[INTEROP_RETRY_SCO_AFTER_REMOTE_REJECT_SCO]
Bose Mini II SoundLink = Name_Based
Honda HFT = Name_Based
HAVAL M6 = Name_Based

# some remotes not able to render the voice for VOIP calls if call
# ougoing indicators are sent and sco is opened immediately.
# Adding such devices to denylist, to do the sco open after
# indicators are sent with slight delay.
# BD_ADDR: 00:09:93:a6:c5:4d => Name: VW Radio
[INTEROP_DELAY_SCO_FOR_MO_CALL]
00:09:93 = Address_Based

# some remote hid devices cannot work properly as they laod special hid usb driver in kernel,
# so modify their vid/pid so that generic hid driver are loaded.
[INTEROP_CHANGE_HID_VID_PID]
RK-Bluetooth keyboard = Name_Based
CK87BT = Name_Based
0x05ac-0x0255 = Vndr_Prdt_Based

# Some remote always set DUT as slave during connection which restricts
# setting supervision timeout to the required value. This interop will allow
# local device to be only master as role switch would be restricted during connection.
[INTEROP_DISABLE_ROLE_SWITCH_DURING_CONNECTION]
48:eb:62 = Address_Based

# Disable auto repairing
[INTEROP_AUTO_RETRY_PAIRING]
9c:df:03 = Address_Based

# Disable Name Request
[INTEROP_DISABLE_NAME_REQUEST]
d4:7a:e2 = Address_Based

# AVRCP 1_4 Only device
[INTEROP_AVRCP_1_4_ONLY]
48:f0:7b = Address_Based
90:03:b7 = Address_Based
28:A1:83 = Address_Based
64:d4:bd = Address_Based
fc:35:e6 = Address_Based
00:17:53 = Address_Based
9c:8d:7c = Address_Based
0c:d9:c1 = Address_Based

# Few remote devices do not understand AVRCP version greater than 1.3. For these
# devices, we would like to denylist them and advertise AVRCP version as 1.3
[INTEROP_AVRCP_1_3_ONLY]
00:0a:08 = Address_Based
9c:df:03 = Address_Based
34:38:fe = Address_Based

# Disable Sniff
[INTEROP_DISABLE_SNIFF]
44:ea:d8 = Address_Based

# HFP AT+BIND missing
[INTEROP_SLC_SKIP_BIND_COMMAND]
94:b2:cc:30 = Address_Based

# Some remote devices have LMP version in [5.0, 5.2] but do not support robust caching
# or correctly response with an error. We disable the database hash lookup for such devices.
[INTEROP_DISABLE_ROBUST_CACHING]
08:9b:f1 = Address_Based
20:be:cd = Address_Based
30:34:22 = Address_Based
3c:5c:f1 = Address_Based
40:47:5e = Address_Based
50:27:a9 = Address_Based
64:97:14 = Address_Based
64:c2:69 = Address_Based
68:4a:76 = Address_Based
6c:ae:f6 = Address_Based
78:76:89 = Address_Based
78:d6:d6 = Address_Based
84:70:d7 = Address_Based
98:ed:7e = Address_Based
9c:0b:05 = Address_Based
9c:57:bc = Address_Based
9c:a5:70 = Address_Based
a0:8e:24 = Address_Based
ac:ec:85 = Address_Based
b4:20:46 = Address_Based
b4:b9:e6 = Address_Based
c0:36:53 = Address_Based
c4:f1:74 = Address_Based
c8:b8:2f = Address_Based
c8:e3:06 = Address_Based
d4:05:de = Address_Based
d4:3f:32 = Address_Based
ec:74:27 = Address_Based
f0:21:e0 = Address_Based
f0:b6:61 = Address_Based
fc:3f:a6 = Address_Based

# some device may have problem in reconnect flow, need we initiate connection after signalling timeout
[INTEROP_IGNORE_DISC_BEFORE_SIGNALLING_TIMEOUT]
00:e0:4c = Address_Based
00:9e:c8 = Address_Based

# Certain devices have issue where they cannot handle ATT traffic during SMP key exchange.
# For those devices, queued ATT writes are delayed until after both encryption complete and
# SMP key exchange completed.
[INTEROP_SUSPEND_ATT_TRAFFIC_DURING_PAIRING]
ORN = Name_Based
EPG = Name_Based
