BT classic serial does not show up on Chromebook as pairable device

yoh-there
Posts: 2
Joined: Tue Aug 31, 2021 2:52 pm

BT classic serial does not show up on Chromebook as pairable device

Postby yoh-there » Mon Sep 06, 2021 2:10 pm

This is a follow up on basically the same problem, which I first had assumed was a problem in the Arduino framework layer for the ESP32 and thus posted in that forum. Not so, and apologies for the more or less Double Post. TL:DR:

The ESP32 device does not show up on Chromebook as pairable device
Environment: ESP32, PlatformIO, IDF framework
Keywords: Bluetooth, SerialBT, Pairing
Example code snippet: bt_ssp_acceptor as included in the IDF repository

A bit more verbose:

ESP_SPP_ACCEPTOR shows up in i.e. Android (and Windows) as a pair-able device.

On ChromeOS, it doesn't show up at all. At first I thought this was a limitation of ChromeOS, but this is (at least partly) not the case: if I spin up another serial Bluetooth classic device, ie a KONNWEI ELM327 dongle, it does show up on ChromeOS and will pair.

A hint could be that on Android, the icon in front of the ESP32 ESP_SSP_ACCE{TOR is best described as a screen with a horizontal line below it, like an open laptop. The KONNWEI ELM327 dongle has a different icon, and is best described as a screen with a mobile phone (or desktop PC?) in front of it.

Given the different icons I assume it must have to do with different advertising. I know, not the correct nomenclature for classic. I admit I can't find any good table what these icons in front of each BT device in Android actually mean.

Any hints? Of course if I need to provide more info I am happy to do so.

Thank you.

doonessum
Posts: 1
Joined: Sat Nov 20, 2021 7:47 pm

Re: BT classic serial does not show up on Chromebook as pairable device

Postby doonessum » Sat Nov 20, 2021 7:53 pm

Hi

I think you need to set the Bluetooth Class Of Device to something Chrome OS will accept.

In the Espressif arduino-esp32 code it is done in BluetoothSerial.cpp, line 636:
See https://github.com/espressif/arduino-es ... Serial.cpp

Code: Select all

    // the default BTA_DM_COD_LOUDSPEAKER does not work with the macOS BT stack
    esp_bt_cod_t cod;
    cod.major = 0b00001;
    cod.minor = 0b000100;
    cod.service = 0b00000010110;
    if (esp_bt_gap_set_cod(cod, ESP_BT_INIT_COD) != ESP_OK) {
        log_e("set cod failed");
I have tried to change the above to:

Code: Select all

    cod.major = 0b00101;
    cod.minor = 0b000000;
    cod.service = 0b00000010000;
This allowed ChromeOS to see my device in the Bluetooth menus, and I was able to pair with it.

Best regards
Brian

Who is online

Users browsing this forum: eriksl and 246 guests