I really dislike the decision to make it part of the Play API (as opposed to standard Android), as it ends up not being really open after all.
I wish they would also document their packet format. At least they write that they support parallel operation as Eddystone + iBeacon [1], which means that they probably use the BLE "advertisement" frame for the iBeacon and the BLE "scan response" for the Eddystone data. With both frames limited to 29 bytes, there is not much space to toy around.
[0] http://developer.radiusnetworks.com/2015/07/14/introducing-e...
[1] http://altbeacon.github.io/android-beacon-library/eddystone-...
> I really dislike the decision to make it part of the Play API (as opposed to standard Android), as it ends up not being really open after all.
doesn't really make sense. How do you open source storing data associated with a beacon in the cloud?
The beacon is dumb so it's the client program that associates the broadcast with some action. The only way to open source that is to document the format of the beacon broadcast and release tools to let anyone receive them and parse them, after which any action can be taken. Which is exactly what was open sourced.
The Play Services support seems to just be that you don't have to do it yourself if you don't want to on Android™ devices, because play services already has support. If they really want this to take off in iOS apps, though, the only real way they can help developers out is by releasing source directly, I believe (the git repo includes an example iOS app[1] but I haven't looked at it yet)
[1] https://github.com/google/eddystone/tree/master/tools/ios-ed...
https://github.com/google/eddystone/blob/master/protocol-spe...
I love this release Google needed to take a direction there are so many use cases for this sort of micro proximity I cannot wait to see what folks can do without freaking people out over privacy..
This is a killer. This isn't really open source at all [0]. Google controls the eco-system, and has most of the other vendors at its mercy (like how they flip search algorithms, give Google products a prominent listing in the search page, blacklist developers/websites etc). More than Search, its the mobile OS and API monopoly that Google is trying to build that's going to hurt even more.
I work on AOSP, and I think it is ridiculous that Google owns so much of the eco-system [1] and continues to get praised for being "open" as well; very much like how this article seems to be praising them now.
Besides, whatever happened to proposing to a central body and getting stuff standardized (I get that its political and slow, and no ones like slow)? Google works with W3C to get stuff in the HTTP standard [2], with ECMA too [3], but seems to have problem engaging standards body for other things where it has a near monopoly. Not long after Chrome has taken over a large market share, Google would start treating W3C the same, if it hasn't doing been that already [4].
[0] http://techcrunch.com/2009/12/22/google-open-when-convenient...
[1] http://arstechnica.com/gadgets/2013/10/googles-iron-grip-on-...
[2] http://www.tomsguide.com/us/google-spdy-http-internet-w3c,ne...
[3] https://brendaneich.com/2015/06/from-asm-js-to-webassembly/
[4] http://www.neowin.net/news/microsofts-pointer-events-becomes...
/rant /offtopic
They own so much of the ecosystem because they produce 99% of the code. It continues to amaze me how ungrateful people are to Google and their AOSP project considering they're the ones spending millions on R&D each year, yet that still isn't enough for the vocal pro RMS minority.
If you worked with AOSP, you'd rather be more frustrated than grateful. Google is getting a lot of the bugs fixed for free! And its model has none of the downsides. Mind you, Google doesn't develop AOSP in the open. It releases source drops every other month or so, I think. There's a rumour that their internal branch and one that's open sourced isn't the same. If you'd recall, Google refused to release code for Android for Tablets (honeycomb) at all. So that's there too.
In contrast, Apple's BLE implementation is robust and works well for since the iPhone 4S, and reliably on all the newer platforms
I'm currently working on my 3rd Android-BLE project and it's incredible how bad those APIs (and of course the vendor's implementations) are. An inconsistent pile of .. well, nothing nice. I don't get why they have no interest in fixing that..
Just like we don't trust Apple to build cloud services that don't suck, we don't trust Google to build a consistent hardware/OS experience across Android. This is stuff that is not sexy, but it has to be done, and it's exactly what you expect to be done by a company that doesn't have 30+ years in building their own hardware + OS.
Damnit Google! Naming things after light-houses is our "thing"![1][2][3][4] :-)
All joking aside this sounds like a pretty cool project. And anything that helps keep as much IoT infrastructure open-source as possible, is a Good Thing in our book. I'm actually really hoping this catches on and displaces iBeacon as much as possible.
[1]: https://github.com/fogbeam/Quoddy/
[2]: https://github.com/fogbeam/Neddick/
In your 'travels', have you come across the need to integrate your services with the TechnologyOne line of products?
Information insight is a problem the company I work for struggles with immensely.
In particular most BLE implementations like CoreBluetooth and bluez have a lot of caching and assume that a device's broadcast & advertisement data rarely changes. This causes a ton of trouble when you put frequently changing data in broadcast packets since you can easily get stale or cached data instead of the most recent broadcast. I'd love to know if the Eddystone developers ran into similar issues with their telemetry packets and had any workarounds.
> Duplicate advertising reports are not required to be sent to the Host. A duplicate advertising report is an advertising report for the same device address while the Link Layer stays in the Scanning State. The advertising data may change; advertising data or scan response data is not considered significant when determining duplicate advertising reports.
Advertising really is designed to advertise the presence of a device. It isn't for putting data in - for that you should connect to the device.
If advertising isn't for putting data then arguably iBeacon, URI Beacon, Eddystone, etc. go against the spirit of the BLE spec.
Really glad to see this! Hopefully soon I'll be able to buy dozens of these on the cheap for a serious project.
Feel free to hit me with beacon questions, I've got a bunch of varieties sitting on my desk right now.
Plenty of other companies EOL products.
Edit: Coincidentally: https://news.ycombinator.com/item?id=9888387
Eddystone isn't alone; there's AltBeacon, which is also an 'open' alternative: http://altbeacon.org/ Though it looks like they might be 'merging' with Eddystone.
AltBeacon was born out of Apple giving Radius Networks a cease & desist about a year ago for reverse-engineering the iBeacon protocol and distributing an open-source Android toolkit (with paid enhancements) for iBeacons: http://beekn.net/2014/07/ibeacon-for-android/
The Android iBeacon code used to be on Github but is no longer there. IMO the core "infringement" (if there really is any) is about 10-20 lines of Java that unpacks an iBeacon (major, minor, uuid) from a byte buffer and another bit of Java that aims to map RSSI to Apple's simple model for estimating iBeacon distances. The library did wrap the functionality in a nice background-threaded interface, and their API is distinct from Apple's. On the iPhone, there's a BLE daemon that powers iBeacon and is rather crashy (at least as of iOS8). The Radius Networks solution was clearly distinct. The story would be a textbook example of Apple's legal department hurting open innovation except for the detail that Radius Networks was offering a paid developer product atop the open source offering. (But I doubt they were making much money from it).
There are a lot of problems with iBeacon technology:
* A lot of people have bluetooth off. The surveys out there have a lot of variance, and you typically have a 50/50 chance that a user with a very modern smartphone will have BLE enabled.
* Droid battery usage isn't too bad, but Apple's solution has a distinct advantage because the BLE daemon powering the feature can interop more closely with iOS and eat less CPU. It's really hard to get a consistent experience on both platforms.
* To do anything productive with the iBeacon (major, minor, UUID), you probably want to ping a webservice, which will be hard unless you have free wifi or you've made fancy deals with carriers (or Apple). And if there's wifi, you might as well just try to use that as a beacon (ala PayPal's product).
* You probably /dont/ want to have iBeacons trigger any sort of immediate advert or notification unless the user has previously opted in to the service. A lot of users are starting to not grant notification and other privs by default. Most users also do NOT like background location stuff. There are definitely user segments that differ, but you'll likely need to do a great deal of customer research to validate using iBeacon. If your app is payments, there's already NFC. If your app is marketing, you might get higher engagement with Augmented Reality or something tied to some other location service (ala Amex & 4sq).