Skip to main content
BlueBus supports hands-free calling (HFP - Hands-Free Profile) with your BMW’s built-in controls and speakers. These settings allow you to configure the telephony features.

Handsfree mode (HFP)

Enable or disable the Bluetooth Hands-Free Profile. EEPROM address: 0x36 (CONFIG_SETTING_HFP_ADDRESS)
Off
0x00
Hands-Free Profile is disabled. Phone calls are not routed through the vehicle.
On
0x01
Hands-Free Profile is enabled. Incoming calls are routed through the vehicle’s speakers and microphone.

Dynamic profile management

When you change the HFP setting while a device is connected, BlueBus automatically manages the Bluetooth profile connection: Turning HFP off: Closes the active HFP connection
  • BC127 modules: Sends BC127CommandClose() for the HFP link ID
  • BM83 modules: Sends BM83CommandDisconnect() with BM83_CMD_DISCONNECT_PARAM_HF
Turning HFP on: Opens a new HFP connection to the paired device
  • BC127 modules: Sends BC127CommandProfileOpen() for “HFP” profile
  • BM83 modules: Sends BM83CommandConnect() with BM83_DATA_LINK_BACK_PROFILES_HF

Microphone gain

Adjust the microphone gain level for phone calls to ensure clear audio transmission. EEPROM address: 0x38 (CONFIG_SETTING_MIC_GAIN_ADDRESS)

BC127 microphone gain values

For hardware version 1.x with BC127 Bluetooth module, the microphone gain supports 22 settings (C0 through D6):
IndexGain (dB)EEPROM Value
0-270x00
1-230x01
2-210x02
3-170x03
4-150x04
5-110x05
6-90x06
7-50x07
8-30x08
900x09
10+30x0A
11+60x0B
12+90x0C
13+120x0D
14+150x0E
15+180x0F
16+210x10
17+240x11
18+270x12
19+300x13
20+330x14
21+360x15
The gain table is defined at bt_bc127.c:17 as BTBC127MicGainTable[].
Some values in the table are rounded. For example, index 1 is technically -23.5dB and index 21 is technically 39.5dB (D6 setting).

BM83 microphone gain values

For hardware version 2.x with BM83 Bluetooth module, the microphone gain supports 16 settings:
IndexGain (dB)EEPROM Value
00 (Default)0x00
1+30x01
2+70x02
3+80x03
4+110x04
5+150x05
6+180x06
7+200x07
8+230x08
9+250x09
10+290x0A
11+320x0B
12+350x0C
13+390x0D
14+420x0E
15+460x0F
The gain table is defined at bt_bm83.c:13 as BTBM83MicGainTable[].

Adjusting microphone gain

When you save a new microphone gain setting, BlueBus immediately applies it to the Bluetooth module: BC127 modules: Sends BC127CommandSetMicGain() with the gain value plus mic bias and preamp settings BM83 modules: Calculates the offset from current gain and sends either:
  • BM83CommandMicGainUp() - Increases gain by 1 step (command 0x24)
  • BM83CommandMicGainDown() - Decreases gain by 1 step (command 0x25)
The offset is applied iteratively until the target gain is reached (menu_singleline.c:389-397).
If the microphone gain value exceeds the valid range (>21 for BC127 or >0x0F for BM83), it is automatically reset to 0 to prevent undefined behavior.

Microphone bias (BC127 only)

Configures the microphone bias voltage for the BC127 module. EEPROM address: 0x39 (CONFIG_SETTING_MIC_BIAS_ADDRESS) This setting is used in conjunction with microphone gain when sending BC127CommandSetMicGain().

Microphone preamp (BC127 only)

Configures the microphone preamplifier setting for the BC127 module. EEPROM address: 0x3B (CONFIG_SETTING_MIC_PREAMP_ADDRESS) This setting is used in conjunction with microphone gain when sending BC127CommandSetMicGain().

Telephone volume offset

Adjust the volume offset for phone calls relative to music playback. EEPROM address: 0x3A (CONFIG_SETTING_TEL_VOL_ADDRESS)
Range
0x00 to 0x0F
Volume offset from 0 to +15Maximum value defined as CONFIG_SETTING_TEL_VOL_OFFSET_MAX (0x0F) at config.h:125
The offset is displayed as a signed integer (e.g., “Call Vol. Offset: +5”) and allows you to make phone calls louder or quieter than media playback without affecting the main volume setting.

Telephone mode

Configure how BlueBus handles telephone audio routing. EEPROM address: 0x3C (CONFIG_SETTING_TEL_MODE_ADDRESS)
Standard telephone mode with proper muting and audio routingValue: CONFIG_SETTING_TEL_MODE_DEFAULT
TCU Mode
0x01
Telephone Control Unit mode for vehicles with factory phone systemsValue: CONFIG_SETTING_TEL_MODE_TCU
No Mute
0x02
Disables automatic muting during callsValue: CONFIG_SETTING_TEL_MODE_NO_MUTE
Analog
0x03
Routes telephone audio through analog connectionsValue: CONFIG_SETTING_TEL_MODE_ANALOG
TCU Mode option is hidden on BC127 (hardware version 1.x) systems as it is not necessary for that hardware configuration. The menu automatically skips this option when scrolling on BC127 systems.

TCU mode DAC volume

Special DAC volume setting used when in TCU telephone mode. EEPROM address: 0x37 (CONFIG_SETTING_DAC_TEL_TCU_MODE_VOL_ADDRESS) This separate volume setting is applied when telephone mode is set to TCU to ensure proper audio levels when interfacing with factory telephone systems.

Checking telephony features status

The system provides a helper function to check if any telephony features are active:
// From config.c:437
uint8_t ConfigGetTelephonyFeaturesActive()
{
    if (ConfigGetSetting(CONFIG_SETTING_HFP_ADDRESS) == CONFIG_SETTING_ON ||
        ConfigGetSetting(CONFIG_SETTING_SELF_PLAY_ADDRESS) == CONFIG_SETTING_ON
    ) {
        return CONFIG_SETTING_ON;
    }
    return CONFIG_SETTING_OFF;
}
This returns CONFIG_SETTING_ON (0x01) if either HFP or self-play is enabled.

Build docs developers (and LLMs) love