Hi Bastien, On Tue, Mar 8, 2022 at 2:14 AM Bastien Nocera <hadess@xxxxxxxxxx> wrote: > > 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. We did a bit of research and found that /etc/X and /etc/X.d is more common, e.g. the one described in https://www.redhat.com/sysadmin/etc-configuration-directories. If some distribution wants to organize the conf files to /usr/lib/bluetooth (for stock by package managers) and /etc/bluetooth/main.conf.d (for admin/users), I guess this is where having a configurable path is useful. What do you think? > > I don't think that making it optional, or have the path changeable is > needed, but the rest seems good. > > Cheers