SPP Bluetooth Modules

These small size Bluetooth TTL transceiver modules are designed for serial communication (SPP - serial port profile). It allows your target device to both send or receive TTL data via Bluetooth technology without connecting a serial cable to your computer.

The modules with the HC-03 and HC-05 firmware are the Master and Slave integrated Bluetooth serial modules with firmware which allows you to modify master and slave mode at any time. HC-03 are industrial grade products, HC-05 are commercial grade products.

The modules with the HC-04 and HC-06 firmware are the modules which are factory set to be Master or Slave modules. Master and slave mode cannot be switched from the factory setting. HC-04 is an industrial grade product, HC-06 is a commercial grade product.

The modules with the HC-09 firmware are replacements for the HC-06 and HC-07 modules.

The modules with Linvor firmware are the same as the HC-06 firmware modules (see above).

= The hardware =

HC-05, HC-06 Hardware
The hardware for all firmware versions of the HC-05 and HC-06 modules is the same and the firmware may be freely changed with the right tools. All the modules look like this:



Hardware details:


 * Built-in CSR company Bluetooth chip BC417143
 * Bluetooth® Technology v2.0 + EDR
 * TTL data transparent transfer between a host Bluetooth device
 * Compatible with all Bluetooth adapters that support SPP
 * Coverage up to 30 ft / 10 m
 * Built in antenna
 * Power input: +3.3VDC (bluetooth module)
 * Can set the module control parameters and control commands via AT commands
 * The maximum serial baud rate: 1382400 bps, support for hardware flow control transfer
 * Provide seven input and output ports
 * Connection/non-connection status indicators

HC-07 Hardware
HC-07 modules are replacements for the HC-06 using different hardware chips. The HC-07 uses a CSR 41C6 chip with internal 8 Mbit flash. There is no external 8Mbit flash chip.

HC-08 Hardware
The HC-08 module firmware working voltage is 2V-3.6V. The range of this module is 8 to 10m. The module is an ultra low power Bluetooth protocol v4.0 module which cane operate as either a master or a slave device.

HC-08 Current Consumption
Note: absolute maximum voltage is 3V6 DC.

HC-09 Hardware
The HC-09 modules are replacements for the HC-06 and HC-07 modules.

HC-09 Current Consumption
Note: absolute maximum voltage is 3V6 DC.

Important Hardware Notes

 * The voltage to be applied to these modules is from a minimum of 3.1VDC to a maximum of 4.2VDC for HC-05/HC-06 and a maximum of 3.6VDC for HC-09. Do not connect 5VDC or more unless you are using the module mounted on a board which includes some sort of voltage regulation.


 * The serial output is at TTL voltage levels (3.3V to 5V) and not the higher RS232 voltage levels (12V+). Do not connect the module directly to your computer serial port unless the module is mounted on a board that is doing TTL to RS232 conversion. You can also use a TTL to RS232 adapter to connect the module to your computer serial port. You do not need to use any conversion if you are connecting the module to your microcontroller serial port which has 5VDC tolerant pins.

Module Pin Outs
= The Firmware =

The hardware for all firmware versions is the same and the firmware may be freely changed with the right tools.

HC-05 firmware versions
HC-05 firmware has default settings for the serial port of 38400, N, 8,1; password: 1234.

Supports the AT command to modify the baud rate, device name, password, and set master or slave mode.

HC-05 Pin definition

 * Pin 1 (UART TX - weak internal pull-up) UART data output
 * Pin 2 (UART RX - weak internal pull-down) UART data input
 * Pin 12 (VCC) 3.3V
 * Pin 13, 21, 22 (VSS) Ground
 * Pin 31 (PIO8) connects LED cathode via a 470 ohm series resistor to ground. It is used to indicate the module state. After power on, flashing intervals differ in different states.
 * Pin 32 (PIO9) is used to control LED indicating pairing. It will be steady on when pairing is successful.
 * Pin 34 (PIO11), module state switching pin. HIGH -> responds to AT commands via the wired TTL serial connection; LOW or floating -> regular work status.
 * Built-in reset circuit, reset is completed automatically after power on.

Steps to set HC-05 to MASTER

 * Set PIO11 HIGH with a 10K resistor in between.
 * Power on, module comes into AT Command Response Status.
 * Open Hyperterminal or other communications tool, set the baud rate to 38400, 8 data bits, 1 stop bit, no parity bit, no flow control (or 9600; firmware dependent).
 * Via TTL serial port, send characters "AT + ROLE = 1 r n",if successful, return "OK r n", where r n is carriage return.
 * Set PIO11 LOW, re-power, then in Master state, automatically search for slave module and connect.

HC-05 AT commands

 * AT responds OK.
 * AT+RESET responds OK.
 * AT+VERSION? responds with the firmware version.
 * AT+ORGL responds OK and restores default state.
 * AT+ADDR? responds with module address.
 * AT+NAME? responds with module name.
 * AT+NAMEname where name 20 or fewer characters. Responds OKname. Retained across power offs.
 * AT+RNAME? responds with remote paired module's name.
 * AT+ROLE? responds with 0=slave, 1=master, 2=slave-loop (loopback: receives master device data and sends back to master).
 * AT+CLASS? responds with device type (32 bit indicating device type and what is supported).
 * AT+PSWD? responds with password.
 * AT+PSWD=password sets module pairing password to password.
 * AT+UART=x,y,z where x is 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1382400 for baud rate, where y is 0=1 bit, 1=2 bits stop bit, where z is 0=none, 1=odd, 2=even parity). Deafult is 9600,0,0.
 * AT+UART? responds with +UART:baud,stop bits,parity.
 * AT+STATUS? responds with the module status (+STATE:initialised, ready, pairable, paired, inquiring, connecting, connected, disconnected).
 * AT+PAIR=x,y sets the remote Bluetooth device address with which to pair where x is the address (eg 12:34:56:ab:cd:ef) and y is the limited time of the connection in seconds.

HC-06/Linvor v1.4/v1.5 firmware versions
HC-06 firmware has default settings for the serial port of 9600, N, 8,1; password: 1234. HC-06 firmware is almost always hardcoded to be a slave device, but it is also possible to be hardcoded as a master device.

HC-06 Pin definition

 * Pin 1: (UART TX - weak internal pull-up) UART data output
 * Pin 2: (UART RX - weak internal pull-down) UART data input
 * Pin 11: (RESETB) - connect to ground to reset, pullup-resistor of 10K recommended
 * Pin 12: (VCC) Working range 3V1 to 4V2
 * Pin 13: (VSS) Ground
 * Pin 21: (VSS) Ground
 * Pin 22: (VSS) Ground
 * Pin 24: (PI01) ON when paired/connected, PULSING when not paired/connected
 * Pin 26: (KEY - MASTER only): LOW for normal operation; HIGH erase pairing/connection information; after erasure, searches for new device to pair with/connect to randomly.

Pairing/Connection
HC-06 firmware master device with no pairing memory will pair automatically with the first slave device it finds. Thereafter, it will remember that device address until pin 26 is taken high whereupon its pairing memory will be erased.

Setting new password
The default password can be changed using the AT+PINnnnn command, but it will not take effect until the device is powered off for 30 minutes or power supply pin is shorted to ground for at least 20 seconds.

HC-06 AT commands

 * AT commands can only be sent to the device using a wired, not wireless, connection.
 * The bluetooth device will only respond to AT commands before it is paired/connected.
 * AT commands do not need a terminating CR/LF sequence.
 * AT commands must be entered quickly (cut and paste or use macro).

The HC-06 firmware has a very limited subset of AT commands as listed below:


 * AT responds OK
 * AT+BAUDn where n=1 ... C (1=1200, 2=2400, 3=4800, 4=9600 (default), 5=19200, 6=38400, 7=57600, 8=115200, 9=230400, A=460800, B=921600, C=1382400). Responds OKnnnn. Retained across power offs.
 * AT+NAMEname where name 20 or fewer characters. Responds OKname. Retained across power offs.
 * AT+PINnnnn sets the pairing password. Responds OKsetpin.
 * AT+Pn where n is N (no parity), O (odd parity) or E (even parity). Firmware version higher than Linvor 1.5 only.
 * AT+VERSION responds with the firmware version.

HC-07/Linvor firmware versions
The HC-07 firmware has default settings for the serial port of 9600, N, 8,1; password: 1234 or 0000. The range is 8 to 10 metres.

HC-07 Pin Definition

 * Pin 1: (UART TX) serial transmit, 3.3V TTL level.
 * Pin 2: (UART RX) serial receive, 3.3V TTL level.
 * Pin 3: (CTS) CMOS input with weak internal pulldown resistor.
 * Pin 4: (RTS) CMOS output, tristable with weak internal pullup resistor; active LOW.
 * Pin 11: (RESET) connect to ground to reset, pullup resistor of 10K recommended.
 * Pin 12: (VCC) 3.3VDC operating voltage.
 * Pin 13: (VSS) common ground.
 * Pin 14: (NC) no connection.
 * Pin 21: (VSS) common ground.
 * Pin 22: (VSS) common ground.
 * Pin 24: (LED) LED output pin; ON when paired/connected, PULSING when not paired/connected.
 * Pin 26: (KEY): internal pulldown resistor keeps LOW for normal operation; HIGH erase pairing/connection information; after erasure, searches for new device to pair with/connect to randomly.
 * Pin 34: (PIO - MASTER only) sets the module to master or slave mode; internal pull-up resistor keeps HIGH for SLAVE mode operation; use an external 1K pull-down resistor connected to ground for MASTER mode operation. Query whether firmware dependant.

HC-07 AT commands

 * AT commands can only be sent to the device using a wired, not wireless, connection.
 * The bluetooth device will only respond to AT commands before it is paired/connected.
 * AT commands do not need a terminating CR/LF sequence.
 * AT commands must be entered quickly (cut and paste or use macro).

The HC-07 firmware has a very limited subset of AT commands as listed below:


 * AT responds OK


 * AT+BAUDx responds with OKn where x is 1 - n is 1200, 2 - 2400, 3 - 4800, 4 - 9600 (default), 5 - 19200, 6 - 38400, 7 - 57600, 8 - 115200, 9 - 230400, A - 460800, B - 921600, C - 1382400. Note: module must be reset after power-on for the new serial port baud rate to take effect.


 * AT+NAMEname responds OKsetname - name is the Bluetooth device name to be set and must be 13 characters or fewer. Retained across power offs. Note: module must be reset after power-on for the new device name to take effect.


 * AT+PINnnnn responds with OKsetpin - default pin nnnn is usually 1234, but sometimes is 0000.


 * AT+VERSION responds with the firmware version.

HC-08 firmware versions

 * The default baud rate is 9600.


 * There must be a delay between data packets. For example, if the baud rate is 1200 baud, the packet length is 120 bytes and the transmission time delay between packets must be not less than 2000ms otherwise you may lose data. The packet transmission time delay for 38400 baud with a packet length is 120 bytes must not be less than 200ms. At 115,200 baud with a packet length of 120 bytes, the transmission time delay between data packets must be not less than 50ms).


 * When the baud rate is 19200 baud or more, the number of bytes per packet cannot be more than 120 bytes.


 * The higher the baud rate, the shorter the transmission delay time required between data packets.


 * The shorter the number of bytes per packet, the shorter the required delay time (e.g. 115,200 baud with a packet length of 20 bytes, the transmission delay time between data packets is less than 20ms).

HC-08 Pin Definition

 * Pin 1: (UART TX) serial transmit, 3.3V TTL level.
 * Pin 2: (UART RX) serial receive, 3.3V TTL level.
 * Pin 3: (CTS) serial flow control, not supported.
 * Pin 4: (RTS) serial flow control, not supported.
 * Pin 11: (RST) reset pin; take LOW for not less than 5ms.
 * Pin 12: (VCC) 2-3.6VDC operating voltage (typical 3.3VDC), current not less than 100mA.
 * Pin 13: (VSS) common ground.
 * Pin 22: (VSS) common ground.
 * Pin 24: (LED) LED output pin; ON when paired/connected, PULSING when not paired/connected.
 * Pin 26: (KEY): internal pulldown resistor keeps LOW for normal operation; HIGH erase pairing/connection information; after erasure, searches for new device to pair with/connect to randomly.
 * Pin 34: (PIO - MASTER only) sets the module to master or slave mode; internal pull-up resistor keeps HIGH for SLAVE mode operation; use an external 1K pull-down resistor connected to ground for MASTER mode operation. Query whether firmware dependant.

HC-08 AT commands

 * AT responds OK


 * AT + BAUDx responds with OKn where x is 1 - n is 1200, 2 - 2400, 3 - 4800, 4 - 9600 (default), 5 - 19200, 6 - 38400, 7 - 57600, 8 - 115200. Note: module must be reset after power-on for the new serial port baud rate to take effect.


 * AT + NAMEname responds OKsetname - name is the Bluetooth device name to be set and must be 13 characters or fewer. Retained across power offs. Note: module must be reset after power-on for the new device name to take effect.

HC-09 firmware versions
The HC-09 firmware has default settings for the serial port of 9600, N, 8,1; password: 1234. HC-09 firmware is almost always hardcoded to be a slave device, but it may also be possible to be hardcoded as a master device. The range is 8 metres.

Note: The HC-09 is a replacement for the HC-06 and HC-07 modules.

HC-09 Pin Definition

 * Pin 1: (UART TX - weak internal pull-up) UART data output
 * Pin 2: (UART RX - weak internal pull-down) UART data input
 * Pin 3: (CTS)
 * Pin 4: (RTS)
 * Pin 5: (PCM CLK)
 * Pin 6: (PCM OUT)
 * Pin 7: (PCM IN)
 * Pin 11: (RESET) - connect to ground to reset, pullup-resistor of 10K recommended
 * Pin 12: (VCC) Working range 3V1 to 3V6 (3V3 typical)
 * Pin 13: (VSS) Ground
 * Pin 14: (NC)
 * Pin 15: (USB D-)
 * Pin 16: (CSB)
 * Pin 17: (MOSI)
 * Pin 18: (MISO)
 * Pin 19: (CLK)
 * Pin 20: (USB D+)
 * Pin 21: (VSS) Ground
 * Pin 22: (VSS) Ground
 * Pin 24: (PI01) ON when paired/connected, PULSING when not paired/connected
 * Pin 26: (KEY - MASTER only): LOW for normal operation; HIGH erase pairing/connection information; after erasure, searches for new device to pair with/connect to randomly.

HC-09 AT Commands
On power-up test, the HC-09 module needs 7 seconds to complete the initialization, after the completion of the initialization the module indicator will blink.

Note: HC-09 baud rates are different from the HC-06 - the HC-09 baud rate minimum is 2400 and maximum is 230,400.


 * AT commands can only be sent to the device using a wired, not wireless, connection.
 * The bluetooth device will only respond to AT commands before it is paired/connected.
 * AT commands do not need a terminating CR/LF sequence.
 * AT commands must be entered quickly (cut and paste or use a macro).

The HC-09 firmware has a very limited subset of AT commands as listed below:


 * AT responds OK
 * AT+BAUDn where n=1 ... (2=2400, 3=4800, 4=9600 (default), 5=19200, 6=38400, 7=57600, 8=115200, 9=230400). Responds OKnnnn. Retained across power offs.
 * AT+NAMEname where name 20 or fewer characters. Responds OKname. Retained across power offs.
 * AT+PINnnnn sets the pairing password. Responds OKsetpin.
 * AT+Pn where n is N (no parity), O (odd parity) or E (even parity).
 * AT+VERSION responds with the firmware version.

= JY-MCU BT_BOARD Versions =

The JY-MCU BT_BOARD baseboard specifications for SPP bluetooth modules are detailed below:

JY-MCU BT_BOARD v1.02pro


 * This Bluetooth Module Baseboard is compatible with master mode, slave mode and both master-slave mode.
 * The key interface on the baseboard is the master mode button and can be controlled by high level from external MCU; with high level this module will search again automatically.
 * Power supply input is 3.6~6V.

= Module Availability =

The SPP Bluetooth modules are available fairly cheaply ($US 6 to 10) from many sources including eBay (worldwide), Deal Extreme (China), Buy in Coins (China), iTeadStudio (China), MDFLY (USA), SeedStudio (China), Wide HK (Hong Kong). The modules are also available pre-mounted on boards with voltage regulation from the same sources.