Hey Katherine, On Mon, 2022-03-07 at 10:57 -0800, Katherine Lai wrote: > Background > > It was found that a change to the default settings for > MinConnectionInterval and MaxConnectionInterval in main.conf broke > some of ChromeOS’s keyboard HID tests for only certain Bluetooth > controllers. These keyboards aren’t able to connect to the device. > Since those connection parameters improve the connection interval for > most other chipsets, we want to leave the default values but have a > way to have an optional override to address problematic models. > > > Proposed Solution > > Adding support to bluetoothd for an additional config directory > /etc/bluetooth/main.conf.d containing multiple files which will > override common params. Override order will be lexically sorted > filename order. This pattern is already used by Linux distros, for > example there is /etc/sudoers.d which files will override common > params in /etc/sudoers. > > Users can add override config files to /etc/bluetooth/main.conf.d > rather than directly editing /etc/bluetooth/main.conf. This is more > friendly to package managers since BlueZ package updates won't cause > conflict to /etc/bluetooth/main.conf. > > In bluez’s main.c, merge the params for each *.conf file from > /etc/bluetooth/main.conf.d with the existing /etc/bluetooth/main.conf > in lexical filename order > > /etc/bluetooth/main.conf.d will be configurable at build time, e.g. > with ./configure --main-conf-dir This isn't quite how the pattern is usually used. With the existing patterns, the OS-supplied stock configuration would be in /usr/lib/bluetooth/main.conf.d (maybe with the default .conf in the same directory as that subdir), with /etc/bluetooth/main.conf.d only used for the user/admin override the default configuration. I don't think that making it optional, or have the path changeable is needed, but the rest seems good. Cheers