How to make an iBeacon Detector with Arduino?





I'll give that a try


Do you mean


The device doesnt seem to have a ROLE0 or a ROLE1 when using V539

AT+DELO is also missing in 539 :-(


It looks like V539 is either buggy or they have totally changed the way the commands work

The version I have is definitely


However commands like AT+DEL0? doesn't return anything


AT+RENEW doesnt get a response from the module followed by AT+RESET

Still keeps my settings e.g. if I set AT+NAME12345OK+Set:12345


OK+RENEW (no response)

AT+NAME?OK+NAME:12345 (name not changed back to factor setting)

AT+RESETOK+RESET (module is reset)

AT+NAME?OK+NAME:12345 (name still unchanged)

So overall, I'm not sure V539 was a good vintage

I have another module that I have not attached wires to yet, so I guess I'll need to do that now, and NOT upgrade it from V535 and see if its more usable

Does anyone have a copy of older firmware than V529 ? e.g. V535? or something that actually works ;-)

Hi everyone,

I need your help for my HM-10 project.

When i sent AT+DISC? command , it response only include HM-10's mac addresses. It doesn't see any other ble.

What should I need to change to fix this problem.

I want to see other device with HM-10, like phone or other ble chips mac address.

Thanks in advance,

@tyomoro I have 2 modules, one with firmware V539 installed and another with V533 installed

The one with V539 installed seems to be unusable now. A lot of commands no longer work e.g. including AT+RENEW to do a factory reset

However the one I didnt update seems to accept AT+DISC? but you need to set 2 params first


As I only have 1 working beacon, my beacon cant see any others :-(

BTW the code to get it working as a beacon is


But overall. Dont update to V539 !!!

If anyone has a binary for V533 or anything older than V539 can you please post it, as I'd like to downgrade !

rogerClark i have v538 2541 chip and he have at+disc.

Thanks @alexjdie

I'll see if it lets me downgrade from v539 to V538, and if it doesnt work at all afterwards its not a big loss as it doesn't work with V539 at the moment !


Yes. It works

You can downgrade as well as upgrade software on these modules

Strangely the zip file that you posted seems has the readme for V539, as at the top it has

HM-10/11 CC2540/1 V539

  1. Add AT+DISI? command, use to scan iBeacon device;

So it looks like the old AT+DISC? command has possibly been replaced by AT+DISI?

Anyway, It least both of my modules are working again.

Also a while ago I ordered some CC2541 based iBeacon modules and they also arrived today

When I checked the docs they linked to, its the same doc for everything else. Whats amusing is the doc is for old firmware and also it contains images of the other (rectangular board) not these ones which have a round PCB with a battery behind it, and a smaller almost square BLE module soldered on top ;-)

I need to put some pins onto it, so I can connect it to my USB to Serial and see what version its got, I presume its all the same stuff from HM Soft

I'll update the forum when I have more information

(PS. In hindsight I shouldn't have bought these as they are twice the price of the bare boards, and I'm quite good at soldering !) But I coudln't be sure the bare boards would work .


I powered up the new board


However it doesn't respond to Serial commands

I thought it could be in power saving mode (almost certainly is) however I cant get it to wake up by sending a long string to it

On the module there is a pin labeled Debug, which has 3.3V on it, I've tried pulling it low with 1.1k but although it pulls the voltage down to just under 1V on the "debug" pin, it doesnt make any difference to the serial data, i.e it still doesnt communicate :-(

So I suspect the Debug pin is not an input, as 1K to GND on an input should read virtually 0V

I will buzz the connections to the CC2541 daighterboard

Does anyone have any other ideas about possibly how to wake the board up if the problem is that its sleeping most of the time ?

sorry, with my zip… AT+DISI work to!.


I fixed the problem with my other board.

It was in power saving mode, but it would not wake up after sending many characters :-(

So I have found that if you connect PIO0 to GND via a switch (and 1k resistor in my case) and hold PIO0 low for > 1000ms the module wakes up. Its called System Key page 16

I worked out the board is a HM11 not HM10 (not sure of the difference), its a smaller board board with less pins, but has CC2541 instead of CC2540


AT+VERS? returns HMSensor V525

Spec on eBay says

Support broadcast read the battery level, temperature, humidity acquisition, without connecting module

It looks like its running the Sensor software from

But an older version V525 instead of V528, but I'm not sure I want to upgrade as V539 had problems and if I update to V528 I can not go back to V525 which is working

I'm still not sure what the Debug pin does, possibly connects to a LED


Thank you for your answer,


But i think, i did not declare my problem.

I have 5 hm-10 modul, one of them is V533 and others V535,

I changed one of the V535 version to V539.

It seems good for At command like AT+DISI?

When i sent At+DISC? command, it returns HM-10's mac address which in range. But, also it doesn't return my phone or other phone mac address.

My main problem is i can not find my phone with any of them, any version of them.

I wonder, can't HM_10 dedect other Ble 4.0 device?

Note: My HM_10 Module version seems V538, which I changed verison.

Thanks in advance,


After I updated the firmware to V539 I could not detect the beacon using my Android phone.

I have downgraded to V538 using the zip file from @alexjdie

(the readme in the zip seems to be for V539 but the bin file is V538, - I checked after uploading that it is V538)

I took these settings from a website (sorry I can't remember the link)

AT+RENEW Restores factory defaults AT+RESET Reboot HM-10 AT Wait for OK AT+MARJ0x1234 Set iBeacon Major number to 0x1234 (hexadecimal) AT+MINO0xFA01 Set iBeacon Minor number to 0xFA01 (hexadecimal) AT+ADVI5 Set advertising interval to 5 (546.25 milliseconds) AT+NAMEDOPEY Set HM-10 module name to DOPEY. Make this unique. AT+ADTY3 Make non-connectable (save power) AT+IBEA1 Enable iBeacon mode AT+DELO2 iBeacon broadcast-only (save power) // OPTIONAL AT+PWRM0 Enable auto-sleep. This reduces power from 8 to 0.18 mA AT+RESET Reboot

They work fine with V535 and V538 to make a iBeacon that broadcasts

I have not tried using the module to scan for BLE devices yet but using V538 the AT+DISC command appears to respond

Note. Putting the module into auto sleep mode is not a good idea during testing, as it stops Serial comms So use AT+PWRM1 so that the module does not sleep

(I have a lot of problems waking the modules up, I had to attach another wire to PIO0 to do this on my HM11 board)

Hi Guys,

I just thought I'd post this link to a "debugger" board on eBay which I think should probably be able to upload firmware to these modules

See this link for where someone made their own board. However I'm hoping in this case as it says it supports SmartRF Studio, that I don't need to somehow get the firmware onto this "programmer" board,

It will take a week or two for the programmer to get here, but I will update the forum when I get it, as this could be a low cost way of uploading completely alternative firmware, e.g. by RedBear labs

Thank you very much to everyone for this topic, especially rogerClark. I found it very useful.

I have a HM-11 module v535 and this is my experience: I can broadcast ibeacon when in slave role. When I put central role I cannot broadcast ibeacon nor detect my LG G3 phone.

My questions are: Has anyone been able to find other ibeacon using DISI command?

Is it possible to broadcast ibeacon while in central role?

Can I be in peripheral, connected to another device, and broadcast ibeacon at the same time?

Thank you! :D

Hello everyone,

I tested with HM-10 as iBeacon reader successfully


you need 2 HM-10 modules

  1. Update HM-10 Firmware to V539 :- HM-10 HMSoft CC2541 V539 firmware upgrade file…[2014-09]

  2. Make one HM-10 module as iBeacon :- AT+IBEA1 setup ibeacon on HM-10

  3. Send following AT commands to setup second HM-10

“AT+ROLE1” Set as Master
“AT+IMME1” Set Module work type as 1
“AT+DISI?” find near iBeacons

Device response :- OK+DISISOK+DISCEOK+DISC:4C000215:74278BDAB64445208F0C720EAF059935:FFE0FFE1C5:78A50487497A:-048OK+DISCE

UUID, Major and Minor and Device address also here.

Hope you finally get the right answer for your problem. :wink: :slight_smile:

Best Regards,
Lasantha Prasad

leogar07: Hello, so I finally got a response from JNHuaMao!!!!

They said that they will be releasing a new firmware version this month that will give the HM-10 the capability to be use as an iBeacon finder/detector.

It will be Firmware Version V536.

So I'll just wait and try it out when it is release.

Did you try the firmware already? What's your progress on this project? I am working on something which is completely similar to you and am also facing the same issues. Will be very grateful if you can help :)

Hello, the firmware version that has the iBeacon detector option is v539. And it works!! I was going to write about it but the last post before yours (eeprasad) beat me to it.

Follow his instructions and you should have it running!


Hi Gentlemen!

I've assembled iBeacon scanner with Arduino & HM-10 module (v540 firmware). So far so good. But there is one issue: response time between "AT+DISI?" command and receive "OK+DISCE" response is about 3 (three!) seconds. It's too much for my project. Did your faced with the same issue? Maybe anyone has solution to decrease response time?

These commands are part of the firmware inside the module, which is not open source

The DISI command doesn't seem to take any arguments e.g. timeout, so I very much doubt if there is any way to change the scanning time.

After all, some beacons may not be broadcasting very regularly (your specific beacons may be, but the firmware is general purpose)

If you absolutely must have a shorter timeout on this scan, you only alternative is probablty to load alternative firmware onto the module. There is some firmware somewhere on github which has a BASIC programming capability. which may give some control over this.

Alternatively, you would need to write your own firmware using the SDK / API libs from TI. The only problem with this, is you'd need the IAR compiler, which I think costs in excess of $2000 - though there may be an evaluation version etc you could try.


Thank you for your response! I'm going to continue my investigations and try to ask this question HM-10 vendor. Will share my results.

I have been using AT+DISI to detect iBeacons and do receive the expected response on Serial Monitor if I just use my Arduino UNO as a UART bridge between the laptop and HM-10 (i.e load empty file on UNO and connect RX-RX and TX-TX pins of Arduino and HM-10 and then use serial monitor to send AT commands and receive responses).

However, when I am trying to do the same by making Arduino send the AT commands to HM-10 via a software serial port and print the response on Serial Monitor, I get the responses of all other AT commands but for AT+DISI I just receive OK+DISIS

and nothing after that

Has anyone faced a similar issue? I am not sure, if the software buffer overflows (though upon checking the overflow flag, it didn't seem to be overflowing) or there is an issue with the baud rate (though the response to all other commands is coming correctly, so I am assuming I am right when my serial monitor, Software serial port and HM-10 are all configured to be running at 9600)


Did you initiated your module before "AT+DISI?" with next commsnds: