Windows 10 IoTCore, as implemented on the Raspberry Pi 2 (RPI2) initially came with no WiFi or Bluetooth (BT) connectivity. These were then added as USB dongles but with a limited listed of hardware that worked. RPI3 has built in WiFi and BT. What is the state of play with IoTCore connectivity with the RPI now? Are there any issues?
Bluetooth (BT) and WiFi work out of the box with the Raspberry Pi 3. No dongles needed. You can connect to a WiFi network using the Device Portal or through Bertha, the default IoTCore startup app. The relevant RPI3 specs are:
- BCM43438 wireless LAN and Bluetooth Low Energy (BLE) on board (ref: https://www.raspberrypi.org/products/raspberry-pi-3-model-b/)
The WiFi works quite seamlessly.
There are some issues you may need to be aware of with respect to the BT functionality.
- Classic BT
- BLE bandwidth
Classic BT is the pre BT 4 version of BT. With this specific BT hardware supported one or more BT profiles.such as
SPP is the Bluetooth Serial connectivity that I have discussed in detail in blog articles wrt IoTCore, RPI and Arduino Uno, including an app that exploits it.
BLE (Bluetooth Low Energy), BT versions 4+, are based upon the GATT profile. I have discussed this is detail in my other blog articles including an app to make use to the TI SensorTag.
Generally Bluetooth dongles support both Classic and BLE modes, being able to automatically switch their functionality as required. The RPI3 BT does not support Classic BT, (at least as implemented with IOTCore). To use SPP with the RPI3 you have to disable the inbuilt BT and and add a suitable BT dongle.
The BLE bandwidth issue is that as discovered by myself and others (see my SensorTag blog articles) is that the inbuilt BT hardware driver only supports low bandwidth, This is now acknowledged in recent IOTCore OS Release Notes. If, for example, the SensorTag app attempts to get sensor data continuously at a maximum rate, the data stream will eventually fail in a non deterministic manner. This issue does not exist with the Dragonboard where you can run the same app without failure. It has been stated that the relevant driver, as supplied by Broadcom is at fault and they have no intention to fix it. The solution is to disable the inbuilt BT driver and add a suitable BT dongle (also discussed in my blog articles). Yet to test on MinnowBoard Max.
So the upshot on two accounts is to disable the IoTCore BT driver and add a suitable (dual mode) BT dongle.
IoT Core Hardware Compatibility List (For Bluetooth look for CSR chipset)
As stated, the RPI2 does not have built in WiFi and BT so you need to add a suitable dongle.
The BT dongle would be the same as suggested by my blog articles for the RPI3.
I have tested the Official Raspberry Pi WiFi dongle and that works OK with the RPI2:
This has the BCM (Broadcom) chipset.
Hope this helps
One further issue I discussed in recent blogs is with respect to inbound and outbound Bluetooth paring. With inbound pairing, the pairing is initiated by the other device whereas outbound pairing is initiated by the device in question. This has an impact with Bluetooth Serial (SPP) in that with the desktop when the pairing is initiated from there, you can configure what serial port is used on the desktop. Previously, with IoT Core you only had the option of In Bound pairing and so had a problem with what serial port was being used. This issue became evident with the SurfPad project when you were using a RPI as the remote device. Upon discussion at the recent MVP Summit, I was told this was fixed in RS4, the upcoming new feature set of Windows 10 IoT Core. I have recently mounted OS build 17210.1 (an RS$ candidate) and there is now In bound and Out Bound BT paring.
Footnote: To pair a RPI with an Arduino device, which is an inbound pairing, (with a BT Shield that has a passkey) you can’t pair using Bertha as IOT Core doesn’t support Pop Ups. You do it via the device portal. Hint: The Arduino Shields typically have a passkey of 1234.