From 01996c8e6921c5a103ac403b7a34e909b982c3e2 Mon Sep 17 00:00:00 2001 From: Ananth Bhaskararaman Date: Sun, 9 Aug 2026 14:34:22 +0530 Subject: [PATCH] coreos-modules: enable the Bluetooth subsystem Flatcar currently ships no Bluetooth support at all: CONFIG_BT is absent from the kernel configs, so olddefconfig resolves the whole subsystem to n and no Bluetooth modules are built. Enable the core stack (BR/EDR and LE) plus the HCI transports that matter on the hardware Flatcar runs on: - btusb, the transport used by essentially every USB adapter and by the Bluetooth radio in Intel/Realtek/MediaTek/Qualcomm combo chips - hci_uart with serdev, the usual transport on arm64 edge boards - virtio_bt, for VMs with a paravirtualised adapter - hci_vhci, which lets the stack be exercised without real hardware Everything is a module, so nothing is loaded unless Bluetooth hardware is present or the modules are loaded explicitly. RFKILL is enabled because BlueZ needs it to unblock and power adapters, and SERIAL_DEV_BUS because BT_HCIUART_SERDEV depends on it. CRYPTO_ECC/CRYPTO_ECDH are selected by BT for LE Secure Connections. DELL_RBTN is explicitly disabled in the amd64 config: it becomes visible once RFKILL is enabled (X86_PLATFORM_DRIVERS_DELL is already y) but it is a laptop radio-button driver unrelated to this change, and leaving it out keeps the new module set to exactly the Bluetooth closure. This adds 17 modules totalling ~2.45 MiB (arm64, stripped, uncompressed) to /usr/lib/modules. Verified with olddefconfig against linux-6.12.102 for both amd64 and arm64: apart from the symbols listed above, the resulting .config is byte-identical to the current one on both architectures. Userspace is deliberately left out of the image; BlueZ is a better fit for a systemd-sysext. Signed-off-by: Ananth Bhaskararaman --- .../changes/2026-08-09-bluetooth-support.md | 1 + .../coreos-modules/files/amd64_defconfig-6.12 | 1 + .../coreos-modules/files/commonconfig-6.12 | 32 +++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 changelog/changes/2026-08-09-bluetooth-support.md diff --git a/changelog/changes/2026-08-09-bluetooth-support.md b/changelog/changes/2026-08-09-bluetooth-support.md new file mode 100644 index 00000000000..4177de4345d --- /dev/null +++ b/changelog/changes/2026-08-09-bluetooth-support.md @@ -0,0 +1 @@ +- Enabled the Bluetooth subsystem (BR/EDR and LE) in the kernel, together with the USB, UART, virtio and vhci HCI transports. All of it builds as modules, so it is only loaded when Bluetooth hardware is present or the modules are loaded explicitly. Userspace (BlueZ) is not part of the image and can be added with the [bluez sysext](https://github.com/flatcar/sysext-bakery/pull/253) ([scripts#4197](https://github.com/flatcar/scripts/pull/4197)) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/amd64_defconfig-6.12 b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/amd64_defconfig-6.12 index 31410d16d3d..ba2a4405301 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/amd64_defconfig-6.12 +++ b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/amd64_defconfig-6.12 @@ -25,6 +25,7 @@ CONFIG_CRYPTO_SHA1_SSSE3=m CONFIG_CRYPTO_SHA256_SSSE3=m CONFIG_DCDBAS=m CONFIG_DEBUG_BOOT_PARAMS=y +# CONFIG_DELL_RBTN is not set CONFIG_DELL_RBU=m CONFIG_DEVICE_PRIVATE=y CONFIG_DMABUF_MOVE_NOTIFY=y diff --git a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/commonconfig-6.12 b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/commonconfig-6.12 index a97b740cbe4..8e73e55ca3d 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/commonconfig-6.12 +++ b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/commonconfig-6.12 @@ -80,8 +80,38 @@ CONFIG_BROADCOM_PHY=m CONFIG_BSD_DISKLABEL=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m CONFIG_BTRFS_FS=m CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_BT_AOSPEXT=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_BREDR=y +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_AUTOSUSPEND=y +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_MTK=y +CONFIG_BT_HCIBTUSB_POLL_SYNC=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIUART_RTL=y +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_LE=y +CONFIG_BT_LE_L2CAP_ECRED=y +CONFIG_BT_MSFTEXT=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_VIRTIO=m CONFIG_CACHEFILES=m CONFIG_CEPH_FS=m CONFIG_CEPH_FSCACHE=y @@ -847,6 +877,7 @@ CONFIG_RDS_TCP=m CONFIG_REALTEK_PHY=m CONFIG_REGULATOR=y CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_RFKILL=m # CONFIG_RPCSEC_GSS_KRB5 requires some older crypto modules CONFIG_RPCSEC_GSS_KRB5=m CONFIG_RTC_CLASS=y @@ -912,6 +943,7 @@ CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_NR_UARTS=32 CONFIG_SERIAL_8250_RSA=y CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_DEV_BUS=m # CONFIG_SERIO_SERPORT is not set CONFIG_SFC=m CONFIG_SIGNED_PE_FILE_VERIFICATION=y