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.
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:
Specification
HC-05
HC-06
Bluetooth Version
2.0+EDR
2.0+EDR
Operating Mode
Master/Slave (configurable)
Slave only
Operating Voltage
3.6V – 6V
3.6V – 6V
Operating Current
~30-40mA
~30-40mA
Communication Range
Up to 10 meters
Up to 10 meters
Interface
UART (Serial)
UART (Serial)
Default Baud Rate
38400 bps (AT mode), 9600 bps (data mode)
9600 bps
Default Password
1234 or 0000
1234
Number of Pins
6 pins (STATE, RX, TX, GND, VCC, EN)
4 pins (RX, TX, GND, VCC)
AT Command Support
Extensive (40+ commands)
Limited (~6 commands)
Base Chip
CSR BC417
CSR 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
Pin
Name
Function
1
STATE
Indicates connection status (HIGH when connected)
2
RXD
Receive data (connect to MCU TX)
3
TXD
Transmit data (connect to MCU RX)
4
GND
Ground
5
VCC
Power supply (3.6V – 6V)
6
EN/KEY
Enable 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
Pin
Name
Function
1
RXD
Receive data (connect to MCU TX)
2
TXD
Transmit data (connect to MCU RX)
3
GND
Ground
4
VCC
Power 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:
Function
HC-05 Command
HC-06 Command
Notes
Test connection
AT
AT
Both return “OK”
Get firmware version
AT+VERSION?
AT+VERSION
Different syntax
Set device name
AT+NAME=NewName
AT+NAMENewName
HC-06 has no “=” sign
Set password/PIN
AT+PSWD=1234
AT+PIN1234
Different parameter name
Set baud rate
AT+UART=9600,0,0
AT+BAUD4
HC-06 uses numbered presets
Set role (Master/Slave)
AT+ROLE=0 (Slave), AT+ROLE=1 (Master)
Not available
HC-06 is slave-only
Get Bluetooth address
AT+ADDR?
Not available
HC-05 only
Factory reset
AT+ORGL
Not available
HC-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:
Command
Baud Rate
AT+BAUD1
1200 bps
AT+BAUD2
2400 bps
AT+BAUD3
4800 bps
AT+BAUD4
9600 bps (default)
AT+BAUD5
19200 bps
AT+BAUD6
38400 bps
AT+BAUD7
57600 bps
AT+BAUD8
115200 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 Pin
HC-05/HC-06 Pin
Notes
5V
VCC
Power supply
GND
GND
Common ground
Pin 10 (SoftwareSerial RX)
TXD
Direct connection OK
Pin 11 (SoftwareSerial TX)
RXD
Use 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.
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.
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.