From 00a1a27faeb26cb3d6079a44f2db13ea652ca35c Mon Sep 17 00:00:00 2001 From: Ananth Bhaskararaman Date: Sun, 9 Aug 2026 14:34:22 +0530 Subject: [PATCH 1/2] 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 From ed693d3480c3b40d37bc0ac1c4c025d0cea75058 Mon Sep 17 00:00:00 2001 From: Ananth Bhaskararaman Date: Mon, 24 Aug 2026 22:48:03 +0530 Subject: [PATCH 2/2] coreos-modules: build the serial device bus in for BT_HCIUART_BCM CONFIG_BT_HCIUART_BCM depends on (!ACPI || SERIAL_DEV_CTRL_TTYPORT), and Flatcar sets CONFIG_ACPI=y, so SERIAL_DEV_CTRL_TTYPORT is required. That symbol is gated behind "depends on SERIAL_DEV_BUS != m", so with the bus built as a module it can never be selected and olddefconfig silently left BT_HCIUART_BCM unset, failing the build: Requested options not enabled in build: CONFIG_BT_HCIUART_BCM Build the serial device bus in and enable the TTY port controller. The bus is a small core driver and was only introduced as a module by the preceding Bluetooth commit, so nothing outside this series changes behaviour. Signed-off-by: Ananth Bhaskararaman --- .../sys-kernel/coreos-modules/files/commonconfig-6.12 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 8e73e55ca3d..3739fc879f0 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 @@ -943,7 +943,8 @@ 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_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y # CONFIG_SERIO_SERPORT is not set CONFIG_SFC=m CONFIG_SIGNED_PE_FILE_VERIFICATION=y