radonreader icon indicating copy to clipboard operation
radonreader copied to clipboard

Script does not connect

Open AdminGithubAxiansAT opened this issue 3 years ago • 30 comments

Hi! I found the bluetooth mac with the discovery [NEW] Device 44:17:XX:XX:XX:XX FR:RE22111XXXXXXX

now I'm trying to connect to the radoneye device with python2.7 radon_reader.py -b -v -a 44:17:XX:XX:XX:XX

but I only get following output Connecting... Failed to connect to peripheral 44:17:XX:XX:XX:XX, addr type: random Failed, trying again (1)... Connecting... Failed to connect to peripheral 44:17:XX:XX:XX:XX, addr type: random Failed, trying again (2)... Connecting... Failed to connect to peripheral 44:17:XX:XX:XX:XX, addr type: random Failed, trying again (3)... Connecting... Failed to connect to peripheral 44:17:XX:XX:XX:XX, addr type: random Failed.

what I'm doing wrong?

thanks, kr

AdminGithubAxiansAT avatar Aug 02 '22 09:08 AdminGithubAxiansAT

Did you run trust 44:17:XX.... in the bluetoothctl command?

zelig2 avatar Aug 02 '22 21:08 zelig2

Hi! Thanks for your answer. I've done it right now. But still the same issue.

bluetoothctl trust 44:17:XX:XX:XX:XX [CHG] Device 44:17:XX:XX:XX:XX Trusted: yes Changing 44:17:XX:XX:XX:XX trust succeeded :~# ls radon_reader.py :~# python radon_reader.py -a 44:17:XX:XX:XX:XX -v Connecting... Failed to connect to peripheral 44:17:XX:XX:XX:XX, addr type: random Failed, trying again (1)... Connecting... Failed to connect to peripheral 44:17:XX:XX:XX:XX, addr type: random Failed, trying again (2)... Connecting...

AdminGithubAxiansAT avatar Aug 03 '22 08:08 AdminGithubAxiansAT

Hi,

I'm facing the same issue on RD200 (Firmware 2.0.2) $ bluetoothctl trust E8:31:XX:XX:XX:XX Changing E8:31:XX:XX:XX:XX trust succeeded

$ bluetoothctl connect E8:31:XX:XX:XX:XX Attempting to connect to E8:31:XX:XX:XX:XX [CHG] Device E8:31:XX:XX:XX:XX Connected: yes Connection successful --> bluetooth symbol on RD200s display is on. So it seems to work.

But when running the script it fails to connect.

Loretomes avatar Aug 10 '22 13:08 Loretomes

What version of python and bluepy are you running the script with?

dicer avatar Aug 10 '22 14:08 dicer

Hi dicer,

  • python version 3.9.2
  • bluepy version 1.3.0

It's running on a raspberry pi 3B, if this means something.

EDIT: I've installed additionally python 2.7. Same behaviour:

$ python2.7 radon_reader.py -a E8:31:XX:XX:XX:XX -v Connecting... Failed to connect to peripheral E8:31:XX:XX:XX:XX, addr type: random Failed, trying again (1)... Connecting... Failed to connect to peripheral E8:31:XX:XX:XX:XX, addr type: random Failed, trying again (2)... Connecting...

Loretomes avatar Aug 10 '22 15:08 Loretomes

I just had a look and I'm running the script with python 2.7.18. On x86 hardware, but that should not be the problem. Maybe try with 2.7 just so we know whether it is a python problem or something else?

dicer avatar Aug 11 '22 11:08 dicer

Thanks for taking a look on this. Yesterday I edited my last post. I've tried python 2.7.18 too, sadly with the same result.

Loretomes avatar Aug 11 '22 13:08 Loretomes

The smartphone app shows firmware version 2.0.2. Which version do you have?

Loretomes avatar Aug 11 '22 19:08 Loretomes

I also still have the same problem. Also tried with python 2.7 and 3.7. Any ideas?

AdminGithubAxiansAT avatar Aug 17 '22 09:08 AdminGithubAxiansAT

It seems that something has changed in the device.

  1. I removed "random" in the line DevBT = btle.Peripheral(args.address). after that the script connects to the radoneye
  2. I changed the uuids to 00001523-0000-1000-8000-00805f9b34fb, 00001524-0000-1000-8000-00805f9b34fb and 00001525-0000-1000-8000-00805f9b34fb. After that the script does something... But the result is always 0 so there needs something to be changed, maybe the \x50 is wrong?

AdminGithubAxiansAT avatar Aug 17 '22 16:08 AdminGithubAxiansAT

The smartphone app shows firmware version 2.0.2. Which version do you have?

I don't use the app, but 1.2.4 is showing when the device boots up. I guess that fits with what @AdminGithubAxiansAT found out. No idea what needs to be changed though. One of you could dump the BLE traffic the official app generates and have a look there. I guess some other IDs or commands might be needed?

dicer avatar Aug 17 '22 17:08 dicer

I have the app but can‘t find the version. how can I do the ble traffic dump from the app?

AdminGithubAxiansAT avatar Aug 17 '22 18:08 AdminGithubAxiansAT

Android can write all bluetooth packets to a file if you have the developer settings enabled. It's called "Enable Bluetooth HCI snoop log" on my device. The resulting file can be analyzed in wireshark afterwards.

dicer avatar Aug 17 '22 22:08 dicer

I have the app but can‘t find the version.

If you connect with the RadonEye App the firmware version is shown at the bottom screen as 'F/W: V2.0.2'.

I'm also able to find out the same UUIDS 00001523-0000-1000-8000-00805f9b34fb, 00001524-0000-1000-8000-00805f9b34fb and 00001525-0000-1000-8000-00805f9b34fb with the help of nRF Connect app.

I've loaded the bluetooth log to wireshark and can see, that there are connections between smartphone and RadonEye (both as source and destination). But I've no idea how to step further. How to read out the lots of information wireshark offers?

Loretomes avatar Aug 18 '22 09:08 Loretomes

I have only ios devices, no android. Seems that there is no app to trace that with ios. Is it possible that you upload the trace?

AdminGithubAxiansAT avatar Aug 19 '22 15:08 AdminGithubAxiansAT

btsnoop_hci_20220816.log

I've uploaded the trace. I filtered only the traffic between smartphone and RadonEye and could export it without IP or mac addresses. Wireshark shows the smartphone as localhost and the RadonEye as remote. Do you know how to read this log?

Loretomes avatar Aug 19 '22 18:08 Loretomes

This used to work for me - my pi died about a month ago and i just got around to re-installing it and I have this same issue. Tried it with 2.7 and now with the 3.9 with the one line code fix. bluetooothctl trusts and connects - the only difference i see might be this org.bluez error?

/home/grahamk/radon $ bluetoothctl connect F4:9F:38:88:88:6E Attempting to connect to F4:9F:38:88:88:6E [CHG] Device F4:9F:38:88:88:6E Connected: yes Failed to connect: org.bluez.Error.Failed

grahamck avatar Aug 20 '22 17:08 grahamck

I have the same problem. When testing with Bluetooth LE Explorer (Windows app) with Firmware 2.0.1 : As AdminGithubAxiansAT says, the UUIDs have changed to 0000152*-0000-1000-8000-00805f9b34fb The value to write to get the measurement seems to be again 0x50. However, the reading gives a result which does not seem to be IEEE 754 anymore. Some correspondences that I do not decode... except 0x50>Request function ; 0x0A>Data length pCi/l | Bytes read 1.30 | 50-0A-30-00-44-00-00-00-04-00-06-00 1.35 | 50-0A-32-00-44-00-00-00-00-00-06-00 1.41 | 50-0A-34-00-44-00-00-00-00-00-0C-00 1.51 | 50-0A-38-00-44-00-00-00-04-00-08-00 1.65 | 50-0A-3D-00-44-00-00-00-02-00-09-00 1.86 | 50-0A-45-00-40-00-00-00-02-00-08-00 2.14 | 50-0A-4F-00-40-00-00-00-05-00-05-00 2.92 | 50-0A-6C-00-40-00-00-00-08-00-09-00 3.24 | 50-0A-78-00-40-00-00-00-04-00-0D-00

Tofnet avatar Aug 25 '22 11:08 Tofnet

Do you have the matching value shown in the display for those (or newer) values? Then maybe we can decode it.

dicer avatar Aug 25 '22 17:08 dicer

Of course, it's in my not very clear table just above. 1.30 pCi/l displayed with trame 50-0A-30-00-44-00-00-00-04-00-06-00 For the test I use the unit pCi/l rather than Bq/m3 to avoid dividing my displayed value by 37. Here 1.30 in IEEE 754 = 0x3FA66666 in big-endian. These bytes aren't in my result.

Tofnet avatar Aug 25 '22 19:08 Tofnet

Well it's actually quite simple, the first word in payload (byte 3 and 4) contains the measurement directly in Bq/m3 written in Little-Endian order. 69 | 50-0A-45-00-81-00-00-00-04-00-05-00 72 | 50-0A-48-00-81-00-00-00-01-00-08-00 87 | 50-0A-57-00-81-00-00-00-04-00-0D-00 258 | 50-0A-02-01-81-00-00-00-19-00-1C-00 Now we have to find the firmware version so that the program can work with both.

Tofnet avatar Aug 29 '22 07:08 Tofnet

Thanks a lot, Tofnet! With the help of nRF Connect app I can read out the value in Bq/m³. But why radon_reader.py reads zero Bq/m³ at UUID 00001525-0000-1000-8000-00805f9b34fb?

uuidRead  = btle.UUID("00001525-0000-1000-8000-00805f9b34fb")
RadonEyeValue = RadonEyeService.getCharacteristics(uuidRead)[0]
RadonValue = RadonEyeValue.read()
print (RadonValue)

Output: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

Loretomes avatar Aug 31 '22 11:08 Loretomes

Hi! Can someone help me what I have to change now? I changed the uuids but I always get \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 as result

AdminGithubAxiansAT avatar Sep 02 '22 08:09 AdminGithubAxiansAT

When I write the handle I get the current value back [LE]> char-write-req 0x002a 50 Characteristic value was written successfully Notification handle = 0x002c value: 50 0a 7d 00 6e 00 00 00 0b 00 1a 00

and then, if I reade the handle the information is gone [LE]> char-read-hnd 0x002c Characteristic value/descriptor: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

it seems that this is the problem, why the script has no output Maybe the new firmware is using a kind of notification?

AdminGithubAxiansAT avatar Sep 02 '22 13:09 AdminGithubAxiansAT

Yes, I guess the same. So I experiment with this code example: https://ianharvey.github.io/bluepy-doc/notifications.html#notifications

However, I lack the knowledge and experience :-(

Loretomes avatar Sep 02 '22 14:09 Loretomes

Hi, I have just successfully tested this fork: EtoTen radonreader

Tofnet avatar Sep 05 '22 07:09 Tofnet

Hi Tofnet, glad you found this. Thanks, it works.

Loretomes avatar Sep 05 '22 07:09 Loretomes

Thanks Tofnet for sharing this link! But I get an error --> ModuleNotFoundError: No module named 'radon_reader_by_handle'. Did someone also had this message? Where can I find this module?

AdminGithubAxiansAT avatar Sep 05 '22 09:09 AdminGithubAxiansAT

sorry my fault. Its in the git... Thanks again for the link!

AdminGithubAxiansAT avatar Sep 05 '22 09:09 AdminGithubAxiansAT

Hi, I have a device which reports FR:GL05RE000997 which is not matched by EtoTen's scanning code.

If I explicitly give the addr with -a, and try -t 0 or -t 1, it doesn't work, with messages as follows:

2023-07-02 10:34:52,380 - root - DEBUG - Re-trying connections attempts: 1'
2023-07-02 10:35:35,388 - root - DEBUG - Re-trying connections attempts: 2'
2023-07-02 10:36:18,396 - root - DEBUG - Re-trying connections attempts: 3'
2023-07-02 10:37:01,406 - root - DEBUG - Re-trying connections attempts: 4'
2023-07-02 10:37:02,408 - root - DEBUG - Sending payload (byte): b'P' To handle (int): 42
Helper not started (did you call connect()?)

Any thoughts? Is this Yet Another hardware version which needs some more code?

Thanks.

Ndolam avatar Jul 02 '23 13:07 Ndolam