Documentation
On this page

Subsystems

Bluetooth

The MT6631's Bluetooth over STP: hardware, driver, boot-args, status and known issues.

Hardware

The Bluetooth is the same combo chip as the Wi-Fi, reached through CONNSYS: its packets travel on STP’s channel 0 beside WMT’s, over BTIF (0x1100c000). CONNSYS comes up with the Wi-Fi bring-up, so the two share the power-up, the firmware set and the memory window.

Driver

mtk_bt.c is the part that does not depend on the phone, a skeleton: what iOS’s bluetoothd needs from a kernel to take a controller as its own (the kernel control com.apple.uart.sk.bluetooth, the Skywalk kernel pipe behind it in mtk_btsk.c, the nodes it opens, H4 framing, and the answers of a MediaTek controller that Apple’s stack does not take as they are). MappleBluetooth.cpp registers the bluetooth service. What differs on every phone is a table of operations; the MT6781’s is the Wi-Fi driver’s STP over BTIF (mt6631_bt_* in mt6631_wifi.c). Nothing is made until every operation is present.

Device tree

/arm-io/wlan (shared with Wi-Fi); there is no node of its own.

Boot-arguments

mp_bt_steps in the catalogue: 1 Bluetooth on and the six HCI commands, nothing shown to iOS; 2 the registry service, nodes and bridge, brought up at boot (gives up after 120 s). The spaced line has mp_bt_steps=2; a safe boot sets it to 0. mp_hidres controls the IOHIDResource service a classic keyboard’s keys go through.

User space

iOS’s bluetoothd. The root keeps its launch job because device.conf has bluetooth 1.

Status

device.conf: partial: the MT6631 over STP on BTIF (mp_bt_steps=2): on in Settings, LE scan, pairing; a classic keyboard types (IOHIDResource, mp_hidres=1); no A2DP.

Seen: Bluetooth on and an LE scan in Settings (run 27); a classic keyboard pairing and typing (run 31); A2DP failing (run 28c).

Known issues

  • No audio over Bluetooth: headphones and speakers are not supported yet.
  • The Bluetooth bridge’s quirks are set through kern.mapple_bt_quirks.

Source files

bsd/dev/mtk_bt.c, mtk_btsk.c, mt6631_wifi.c, iokit/Kernel/arm/MappleBluetooth.cpp, iokit/Kernel/arm/hid/IOHIDResource.cpp of the kernel at 76b737c.

Applies to realme 8i (spaced), release 1 · Updated 15 November 2026