-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Malformed Bluetooth Low Energy CRTP packets #101
Comments
Thanks for the very details description! I agree that there seems to be a bug there so I created this issue in the nrf firmware repos to track it. How did you get all these traces? Are you working on PC or from one of the mobile client? It would help me if you had a script allowing to reproduce the problem (otherwise I can make one). |
No problem! I originally captured these using BLEConsole on a Microsoft Surface Pro 7 and manually cleaned up the output for legibility. I'm currently working on a Web Bluetooth application for controlling the Crazyflie, so I put together a quick and dirty webapp that reproduces the issue and outputs the raw packets in the same format. It should work in most Chromium-based browsers on both desktop and mobile devices. You can reproduce the first output shown above by cold booting the Crazyflie from a powered-off state, pressing the |
After additional testing, I can confirm that the issue is not specific to console CRTP packets. I also see it with TOC packets, causing the TOC group and item name in the answer packet to potentially become corrupted. |
Discussed in https://github.com/orgs/bitcraze/discussions/1753
Originally posted by zanecodes January 23, 2025
When reading CRTP packets from the Crazyflie 2.1+ using BLE shortly after booting the drone, I experience two issues:
The second split packets have their first byte cut off, and an extra junk byte appended to the end. This would seem to point to an off-by-one error in the nRF firmware, but it appears correct to me.
Additionally, it looks like the packet splitting procedure is not implemented in accordance with the documentation. Namely, it only sets the
start
andlength
bits in the first packet's control byte (it does not set thepid
bits), and it does not clear thestart
orlength
bits in the second packet's control byte. It seems like the previous version of the firmware set the control byte correctly though.Here is a partial dump of the packets I receive after boot:
If I reboot the STM only (but not the nRF) by sending the
SYSOFF
andSYSON
bootloader commands, I get the expected packets after boot, but they are still malformed:Is anyone else experiencing this issue?
The text was updated successfully, but these errors were encountered: