Bluetooth 4.0 multiple UUIDs? - bluetooth-lowenergy

So we are working with Bluetooth 4.0 right now and are orientating the capabilities.
We are developing apps for iOS and Android.
Now while developing for iOS we descovered the service class uuid[b]s[/b]
This presumes we should be able to have multiple UUID's.
The question is:
Is het possible to have multiple UUID's broadcasting in the advertisement package? And how does such a package look like?

It is possible but the available space is limited.
If you are writing firmware for a device you'll probably want to look at some fairly low level documentation. The Core Bluetooth v4.1 spec, downloadable here https://www.bluetooth.org/en-us/specification/adopted-specifications, describes the format of the advertising packet in Vol.3, Part C, Section 11. You'll also need the supplement to understand the various data formats.

Yeah it's possible.
is it a RFCOmm or BLE communitcation?

Related

Light Weight Bluetooth LE library in C

I have been looking around for a simple Bluetooth LE library in C that allows me to scan for BLE devices, connect and receive periodic notifications from a given service UUID from the BLE device. Something that directly works with Bluetooth sockets and libbluetooth(created from BlueZ) and not using DBUS. Pairing and security functionality are not required.
Came across https://github.com/labapart/gattlib. Appears to be good but uses dbus API and has dependency on libdbus, glib, so on. To use this library, there is an additional 5MB of libraries required, hence decided to go without dbus. We do not have space on our device to support 5MB of bluetooth stack on compressed rootfs image. The total size of our rootfs image is 9 MB. The bluetooth stack with dbus itself appears to be more than 50% of our rootfs size.
There is also - https://github.com/edrosten/libblepp which is in c++ and doesn't use dbus. This would require to write a C wrapper to be used in C programs and also overhead of C++ constructs such as compiler generated copy constructors, assignment operators and so on. Also issues in cross-compiling.
Target board is Xilinx Zynq running Linux and the build system is buildroot.
Please suggest.
Thanks
Found a solution, it may be of help for someone...
After searching and going through Linux Conference and IOT conference videos on youtube, figured that Bluez has light weight executables and the code is present in src/shared folder of Bluez. For btgattclient.c produces "gatt-client" executable when compiled which does the same functionality as "gatttool" and is not dependant on bluetoothd or dbus. The only dependency it has is on glib-2.0.
This is helpful if we need lightweight tools when the OS has no bluetoothd running or has no dbus library installed.
Thanks
If you want to use BlueZ for BLE communication, the only supported API is the D-Bus API. Everything else is either discouraged or deprecated.
If you want something more minimal and/or not use BlueZ at all, you can use the HCI_CHANNEL_USER feature in Linux to get raw access to the HCI connection in the kernel. With this you can use any Bluetooth Host stack software or write your own minimal if you only require an extremely small subset.
Questions asking for software library recommendations are not allowed on Stack Overflow due to the possibility for opinion-based results though.

Blackberry 10 network connectivity check

I am looking for a snip of code in Blackberry 10 that my device is connected with n/w or not.
The official way is the Wi-Fi Service API, if you're familiar with C you should be good to go, look for any BPS tutorial/code online.
The unofficial and easier way is my class WifiWatcher from TheUnexposedAPIs, this project is a collection of easy-to-implement C++ classes that makes available all kind of internal objects from PPS (not to be confused with BPS).
You'll find an example of how to use it in QML in the project.

ZigBee layers in Building Automation system

I'm currently working on a school project about building automation systems, and havent found a clean answer for a thing i've been searching for all day.
Is it possible to use ZigBee in all application layers in a building automation system ? Like in the 1) Managment layer , 2) Automation layer and ofcourse 3) the field layer.
Or do you need to have some other solution in the higher layers, like KNX og BACnet?
I am not sure what you mean by the field layer you mentioned. AFAIK the Building Automation profile does not suppor field upgrade (is this what you mean by field layer?). But you could use the OTA (Over The Air) update feature in Home Automation. Note that 'off the shelf' Building Automation device may not support this.
The building automation profile in ZigBee (pre 3.0) is similar to Home Automation but adds extra commitioning features, and other messages. The profile layer can be considered as the 'Data Plain' layer in ZigBee, maybe what you refer to as the 'Automation Layer'? It defines the device types and messages it supports; like a light or switch that supports input or output on/off message. This is spread over several spec's such as the ZCL Spec and Profile Spec (such as Buildeing Automation Spec). ZCL defines the message and the profile spec defines the devices and the messages they support.
The management layer in ZigBee is referred to as ZDO (ZigBee Device Object).
Finally you mention other standards like BACnet. Building Automation device support 'Protocol Tunnel' messages (defined in ZCL) which can be used to send BACnet messages over. But I think this is more for integrating into legacy systems.

Any good resources on implementing Firmware OTA over BLE?

I'd love to get a good overview of strategies applied to execute firmware updates over-the-air (FOTA / OTA via BLE) via Bluetooth Low Energy 4.1 and beyond.
The assumption being that the Client is an Android and / or iOS device.
Any hints and help are greatly appreciated.
Do you have a specific module/chip in mind for the peripheral device? Some vendors already provide a FOTA (Firmware Over the Air) service that is supported by their SDK or APIs on the embedded device.
Otherwise, if the vendor does not support it or you would like to implement your own, then you could follow the guidelines and model your system after theirs.
Here are some links that may help you:
mbed FOTA service
Cypress FOTA upgrade guidelines
ST FOTA upgrade
Make sure your firmware file and update process are secure

Which Wi-Fi chips/modules support the 802.11s standard?

I'm very interested in the Mesh technology and the (new) IEEE Mesh standard 802.11s. I've looked for some Wi-Fi modules which support the standard but it's never mentioned, although the standard was published at the end of 2011.
I also have read about the open802.11s solution (http://open80211s.org/open80211s/), but there are also no Wi-Fi modules mentioned. So I have the following questions:
Does this mean that all Modules support it and you only have to get the correct driver (mac80211)?
I've read about the Linux Kernel which supports the 11s standard. Are there all parts implemented?
Checkout this page drivers for a list of drivers and whether or not they support mesh networking. You can find ath9k, b43, among others that support mesh - but Intel iwlwifi doesn't. From those drivers, you can find corresponding chipsets that are expected to work on that mode.
Note, however, mesh networking currently implemented in the kernel does not necessarily support all features found in the 802.11s standard (now part of 802.11-2012).

Resources