# Do NOT change this file format without updating the parsing logic in
# BT IF module implementation (btif_storage.c)

# This file contains information to prevent auto pairing with Bluetooth devices.
# Blacklisting by vendor prefix address:
# The following companies are included in the list below:
# ALPS (lexus), Murata (Prius 2007, Nokia 616), TEMIC SDS (Porsche, Audi),
# Parrot, Zhongshan General K-mate Electronics, Great Well
# Electronics, Flaircomm Electronics, Jatty Electronics, Delphi,
# Clarion, Novero, Denso (Lexus, Toyota), Johnson Controls (Acura),
# Continental Automotive, Harman/Becker, Panasonic/Kyushu Ten,
# BMW (Motorola PCS), Visteon, Peugeot, BMW (MINI10013), Venza (Toyota)
AddressBlacklist=00:02:C7,00:16:FE,00:19:C1,00:1B:FB,00:1E:3D,00:21:4F,00:23:06,00:24:33,00:A0:79,00:0E:6D,00:13:E0,00:21:E8,00:60:57,00:0E:9F,00:12:1C,00:18:91,00:18:96,00:13:04,00:16:FD,00:22:A0,00:0B:4C,00:60:6F,00:23:3D,00:C0:59,00:0A:30,00:1E:AE,00:1C:D7,00:80:F0,00:12:8A,00:09:93,00:80:37,00:26:7E,00:26:e8

# Blacklisting by Exact Name:
ExactNameBlacklist=Motorola IHF1000,i.TechBlueBAND,X5 Stereo v1.3,KML_CAN

# Blacklisting by Partial Name (if name starts with)
PartialNameBlacklist=BMW,Audi,Parrot,Car

# Fixed PIN keyboard blacklist. Keyboards should have variable PIN
# The keyboards below have a fixed PIN of 0000, so we will auto pair.
# Note the reverse logic in this case compared to other's in this file
# where its a blacklist for not auto pairing.
FixedPinZerosKeyboardBlacklist=00:0F:F6

# Blacklisting by addition of the address during usage
