peplin / pygatt

Python wrapper for gatttool (a deprecated tool from BlueZ) and the BGAPI for accessing Bluetooth LE Devices
Other
527 stars 185 forks source link

Failing to connect while using BGAPIBackend #251

Closed bluegiga1234 closed 3 years ago

bluegiga1234 commented 5 years ago

Hi Peplin, Thank you for active work regarding Pygatt. I'm trying to use this library instead of going through bglib to use the BLED112. However, I'm getting an error when I run the sample program, "subscribe_indicate_theremometer_sample.py". I used BGAPIBackend instead of GATTToolBackend and I ran in Windows 10 with python 3.7.4. I am using the latest development version pygatt 4.0.3. Any insights would be appreciated. Here is the sample code that I am having problems with:

adapter = pygatt.BGAPIBackend()

try:
# Start the adapter
adapter.start()
# Connect to the device with that given parameter.
# For scanning, use adapter.scan()
device = adapter.connect("F5:A4:29:BB:61:23")
# Set the security level to medium
device.bond()
# Observes the given characteristics for indications.
# When a response is available, calls data_handle_cb
device.subscribe("00002a1c-0000-1000-8000-00805f9b34fb",
                 callback=data_handler_cb,
                 indication=True)

input("Press enter to stop program...\n")

finally:
# Stop the adapter session
adapter.stop()

return 0

and here is the terminal output:

  INFO:pygatt.backends.bgapi.bgapi:Initialized new BGAPI backend
  INFO:pygatt.backends.bgapi.bgapi:Auto-detecting serial port for BLED112
  DEBUG:pygatt.backends.bgapi.util:Found 4 serial USB devices
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM1 - Communications Port (COM1)
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM9 - Bluegiga Bluetooth Low Energy (COM9)
  DEBUG:pygatt.backends.bgapi.util:USB device: Bluegiga Bluetooth Low Energy (COM9)       VID=0x2458 PID=0x0001 on COM9
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM10 - JLink CDC UART Port (COM10)
  DEBUG:pygatt.backends.bgapi.util:USB device: JLink CDC UART Port (COM10) VID=0x1366 PID=0x1015 on COM10
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM12 - Bluegiga Bluetooth Low Energy (COM12)
  DEBUG:pygatt.backends.bgapi.util:USB device: Bluegiga Bluetooth Low Energy (COM12) VID=0x2458 PID=0x0001 on COM12
  INFO:pygatt.backends.bgapi.bgapi:Found BLED112 on serial port COM9
  INFO:pygatt.backends.bgapi.bgapi:Resetting and reconnecting to device for a clean environment
  DEBUG:pygatt.backends.bgapi.bgapi:Opening connection to serial port (attempt 1)
  INFO:pygatt.backends.bgapi.bgapi:Auto-detecting serial port for BLED112
  DEBUG:pygatt.backends.bgapi.util:Found 4 serial USB devices
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM1 - Communications Port (COM1)
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM9 - Bluegiga Bluetooth Low Energy (COM9)
  DEBUG:pygatt.backends.bgapi.util:USB device: Bluegiga Bluetooth Low Energy (COM9) VID=0x2458 PID=0x0001 on COM9
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM10 - JLink CDC UART Port (COM10)
  DEBUG:pygatt.backends.bgapi.util:USB device: JLink CDC UART Port (COM10) VID=0x1366 PID=0x1015 on COM10
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM12 - Bluegiga Bluetooth Low Energy (COM12)
  DEBUG:pygatt.backends.bgapi.util:USB device: Bluegiga Bluetooth Low Energy (COM12) VID=0x2458 PID=0x0001 on COM12
  INFO:pygatt.backends.bgapi.bgapi:Found BLED112 on serial port COM9
  DEBUG:pygatt.backends.bgapi.bgapi:Opening connection to serial port (attempt 1)
  INFO:pygatt.backends.bgapi.bgapi:Auto-detecting serial port for BLED112
  DEBUG:pygatt.backends.bgapi.util:Found 3 serial USB devices
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM1 - Communications Port (COM1)
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM10 - JLink CDC UART Port (COM10)
  DEBUG:pygatt.backends.bgapi.util:USB device: JLink CDC UART Port (COM10) VID=0x1366 PID=0x1015 on COM10
  DEBUG:pygatt.backends.bgapi.util:Checking serial USB device: COM12 - Bluegiga Bluetooth Low Energy (COM12)
  DEBUG:pygatt.backends.bgapi.util:USB device: Bluegiga Bluetooth Low Energy (COM12) VID=0x2458 PID=0x0001 on COM12
  INFO:pygatt.backends.bgapi.bgapi:Found BLED112 on serial port COM12
  INFO:pygatt.backends.bgapi.bgapi:Running receiver
  INFO:pygatt.backends.bgapi.bgapi:Disabling advertising
  DEBUG:pygatt.backends.bgapi.bgapi:Expecting a response of one of [<ResponsePacketType.gap_set_mode: 58>] within 1.000000s
  DEBUG:pygatt.backends.bgapi.bgapi:Received a ResponsePacketType.gap_set_mode packet: Success
  DEBUG:pygatt.backends.bgapi.bgapi:Expecting a response of one of [<ResponsePacketType.sm_set_bondable_mode: 51>] within 1.000000s
  DEBUG:pygatt.backends.bgapi.bgapi:Received a ResponsePacketType.sm_set_bondable_mode packet: Success
  DEBUG:pygatt.backends.bgapi.bgapi:Stopping any outstanding GAP procedure
  DEBUG:pygatt.backends.bgapi.bgapi:Expecting a response of one of [<ResponsePacketType.gap_end_procedure: 61>] within 1.000000s
  DEBUG:pygatt.backends.bgapi.bgapi:Received a ResponsePacketType.gap_end_procedure packet: Device in wrong state
  INFO:pygatt.backends.bgapi.bgapi:Connecting to device at address F5:A4:29:BB:61:23 (timeout 5s)
  DEBUG:pygatt.backends.bgapi.bgapi:Expecting a response of one of [<ResponsePacketType.sm_set_bondable_mode: 51>] within 1.000000s
  DEBUG:pygatt.backends.bgapi.bgapi:Received a ResponsePacketType.sm_set_bondable_mode packet: Success
  DEBUG:pygatt.backends.bgapi.bgapi:Expecting a response of one of [<ResponsePacketType.gap_connect_direct: 60>] within 1.000000s
  DEBUG:pygatt.backends.bgapi.bgapi:Received a ResponsePacketType.gap_connect_direct packet: Success
  DEBUG:pygatt.backends.bgapi.bgapi:Expecting a response of one of [<EventPacketType.connection_status: 11>] within 5.000000s
  DEBUG:pygatt.backends.bgapi.bgapi:Expecting a response of one of [<ResponsePacketType.gap_end_procedure: 61>] within 1.000000s
  DEBUG:pygatt.backends.bgapi.bgapi:Received a ResponsePacketType.gap_end_procedure packet: Success
  INFO:pygatt.backends.bgapi.bgapi:Stopping
  INFO:pygatt.backends.bgapi.bgapi:Stopping receiver
  Traceback (most recent call last):
   File "subscribe_indicate_thermometer_sample.py", line 63, in <module>
  exit(main())
   File "subscribe_indicate_thermometer_sample.py", line 44, in main
   device = adapter.connect("F5:A4:29:BB:61:23")
   File "C:\Users\tchinna\AppData\Local\Programs\Python\Python37\lib\site-      packages\pygatt\backends\bgapi\bgapi.py", line 456, in connect
   raise exc
  pygatt.exceptions.NotConnectedError
    return 0
peplin commented 3 years ago

Sorry I can't be of much help here. The device looks like it's closing the connection.

A-Ferjani commented 6 months ago

Hi there, did you make some progress regarding the use of pygatt bgapi without an adapter on windows ? is it possible ?