Re: [PATCH] plugins: Do not try to autopair with Nissan Connect devices

Bastien Nocera
2022-09-01T10:46:46Z

On Wed, 2022-08-31 at 13:18 -0700, Luiz Augusto von Dentz wrote:
> Hi Florian,
>
> On Wed, Aug 31, 2022 at 12:44 PM Florian Leeber <florian@ubports.com>
> wrote:
> >
> > It seems that Nissan Connect carkits a) do not use 0000 but 1234 as
> > default code
> > but also b) the autopair plugin is not allowed to make a second
> > attempt
> > to pair.
> > Let´s try to not use the autopairing at all for those devices.
> > ---
> >   plugins/autopair.c | 3 +++
> >   1 file changed, 3 insertions(+)
> >
> > diff --git a/plugins/autopair.c b/plugins/autopair.c
> > index 0b09e89..6bf07e3 100644
> > --- a/plugins/autopair.c
> > +++ b/plugins/autopair.c
> > @@ -66,6 +66,9 @@ static ssize_t autopair_pincb(struct btd_adapter
> > *adapter,
> >          /* The iCade shouldn't use random PINs like normal
> > keyboards */
> >          if (strstr(name, "iCade") != NULL)
> >                  return 0;
> > +       /* Nissan Connect carkits use PIN 1234 but refuse a retry
> > */
> > +       if (strstr(name, "NISSAN CONNECT") != NULL)
> > +               return 0;
>
> Well this is already starting to grow which imo defeats the purpose
> of
> hardcoding directly on the code so perhaps we could have a section
> e.g. [Autopair] where one can enter device names that shall not use
> defaults PINs, or may an entry where one can add its own specific PIN
> sequence for a given device name including none:
>
> [Autopair]
> PIN=0000,1234
> # The iCade shouldn't use random PINs like normal keyboards
> iCade=
> # Nissan Connect carkits use PIN 1234 but it refuses retries
> NISSAN CONNECT=1234
>
> With this the logic is check if there is an entry for the device name
> and then use as PIN otherwise use the PIN entry (if not defined use
> the current settings as default).

FWIW, gnome-bluetooth has its own database on top of bluez, which we
prefer to the code in bluez. I'd be happy getting rid of it.

Loads of devices that need pairing despite their class and Bluetooth
version, and devices that need special handling like the Navman GPS
that expects a non-numerical PIN.

The database:
https://gitlab.gnome.org/GNOME/gnome-bluetooth/-/blob/master/lib/pin-code-database.xml
The code to parse it: