-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting and FAQ
BMW's device-authorization backend can return access_denied ("The user has
declined authorization") even though you never saw a consent page and the
login clearly worked. This is flakiness on BMW's side, not the integration —
BMW support has confirmed (in response to a ticket) that the device-code flow is
handled by an internal partner system with "sync problems." There is nothing the
integration can do to fix it.
It can take a few attempts. This sequence has worked reliably (multiple times) for others:
- Open a fresh incognito/private browser window.
- Go to the My BMW / CarData portal manually — do not use the
pre-filled complete link, and strip any
?user_code=…from the URL. - Sign in, open Authenticate device ("Gerät authentifizieren"), then type the user code by hand (make sure no "incorrect code" banner appears) and approve. You'll typically land on a "Login successful" / "continue in the car" screen — you don't need to do anything in the car; that screen is just confirmation. Go straight back to Home Assistant and press Submit.
- If the code timed out meanwhile, press Submit in Home Assistant for a fresh code and repeat.
- Still failing after several tries? Delete the client in the BMW portal, create a new one (tick both subscriptions), and redo auth with the new client ID.
If none of that helps, stop retrying and wait. This is genuinely a lottery on BMW's side. Many users only got through after leaving it alone for several hours to a couple of days (sometimes it starts working overnight with no further action); rapid retries don't seem to speed it up. There's no single trick that works for everyone. For the hardest cases the only lever left is BMW support: bmwcardata-b2c-support@bmwgroup.com (include your reference ID from the error, if BMW showed one).
- Make sure you completed step 4 — descriptors must be ticked and saved in the portal's Data Selection.
- Trigger a lock/unlock in the MyBMW app to prompt the car to send an update.
- Run
bavariandata.get_coverage_report(Services) — it tells you exactly which expected descriptors haven't arrived, so you can tell a selection problem from a car-doesn't-send-it problem.
BMW allows a single concurrent streaming client per account (GCID), so no other tool can be connected at the same time. If another CarData client is running, disconnect it.
Read-only. CarData cannot send commands, so this integration can't lock, precondition, or otherwise control the car. Automations act on external devices in response to the car's data — see Events & blueprints.
Off by default. Turn it on in Configure → Debug logging and reload. It's verbose and can include vehicle data such as GPS and VIN, so leave it off unless you're chasing a problem. (Separate from Home Assistant's generic per-integration log level.)
Hard-refresh the browser — the bundled card is cached aggressively.
If you've spent all 50 REST requests in 24 h, a repair
issue appears under Settings → Repairs telling you when it resets.
Streaming keeps flowing throughout — only fetch_* calls pause.
- Bugs in the integration → Issues.
- BMW-side registration trouble, setup help, or general questions → Discussions.
BavarianData is an independent, community-built integration and is not affiliated with, endorsed by, or sponsored by BMW Group. "BMW", "Mini", "Rolls-Royce" and "CarData" are trademarks of their respective owners. Screenshots and documentation images of the MyBMW / BMW CarData portal are © BMW AG, shown here solely to document how to set up the service; personal data has been redacted. Released under the MIT License. · Issues · Discussions
Getting started
The card
Features
- Entities & devices
- Charging history & cost
- Battery health
- Trips
- Energy & statistics
- Export
- Events & blueprints
- API quota
Reference