Contact Sales & After-Sales Service

Contact & Quotation

  • Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
  • Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Drag & Drop Files, Choose Files to Upload You can upload up to 3 files.

Notes:
For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.

HC-06 vs HC-05: The Complete Bluetooth Module Comparison Guide for Your Projects

If you’ve spent any time working with embedded systems or DIY electronics, you’ve probably come across the HC-05 and HC-06 Bluetooth modules. These little boards have been the go-to choice for wireless serial communication for years, and for good reason—they’re cheap, reliable, and work right out of the box with most microcontrollers.

But here’s the thing: picking between the HC-06 vs HC-05 isn’t always straightforward. I’ve seen plenty of engineers (myself included, back in the day) grab whichever one was available, only to realize later that they needed features the module didn’t have. So let’s break down exactly what makes these two modules different and when you should use each one.

Understanding the HC-05 and HC-06 Bluetooth Modules

Both the HC-05 and HC-06 are based on the same underlying hardware—the CSR BC417 Bluetooth chip—and use Bluetooth 2.0+EDR for communication. They both support the Serial Port Protocol (SPP), which basically means they act as wireless serial cables. You connect them to your Arduino or other microcontroller via UART, pair them with a phone or computer, and you’re transmitting data wirelessly.

The key difference comes down to one word: flexibility.

The HC-05 can operate as either a master or slave device, meaning it can initiate connections with other Bluetooth devices. The HC-06, on the other hand, is locked into slave mode only—it sits and waits for another device to connect to it. This single distinction drives most of the practical differences between these modules.

HC-06 vs HC-05: Technical Specifications Comparison

Let me lay out the specs side by side so you can see exactly what you’re working with:

SpecificationHC-05HC-06
Bluetooth Version2.0+EDR2.0+EDR
Operating ModeMaster/Slave (configurable)Slave only
Operating Voltage3.6V – 6V3.6V – 6V
Operating Current~30-40mA~30-40mA
Communication RangeUp to 10 metersUp to 10 meters
InterfaceUART (Serial)UART (Serial)
Default Baud Rate38400 bps (AT mode), 9600 bps (data mode)9600 bps
Default Password1234 or 00001234
Number of Pins6 pins (STATE, RX, TX, GND, VCC, EN)4 pins (RX, TX, GND, VCC)
AT Command SupportExtensive (40+ commands)Limited (~6 commands)
Base ChipCSR BC417CSR BC417

Both modules use the EGBT-045MS (HC-05) and EGBT-046S (HC-06) base modules, and they’re typically sold on breakout boards that include voltage regulators and level shifting components.

HC-05 Bluetooth Module: Features and Pinout

The HC-05 is the more versatile of the two modules. With six pins and the ability to switch between master and slave modes, it’s built for projects that need flexibility.

HC-05 Pin Configuration

PinNameFunction
1STATEIndicates connection status (HIGH when connected)
2RXDReceive data (connect to MCU TX)
3TXDTransmit data (connect to MCU RX)
4GNDGround
5VCCPower supply (3.6V – 6V)
6EN/KEYEnable pin for AT command mode

The STATE pin is particularly useful when you need your code to know whether a Bluetooth connection is active. I’ve used this in several projects where the Arduino needed to behave differently when connected versus disconnected—for example, entering a low-power sleep mode when no device is paired.

The EN (Enable) or KEY pin is what lets you enter AT command mode. By holding this pin HIGH while powering up the module, you can access the full AT command set and configure everything from the device name to the baud rate to the master/slave role.

HC-05 Operating Modes Explained

The HC-05 has two primary operating modes that you need to understand:

Data Mode is the default state. In this mode, the module behaves as a transparent serial bridge—any data you send to the TX pin gets transmitted over Bluetooth, and any data received over Bluetooth appears on the RX pin. The LED blinks rapidly (about 5Hz) when waiting for a connection and blinks twice per second when connected.

AT Command Mode is where you configure the module. To enter full AT command mode on the HC-05, you need to hold the KEY/EN pin HIGH while applying power. The LED will blink slowly (about 1Hz), indicating you can now send AT commands. The default baud rate in this mode is 38400 bps, and all commands must end with \r\n (carriage return and line feed).

HC-06 Bluetooth Module: Features and Pinout

The HC-06 takes a simpler approach. With only four pins and slave-only operation, it’s designed to be plug-and-play for basic wireless serial applications.

HC-06 Pin Configuration

PinNameFunction
1RXDReceive data (connect to MCU TX)
2TXDTransmit data (connect to MCU RX)
3GNDGround
4VCCPower supply (3.6V – 6V)

Notice there’s no STATE or EN pin here. The HC-06 automatically enters AT mode whenever it’s powered on and not paired with another device. This sounds convenient, but there’s a catch—you have to send AT commands within 1 second of starting to type, or the module won’t recognize them. This means you can’t type commands interactively in a serial terminal; you need to use software that sends the entire command at once.

HC-06 AT Command Mode Behavior

Unlike the HC-05, the HC-06 doesn’t have a dedicated button or pin for entering AT mode. Instead, it accepts AT commands anytime it’s not actively connected to a master device. The moment a connection is established, it switches to data mode and ignores any configuration commands.

Another quirk: HC-06 AT commands don’t use \r\n at the end. In fact, sending a newline character will cause the command to fail. This trips up a lot of people who are used to the HC-05 or other AT-command-based devices.

HC-06 vs HC-05: AT Commands Comparison

The AT command sets are where these modules really diverge. Here’s a comparison of the most commonly used commands:

FunctionHC-05 CommandHC-06 CommandNotes
Test connectionATATBoth return “OK”
Get firmware versionAT+VERSION?AT+VERSIONDifferent syntax
Set device nameAT+NAME=NewNameAT+NAMENewNameHC-06 has no “=” sign
Set password/PINAT+PSWD=1234AT+PIN1234Different parameter name
Set baud rateAT+UART=9600,0,0AT+BAUD4HC-06 uses numbered presets
Set role (Master/Slave)AT+ROLE=0 (Slave), AT+ROLE=1 (Master)Not availableHC-06 is slave-only
Get Bluetooth addressAT+ADDR?Not availableHC-05 only
Factory resetAT+ORGLNot availableHC-05 only

The HC-05 supports over 40 AT commands, including advanced features like inquiry mode (scanning for nearby devices), binding to specific device addresses, and configuring encryption. The HC-06 is limited to the basics: name, password, and baud rate.

HC-06 Baud Rate Presets

Since the HC-06 uses a different baud rate command format, here’s the mapping:

CommandBaud Rate
AT+BAUD11200 bps
AT+BAUD22400 bps
AT+BAUD34800 bps
AT+BAUD49600 bps (default)
AT+BAUD519200 bps
AT+BAUD638400 bps
AT+BAUD757600 bps
AT+BAUD8115200 bps

When to Use HC-05 vs HC-06 in Your Projects

Choosing between the HC-06 vs HC-05 really comes down to what your project requires. Here’s my practical guidance based on years of working with both:

Choose the HC-06 When:

You need a simple smartphone-to-microcontroller link. If you’re building a project where your phone controls an Arduino—like a Bluetooth car, home automation system, or sensor monitor—the HC-06 works perfectly. Your phone acts as the master, the HC-06 acts as the slave, and you’re done.

Budget is tight. The HC-06 is typically a dollar or two cheaper than the HC-05. On a single project that’s negligible, but if you’re building 50 units, it adds up.

You’re new to Bluetooth modules. The HC-06’s simplified command set means fewer things can go wrong during configuration. You can get it working in minutes with minimal AT command knowledge.

You don’t need master functionality. Most hobbyist projects fall into this category. If something else (phone, computer, another HC-05) is initiating the connection, slave mode is all you need.

Choose the HC-05 When:

You need Arduino-to-Arduino communication. This is the classic use case. You set one HC-05 as master and one as slave, and they automatically connect to each other on power-up. The HC-06 can be the slave in this scenario, but you still need an HC-05 (or equivalent) as the master.

You need to initiate connections programmatically. Maybe your project needs to scan for nearby devices, connect to a specific Bluetooth address, or disconnect and reconnect on command. Only the HC-05 can do this.

You need the STATE pin. Knowing whether you’re connected without trying to send data is useful for power management, status LEDs, or conditional logic.

You’re building a more complex wireless network. The HC-05’s advanced AT commands let you configure connection timeouts, security modes, and device filtering.

Practical Wiring Guide for Both Modules

Both modules operate at 3.3V logic levels internally, even though the breakout boards accept 5V power. This is critical when connecting to 5V microcontrollers like the Arduino Uno.

For the TX connection (module to MCU): You can usually connect this directly. Most 5V microcontrollers recognize 3.3V as a logic HIGH.

For the RX connection (MCU to module): You need a voltage divider. The HC-05 and HC-06 RX pins are not 5V tolerant. A simple solution is a 1kΩ resistor between the Arduino TX and module RX, with a 2kΩ resistor from module RX to ground.

Here’s a basic wiring table for Arduino Uno:

Arduino PinHC-05/HC-06 PinNotes
5VVCCPower supply
GNDGNDCommon ground
Pin 10 (SoftwareSerial RX)TXDDirect connection OK
Pin 11 (SoftwareSerial TX)RXDUse voltage divider!
5V (through button)EN/KEY (HC-05 only)For AT mode entry

Common Issues and Troubleshooting Tips

After debugging countless Bluetooth module problems (both my own and from questions in forums), here are the most common issues I see:

Module not responding to AT commands: For the HC-05, make sure the KEY pin is HIGH before powering on, and that you’re using 38400 baud with CR+LF line endings. For the HC-06, make sure you’re NOT using line endings and you’re sending commands as single strings (not typing character by character).

Pairing succeeds but no data transfers: Check your RX/TX connections. The most common mistake is connecting TX to TX and RX to RX instead of crossing them over.

Random garbage characters in received data: Baud rate mismatch. Make sure your microcontroller code, serial terminal, and Bluetooth module are all set to the same baud rate.

HC-05 won’t enter master mode: Some HC-05 modules ship with firmware that doesn’t support master mode despite the marketing. Try the AT+ROLE=1 command—if it returns ERROR, you might have a firmware issue.

Connection keeps dropping: Check your power supply. These modules draw about 30-40mA, and noisy or underpowered supplies can cause instability.

Useful Resources and Datasheet Downloads

For your reference, here are the essential resources you’ll need when working with these modules:

Datasheets and Documentation:

  • HC-05 Datasheet: Available from component distributors like LCSC, Mouser, or directly from the manufacturer
  • HC-06 Datasheet: Similar distribution channels
  • HC Serial Bluetooth User Manual: Covers both modules in detail with AT command references

AT Command References:

  • HC-05 Complete AT Command Set: Typically included in the manufacturer’s documentation
  • HC-06 AT Command Quick Reference: Limited to ~6 commands (AT, AT+VERSION, AT+NAME, AT+PIN, AT+BAUD)

Development Tools:

  • Arduino IDE Serial Monitor: Built-in, works for both configuration and testing
  • Tera Term or PuTTY: Better for HC-05 configuration where you need CR+LF control
  • Bluetooth Terminal apps (Android): Search “Bluetooth Terminal” on Play Store for testing

Community Resources:

  • Arduino Forum Bluetooth Section: Great for troubleshooting specific issues
  • Martyn Currey’s HC-05/HC-06 Guides: Detailed tutorials with excellent technical depth

Frequently Asked Questions About HC-06 vs HC-05

Can I use HC-06 as a master device?

No, the HC-06 firmware only supports slave mode. This is hard-coded and cannot be changed through AT commands or firmware updates. If you need master functionality, you must use the HC-05.

What’s the maximum data transfer speed for these modules?

Both modules support up to 3Mbps over EDR (Enhanced Data Rate), but practical throughput is typically much lower—around 100-300 kbps for reliable communication. The default 9600 baud rate is sufficient for most sensor data and control applications.

Can I connect two HC-06 modules together?

No. Since both would be in slave mode, neither can initiate the connection. You need at least one master device. The typical solution is one HC-05 (configured as master) paired with one HC-06 (slave), or two HC-05 modules with one set as master and one as slave.

Do HC-05 and HC-06 work with iPhones?

Not reliably. Both modules use Bluetooth Classic (2.0+EDR), which iOS has restricted for non-MFi certified accessories. They work fine with Android phones, Windows PCs, and Macs. For iOS compatibility, you’ll need a Bluetooth Low Energy (BLE) module like the HM-10 or an ESP32.

How do I identify whether I have an HC-05 or HC-06?

The easiest way is to count the pins—HC-05 has 6 pins on the breakout board, while HC-06 typically has 4. Also, the HC-05 usually has a small pushbutton on the board for entering AT mode; the HC-06 does not. If in doubt, send AT+ROLE? command—the HC-05 will respond with the current role setting, while the HC-06 won’t recognize the command at all.

Conclusion: Making the Right Choice for Your Project

The HC-06 vs HC-05 decision ultimately comes down to your project requirements. For straightforward smartphone-controlled projects where you just need wireless serial communication, the HC-06’s simplicity and lower cost make it the practical choice. For anything requiring master mode, device-to-device communication, or advanced Bluetooth functionality, the HC-05 is worth the extra dollar or two.

Both modules have proven themselves reliable in countless projects—from simple LED controllers to complex robotics systems. They’re not the newest technology (Bluetooth 2.0 is old by today’s standards), but they’re well-documented, widely available, and just work when you wire them up correctly.

My recommendation? If you’re just getting started, pick up both and experiment. At a few dollars each, you’ll learn more from hands-on testing than any comparison article can teach you. And if you’re building something for production, default to the HC-05 for its flexibility—you’ll thank yourself later when requirements change and you need features you didn’t originally plan for.

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Sales & After-Sales Service

Contact & Quotation

  • Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.

  • Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.

Drag & Drop Files, Choose Files to Upload You can upload up to 3 files.

Notes:
For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.