iBeacon Raspberry Pi Scanner in Python

iBeacon_headeriBeacon Raspberry Pi Scanner in Python

We have been working on a new project called BeaconAir using a Bluetooth Low Energy USB dongle to read various iBeacon devices.  BeaconAir is on a hard deadline for an article, so we had to put aside the MouseAir redesign for a few weeks.

BeaconAir is a Raspberry Pi based iBeacon Reader (not an iBeacon itself like other projects).  We are using iBeacons to figure out where my portable Pi is physically located (in a pouch on your hip as you walk around the house) and control various devices with it. We am using RasPiConnect again to build the control panel for BeaconAir. We have a current release of RasPiConnect and I’m excited about their new live connect controls and I’m using their new Slider control in this design.

iBeacon
RasPiConnect BeaconAir Screen

 

The big issue with this project was to be able to reliably read iBeacon data from a Bluetooth Dongle  (We are using an IOGear Bluetooth 4.0 USB Micro Adapter – Model GBU521).   A number of the methods out there on the web were less than satisfactory (doing hcidump scans) and often ended up hanging the Bluetooth on the Pi, requiring a reboot.

iBeacons use Bluetooth Low Energy (BLE) protocols to communicate, which is a relatively new type of Bluetooth and has spotty support.  Finally we stumbled upon a program using blueZ (Linux Bluetooth Library) native calls, that with a few modifications, bug fixes and a lot of cutting of code we didn’t need, we had a iBeacon scanner that worked every time.  We have posted our working version on the SwitchDoc Labs github.

And yes, we have also figured out that if we hang an iBeacon on the collar of Panther the Cat, it can be used to trigger the MouseAir to fire a mouse!  A much cheaper solution than an elaborate RFID cat chip tag reader.

The blescan.py program is easy to test and use, but requires some setup on the Raspberry Pi.

Here is the output from the programming running in SwitchDoc Labs.  We have a lot of iBeacons sitting around.

pi@BeaconAir ~/blescanner $ sudo python testblescan.py
ble thread started
----------
cf:68:cc:c7:33:10,b9407f30f5f8466eaff925556b57fe6d,13072,52423,-74,-78
cf:68:cc:c7:33:10,74696d6f74650e160a181033c7cc68cf,46608,13255,-52,-77
da:f4:2e:a0:70:b1,b9407f30f5f8466eaff925556b57fe6d,28849,11936,-74,-79
da:f4:2e:a0:70:b1,74696d6f74650e160a18b170a02ef4da,46769,28832,46,-78
dd:5d:d3:35:09:dd,8aefb0316c32486f825be26fa193487d,1,1,-64,-78
c3:11:48:9b:cf:fa,8aefb0316c32486f825be26fa193487d,0,0,-64,-73
fd:5b:12:7f:02:e4,b9407f30f5f8466eaff925556b57fe6d,740,4735,-74,-79
fd:5b:12:7f:02:e4,74696d6f74650e160a18e4027f125bfd,46820,639,18,-80
dd:5d:d3:35:09:dd,8aefb0316c32486f825be26fa193487d,1,1,-64,-77

We are finding 8 different iBeacons, which matches the actual count.  First you need to install the latest version of bluez, the bluetooth stack for the Raspberry Pi.   Note:  You could use apt-get, but the wheezy version is old and has patchy support for iBeacons.   Note:  If you are using a version of Jessie Raspian or newer (like a Raspberry Pi 3, follow the below:

Installing blueZ on the Raspberry Pi 3

 

sudo apt-get update && sudo apt-get upgrade

sudo apt-get install libusb-dev 
sudo apt-get install libglib2.0-dev --fix-missing
sudo apt-get install libudev-dev
sudo apt-get install libical-dev
sudo apt-get install libreadline-dev
sudo apt-get install libdbus-glib-1-dev

sudo apt-get install bluetooth bluez blueman

sudo apt-get install python-bluez

Installing blueZ on the Raspberry Pi (Pre Jessie – and Pre Raspberry Pi 3)

1373944131_dfgdfgdfgdfgTo install a newer version of blueZ on the Pi, do the following:

sudo apt-get update && sudo apt-get upgrade

sudo apt-get install libusb-dev 
sudo apt-get install libdbus-1-dev 
sudo apt-get install libglib2.0-dev --fix-missing
sudo apt-get install libudev-dev 
sudo apt-get install libical-dev
sudo apt-get install libreadline-dev
sudo apt-get install libdbus-glib-1-dev

sudo mkdir bluez
cd bluez
sudo wget www.kernel.org/pub/linux/bluetooth/bluez-5.19.tar.gz
sudo gunzip bluez-5.19.tar.gz
sudo tar xvf bluez-5.19.tar
cd bluez-5.19
sudo ./configure --disable-systemd
sudo make
sudo make install

sudo apt-get install python-bluez

sudo shutdown -r now

Now you have bluez installed and running on your Raspberry Pi.  Next install your USB Bluetooth 4.0 Dongle and start the check out.

 

pi@BeaconAir ~/BeaconAir/ble $ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 0a5c:21e8 Broadcom Corp.

Note your USB Bluetooth dongle should show up something like this depending on what you have plugged into your USB bus.  You can see a lot more information about the USB device by typing:

 sudo lsusb -v -d 0a5c:

Now you can look for the Bluetooth device using hciconfig:

pi@BeaconAir ~/BeaconAir/ble $ hciconfig
hci0: Type: BR/EDR Bus: USB
 BD Address: 00:02:72:CC:DF:D1 ACL MTU: 1021:8 SCO MTU: 64:1
 UP RUNNING 
 RX bytes:9071808 acl:0 sco:0 events:230151 errors:0
 TX bytes:1166 acl:0 sco:0 commands:100 errors:0

Finally, turn on the device:

pi@BeaconAir ~/BeaconAir/ble $ sudo hciconfig hci0 up

And now run the blescanner command to see what iBeacons might be around you.  If you don’t have an iBeacon, you can simulate on with your either iPhone or Android phone with any of a number of apps on the Appstores.

 

pi@BeaconAir ~/blescanner $ sudo python testblescan.py
ble thread started
----------
cf:68:cc:c7:33:10,b9407f30f5f8466eaff925556b57fe6d,13072,52423,-74,-78
cf:68:cc:c7:33:10,74696d6f74650e160a181033c7cc68cf,46608,13255,-52,-77
da:f4:2e:a0:70:b1,b9407f30f5f8466eaff925556b57fe6d,28849,11936,-74,-79
da:f4:2e:a0:70:b1,74696d6f74650e160a18b170a02ef4da,46769,28832,46,-78
dd:5d:d3:35:09:dd,8aefb0316c32486f825be26fa193487d,1,1,-64,-78
c3:11:48:9b:cf:fa,8aefb0316c32486f825be26fa193487d,0,0,-64,-73
fd:5b:12:7f:02:e4,b9407f30f5f8466eaff925556b57fe6d,740,4735,-74,-79
fd:5b:12:7f:02:e4,74696d6f74650e160a18e4027f125bfd,46820,639,18,-80
dd:5d:d3:35:09:dd,8aefb0316c32486f825be26fa193487d,1,1,-64,-77

The content of each line above is:

example: cf:68:cc:c7:33:10,b9407f30f5f8466eaff925556b57fe6d,13072,52423,-74,-78
Beacon MAC Address,iBeacon UDID, iBeacon Major Number, iBeacon Minor Number, TX Power at 1m, RSSI

Note that there are some odd devices above that are NOT my Estimote (b9407f30f5f8466eaff925556b57fe6d)  or Particle (8aefb0316c32486f825be26fa193487d) iBeacons.  The txPower for the Estimote and Particle devices behave correctly.  The odd devices have larger numbers or actually numbers that vary.  Interesting information.  We’ll look into this when we get a chance.  We know some of them are the two Apple TV devices in my house.

In our next article on BeaconAir, we will be talking about how to use this program inside of a Python thread to keep the main BeaconAir program aware of its current location.

64 Comments

  1. Hi, John!

    Thank you very much for your work!
    This work is very interesting for me because I was looking for such product development.

    I’ll contact you if I’ve any problems with your script.

  2. Hi I’m trying to run the example, when I run sudo python testblescan.py says: File “…./blescan.py” line 21 in import bluetooth._bluetooth as bluez Imort Error: No module named bluetooth._bluetooth do you know what could possible wrong? can you point in any direction to solve this issue?

    thanks

  3. Nathum,

    I left out the command to set up the python to blues link. I’ve added it to the instructions above.

    sudo apt-get install python-bluez

    • Hi Adam,

      I assume you mean what are the lines coming out of my script.

      here is the description (also added to posting)

      cf:68:cc:c7:33:10,b9407f30f5f8466eaff925556b57fe6d,13072,52423,-74,-78
      Beacon MAC Address, iBeacon UDID, iBeacon Major Number, iBeacon Minor Number, unknown, RSSI

      John

      • The unknown is actually the power transmitted value at 1m. This is a fixed value. It is used by apple to calculate the approx. distance. It is the reference transmitted power, for reference distance.

        Thank you for work. However, I have encountered a different problem working with it. However it is not very consistent. The script seems to go into a state where it only prints the dashed line. Probably meaning it cannot scan any more beacons.

        sometimes the script recover completely from it. and goes into it again. and sometimes it doesn’t happen at all.

        I think this happens, because the dongle goes into the bad state. Usually after plugging it on and off it works again. Can you think about a way where we can avoid a bad state in the dongle?

        Thanks,
        Asif Nadeem

        • Asif,

          Thank you. I **thought** that is what it was. Article fixed now. I was confused by some devices giving a much different value. I have now figured out that those odd devices are the two AppleTV boxes which have a value of 14 in the slot.

          Your dongle problem. I am using an IOGear Bluetooth4.0 USB Micro Adaptor – model GBU521. Cheap and I never have to reset it. I have read a number of things on the web about having to pull out the dongle and / or reset the Pi. Never have to do it with the GBU521. However, that being said, when I was using some other more “script” oriented software I was having to reboot this dongle. Since I changed to the above script, not once.

          John

          • John,

            I am also using IOGear GBU521 dongle. However, I do come across this problem of not getting any values after some time. Some instances, it doesn’t happen at all.

            I have tried switching to other ones, but all go through the same problem.

            Do you know any reasons why this could be happening even with other scripts? Is it a problem with a Bluez stack or scripts in general?

            Thanks,
            Asif Nadeem

          • Asif,

            Does it always come back after a reboot?

            Other questions:

            1) Are you using my python program? I’ve found most other scripts fail after a while.

            2) Are you using blues 5.19?

            3) Which Pi distribution are you using?

            John

  4. Hi John,

    Thanks you for your reply.
    I have one more question. What do you do with duplicate output of one UUID ?.

    I want publish (Major, Minor) data of one UUID to Database at the time, but we have duplicate data.

    For duplicate example:
    ble thread started
    ———-
    7b:05:f0:c6:d2:d0,ed209c826e234d2aa363dc5bde37fbd3,2,3,-59,-68
    7b:05:f0:c6:d2:d0,ed209c826e234d2aa363dc5bde37fbd3,2,3,-59,-68
    7b:05:f0:c6:d2:d0,ed209c826e234d2aa363dc5bde37fbd3,2,3,-59,-68
    7b:05:f0:c6:d2:d0,ed209c826e234d2aa363dc5bde37fbd3,2,3,-59,-62
    7b:05:f0:c6:d2:d0,ed209c826e234d2aa363dc5bde37fbd3,2,3,-59,-65
    7b:05:f0:c6:d2:d0,ed209c826e234d2aa363dc5bde37fbd3,2,3,-59,-68
    7b:05:f0:c6:d2:d0,ed209c826e234d2aa363dc5bde37fbd3,2,3,-59,-62
    7b:05:f0:c6:d2:d0,ed209c826e234d2aa363dc5bde37fbd3,2,3,-59,-65
    7b:05:f0:c6:d2:d0,ed209c826e234d2aa363dc5bde37fbd3,2,3,-59,-65

    Can you add option remove duplicate in your code?.

    Example concept:

    sudo hcitool lescan –duplicates &

    With the –duplicates setting the scan will not ignore multiple packets from the same iBeacon.

    • Adam,

      I understand your comments, but I believe you are better off filtering this in your own code. We want the iBeacon scanning code to return multiple packets to indicate that we have received multiple packets and we can use the new RSSI values if needed.

      Each iBeacon is set to transmit periodically and most can be reprogrammed for different intervals.

      John

  5. John,

    Could not find the reply button on the reply you made.

    When it is stuck, i kill the process using ctrl + c. And i reset the dongle using hciconfig reset. It doesn’t reset and gives the error of Cant Init Device: Connection Timed out. This is probably because as listed on internet many dongles go into bad state. However, on hard reboot it starts working.

    I have made many small modifications your python program according to my use case. However, I am currently working using your python script in its original state, which is giving me the same problem.

    I am currently using Bluez-5.11 but I think I will try again after updating to blues-5.19.

    I am using Raspbian Distribution.

    Interestingly, I have also tried using one or two other dongles and they seem to get bugged more than the one IOGear.

    Thanks for your help,
    Asif Nadeem.

  6. Hi,

    Please include the command to download the python files to the raspberry pi from the command line.

    Thanks

  7. Dear John,

    Do you have experience with iBeacon on bussiness?. Do you use this script to your production? . Is it good work with ~1000 iBeacon on Raspberry Pi ?

    Best regard.

    • Adam,
      I have not released and commercial products using iBeacons yet. We are working on a couple of prototype products, and yes, the use the iBeacon script.

      I don’t see any reason why it wouldn’t work with ~1000 iBeacons, but you may want to add more processing and a database rather than in memory arrays like I use. Eventually, you hit a processing limit (especially if you are IN RANGE of ~1000 iBeacons).

      John

  8. Hi… great work! i have it allready running on my Rpi… and it´s my first time with the Pi… i´m more an Arduino man! 😉

    congratulations… i might come back with some questions, since i would like to do a control panel on the same Raspberry pi and control it on a TFT LCD screen to avoid the Smartphone/table switch.

    Thanks!

  9. Is the scanning done with reference to time – i.e, the code scans for nearby beacons every few units of time. Or is it an interrupt based scanning whereby the Pi shows nearby beacons when it receives packets of advertising data from the nearby beacons?

    • It’s not interrupt driven. You poll (that’s the loop count in parse_events) for a while and then deal with the results. The results are buffered in blues, so you shouldn’t miss any events.

      John

  10. Hi, I’ve been playing around with this python script and it is working perfectly. However, I had a question, is there any way that I can determine from which device the iBeacon signal is coming (except the macaddress) ? I would like for instance to know whether the signal is send from an iPhone (virtual ibeacon) or a physical chip

    • Not directly. However, each kind of device has a different MAC address so with some experimenting you should be able to get close.

      John

      • Yeah I know, but the problem is that since iOS 7 for instance, apple randomizes it’s bluetooth mac addresss

        • Rudy,

          Does Apple randomize the complete MAC address? or just a subset? You may still be able to figure out it is an Apple product.

          John

          • Yup, as far as I know apple does indeed randomize the mac address, oh well, I will figure something else out. Just another quick question, when I hit crtl+C while running the blescan script, the script is not ended/not returning to the linux prompt. Do you have a suggestion for this ? I’ve tried breaking out of the while True: loop, but this doesn’t seem to function ?

  11. Hi John,

    Thanks for sharing this script.
    I have installed all the packages on my Pi, and everything works perfectly until execute the script (sudo python testblescan.py), in fact, the Pi display “ble thread started”, but never shows the list of Beacons recognised.

    I had to interrupt the process (CTRL + C) and the Pi showed:

    Trace break (most recent call last):
    File “testblescan.py”, line 22, in
    returnedlist=blescan.parse_events(sock, 10)
    File “/home/pi/iBeacon-Scanner-/blescan.py”, line 130, in parse_events
    pkt=sock.recv(225)

    can you give me an advice?
    Tx

    • My guess is that your BLE Bluetooth Dongle does not support reading iBeacons. What dongle are you using?

      John

      • Could be… is a OEM Bluetooth dongle, but is 4.0…. i will try with IOGear, but is difficult to buy here in Chile, do you know other dongles that works with your script?

        • The only dongles I have tested are IOGear. I have some others coming in for testing, but they won’t be here for two weeks.

          John

  12. Thanks for the work, I got an weird problem. I previously had a setup using your software to have the RPI sense when my iphone is in range based on the data i got from running testblescan But my OS got corrupted and so I had to start from scratch.

    Now I can’t see my iphone bluetooth signal anymore, however, when use ibeacon (by Radius Networks) I can see it, and when I turn this app off, The blescan does not see anything. And I can’t get the iBeacon app to run in the background. Does any body have any idea why all of the sudden it will not see my iphone native iBeacon without turning on a ibeacon transmitter app? FYI, I am using the iogear donge GBU521

    thanks

    • I would suspect that you did not get a good bluez install. It **has** to be the install, since it worked before.

      • John, I just did another fresh install from scratch..same thing..

        let me clarify, i am suspecting somehow iphone6 is encrypting or hiding the bluetooth signal as I am able to see the Radius Network ibeacon app signal but not iphone without it..

        Also strange is when I restart the iphone, when it shuts down, I briefly see another MAC address which I suspect is the iphone’s and also my pebble watch. Then all disappears when the phone completely shuts down. Upon restart, same thing, I see iphone MAC for a brief period, then gone, only Pebble’s, then about 3 minuits later, all signals are gone unless I go to Radius Networks app. So the software seems to be fine, but is apple somehow hiding its signal from this software??? I know they do sometype of randomization of MAC address for privacy tracking issues, but anybody else having the same problem with iphone6?

        • this is getting more frustrating and confusing.. when I run hcitool scan, it shows my pebble MAC

          but when I run hcitool lescan it give me error—Set scan parameters failed: Input/output error

          what is the difference between scan and lescan? any suggestions on what is going on?

          • Ok new findings, apparently iphone does not advertise iBeacon in the background on its own, and all apps need to be in the foreground for it to transmit. So I must have been picking up my pebble watch (thinking it was the iphone)..

            and I just updated the pebble firmware to include BLE which is apparently repeating what I did before.

            So I am able to pickup my pebble with hcitool scan but not lescan. Is there a way for me to alter your blescan.py to pickup non LE signal?

  13. Thanks for the script, some great work, and it helps with trying to work out how to scan for beacons.
    I’ve got it all up and running, but have a problem.
    If a beacon goes out of range and there are no other packets received due to no other beacons out there, then the script basically hangs.
    I’m trying to come up with an occupancy detector, and so need it to be able to return no data (so I can put some logic in there to say that beacon is no longer in range)

    Could you give me an idea on how to handle that please?

  14. HI GW, I was trying to figure out the same thing and found out that in just sits at

    pkt = sock.recv(255) in blescan.py line ~94

    and I added a socket.timeout and
    changed the code to

    try:
    pkt = sock.recv(255)
    except:
    msg = “No Signal Avail”
    return msg

    hopefully this gets you started, I am not providing the full details, as I believe it is messy and someone else can probably do a better job, but hopefully this get in the right direction..

  15. Hi John,

    Great information.

    Figured I would attempt the demo using the latest bluez build (5.27), but the make fails:

    CCLD tools/mcaptest
    /usr/bin/ld: profiles/health/mcap.o: undefined reference to symbol ‘clock_getres@@GLIBC_2.4’
    //lib/arm-linux-gnueabihf/librt.so.1: error adding symbols: DSO missing from command line
    collect2: ld returned 1 exit status
    Makefile:4184: recipe for target ‘tools/mcaptest’ failed
    make[1]: *** [tools/mcaptest] Error 1
    Makefile:2648: recipe for target ‘all’ failed

    Have you tried to use more recent versions of bluez?

    Thanks,
    Scott

    • Hi Scott,

      No I havent. I’ll look at when I get back next week. I’ll give it a try. I have a new Bluetooth dongle to test too.

      John

    • sudo LDFLAGS=-lrt ./configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var –enable-library -disable-systemd

      This might solve the error

  16. Good morning John,

    I’ve been working with your code, and find it to be really useful! The one question I have is more related to classic BT versus BTLE. Does BTLE have anything like device name lookup? If so, can that be appended to the adstring?

    Thanks!

    Tom C.

    • Hi Tom,

      As near as I can tell, BTLE does not have a “name lookup” in that sense. You can scan for UUIDs and some BLE devices allow you to ask for a name through the API for the device. So the answer is in a way, but not simple.

      John

  17. Is there a way that scanned beacon can be used in a http post request. I am hoping to use data scanned from a single beacon to be used in an API.

    • You should be able to do this. You might have to do a page in PHP and interface it to the python script through a file or modify the python to return a value when called. There are a number of ways to do that.

      John

    • I have just done this. what I have done is to use python to write xml into a local file, and use curl command to post it.

      for example, in python, I will use os.system to call external command curl:
      os.system(“curl -d \”`cat /home/pi/bluez/record.xml`\” https://yourownserver/yourhttpposthandler“)

  18. John,
    what would the lift be in the source code for blescan (or testblescan) to go from parsing the manufacturerSpecificData in the Advertisement Packet to parsing the manufacturerSpecificData in the ScanResponse? They are similar but not identical. I need to parse the the ScanResponse instead of the advertisement. Any hints or tips?

    • Arlow,

      I have not even looked at that yet. I am using this code again in a new project for iBeacons in the near future. I’ll check it out then.

      John

  19. Hi John,

    firstly, thanks for your work on this.
    I’ve been toying with your script and I scan for a certain amount of time every a few second (e.g. every 30 second I scan for 5 seconds, the rest of the time I do some other things). The problem I’m seeing with this is that if no BLE signal is present the program gets stuck in parse_events for some reason in the second iteration of the loop, not allowing the rest of the code to be executed after the scan time has passed.

    One workaround is launching a process or a thread for parse_events and let it run for the required time, but I guess the ideal is to tackle this in the code to make it more robust. Can you think of something that may be causing this behavior?

    Alvaro,

    • Alvaro,

      Off hand, I can’t think of anything that would cause that. I am revisiting this code in a few weeks and will try to reproduce it then. I’ll update the post and the archives when I find it.

      John

      • John,

        I’ll be following your site for any news. In the mean time, I’ll be working on it, If I find anything else I’ll post it.

        Alvaro.

        • Hi Arlow,

          I’m afraid the program is not getting any error, it just gets stuck in the for loop trying to receive some bluetooth data. A try- except yields the same result.

          Alvaro.

          • Oh, sorry, I forgot about the modifications I had to make. Let me see if I can’t dig that up and post it.

          • Ok. I think I got it.

            recv() is a blocking method from socket, it’ll be waiting until it receives some data. The first time it gets a small packet with 5 bytes or so (it might be something related to the capture process), the second time no BLE signal is present so it waits forever. We could use different ways of tackling this. For example, make it non-blocking or use select to know when there’s data or to set a timeout for the socket.
            I have to try all the method, but for now I’ve just tried the timeout one. If time passes it raises an exception we have to catch, in this case is bluez.timeout.

            Besides this, I’ve changed the for statement with a while statement to scan only for an amount of time. I vaguely remember something I read, that scanning too fast in the raspberry could lead to blocking the bluetooth device, do you know something about that?

            Going back the code, we have to:
            #Establish a timeout for the socket
            sock.settimeout(duration)
            #handle the exception
            try:
            sock.recv(255)
            ….
            except bluez.timeout:
            ….

            sock.settimeout(duration)

          • The last line in my previous message is repeated, we don’t need to write it twice

  20. Hi, John!

    there is a issue for run script on second time.

    first time, it works very well.
    then, Ctrl +C, to stop run script, again run, the error was coming:
    root@raspberrypi:/home/pi# python testblescan.py

    ble thread started
    Traceback (most recent call last):
    File “testblescan.py”, line 19, in
    blescan.hci_le_set_scan_parameters(sock)
    File “/home/pi/blescan.py”, line 107, in hci_le_set_scan_parameters
    old_filter = sock.getsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, 14)
    _bluetooth.error: (9, ‘Bad file descriptor’)
    root@raspberrypi:/home/pi# python testblescan.py

    ble thread started
    Traceback (most recent call last):
    File “testblescan.py”, line 19, in
    blescan.hci_le_set_scan_parameters(sock)
    File “/home/pi/blescan.py”, line 107, in hci_le_set_scan_parameters
    old_filter = sock.getsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, 14)
    _bluetooth.error: (9, ‘Bad file descriptor’)

    could you please how to fix?

    • Look at the processes running “ps -xaf” and see if there is a hung process running left over from the previous run. If so, kill it by doing “sudo kill -9 processid”

      John

  21. Hi, John!

    Could you please share iBeacon INTEL EDISON Scanner in Python?
    you know, this code can’t used for intel-edison …

    thanks very much!

  22. Hi, John!

    Could you please modify your blescan.py, let it go run on Intel edison?
    I am happy to see it ..

    BTW: I just know that not support the bluetooth._bluetooth as bluez library in Edison.

  23. Hi, John!

    Now, I want to implement iBeacon Edison Scanner in Python, I have investigated few days, but I have no idea how to implement… for blescan.py, I don’t know how to modify so that it can be run in Edison….

    So if you can and willing ,,,could you please tell me some infomation or tips to help me?

    Thanks very much !

  24. Hello all, can someone post the code of blescan.py with timeout modification? I try to do the same as joefly, but no success.

    Thanks in advance!

8 Trackbacks / Pingbacks

  1. BeaconAir Lives! The Control Panel - SwitchDoc Labs
  2. BeaconAir Portable Pi - SwitchDoc Labs
  3. BeaconAir On Raspberry Pi / iBeacons - SwitchDoc Labs
  4. iBeacons (Good and Bad) Review and BeaconAir - SwitchDoc Labs
  5. Read temperature from Estimote BLE beacon without API | Anastacia
  6. BeaconAir - Reading IBeacons on your Raspberry Pi - SwitchDoc Labs
  7. raspberry pi 에서 iBeacon 찾기 관련 글 | 토니네@제주온라인
  8. Tracking de iBeacon sur NodeJS avec RPi | Encausse.net

Comments are closed.