← Datasheets

Datasheet

HC-06 datasheet: the module PDF, explained

The HC-06 datasheet is Guangzhou HC Information Technology’s module data sheet, revision 2.2 of April 2011. It describes the bare 27 × 13 mm module on a CSR BC417143 chip, powered at 3.1–4.2V, and its AT commands. Most HC-06s sold for Arduino are that module on a small 5V breakout board. The datasheet includes the maker’s own circuit for one, on page 11; this page shows it and maps the module’s pads onto the pins you hold.

Guangzhou HC (Wavesen) · Module data sheet Rev 2.2 · 6 Apr 2011 · 17 pages

HC-06 — Bluetooth serial module

The last revision in the document’s own history table. The maker trades as Wavesen; “linvor”, the name the module still answers to, is its former name.

Download the PDF

Classic Bluetooth SPP — which is what an HC-05 and an HC-06 speak — is invisible to iOS at the operating-system level. No app fixes it, no library fixes it, and no wiring change fixes it. You need a BLE module: a genuine HM-10, or an ESP32. And Web Bluetooth is not the escape hatch — it is not in Safari, any version.

HC-06 specifications: the numbers that matter

WhatValueWhere
Bluetooth2.0 with EDRpage 9
ChipCSR BC417143B, with 8 Mbit of flashpages 5, 9
Supply, bare module3.1–4.2V; the VCC pad is 3.3Vpages 5, 6
Current30–40mA while pairing; 8mA while communicatingpage 5
Transmit power−4 to +6dBm, Bluetooth class 2page 5
Receive sensitivity−80dBm; −83dBm measured at <0.1% bit error ratepages 5, 12
Operating temperature−25 to +75°C on page 5; −20 to +55°C on page 9pages 5, 9
Size27 × 13 × 2mmpage 5
Defaults9600 baud, 8N1; name linvor; PIN 1234page 15

Two things in that table deserve a flag. The two temperature ranges disagree, and the document does not say which wins; plan for the narrower one. And the 3.1–4.2V supply is the bare module’s. Seller listings that quote a range up to 6V are describing a breakout board’s regulator. The maker’s own adapter circuit feeds an R1114-33 3.3V regulator from 5V and gives no input range for it.

HC-06 pinout: the module and the breakout board

The datasheet labels its own photo with the pads that matter, numbered as on the module:

HC-06 module photo from its datasheet, labelled with pad numbers: TX pad 1, RX pad 2, 3.3V pad 12, GND pad 13, KEY pad 26 and LED pad 24
Figure 1, page 3. © Guangzhou HC Information Technology, HC-06 module data sheet.

A breakout board brings four of them out to its header and puts a 3.3V regulator in front of the supply. The maker’s own adapter, further down, is wired like this:

Breakout pinModule padWhat it is
VCC12, through the regulator3.3V supply; the regulator is why the board can sit on 5V
GND13 (also 21, 22)ground
TXD1, UART_TXthe module talks: goes to the Arduino’s RX
RXD2, UART_RXthe module listens: fed from the Arduino’s TX
LED on the board24, PIO1the status light, through a 470Ω resistor in the reference circuit

The UART pads themselves are 3.3V CMOS, and the datasheet gives no 5V tolerance for them. The maker’s adapter protects its RX line with a diode, so the module never sees 5V. Retail boards vary, and you cannot tell from outside whether yours has that protection, so a 5V Arduino’s TX should reach RXD through a divider. The other direction needs nothing: 3.3V from the module clears the Uno’s HIGH threshold. The HC-06 module page has the divider and the reasoning.

HC-06 pad layout: all 34 pads

HC-06 pad layout and pin list from its datasheet: 34 half-hole pads, with pin 1 TX, 2 RX, 3 CTS, 4 RTS, 12 3.3V, 13 GND, 21 and 22 GND, 23 to 34 PIO0 to PIO11
Page 10, the Linvor drawing LV-BC-2.0. © Guangzhou HC Information Technology, HC-06 module data sheet.

The pads are half-holes, made to be soldered flat onto another board. Beyond the four a breakout uses, the chip exposes flow control (CTS, RTS), PCM audio, USB, SPI for reprogramming, and twelve general-purpose pins. None of it is used in a serial-link project.

HC-06 reference circuits

Page 11 has two circuits. The first is an application example; the second is the maker’s own 5V adapter board, the closest thing in the document to the breakout most people hold.

HC-06 application example from its datasheet: a 3.3V GPS module feeding the HC-06 UART RX, a status LED on PIO1 through a 470 ohm resistor, and a WAKEUP key on PIO3, pad 26
Figure 5, block diagram 1, page 11. © Guangzhou HC Information Technology, HC-06 module data sheet.

Block diagram 1 feeds a GPS receiver’s output into the module’s RX, puts the status LED on PIO1 (pad 24) through 470Ω, and a WAKEUP key on PIO3 (pad 26). Page 12 explains the key: on a master build, pressing it makes the module forget the last device it paired with.

HC-06 5V adapter board circuit from its datasheet: an 8-pin header with +5V, KEY, RX_TTL, TX_TTL, LED, RX_232, TX_232 and GND, an R1114-33 3.3V regulator, a 1N5817 diode on the RX line, a two-transistor level shifter on TX, and a MAX3232 for RS-232
Figure 5, block diagram 2, page 11. © Guangzhou HC Information Technology, HC-06 module data sheet.

Block diagram 2 is the adapter board, and it answers the two questions that fill the forums:

  • Power: 5V comes in on the header and an R1114-33 regulator makes the module’s 3.3V. That is why a breakout’s VCC belongs on the Arduino’s 5V pin.
  • Logic levels: 5V is never driven into the module. RX_TTL reaches the module’s RX through a 1N5817 diode, and a pair of transistors lifts the module’s 3.3V TX up to 5V on TX_TTL.
  • Extras most retail boards leave out: a MAX3232 for real RS-232 levels, and a KEY input.

RF characteristics

HC-06 RF test characteristics from its datasheet: carrier 2.4 to 2.4835 GHz (printed as MHz), RF output power -6 to 4 dBm with 2 typical, receive sensitivity -83 dBm at under 0.1 percent bit error rate
Section 7, page 12. © Guangzhou HC Information Technology, HC-06 module data sheet.

Output power of 2dBm typical and 4dBm at most puts it in Bluetooth class 2, the class usually quoted as about ten metres indoors. Note that this table tops out at 4dBm while the feature list on page 5 says 6. The document is not consistent with itself, which is typical of module datasheets and one more reason to test the range you actually need.

HC-06 AT commands, as the datasheet gives them

The module listens for commands whenever it is powered and not paired. The datasheet asks for about a second between commands, and the name, PIN and baud rate all survive a power cycle.

SendDatasheet replyDoes
ATOKtests the link
AT+BAUD4OK9600sets the baud rate: 1 = 1200, 2 = 2400, 3 = 4800, 4 = 9600, 5 = 19200, 6 = 38400, 7 = 57600, 8 = 115200, up to C = 1382400
AT+NAMEcarbotOKnamerenames it, up to 20 characters
AT+PIN4321OKsetpinsets the 4-digit pairing PIN
AT+PN / AT+PO / AT+PEOK NONE / OK ODD / OK EVENparity, on firmware above V1.5
AT+VERSIONLinvorV1.nreports the firmware

Do not set the baud above 115200 without a way back. The datasheet’s own note: a PC serial port cannot follow it higher, so the only route back down is a microcontroller programmed to talk at the new rate and send another AT+BAUD.

What the datasheet does not say is how to send them. There is no line ending, and no equals sign: AT+NAMEcarbot, never AT+NAME=carbot. Real linvor firmware also answers slightly differently from the table above, and some later boards sold as HC-06 run different firmware altogether. Why every AT command returns ERROR covers the Serial Monitor settings for each module and the test that tells you which firmware you have.

What the datasheet does not tell you

  • Which board you have. The adapter circuit on page 11 is one design. Retail boards follow it more or less closely, and the datasheet cannot tell you which parts yours kept.
  • What the LED means. On most boards, blinking means waiting for a connection and steady means connected. The datasheet only shows where it is wired.
  • iPhones. The datasheet predates the question. The answer is in the box at the top of this page.
  • Which role you have. The document covers master and slave builds. Modules sold for Arduino are the slave build: a phone or computer connects to them, never the other way round. For two Arduinos talking to each other, use an HC-05.

Which revision is this?

Its history table runs from version 1.0 in June 2006 to 2.2 on 6 April 2011, and the embedded Linvor specification sheet is dated September 2006. It is an old document for an old design. As far as we know no later revision exists: the maker moved on to newer modules rather than updating this one.

More datasheets

The datasheets index has the L298N motor driver, explained, and the Arduino Uno’s ATmega328P. For the link itself failing, not the part, see the Arduino Bluetooth symptom index.

Common questions

Where can I download the HC-06 datasheet?
The HC-06 module data sheet from Guangzhou HC Information Technology, revision 2.2 of April 2011, is linked at the top of this page as a 17-page PDF. It is the maker's own document; the company trades as Wavesen, and linvor, the default module name, is its former name.
What are the HC-06 default name, PIN and baud rate?
The datasheet gives name linvor, PIN 1234 and 9600 baud, 8 data bits, no parity, 1 stop bit. All three can be changed with AT commands while the module is not paired: AT+NAME, AT+PIN and AT+BAUD, with no equals sign and no line ending.
Can I power the HC-06 from 5V?
The bare module runs at 3.1 to 4.2V, but the breakout board most people use has a 3.3V regulator, so its VCC pin can go on the Arduino's 5V. The regulator does not protect the data pins: fit a divider between the Arduino's TX and the module's RXD.
Does the HC-06 work with an iPhone?
No. Classic Bluetooth SPP — which is what an HC-05 and an HC-06 speak — is invisible to iOS at the operating-system level. No app fixes it, no library fixes it, and no wiring change fixes it. You need a BLE module: a genuine HM-10, or an ESP32. And Web Bluetooth is not the escape hatch — it is not in Safari, any version.
What chip is inside the HC-06?
A CSR BC417143B with 8 Mbit of external flash, running Bluetooth 2.0 with EDR, according to page 9 of the datasheet. The flash holds the firmware, which is why modules with the same hardware can answer different AT commands.

Build it. Understand it.

Get the complete illustrated guide and start your first car — free.

Get the Book