8000 stm32/rfcore: Intercept addr-resolution HCI cmd to work around BLE bug. by dpgeorge · Pull Request #7111 · micropython/micropython · GitHub
[go: up one dir, main page]

Skip to content

stm32/rfcore: Intercept addr-resolution HCI cmd to work around BLE bug. #7111

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

Merged

Conversation

dpgeorge
Copy link
Member

The STM32WB has a problem when address resolution is enabled: under certain
conditions the MCU can get into a state where it draws an additional 10mA
or so and eventually ends up with a broken BLE RX path in the silicon. A
simple way to reproduce this is to enable address resolution (which is the
default for NimBLE) and start the device advertising. If there is enough
BLE activity in the vicinity then the device will at some point enter the
bad state and, if left long enough, will have permanent BLE RX damage.

The only known workaround at this stage is to not enable address
resolution. That is done here by intercepting any command that enables
address resolution and convert it into a command that disables address
resolution.

Work done in collaboration with @jimmo.

@andrewleech
Copy link
Contributor

What's the end user impact of not having address resolution enabled?

@dpgeorge
Copy link
Member Author

What's the end user impact of not having address resolution enabled?

AFAIK, bonding will not work with devices that have an RPA (resolvable private address).

@andrewleech
Copy link
Contributor

Ah right, I was wondering if that was the kind address resolution in question. So, this would basically make the WB55 the same as the pybd in this regard.

@dpgeorge
Copy link
Member Author

So, this would basically make the WB55 the same as the pybd in this regard.

Exactly.

8000

The STM32WB has a problem when address resolution is enabled: under certain
conditions the MCU can get into a state where it draws an additional 10mA
or so and eventually ends up with a broken BLE RX path in the silicon.  A
simple way to reproduce this is to enable address resolution (which is the
default for NimBLE) and start the device advertising.  If there is enough
BLE activity in the vicinity then the device will at some point enter the
bad state and, if left long enough, will have permanent BLE RX damage.

STMicroelectronics are aware of this issue.  The only known workaround at
this stage is to not enable address resolution, which is implemented by
this commit.

Work done in collaboration with Jim Mussared aka @jimmo.

Signed-off-by: Damien George <damien@micropython.org>
@dpgeorge dpgeorge force-pushed the stm32-rfcore-addr-resolution-workaround branch from f7fd46f to 2668337 Compare April 12, 2021 11:52
@dpgeorge
Copy link
Member Author

Note that this bug took about 7 weeks to track down. ST are aware of the issue.

@dpgeorge dpgeorge merged commit 2668337 into micropython:master Apr 12, 2021
@dpgeorge dpgeorge deleted the stm32-rfcore-addr-resolution-workaround branch April 12, 2021 12:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants
0