$3 Bluetooth HID Module (HC05 With RN42 Firmware)




About: www.youtube.com/EvanKale91 === www.facebook.com/EvanKale91 === www.twitter.com/EvanKale91 === www.evankale.blogspot.ca

Bluetooth HID (human interface device) modules will let you create bluetooth peripherals that can pair with mobile devices out-of-the-box (like bluetooth keyboards, gamepads, mice, etc.).

If we're looking to build our own bluetooth HID device, the hefty price of a single HID module can spike the budget of a project (like the BlueSMiRF HID for $40 USD, or the BlueFruit EZ-KEY HID for $20 USD).

An inexpensive bluetooth serial module commonly used by hobbyists, the HC-05, sells for $3 USD, but is not HID capable by default. With a bit of a firmware hack though, we can turn this cheaper module into a bluetooth HID module.

It may look like there's a lot of steps below, but it's actually just a very thorough guide. The flashing process of the HC-05 itself takes no longer than a minute after we have extracted the firmware from the RN-42 once.

Step 1: Watch the Video!

Check out this quick video, for a run-through all the steps below from start to finish.

Click here to watch on YouTube

Step 2: A Comparison of the Two Modules

This cheaper module is the HC-05 and sells for around $3 on ebay.

By itself, this module isn't HID capable. But luckily, this module actually uses the same chip (the BC417) as the RN-42 bluetooth module, which also powers the $40 BlueSMiRF HID modules.

The only differences between these modules are the firmware and the location of the pin outs.

So here's the plan - to make our $3 module HID enabled, we'll just have to copy over the firmware from the RN-42 chip to the HC-05.

It's as simple as that!

Where to buy



Step 3: Get the BlueSuite Tools

The chip manufacturer, CSR, has made their tools publicly available.

Head over to this link:


to download the manufacturer's BlueSuite toolset, which is what we'll be using to dump the module's firmware using the parallel port of a PC.

The download will require a quick, free of charge registration.

Step 4: Building the Programmer

For the chip to communicate with our PC, we'll need to connect the SPI pins into these pins of the parallel port.

We'll need use a few resistors to create voltage dividers that will step down the parallel port's 5v transmission levels to the chip's 3.3v levels.

The MISO pin will transmit to the parallel port at 3.3v, which the PC will still recognize.

We'll simply add an 100ohm resistor here to prevent the the module from being overloaded.

We'll also need an external 3.3v power source to power the chip.

Step 5: Get a Parallel Cable

Here's the parallel cable I'll be using, the male end will connect to the PC and the female end will connect to the chip.

Paper clips will fit snugly inside the slots of the female end, so we'll cut up a few pieces and solder them to some loose wires so that we can connect it to our breadboard.

Step 6: Put Together the Voltage Dividers

Here are the voltage dividers I made from salvaged resistors, as per the schematic in step 4.

The values of the resistors used in the voltage dividers don't have to be the same, as long as the two resistors in each voltage divider has a 2:1 ratio.

Step 7: Connect the RN-42 Pins

Here is the RN-42 module that we'll need to extract the firmware from.

We'll need to access the SPI (MOSI,CLOCK,MISO,CSB) pins, as well as the VDD and GND pins.

If you want to make your life easier, you could get a breakout board instead of actually soldering wires to the pins.

If you do solder the pins directly, make sure you keep the wires separated with a bit of tape so nothing shorts unintentionally.

Step 8: Power Up the Chip

Now we're going to plug everything into our breadboard, and power up the chip.

I'll be using my regulator to output a 3.3V supply to the chip.

If you hook up an LED on PIO5, you can check the status of the module. When the chip is just turned on, you should see the LED blink.

Step 9: Install BlueSuite

On the PC side, the BlueSuite tools have been reported to work best on a Windows XP machine, so that's what I'm using here.

Install the package we downloaded earlier - and check the box in the installation dialog to install the LPT device driver and also set the debug transport to LPT.

Reboot when prompted, then head into the BIOS to make sure that the Parallel port mode is set to ECP.

Step 10: Some Possible BlueSuite Errors

I've seen two errors from BlueSuite before, and they're not very descriptive as to what's actually wrong.

Here's how I solved both these errors:

1) Legacy Plug and Play detection not enabled (first picture)

  • Go to System Properties (right-click My Computer)
  • Under the Hardware tab, go to the Device Manager
  • ECP Printer Port, go to its properties
  • Under port settings, check Enable legacy Plug and Play detection
  • Hit OK and reboot

2) Chip not detected (second picture)

  • Either the chip is not powered, under powered, or there's a faulty connection
  • Check the wiring and try again

Step 11: Dump the RN-42 Firmware

If everything went well, then you should be access to access this dialog.

If you hit Stop Processor, you'll get an acknowledgement that the chip is recognized.

The Firmware ID button will let you see what firmware version your chip currently has.

But for now, we'll hit Dump and choose a location to save our firmware.

Fortunately, we only ever have to do this once. As long as you keep this dump, you'll be able to flash any HC-05 chip with this HID firmware.

When that's done, you'll have two files. Tuck them away, and fire up PSTool.

Step 12: Dump the RN-42 Config

PSTool will let us manage the settings of the chip, like bluetooth address, baud rate, etc.

We'll need to make a dump of all these settings too. Goto File > Dump, then choose a location to save the config file.

Once we have the three files (two from the firmware dump, one config file), we're done with the RN-42 chip.

Step 13: Prepare the HC-05

Here's our $3 module, the HC-05.

This one comes with a breakout board for some of the pins. We'll need to cut away the shrink wrapped housing to access the SPI pins.

If we look at the pin out of the HC-05, we'll notice that the pin placement is different from the RN-42. For the HC-05, the SPI pins are conveniently grouped together on the bottom.

Step 14: Make a Clothespin Programmer

We'll want an easier way to flash these chips in the future so we don't want to be soldering wires to the pins directly.

And here's what I came up with - a clothespin with pins and wires attached. All we need to do is clamp it onto the chip and plug it into our breadboard.

Step 15: Prepare to Flash the HC-05

First, make a dump of the HC-05 following the exact same steps as we did with the RN-42 module, for safe-keeping.

When we flash the HC-05, all the settings of the chip will be overwritten by the RN-42 settings.

We need to preserve the bluetooth address and antenna settings of the HC-05, so open up the HC-05 config file in a text editor, and preserve the three entries: PSKEY_BDADDR, PSKEY_ANA_FTRIM, PSKEY_ANA_FREQ. Save this config file as another file.

Step 16: Flash the HC-05

Now we're going to flash the chip.

Run BlueFlash, stop the processor, hit Choose File, select the RN-42 dump, and hit Download.

Step 17: Revert a Few HC-05 Configs

We'll need to revert the bluetooth address and antenna settings of the HC-05.

So open up PSTool, go to File > Merge, and select the config file containing the three entries, PSKEY_BDADDR, PSKEY_ANA_FTRIM, PSKEY_ANA_FREQ, that we saved from step 15.

That's it! We're done!

Step 18: Conclusion

This might seem like a long process, but after doing it once, it'll take you no longer than a minute to flash a chip.

I'd like to thank Robin Gross (and his blog, Byron's blog) for being one of the first to document how to build a programmer for the BC417 chip.

You can check out his blog here: http://byron76.blogspot.ca/


That's all I have for you today!

In an upcoming project, I'll be showing you how to build an actual device with this chip, so come back and don't miss it!

If you liked this Instructable, then perhaps you'll like some of my other projects!

You can check them out over at my YouTube channel.

Thanks guys! I'll see you next week!



  • Growing Beyond Earth Maker Contest

    Growing Beyond Earth Maker Contest
  • Backyard Contest

    Backyard Contest
  • Classroom Science Contest

    Classroom Science Contest

72 Discussions

John T MacF Mood

Reply 3 years ago

If you buy a DVD in the $5.00 bin at Wally World, does that mean you can copy IT? No, it's a $10,000.00 fine. Same concept.

GaraithJohn T MacF Mood

Reply 7 days ago

No it's not to copy it. I can't play it because it's seems to be deleted on youtube. Its said "This video is not available". I thought to contact the author via my comment

David HoskinsJohn T MacF Mood

Reply 5 months ago

You most certainly can make a digital backup of physical media that you own. That has been settled for a very long time. (Like pre Napster)

You get in trouble or breach the copyright when you distribute it too others. You don't even have to be the one who rips it. If you own the physical media you can download a torrent of the media you already own. What gets you in trouble is the BitTorrent programs uploading of the file while you download. It's a nuanced yet critical point from a legal perspective.


6 months ago

Thank you for the information. Could you please let me know where can I down load the latest firmware with xpv and xdv format?

Thank you.
Joonseok Yang


2 years ago

I don't have RN-42 but my friend sent me the firmware. the problem is despite all my efforts i could't start the blueflash (No SPI Trasnports found! ), Fixed legacy mode too.
is it possible to start the program without connecting the actual RN-42?
I tried both Win XP and 10 RS2 pro. im pretty sure my connections are OK.
can anyone help me with that?

1 reply

Hi, CSR Bluesuite is not available anymore. Do you have a download link please ?


1 year ago on Step 4

LPT ground to 18,19. Not 25


Question 1 year ago

I forgot to mention that my problem is the message "No LPT Ports Found" and I have followed the instructions step by step


Question 1 year ago

I really like this and I have tried to replicate it multiple times without any luck, so at some point it occured to me that maybe my problem is the cable. I didn't have one so I connected the pins directly to the corresponding pins of the parallel port of my pc. So I thought that maybe the cable Evan is using is some kind of crossing cable and this would explain my unsuccessful tries. Could this be the case so should I find a pinout for such crossing cables, or is it just an extension cable and my problem is something else?


1 year ago

can somebody give me the hc 05 firmware?


1 year ago

hi there, thank you for sharing this. I really want to do this project, unfortunately they are not selling RN-42 any more so I can't get the firmware. Is there any chance someone can share it with me who has it. Thanks!

1 reply

Reply 1 year ago

Mouser still sells them, they have 8000 in stock.


1 year ago

I did it with an FTDI as SPI programmer, I was able to dump the files and the setings of the HC-05, I flashed the files of the RN42 given in message below, I did the merge. Everithing seems to have be done correctly, Bu when I try to use it, nothing appends :(
do the output pins of the breakout board are still right ? specially RX TX ?
how can I test the RN42 functions ? I tryed sending $$$ but got no responses
what is the baud defautl value ? I tryed 115200 and 9600 but nothing works


3 replies

Reply 1 year ago

I think the instructable has a mistake at the $$$ part, in the video Evan mentions that before you send $$$ you need to select "No line ending" in the serial monitor settings.

After you input $$$ and get the message CMD back, you then change it back to "Newline"


Reply 1 year ago

The command mode is not entered even without the line ending (and in several other terminal apps).


Reply 1 year ago

Do you have any devices connected to the module (via Bluetooth)? I found I couldn't go into config mode when my phone was connected.

Here is the sketch I used (I'm using an esp8266 and software serial running at 115200)