Hi Luiz,
On 07.04.20 08:30, Olivier MARTIN wrote:
Hi Luiz,
On 07.04.20 02:26, Luiz Augusto von Dentz wrote:
Hi Olivier,
On Mon, Apr 6, 2020 at 4:06 PM Olivier MARTIN <olivier@xxxxxxxxxxxx>
wrote:
Hi all,
I am trying to test BLE connection between two virtual controllers
(created with 'btvirt'). But when trying to connect to the GATT server
running on the first virtual controller, I have the error
"src/device.c:att_connect_cb() connect error: Transport endpoint is not
connected (107)"
To test my test case, I am using the head of Bluez (2a7df9323e, Sunday
5th April).
Here is the test case:
1. Start btvirt for BLE: sudo ./emulator/btvirt -L -U2 (you will
need my
patch to fix command line parsing I sent a couple of minutes ago)
2. Start bluetoothctl to initialize the Virtual Controller that would
play the role of GATT Server:
$ bluetoothctl
[NEW] Controller DB:E3:2A:E8:90:C4 olivier-ThinkPad-T480 #2
[default]
[NEW] Device E3:01:36:88:4C:DE TestAdvertisement
[NEW] Controller E3:01:36:88:4C:DE olivier-ThinkPad-T480
[NEW] Device DB:E3:2A:E8:90:C4 TestAdvertisement
[bluetooth]# list
Controller DB:E3:2A:E8:90:C4 olivier-ThinkPad-T480 #2 [default]
Controller E3:01:36:88:4C:DE olivier-ThinkPad-T480
[bluetooth]# power on
Changing power on succeeded
[CHG] Controller DB:E3:2A:E8:90:C4 Powered: yes
[bluetooth]# discoverable on
Changing discoverable on succeeded
[CHG] Controller DB:E3:2A:E8:90:C4 Discoverable: yes
Try with advertise.discoverable on, advertise instances actually have
their discoverable flag.
I am not sure to understand how "advertise.discoverable on" will fix
my issue.
I do not have any issue to discover the GATT server running on the
first instance of the virtual controller from the second one (see log
below).
The only issue is when I try connecting to the GATT server with
'connect DB:E3:2A:E8:90:C4', I have the error "Failed to connect:
org.bluez.Error.Failed" with the error in bluetoothd
"src/device.c:att_connect_cb() connect error: Transport endpoint is
not connected (107)".
I still wanted to make sure "advertise.discoverable on" would not solve
my issue. I have just tested with the latest bluez (commit 60423fed392a)
by adding "menu advertise" + "discoverable on" to the steps to duplicate
the issue. And I still see the error:
bluetoothd[14755]: src/device.c:btd_device_set_temporary() temporary 0
bluetoothd[14755]: src/device.c:device_connect_le() Connection attempt
to: DB:E3:2A:E8:90:C4
bluetoothd[14755]: src/device.c:att_connect_cb() connect error:
Transport endpoint is not connected (107)
[bluetooth]# advertise on
[CHG] Controller DB:E3:2A:E8:90:C4 SupportedInstances: 0x04
[CHG] Controller DB:E3:2A:E8:90:C4 ActiveInstances: 0x01
Advertising object registered
3. Use './test/example-gatt-server' to simulate GATT server. I confirm
the server is started on DB:E3:2A:E8:90:C4 (first virtual controller)
4. Return to bluetoothctl to switch to second virtual controller and
connect to the first one
[bluetooth]# select E3:01:36:88:4C:DE
Controller E3:01:36:88:4C:DE olivier-ThinkPad-T480 [default]
[bluetooth]# power on
Changing power on succeeded
[CHG] Controller E3:01:36:88:4C:DE Powered: yes
[bluetooth]# scan on
Discovery started
[CHG] Controller E3:01:36:88:4C:DE Discovering: yes
[NEW] Device DB:E3:2A:E8:90:C4
[bluetooth]# scan off
Discovery stopped
[CHG] Controller E3:01:36:88:4C:DE Discovering: no
[bluetooth]# connect DB:E3:2A:E8:90:C4
Attempting to connect to DB:E3:2A:E8:90:C4
Failed to connect: org.bluez.Error.Failed
[CHG] Controller DB:E3:2A:E8:90:C4 Discoverable: no
And in the bluetoothd log:
bluetoothd[15175]: src/adapter.c:start_discovery() sender :1.6483
bluetoothd[15175]: src/adapter.c:update_discovery_filter()
bluetoothd[15175]: src/adapter.c:discovery_filter_to_mgmt_cp()
bluetoothd[15175]: src/adapter.c:trigger_start_discovery()
bluetoothd[15175]: src/adapter.c:cancel_passive_scanning()
bluetoothd[15175]: src/adapter.c:start_discovery_timeout()
bluetoothd[15175]: src/adapter.c:start_discovery_timeout()
adapter->current_discovery_filter == 0
bluetoothd[15175]: src/adapter.c:start_discovery_complete()
status 0x00
bluetoothd[15175]: src/adapter.c:discovering_callback() hci0
type 6 discovering 1 method 0
bluetoothd[15175]: src/adapter.c:device_found_callback() hci0
addr DB:E3:2A:E8:90:C4, rssi 0 flags 0x0000 eir_len 3
bluetoothd[15175]: src/device.c:device_set_legacy() legacy 0
bluetoothd[15175]: src/device.c:device_set_flags() flags 6
bluetoothd[15175]: src/adapter.c:stop_discovery() sender :1.6483
bluetoothd[15175]: src/adapter.c:stop_discovery_complete()
status 0x00
bluetoothd[15175]: src/adapter.c:trigger_passive_scanning()
bluetoothd[15175]: src/adapter.c:discovery_remove() owner :1.6483
bluetoothd[15175]: src/adapter.c:discovering_callback() hci0
type 6 discovering 0 method 0
bluetoothd[15175]: src/device.c:device_connect_le() Connection
attempt to: DB:E3:2A:E8:90:C4
bluetoothd[15175]: src/device.c:att_connect_cb() connect error:
Transport endpoint is not connected (107)