The following guide is suitable for this beacon only (BC021):
Note: If you have any questions about any of the following instructions, please feel free to CONTACT us any time. We are here to answer your questions or help in any way. Almost all emails are answered by senior support staff within hours. If you don’t receive an answer, check your spam folder.
99% of the problems that beginners have with beacons are just a simple misunderstanding of one of the concepts. Admittedly, the world of beacons is a bit confusing with all of the TX, interval, broadcast, UUID…technical words. Especially since most people don’t understand that BLE (Bluetooth Low Energy) is actually something different than regular Bluetooth. In other words, don’t feel bad at all if you are a little confused at first. I tried to make it as clear as possible in the instructions below, but that requires lots of words, which sometimes can be a bit boring to read when you are excited about a new beacon you just received in the mail!
Another note: Before we do anything, it should be noted that you can use your beacon straight out of the box just by turning it on (see “turn the beacon on” menu choice below). There is no absolute requirement to change the configuration settings. This is very good advice for HomeAssistant users too. For your first beacon setup, just turn the beacon on. That’s it. Don’t try to adjust any settings until you have HA or the ESP working properly. If it’s not working, make adjustments on the HA or ESP first to try to solve the problem. The beacon is very rarely the source of the problem.
That said, there are several situations in which you might want to change the settings, so if that is the case, please continue reading.
Shortcut links to jump directly to various sections on this page
Default Settings for the BC021
Instructions for Configuring the BC021
Get the free configuration app
Turn the beacon on
Condensed Instructions
Detailed Step-by Step Instructions
Beacon Name
Advertising Interval
Advertising Flags
TX Power
Measured Power
Beacon Type
Battery Power Percent
iBeacon UUID
iBeacon Major
iBeacon Minor
TLM Interval
Eddystone TLM
Eddystone URL
Eddystone UID
Multiple Broadcasts
Modify Password
Button Trigger
Motion Sensor
Turn the beacon off
Change Battery
Default Settings for the BC021
Here are the default settings that the beacon has pre-configured into it before we ship it out to you.
System Info (this field is not changeable by the user)
System ID is the unique MAC address of each beacon
Model is the model number BC021
Version is the firmware version
Beacon Name
Default: BlueCharm_(random number)
-Can be changed by the user to any name of 16 or less ASCII characters
Advertising Interval
Default: 1022.5
Changeable: Any number ranging from 100-10000 milliseconds. 1000 milliseconds equals 1 second.
Advertising Flags
Default: Connectable
Changeable:
-Uncheck “connectable” to make beacon unconectable. (Unconnectable status saves about 20% of the battery power, but makes working with the beacon a bit tricky at first. We would suggest you leave it as connectable for now.)
-Put a check mark next to “Power Always On” to make the beacon button inactive, i.e. the beacon can not be turned off by pressing or holding down the button.
TX Power
Default: 0 dBm
Changeable: 4dBm, 0dBm, -4dBm, -8dBm, -12dBm, -16dBm, -2dBm, -40dBm. 4dBm is the strongest, -40dBm is the weakest.
Measured Power (Calibrated RSSI when beacon is 1 meter away from scanner)
Default: -59 (automatically changes when the TX level is adjusted)
Changeable: Advanced users only. We recommend that you do NOT make any adjustments to this number.
Beacon Type
Default: iBeacon
Changeable: Any or all of iBeacon, URL, UID, and/or TLM. (KSensor mode is only active for beacons with a telemetry chip, which the BC021 does not have unless special ordered in minimum quantities of 1000 beacons. Contact us for more info).
URL Address
Default: https://www.bluecharmbeacons.com
Changeable: any URL but must be 17 “countable characters” or less.
Some URL length rules and examples:
https:// counts as 1 character only.
https://www. counts as 1 character only.
Standard domain name extensions such as .com/ count as 1 character only but .com counts as 4 characters since is it missing the standard trailing slash; just add the trailing slash.
.net/ counts as 1 character only.
.bu/ counts as 4 characters since .bu is not a standard internet domain name extension.
Example: https://www.cnn.com/ is counted as 5 characters only.
Suggestion: If you want to configure a very very long URL with more than 17 countable characters, just use a free URL shortener such as bitly.com to create a shortcut URL for your long URL. For example, you could configure “https://bit.ly/3fiVEj8” into the beacon to take users to “https://bluecharmbeacons.com/bc011-ibeacon-multibeacon-quick-start-guide/”.
UID NamespaceID
Default: 0x626C7565636861726D31
Changeable: any 10 byte Eddystone UID namespace ID
UID InstanceID
Default: 0x000000000001
Changeable: any 6 byte Eddystone UID namespace ID
iBeacon UUID
Default: 426C7565-4368-6172-6D42-6561636F6E73
Changeable: Any proper length and formatted UUID where the each digit is hex. i.e. has a Value of 0 to 9 or A to F. Note that with this app, you need to enter dashes in the correct spots.
iBeacon Major ID
Default: 3838
Changeable: Any number from 0-65535, e.g. 58 or 229 or 5791 or 59,985
iBeacon Minor ID
Default: 4949
Changeable: Any number from 0-65535, e.g. 58 or 229 or 5791 or 59,985.
TLM Interval
Default: 10
Changeable: Any number from 2-100, e.g. 10 or 18 or 27 or 100.
Trigger Command
Default: disabled
Changeable: Can enable to allow the beacon button to trigger the broadcast or to trigger a temporary alternative broadcast. See detailed instructions section below for more info.
Modify Password
Default: 0000000000000000
Changeable: any password ranging from 8-16 ASCII characters
NOTE 1: It is NOT recommended for users to change the password. If you do change the password and forget what you changed it to, there is nothing we can do to help you. The beacon can NOT be reset to factory settings in order to get back to the default password. We don’t have any sort of secret backdoor password to get back into the beacon; that would be fake security, right? So if you try to change this default password, be sure to type very carefully and write down the new password.
NOTE 2: If you still want to change the password, please note that the password is stored in the beacon AND in the app. So when you use the app to connect to another beacon with a different password, you may initially see a “code 2” or “error 2” message indicating an incorrect password. If you do experience this problem, please use the app to change the password on your second beacon to the same password as your first beacon. In other words, if all the passwords are the same, it will be much easier. That said, we still recommend that you do NOT change the password. If you are concerned about security, change the Advertising Flag setting to unconnectable.
INSTRUCTIONS FOR CONFIGURING THE BC021
Step 1: Get the free configuration app
Depending on your type of smartphone, click on one of the links below to download the free configuration app for your phone. You will use this app to change the beacon from the default settings to the settings that you may prefer. But remember, you don’t necessarily need to change the configuration. Most users can simply use the default settings. All they need to do is to turn the beacon on. (see Step 2 below)
-iPhone smartphone version: Download the “KBeacon” app from the Apple’s App Store. (Be careful not to confuse this app with two other similarly named apps called KBeaconPro and KBeaconConfig).
-Android smartphone version: Download the “KBeacon” app from the Google Play Store. (Be careful not to confuse this app with two other similarly named apps called KBeaconPro and KBeaconConfig).
Android users should be sure to give the app Location permission AND also be sure that your Android smartphone’s Location Services are enabled. You can find these settings in your phone’s Settings menu, and typically in the Location sub menu (but of course, every brand of Android can be slightly different, so dig around in Settings until you find it).
-Once you have installed the app, open the app on your phone.
Step 2: Turn the beacon on
-Turn on the beacon by pressing and holding down the button on the front side for 3 seconds until the LED light begins to flash blue, then release the button. The beacon will also beep three tones to indicate it is on. The blue LED will flash slowly 15 times.
Be sure to refresh the app scan screen after you have turned on the beacon. This will ensure that the app rescans and collects the data from the newly turned-on beacon.
In the screenshots below, you can see that the app now successfully “sees” our BlueCharm_124 beacon (your beacon will have different numbers in its name). If you have trouble with this step, just take your time and try to refresh the app scan screen again. Tap the “stop” button in the upper right corner, then tap the “scan” button to restart the scan. Pull down on the screen with your finger to refresh the scan; this throws out all of the previously collected beacon data and starts fresh. If you still have problems turning it on, drop us an email and we can walk you through it.
Step 3: Connect to the beacon with the app to change settings
Next, we have some condensed instructions for the tech savvy. If you feel more comfortable going through it step-by-step, scroll down this page further to “Detailed Step-by-Step Instructions“.
Condensed Instructions
- Use the app to connect to the beacon. (If you have previously changed the configuration of the beacon to “unconnectable”, then after turning the beacon on, click the button one time to make it connectable. It will be connectable for 30 seconds, then revert to unconnectable.)
- Connect to the beacon by tapping on its name on the app screen. (MAC address shown on scan screen of the Android version of the app will match the MAC address on back of the beacon; iPhones can not show the MAC address until after they have connected for the first time).
- If the app scan screen is blank, then be sure to turn on bluetooth on your phone. If you do that, and the app screen is still blank, hard close the app and restart it.
- On the configuration page after connecting, make changes to the parameters you wish to change. Tap SAVE after each change to temporarily save your changes and go back to the main Beacon Detail page.
- When done making all of your desired changes, tap UPLOAD one last time on the Beacon Detail page to upload all of those changes to the beacon. If you don’t do this, all of the changes you temporarily saved on each setting will be lost after you exit the app. You should see an Upload Successful or Success message on your screen.
- Tap the Left Arrow button on the top left of the screen to return to the main app scan screen.
- Wait for changes to be scanned by your phone, or swipe down on the screen to have those changes be recognized by your phone quicker.
- If you have activated the TLM broadcast, your beacon’s TLM data (battery, temperature, and broadcast count/time data) will update every 10th broadcast. Even without the TLM broadcast activated, the KBeacon app screen will show the battery power of the beacon.
- That’s it. You’re done! Once you configure the beacon settings, you no longer need to connect to it. Beacons operate totally independently from your phone. Please see our FAQ section for more info about beacons in general.
- If you wish to stop broadcasting, turn off the beacon by pressing and holding down the button on the top of the beacon continuously for 5 seconds, then release the button. The BC021 beacon will beep two times and the blue LED will flash quickly 8 times to indicate the beacon is now OFF. Swipe down on the app’s main screen to refresh the scan results, and you will see that this particular beacon will no longer appear since it is now turned off.
Here are a couple short videos. The first shows how to turn the beacon on and off (using the BC011 as an example, but the BC021 is very similar). The second video shows how to configure the beacon using our free KBeacon app (using the BC011 as an example, but the BC021 is very similar). After watching the videos, we recommend that you go through the step-by-step instructions on this page, as there are quite a few details and useful learnings that the videos do not cover.
Detailed Step-by Step Instructions
If you really want to learn the details about configuring your beacon (and lots of other interesting info about beacons along the way), I highly recommend you take the time to read the following Detailed Step-by-Step Instructions. It takes a bit of time, but will be well worth it and will possibly save you some major headaches later.
Now that you have turned on the beacon, go back to the KBeacon app screen on your phone.
Tap the SCAN button in the upper right hand corner to begin scanning for nearby beacons. Be sure that your phone’s Bluetooth is turned on, otherwise you will see a BLE error on the app screen. To stop the scan, tap on the STOP button in the upper right hand corner. Swipe down on the screen to refresh the scan at any time. This is useful for refreshing the data on the screen.
(Android users: If you are not seeing ANY devices on the scan screen, you should check in your phone’s settings to be sure that the KBeacon app has be given Location Permission and also that your phone’s Location Services are enabled.)
You may be surprised to see a long list of times on this scan page. Those are the various Bluetooth devices around you (things like speakers, iPods, iPads, smartphones, Bluetooth-enabled refrigerators, etc.). If you are having a hard time finding your beacon on this scan list, use the “tap to filter” selector at the top of the app screen to filter out devices with lower RSSI values (they are far away from you), then place your beacon next to your phone so that it shows on the filtered list as the closest Bluetooth item.
A quick word about RSSI figures: RSSI figures are a measure of the strength of the signal between your smartphone and the beacon. A distant beacon will show on the app screen with a “low” (weak) RSSI. Since RSSI figures are all negative numbers, a low RSSI would be -90, for example. A higher RSSI figure would be -27, for example. The further away from zero, in the negative direction, indicates that the signal is weaker, and thus we can infer that the beacon is further away from your phone.
The top beacon in the screenshot above shows the name “BlueCharm_124”. Yours will have a different number than this one, of course. If you are not sure which beacon on the list is yours, or maybe you have multiple beacons, take a look at the back of your BC021 to see the MAC number (a unique fixed ID number) for your beacon, then compare this number to the MAC number listed for each beacon on the scan screen above. That will help you clearly identify which one is the correct beacon that you are trying to configure. MAC address shown on scan screen of the Android version of the app will match the MAC address on back of the beacon; iPhones can not show the MAC address until after they have connected for the first time
Sharp-eyed readers might notice that the above screenshots have a difference on iPhone vs Android. iPhone’s don’t like to display the UUID for some strange reason. They can “see” it and react to it, but they don’t like to show it on an app scan screen. iPhones will gladly show the Major and Minor, so we can see those two numbers on the iPhone screenshot above (3838 and 4949). The Android screenshot, on the other hand, shows the UUID of the beacon as well as the major and minor.
In the example screenshot above, we see that the beacon named BlueCharm_124 is broadcasting an iBeacon broadcast. We see the RSSI of the beacon which indicates the strength of the signals back and forth with the beacon. (-30, for example, means the beacon is very close to the phone. -80, for example, means it is far away. Since the “Measured RSSI” of this beacon is set at -59 = 1 meter, that means if the beacon’s RSSI figure on the app scan screen is around -59, then the beacon is probably about 1 meter away from the phone. (This is only an approximation as RSSI figures fluctuate according to obstacles, movement, orientation of the beacon and/or the phone, etc.)
You might also notice that the iPhone version of the app does not show the UUID of the beacon, but the Android version does (see image above; the default UUID is 426C7565-4368-6172-6D42-6561636F6E73). This is a quirk of the iPhone and Apple policy; they don’t want users to see the UUID of various BLE things. Don’t worry though, this will not effect the performance of your beacon.
In the example screenshot, we can also see that the battery power percentage is 100%. Of course, that means that the battery has full power (3.0 volts or more).
Next, let’s connect to the beacon: Go ahead and tap on your beacon name on this screen now to connect to it. Here’s what you will see once the connection is established. The app has now downloaded the beacon’s current configuration and is displaying it on the screen:
As mentioned before, the beacon already has default configuration settings, so you really don’t need to change any of these unless you have some specific reason for needing to do so. The most obvious reason would be that you have more than one beacon, so you will need each beacon to have a unique UUID/Major/Minor. If that is the case, the easiest solution is to just change the Minor ID number from 4949 to 4950 for your second beacon, then use 4951 for your third beacon, etc. That one small ID difference makes the beacons completely unique from each other. Ok, now back to our configuration process…
Now, let’s tap on the first item on the Beacon Detail page to see the System Info. Here’s what you will find there:
The System Info page shows…
Defaults:
-the system ID which is the unique MAC address of each beacon; this same number is also on a sticker on the back of each beacon.
-the beacon’s model number BC21 (the image above shows BC08, which is a different model number, but yours will show BC021)
-the beacon’s firmware version
Changeable?:
-None of these fields are changeable by the user; they are permanently encoded into the beacon.
Next, tap on the “back arrow” on the top left of the screen to go back to the Beacon Detail main page. On that page, let’s tap on the next item on the list, Beacon Name. Here’s what you will see on the Beacon Name page:
The Beacon Name page shows…
Default name: BlueCharm_(random number)
Changeable: you can input any name of 16 ASCII characters or less.
Once you have entered a new name, tap on SAVE in the upper right corner. you will then be automatically taken back to the main Beacon Detail page.
Keep in mind that your new beacon name is now “saved” in the app temporarily. It will not be uploaded to the beacon until you tap UPLOAD on the main Beacon Detail page. Why not? Because this allows you to make multiple changes to the beacon configuration without uploading them one by one to the beacon; that would waste a lot of your time. Instead, you make your changes on the various setting pages (e.g. beacon name, interval, TX power, etc.), temporarily save them in the app, then when you are done making all your changes, you tap SAVE on the Beacon Detail page to upload them to your beacon all at once.
If that’s all you wanted to change, you could tap SAVE on the Beacon Detail page, and your new beacon name will then be uploaded to the beacon. But let’s imagine, for the sake of learning, you want to change some of the other settings as well. Since you are now back on the Beacon Detail page, let’s tap on the next setting, Adv Interval (a.k.a. Advertising Interval or Broadcast Interval). Here’s what you will see next:
The Advertising Interval page shows…
Default: 1022.5ms
Changeable: Any one-decimal number between 100-10000ms, e.g. 200, 301.2, 546.5, 1285, 3000, etc. (1000 milliseconds equals 1 second).
This is where you can set the amount of time between each beacon information broadcast. On this page, you can tap on one of the suggested choices (ranging from 100ms to 1000ms), or you can input a specific number into the input box at the top of the page.
Keep in mind that shorter intervals use the battery much faster. The relationship is almost one for one. For example, at the default interval of 1022.5ms, the beacon battery will last about 16 months. If you cut this number in half, i.e. 511ms, then the beacon battery would last about 8 months. These estimates are based on the default TX power of 0dBm (zero). The TX power setting also influences the battery life; more on that below in the TX setting section.
If you need to set the interval very long (anything longer than 3000ms would be considered long), that’s ok, BUT it will be difficult to connect to the beacon for configuring in the future. If you face this issue, just click the beacon button 1 time, and the beacon will broadcast at a very fast 100ms interval for 30 seconds. It should then be very easy to connect to the beacon during that time period.
You should also keep in mind that setting the interval to a very long period will make it very difficult for your smartphone (or other scanner device) to “see” the broadcast from the beacon. Why? Smartphones, and other scanners, are not scanning 100% of the time; this would use too much of the phone’s battery. Instead, they scan for a short period of time called the “scanning window”. The specific scanning window used depends on the app, the type of phone, whether the app is in the foreground or background, etc. But you can easily imagine that if the phone is scanning for one second every three seconds (just example numbers), it could easily and repeatedly miss the beacon broadcast if the beacon was only broadcasting once every 10 seconds. Moral of the Story: Set your beacon advertising interval wisely to balance these two competing factors, saving battery power and making the broadcast easily scanned by your smartphone.
One of the nice features of this BC021 beacon is that you can input very precise intervals. For example, the default interval is 1022.5 milliseconds. That’s a little longer than 1 second. Why such a weird number? Check out the knowledge box below:
When beacons are being scanned by smartphones, there is the possibility that the scanning window of the phone and the broadcast of the beacon will not line up exactly. In that case, the broadcast will be missed by the phone. To reduce the chance of this happening, the smart people at Apple recommend that you set your advertising interval to one of these odd-looking numbers: 152.5 ms, 211.25 ms, 318.75 ms, 417.5 ms, 546.25 ms, 760 ms, 852.5 ms, 1022.5 ms, or 1285 ms. It is a bit complicated to explain this in detail, but suffice it to say, these intervals work better. This BC021 beacon has been designed with this in mind, and as far as I know, it is one of the only beacons on the market that allow the user to input these precise optimal interval numbers.
OK, so now you may have changed the advertising interval, you would then click on SAVE in the upper right hand corner and be taken back to the main Beacon Detail page. Otherwise, you don’t need to make any changes, and you could just tap on the “back” arrow in the upper left hand corner. Once you are back on the Beacon Detail page, you might tap on the next item on the list: Adv Flags, a.k.a. Advertising Flags. Here’s what you would see on that page:
The Advertising Flags page shows…
Default: Connectable is checked; Power On Always is unchecked.
Changeable: check or uncheck either one according to your preference. We recommend that you do NOT adjust these settings.
Connectable checked means that the beacon will always be connectable as long as it is turned on.
Connectable unchecked means that the beacon will only be connectable for 30 seconds after the button is clicked once OR it will be connectable for 30 seconds after you remove the battery and replace it.
We recommend leaving the default setting of connectable checked. It makes it easier to work with your beacon settings whenever you need to. Unchecking the box makes the beacon more secure in that somebody would need to physically access the beacon to click the button to make it connectable. Unconnectable mode also save battery power by about 30%.
When “Power On Always” is checked, the beacon’s button can no longer be used to turn the beacon OFF. (It can still be used to click once to make the beacon connectable or for trigger commands; more about those later). Of course, you could still open the beacon up and take out the battery to shut it off. Or you could connect to it and change the Power On Always setting back to unchecked, then use the button to turn off the beacon.
This “Power On Always” option is a good way to solve the “beacon on key chain in pocket and somehow the button gets pressed and the beacon turned off” problem (very technical term!). Even though it requires a 5 second continuous press on the button to turn the beacon off, you might be surprised how easy it is to do this inadvertently when the beacon is on a key chain in your pocket.
Next, let’s go back to the main Beacon Detail page and select the TX Power setting. Here’s what you will see then:
The TX Power page shows…
Default: 0 dBm
Changeable: -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, or +4dBm.
On the TX Power setting page, you are selecting the power at which the beacon will broadcast. High power (+4dBm) will make the signal reach further away. How far? If the scanning device uses Bluetooth 5.0, then the maximum range at +4dBm is about 90 meters (about 98 yards, so just 2 yards short of a touchdown). If the scanning device uses Bluetooth 4.0, then the maximum range at +4dBm will be about 50 meters. Keep in mind that these are “open air, line of sight” figures. Any obstacles, walls, glass, furniture, humans, etc. will shorten these distances.
Many users want to program a home automation device, Arduino, or Rasberry Pi to react to the presence of a beacon. Sometimes they want this reaction to only occur when the beacon is very close. With this goal in mind, they set the TX power to its lowest setting, so that the scanning device only “sees” the beacon when the beacon is very close. OK, fine, that works in some cases. But often this results in unstable behavior. A better approach is to set the TX power at one or two levels higher than the minimum needed. This ensures that the beacon is clearly “seen” by the scanner (and doesn’t pop in and out of range frequently). Then the scanner should be programmed to check the RSSI signal strength of the target beacon to determine its proximity. With this method, your program can take a running average of the RSSI figures (or use some other simple mathematical smoothing approach) in order to avoid unpredictable behavior due to the unstable nature of BLE signals.
The bad news is that as of today, most beacon scanning apps on smartphones do NOT take this approach. So until the coders improve these apps, you may be stuck with the non-optimal “adjust the beacon TX to set the reaction range of the app” approach.
Keep in mind that the higher you set the TX Power, the faster the battery will run out. The relationship is not linear in nature, so the difference in battery life between the lowest TX setting and the highest TX setting is about 40%.
Next, let’s return to the Beacon Detail screen and then tap on the Measured Power setting. Here’s what you will see there:
The Measured Power page shows…
Default: -59 dBm
Changeable: any number between -80~0 dBm; typical range is -69~-49 dBm. BUT it is not recommended that you adjust this setting away from the -59 default value.
The Measured Power setting is determined by the factory for each beacon during the system design phase. In effect, the -59 setting of the BC021 beacon indicates that if you hold your smartphone 1 meter away from the beacon, your smartphone will measure the RSSI strength of the beacon to be -59. It’s a theoretical number, influenced by environmental factors, orientation, etc. etc. caveats.
Unless you really know what you are doing, you should NOT adjust the Measured Power setting.
Next, let’s jump back to the Beacon Detail page and select the Beacon Type setting. Here’s what you will see:
The Beacon type page shows…
Default: iBeacon is checked, TLM is checked, others are unchecked.
Changeable: You can check or uncheck any broadcasts you prefer (KSensor is not compatible with the standard BC021 beacon).
Note: Activating more than one type of broadcast at the same time will have a somewhat negative effect on the reliability of your signal. (see examples below)
But first, a short description of these different broadcast protocols:
iBeacon format is the most common broadcast format. It broadcasts an unique identifier number made up of the UUID, the Major value, and the Minor value.
Eddystone TLM format broadcasts the battery level of the beacon (3000mV = 3 volts, i.e. fully charged; BC021 beacon batteries start with more than 3.0 volts), the celsius temperature around the beacon, the number of advertisements that have been sent out in the life of the beacon, and the amount of time that the beacon has been broadcasting.
Note that the temperature sensor in the BC021 is only accurate to +/-3 degrees C due to the chip being enclosed inside the housing. For this same reason, it does not react to temperature change very quickly. In other words, this temperature reading should only be used as a rough general indicator.
Eddystone URL format broadcasts a website URL address. For example, https://www.bluecharmbeacons.com.
Several years ago, the Eddystone URL broadcast was popularized by Google/Android as a way of advertising your website to strangers passing by, BUT this function was discontinued by Google in December 2018. As a result, this protocol lost some of its attractiveness. There are still some specific usage cases though where it is still quite suitable. For example, you can make a simple “self-guided tour” by setting each beacon to broadcast a different informational webpage URL, then have visitors use one of the free “Physical Web” apps to automatically view the appropriate info webpage when the visitor approaches a certain location/beacon.
Eddystone UID format broadcasts a unique ID number made up of a Namespace ID and an Instance ID. This protocol can be managed via Google’s Beacon Dashboard and is quite effective for some technical usage cases. Warning: Google’s Beacon Dashboard and other technical requirements are not recommended for the non-tech-savvy. In fact, it is very very confusing.
KSensor format broadcasts x/y/z telemetry information from a telemetry chip inside the beacon. The BC021 beacon does not have a xyz telemetry chip (but it does have a motion sensing chip; more on that below), so this broadcast format is not used with this beacon.
Multiple broadcasts: The BC021 is called a “multi beacon” because it can broadcast one or more formats at the same time. This gets a little tricky, so let’s look at some examples first:
Example 1: iBeacon and TLM broadcasts checked, 1000ms interval setting
By definition with this beacon, if TLM is enabled as it is in this example, the TLM broadcast goes out once every tenth broadcast by default. (You can adjust this using the TLM Interval menu; see below for more details.)
after 1000ms, iBeacon broadcast
after 1000ms, iBeacon broadcast
after 1000ms, iBeacon broadcast
after 1000ms, iBeacon broadcast
after 1000ms, iBeacon broadcast
after 1000ms, iBeacon broadcast
after 1000ms, iBeacon broadcast
after 1000ms, iBeacon broadcast
after 1000ms, iBeacon broadcast
after 1000ms, TLM broadcast
after 1000ms, iBeacon broadcast
after 1000ms, iBeacon broadcast
after 1000ms, iBeacon broadcast
…etc.
So you would have 9 iBeacon broadcasts, once per second, then one TLM broadcast, then back to 9 iBeacon broadcasts, etc.
Example 2: iBeacon, URL, and TLM broadcasts all checked, 1000ms interval setting:
after 1000ms, iBeacon broadcast
after 1000ms, URL broadcast
after 1000ms, iBeacon broadcast
after 1000ms, URL broadcast
after 1000ms, iBeacon broadcast
after 1000ms, URL broadcast
after 1000ms, iBeacon broadcast
after 1000ms, URL broadcast
after 1000ms, iBeacon broadcast
after 1000ms, TLM broadcast
after 1000ms, iBeacon broadcast
after 1000ms, URL broadcast
after 1000ms, iBeacon broadcast
…etc.
Although the beacon’s interval was set at 1000ms, under this scenario, the effective iBeacon interval is now actually 2000ms, right?
Example 3: iBeacon, URL, UID, and TLM broadcasts all checked, 1000ms interval setting:
after 1000ms, iBeacon broadcast
after 1000ms, URL broadcast
after 1000ms, UID broadcast
after 1000ms, iBeacon broadcast
after 1000ms, URL broadcast
after 1000ms, UID broadcast
after 1000ms, iBeacon broadcast
after 1000ms, URL broadcast
after 1000ms, UID broadcast
after 1000ms, TLM broadcast
after 1000ms, iBeacon broadcast
after 1000ms, URL broadcast
after 1000ms, UID broadcast
…etc.
Although the beacon’s interval was set at 1000ms, under this scenario, you could say that the iBeacon average interval is now actually 3333ms, right?
By effectively lengthening the interval of the iBeacon broadcast, you make the signal more difficult for the scanner to catch. That’s why it is not recommended to have multiple broadcasts at the same time (with the exception of TLM which you can adjust how often it replaces the main broadcast). Of course, in some specific cases, that might be exactly what you need, so that’s fine.
Now that you have enabled iBeacon format, when you jump back to the Beacon Detail page, you will see a menu selection for setting the iBeacon UUID. Tap on it, and you will see this:
The iBeacon UUID page shows…
Default: 426C7565-4368-6172-6D42-6561636F6E73
Changeable: Any proper length and formatted UUID where each digit is hex. i.e. has a Value of 0 to 9 or A to F. Note that with this app, you need to enter dashes in the correct spots.
Note: The app offers you some alternative UUIDS to select to be compatible with services like Air Locate, Web Chat, etc. You can choose one of these or just use the default UUID or make up one of your own.
Jump back to the Beacon Detail page, tap on iBeacon Major, and you will see this page:
The iBeacon Major page shows…
Default: 3838
Changeable: Any number from 0-65535, e.g. 58 or 229 or 5791 or 59985
Jump back to the Beacon Detail page, tap on iBeacon Minor, and you will see this page:
The iBeacon Minor page shows…
Default: 4949
Changeable: Any number from 0-65535, e.g. 58 or 229 or 5791 or 59985
Now you have completely configured the settings for the iBeacon broadcast format, i.e. UUID, Major, and Minor. Jump back to the Beacon Detail page now.
You might expect to see some selections for the TLM broadcast settings, but there are not any there because there is nothing to select with TLM. It just does what it is supposed to do without any special settings to be chosen.
You might also be wondering where the Eddystone URL and UID settings menus are located. They will appear on the Beacon Detail page but only when you have enabled those broadcasts.
Next, jump back to the Beacon Detail page and select the next item on the list: TLM Interval.
The TLM Interval page shows…
Default: 10
Changeable: Any number from 2-100, e.g. 10 or 18 or 27 or 100.
The default value of 10 means that the regular broadcast will be replacement every 10th broadcast by the TLM broadcast. If you don’t want the TLM broadcast to replace the main broadcast that often, you can adjust this number to anything between 2-100. 2 would make TLM broadcast replace the main broadcast every 2nd broadcast; that is very frequent and not recommended unless you have some specific need to very frequent TLM readings. 100 would make it replace the main broadcast every 100th broadcast.
Next, jump back to the Beacon Detail page and select the next item on the list: Trigger Command.
Enable the Button Trigger on the screen shown above.
Note: You will not see the next screen (below) until you enable the button trigger option on the screen shown above.
The Button Trigger Parameters page shows…
Trigger Type
Default: Button Trigger
Changeable: No, this is just a description of this page.
Trigger Enable
Default: disabled
Changeable: yes, you can enable or disable
Trigger Parameters
Default: single click
Changeable: yes, you can select single, double, or triple click, or “hold down the button” (long-press) as the trigger. We have found that double click works best since it is less likely to be triggered by accident.
Note: According to the beacon’s default setting, a long-press on the button is usually used to power on and off. Clicking the button once is usually used to force the beacon to enter connectable mode. So when you enable the long-press button special event trigger, the long-press power off function will be disabled. When you turn on the single, double, or triple click trigger, the function of clicking to enter connectable broadcast state will also be disabled. After you disable the button trigger, the default function of long press or single click will take effect again.
Trigger Advertising Mode
Default: Advertisement after trigger
Changeable: yes, you can choose the default which means the beacon will do nothing until the trigger is activated. Then it will follow the trigger parameters below. Alternatively, you can choose “Always advertisement” which means the beacon will broadcast the regular broadcast during normal times, but switch over to the trigger broadcast after the beacon is triggered. (Don’t worry. We will put some examples below.)
Trigger Advertising Type
Default: iBeacon
Changeable: yes, you can select iBeacon, Eddystone URL, Eddystone UID, or Eddystone TLM. KSensor is not active on this beacon.
Note: If your regular broadcast is iBeacon, and you set the trigger broadcast as iBeacon as well, during the trigger advertisement period, the iBeacon broadcast will have a slightly modified UUID depending on the type of trigger you have enabled.
-A single click trigger adds hex 5 to the UUID.
-A double click trigger adds hex 6 to the UUID.
-A triple click trigger adds hex 7 to the UUID.
-A “long press” trigger adds hex 8 to the UUID.
This trigger advertising function kind of makes one single beacon into 5 different beacons: your regular beacon (and regular UUID) plus four different beacons that can exist individually for a certain period of time.
For example, you could have the beacon attached to a lanyard around the user’s neck broadcasting the regular UUID. Your scan system could activate actions based on proximity to the regular UUID beacon. But then the user could also double click the button to indicate a special need or situation, then your scanner would see that special “double click UUID” as if it was a new/different beacon and activate some different action based on proximity. Pretty cool, right? There are some examples below, but really, if you use your imagination, you can create all sorts of interesting applications for this button trigger function.
“Bug” report for the iPhone version of KBeacon only:
Configuration:
-Regular broadcast set to UID, URL, TLM, or KSensor (i.e. anything except iBeacon)
-Trigger broadcast set to iBeacon
Expected Result:
-You would expect to see the iBeacon broadcast after the trigger
Actual Result:
-You will NOT see the iBeacon broadcast after the trigger because the scan mode in the app has not been set to iBeacon scan mode (since your regular broadcast in not iBeacon).
This is caused by the special way that an iPhone scans for iBeacons (“scan request and response”). The good news is that the beacon is actually operating properly; it’s broadcasting iBeacon after the trigger. The bad news is that our KBeacon app is stubbornly refusing to show the broadcast. Assuming you will eventually be scanning with some other app or gateway or ESP device to trigger an action/automation/asset count, this bug in our KBeacon app will have no effect on your usage of the beacon. (Apologies: We are working to fix this bug in the next update of the iPhone version of KBeacon.)
Re the above big report: There is no such bug in the Android version of the app.
Trigger Advertising Time
Default: 60 seconds (not milliseconds!)
Changeable: select the number of seconds (not milliseconds!) you want the special trigger broadcast to last for. select the number of seconds (not milliseconds!) you want the special trigger broadcast to last for. The range is 10 seconds to 7200 seconds.
Trigger Advertising Interval
Default: 400ms
Changeable: yes, you can select the interval for the trigger broadcast.
NOTE: Be sure to tap SAVE in the upper right hand corner on each parameter page. When you are done setting each parameter and back on the main Trigger Parameters page, be sure to tap SEND (or the upward arrow on iPhone) to upload those parameters to the beacon. If you don’t do this, and just go back to the Beacon Detail page, then save there, the trigger parameters will NOT be saved.
As promised, some examples:
Example 1:
Trigger Parameters: double click
Trigger Advertising Mode: Advertisement after trigger
Trigger Advertising Type: URL
Trigger Advertising Time: 60 seconds
Trigger Advertising Interval: 400ms
-Under these conditions, the beacon will do nothing, UNTIL the button is double clicked. Then it will begin to broadcast the Eddystone URL of the beacon, every 400ms, for 60 seconds. Then the beacon will stop and do nothing until the next trigger event.
Example 2:
Trigger Parameters: double click
Trigger Advertising Mode: Always Advertisement
Trigger Advertising Type: URL
Trigger Advertising Time: 60 seconds
Trigger Advertising Interval: 400ms
-Under these conditions, the beacon will send out its regular broadcast (for example, iBeacon at 1022.5ms interval), UNTIL the button is double clicked. Then it will begin to broadcast the Eddystone URL of the beacon, every 400ms, for 60 seconds. When the 60 seconds has elapsed, the beacon will stop the URL broadcast and return to its regular broadcast.
Example 3:
Trigger Parameters: double click
Trigger Advertising Mode: Always Advertisement
Trigger Advertising Type: iBeacon
Trigger Advertising Time: 60 seconds
Trigger Advertising Interval: 100ms
-Under these conditions, the beacon will send out its regular broadcast (for example, iBeacon at 1022.5ms interval), UNTIL the button is double clicked. Then it will begin to broadcast a modified iBeacon UUID broadcast AND the interval will be changed to 100ms, for 60 seconds.
-Since the trigger in this example is a double click, the regular iBeacon UUID of the beacon will have 0x06 added to it:
Regular UUID: 426C7565-4368-6172-6D42-6561636F6E73
UUID after double-click trigger: 426C7565-4368-6172-6D42-6561636F6E79 (notice the last digit of the UUID has increased by 6).
Keep in mind that the digits of all UUIDs are hex numbers, so addition is a little different. If the last digit was 3 and you added 6 to it, the new UUID would end in 9. Easy. But if the last digit was 3 and you added 7 to it, the new UUID would end in A (“A” in hex is ten). If the last two digits of the UUID were 7E and you added 6 to it, the new last two digits would be 84. (If you want to learn more about this, you can Google “adding numbers in hex” for some more examples. Or just play around with the beacon and write down the regular and new UUIDs for the different click types).
Note: iPhones don’t show the UUIDs of any beacons due to Apple security policies. So if you are using KBeacon on an iPhone, you won’t see these UUID changes at all. In fact, the UUID section on the scan screen will be blank on an iPhone. You will only be able to see the Major and Minor.
Also remember that the iPhone version of the KBeacon app does not show the UUID on the main scan screen. This is a security restriction of the iOS system. So if you want to see the UUID change before your eyes, you need to use an Android phone to see it.
When the 60 seconds has elapsed, the beacon will stop the 100ms interval broadcast iBeacon broadcast and return to its regular 1022.5ms interval iBeacon broadcast. The UUID will also return to normal.
Next, jump back to the Beacon Detail page and select the Beacon Trigger item again so that we can configure the motion sensor. (We have seen this page before when we adjusted the button trigger. Now we are going to adjust the motion trigger.)
The Trigger (Command) List page shows…
Motion Trigger Status Only: Disabled/OFF or Enabled/ON (Note that the letter “d” is missing on the iPhone app)
Button Trigger Status Only: Disabled/OFF or Enabled/ON (Note that the letter “d” is missing on the iPhone app)
Changeable: Tap on the Motion Trigger choice to go to the next page to enable the motion trigger. (see below)
Enable the Button Trigger on the screen shown above.
Note: You will not see the next screen (below) until you enable the motion tripper option on the screen shown above.
The Motion Trigger Parameters page shows…
Trigger Type
Default: Motion Trigger
Changeable: No, this is just a description of this page.
Trigger Enable
Default: disabled
Changeable: yes, you can enable or disable
“Trigger Parameters” on Android version only
“Motion Sensitive” on iPhone version only (located at bottom of this app screen)
Default: 2
Changeable: yes, you can set the sensitivity from 2 (most sensitive) to 31 (least sensitive).
Trigger Advertising Mode
Default: Advertisement after trigger
Changeable: yes, you can choose the default which means the beacon will do nothing until the trigger is activated. Then it will follow the trigger parameters below. Alternatively, you can choose “Always advertisement” which means the beacon will broadcast the regular broadcast during normal times, but switch over to the trigger broadcast after the beacon is triggered. (Don’t worry. We will put some examples below.)
Trigger Advertising Type
Default: iBeacon
Changeable: yes, you can select iBeacon, Eddystone URL, Eddystone UID, or Eddystone TLM. KSensor is not active on this beacon.
Note: If your regular broadcast is iBeacon, and you set the trigger broadcast as iBeacon as well, during the trigger advertisement period, the iBeacon broadcast will have a slightly modified UUID. A motion trigger event will add hex 1 to the regular UUID.
This trigger advertising function kind of makes one single beacon into 2 different beacons: your regular beacon (and regular UUID) plus a second beacon that can exist individually for a certain period of time.
For example, you could have the beacon attached to a door broadcasting the regular UUID. Your scan system could activate actions based on proximity to the regular UUID beacon. But then if the door was moved enough to trigger a motion event, then your scanner would see that special “motion trigger UUID” as if it was a new/different beacon and activate some different action. Pretty cool, right? There are some examples below, but really, if you use your imagination, you can create all sorts of interesting applications for this motion trigger function.
“Bug” report for the iPhone version of KBeacon only:
Configuration:
-Regular broadcast set to UID, URL, TLM, or KSensor (i.e. anything except iBeacon)
-Trigger broadcast set to iBeacon
Expected Result:
-You would expect to see the iBeacon broadcast after the trigger
Actual Result:
-You will NOT see the iBeacon broadcast after the trigger because the scan mode in the app has not been set to iBeacon scan mode (since your regular broadcast in not iBeacon).
This is caused by the special way that an iPhone scans for iBeacons (“scan request and response”). The good news is that the beacon is actually operating properly; it’s broadcasting iBeacon after the trigger. The bad news is that our KBeacon app is stubbornly refusing to show the broadcast. Assuming you will eventually be scanning with some other app or gateway or ESP device to trigger an action/automation/asset count, this bug in our KBeacon app will have no effect on your usage of the beacon. (Apologies: We are working to fix this bug in the next update of the iPhone version of KBeacon.)
Re the above big report: There is no such bug in the Android version of the app.
Trigger Advertising Time
Default: 60 seconds (not milliseconds!)
Changeable: select the number of seconds (not milliseconds!) you want the special motion trigger broadcast to last for.
Restriction: If you set the trigger advertising time to a number of seconds LESS than 30, that’s fine, but the motion sensor function will not sense motion again until 30 seconds have elapsed. For example, if you set the trigger advertising time to 10 seconds, then shake the beacon, the motion sensor would trigger as expected, and the advertisement would last for 10 seconds, BUT the beacon would not become motion sensitive again until 30 seconds have elapsed. So, in this example, you would have a “cool down” period of 20 seconds during which the beacon would not sense motion.
Trigger Advertising Interval
Default: 400ms
Changeable: yes, you can select the interval for the motion trigger broadcast.
“Motion Sensitive” on iPhone version only
“Trigger Parameters” on Android version only (located higher up on this app screen)
Default: 2
Changeable: yes, you can set the sensitivity from 2 (most sensitive) to 31 (least sensitive).
Note: There is a “cool down” period built into the motion trigger. The cool down period is 30 seconds. For example, if the trigger advertising interval is set to 20 seconds, after that period has expired, the motion trigger will no longer be able to be activated by motion for 10 seconds (20 + 10 = 30 seconds). The reduces the chance of one single long motion event from inadvertently triggering two sequential motion triggers.
NOTE: Be sure to tap SAVE in the upper right hand corner on each parameter page. When you are done setting each parameter and back on the main Trigger Parameters page, be sure to tap SEND (or the upward arrow on iPhone) to upload those parameters to the beacon. If you don’t do this, and just go back to the Beacon Detail page, then save there, the trigger parameters will NOT be saved.
As promised, some examples:
Example 1:
Trigger: motion sensor enabled
Trigger Advertising Mode: Advertisement after trigger
Trigger Advertising Type: URL
Trigger Advertising Time: 60 seconds
Trigger Advertising Interval: 400ms
-Under these conditions, the beacon will do nothing, UNTIL the beacon senses motion (depending on how you have set the motion sensitivity). Then it will begin to broadcast the Eddystone URL of the beacon, every 400ms, for 60 seconds. Then the beacon will stop and do nothing until the next motion trigger event.
Example 2:
Trigger: motion sensor enabled
Trigger Advertising Mode: Always Advertisement
Trigger Advertising Type: URL
Trigger Advertising Time: 60 seconds
Trigger Advertising Interval: 400ms
-Under these conditions, the beacon will send out its regular broadcast (for example, iBeacon at 1022.5ms interval), UNTIL the beacon senses motion (depending on how you have set the motion sensitivity). Then it will begin to broadcast the Eddystone URL of the beacon, every 400ms, for 60 seconds. When the 60 seconds has elapsed, the beacon will stop the URL broadcast and return to its regular broadcast.
Example 3:
Trigger: motion sensor enabled
Trigger Advertising Mode: Always Advertisement
Trigger Advertising Type: iBeacon
Trigger Advertising Time: 60 seconds
Trigger Advertising Interval: 100ms
-Under these conditions, the beacon will send out its regular broadcast (for example, iBeacon at 1022.5ms interval), UNTIL the beacon senses motion (depending on how you have set the motion sensitivity). Then it will begin to broadcast a modified iBeacon UUID broadcast AND the interval will be changed to 100ms, for 60 seconds.
-The modified UUID is based on the regular iBeacon UUID of the beacon but with hex 1 (0x01) added to it:
Regular UUID: 426C7565-4368-6172-6D42-6561636F6E73
UUID after motion trigger: 426C7565-4368-6172-6D42-6561636F6E74 (notice the last digit of the UUID has increased by hex 1).
Keep in mind that the digits of all UUIDs are hex numbers, so addition is a little different. If the last digit was 3 and you added 1 to it, the new UUID would end in 4. Easy. But if the last digit was 9 and you added 1 to it, the new UUID would end in A (“A” in hex is ten). If the last two digits of the UUID were 7E and you added 1 to it, the new last two digits would be 7F. If the last two digits of the UUID were 7F and you added 1 to it, the new last two digits would be 80. (If you want to learn more about this, you can Google “adding numbers in hex” for some more examples. Or just play around with the beacon and write down the regular and new UUID for a motion trigger event).
Note: iPhones don’t show the UUIDs of any beacons due to Apple security policies. So if you are using KBeacon on an iPhone, you won’t see these UUID changes at all. In fact, the UUID section on the scan screen will be blank on an iPhone. You will only be able to see the Major and Minor.
Also remember that the iPhone version of the KBeacon app does not show the UUID on the main scan screen. This is a security restriction of the iOS system. So if you want to see the UUID change before your eyes, you need to use an Android phone to see it.
When the 60 seconds has elapsed, the beacon will stop the 100ms interval broadcast iBeacon broadcast and return to its regular 1022.5ms interval iBeacon broadcast. The UUID will also return to normal.
Last but not least, jump back to the Beacon Detail page and select the Modify Password menu to see this page:
The Modify Password page shows…
Default Password: 0000000000000000
Changeable: any password ranging from 8-16 ASCII characters
NOTE 1: It is NOT recommended for users to change the password. If you do change the password and forget what you changed it to, there is nothing we can do to help you. The beacon can not be reset to factory settings in order to get back to the default password.
NOTE 2: If you still want to change the password, please note that the password is stored in the beacon AND in the app. So when you use the app to connect to another beacon with a different password, you may initially see a “code 2” or “error 2” message. If you do experience this problem, please use the app to change the password on your second beacon to the same password as your first beacon. In other words, if all the passwords are the same, it will be much easier. That said, we still recommend that you do NOT change the password. If you are concerned about security, change the Advertising Flag setting to unconnectable.
Finally, jump back to the Beacon Detail page one last time. You have now made all of your changes and one by one pressed SAVE on those pages to temporarily store those settings in the app memory. The last step you must do now is to tap on SAVE on the Beacon Detail page in order to upload all your changes to the beacon. Try it now, and you will see:
Yay, all your changes have been uploaded to the beacon. You can now see a Success message on your screen. Tap OK on that message to make it go away. If you are all done now, tap on the back arrow in the upper left corner to leave the Beacon Detail page and to return to the main app scan page. This will disconnect the beacon from the app. Note that the beacon will not begin broadcasting until after it has been disconnected.
Remember to tap on SCAN on the app scan page to restart the scan and/or swipe down on the app scan page screen to refresh the page and restart the scan.
Your beacon is now configured according to your wishes and is broadcasting.
Once configured, Bluetooth Low Energy (BLE) beacons operate totally independently from your phone. You can take your phone 1000 miles away from the beacon or turn your phone off; there will be no effect on the beacon. The beacon will just keep on broadcasting its broadcast. It is not like a regular Bluetooth device that needs to be connected to your phone to operate. So once it is configured to your wishes, don’t connect to it in any way anymore. Just turn the beacon on to broadcast, and turn it off to stop broadcasting.
To Turn Off The Beacon
If you wish to stop broadcasting, turn off the beacon by pressing and holding down the button on the top of the beacon continuously for 5 seconds, then release the button. The BC021 beacon will beep two times and the blue LED will flash quickly 8 times to indicate the beacon is now OFF. Swipe down on the app’s main screen to refresh the scan results, and you will see that this particular beacon will no longer appear since it is now turned off.
Questions?
Note: If you have any questions about any of these instructions, please feel free to CONTACT us any time. We are here to answer your questions or help in any way (almost all emails are answered by Thomas, the owner of Blue Charm).