Give Bluetooth its factory address from the DPP partition

The WCN3990 has no burned-in Bluetooth address, so the kernel registers
the controller unconfigured and bluetoothd never sees it. The factory
address is on the machine all along: QCOM/BT.PROVISION on the DPP
partition, a three-byte header followed by the six-byte address.
c630-bt-addr reads it and hands it to btmgmt before bluetooth.service
starts. Verified on hardware: controller configures, powers, scans, and
streams A2DP.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XgGF5wfxLDAybVnNz6eNQ
This commit is contained in:
2026-07-28 12:02:19 +03:00
parent 8041c8b5f9
commit 0a82d2c2d7
3 changed files with 69 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
[Unit]
Description=Set the C630 Bluetooth factory address from the DPP partition
# The WCN3990 has no burned-in address; the controller stays unconfigured and
# invisible to bluetoothd until one is set. See /usr/local/sbin/c630-bt-addr.
Before=bluetooth.service
ConditionPathExists=/dev/disk/by-partlabel/DPP
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/c630-bt-addr
RemainAfterExit=yes
StandardOutput=journal
[Install]
WantedBy=multi-user.target