Overview

The HC-06 is a popular slave-only Bluetooth 2.0 + EDR (Enhanced Data Rate) serial pass-through module built around the Cambridge Silicon Radio (CSR) BC417 chipset. It creates a transparent wireless UART serial bridge between microcontrollers and Bluetooth-enabled master devices (such as Android smartphones, laptops, or PCs).

Unlike the dual-mode HC-05 (which can operate as master or slave), the HC-06 is hardcoded as a Slave device only. It remains in AT command configuration mode whenever it is un-paired, and automatically transitions to transparent serial bridge mode as soon as a master device connects.

Quick reference

Baseboard supply (VCC)3.6 V to 6.0 V DC (5 V recommended)
UART logic level3.3 V TTL (requires resistor divider when receiving from 5V MCU)
Bluetooth specificationBluetooth v2.0 + EDR (SPP - Serial Port Profile)
Default UART configuration9600 baud, 8 data bits, 1 stop bit, no parity (9600,N,8,1)
Default PIN code1234 or 0000
Default device nameHC-06
Operating modeSlave only (cannot initiate connections to other devices)

Pinout

Standard 4-Pin Baseboard Header

PinNameTypeDescription
1STATE / NCDigital OutputConnection status indicator (HIGH = Connected, LOW = Unconnected)
2RXDDigital InputUART Receive line (3.3V TTL logic level)
3TXDDigital OutputUART Transmit line (3.3V TTL logic level)
4GNDPowerGround (0 V)
5VCCPowerSupply voltage input (+3.6 V to +6.0 V DC)
6EN / KEYDigital InputUnused on standard HC-06 modules

Specifications

ParameterSymbolMinTypMaxUnitConditions
Supply VoltageVCCV_{CC}3.65.06.0VDC
Logic Level HighVIHV_{IH}2.03.33.6VRXD pin
Logic Level LowVILV_{IL}-0.300.8VRXD pin
Pairing CurrentIpairI_{pair}303540mALED blinking fast (Searching)
Connected CurrentIconnI_{conn}81012mAConnected and transmitting
RF Transmit PowerPTXP_{TX}+4dBmClass 2 radio (~10m distance)
Baud Rate RangeBRBR120096001382400bpsProgrammable via AT commands

AT Command Set (Unconnected State Only)

When the HC-06 is powered ON and NOT connected to a Bluetooth master (onboard LED flashing red at 2 Hz):

  • Send AT commands over UART without carriage return (\r) or line feed (\n).
  • Every valid AT command receives an immediate string response.
CommandExpected ResponseDescription
ATOKTest UART communication
AT+VERSIONOKlinvorV1.8Query firmware version
AT+NAMEmydeviceOKsetnameChange Bluetooth broadcast name to "mydevice"
AT+PIN5678OKsetPINChange pairing PIN code to "5678"
AT+BAUD4OK9600Set baud rate (4 = 9600, 5 = 19200, 6 = 38400, 7 = 57600, 8 = 115200)

Wiring

HC-06 Baseboard PinMicrocontroller (Arduino Uno / ESP32)Notes
VCC5VOnboard 3.3V LDO input
GNDGNDGround
TXDRX (e.g. D2 for SoftwareSerial / GPIO16)3.3V output (5V MCU inputs read 3.3V as HIGH)
RXDTX (e.g. D3 for SoftwareSerial / GPIO17)Requires 1kΩ / 2kΩ voltage divider from 5V MCUs
Warning

RXD 3.3V Logic Level Protection: The HC-06 RXD pin is NOT 5V tolerant. Connecting an Arduino 5V TX pin directly to RXD will degrade or destroy the CSR BC417 chip over time. Use a 1 kΩ1\text{ k}\Omega and 2 kΩ2\text{ k}\Omega resistor voltage divider on RXD.

Common mistakes

  • Sending \r\n (CRLF) with AT commands: Unlike the HC-05 (which requires \r\n), sending \r\n to an HC-06 causes AT command parsing to fail. Configure serial monitor to "No line ending".
  • Attempting to configure AT commands while paired: Once connected to a smartphone or PC (LED stays solid ON), the HC-06 enters transparent pass-through mode and ignores AT commands.
  • Expecting Master mode operation: The HC-06 cannot scan for or initiate connections to other Bluetooth modules (such as a Bluetooth sensor or barcode scanner). Use an HC-05 if Master mode is required.

Notes

  • HC-06 uses classic Bluetooth 2.0 SPP (Serial Port Profile). iOS (Apple) devices do NOT support classic SPP; use BLE (Bluetooth Low Energy) modules such as HM-10 or ESP32 for iOS compatibility.

Assets & downloads