mesh networking?

Posted on
  • Does the puck support mesh networking over Bluetooth?

  • Not 'standard' BLE meshing, no - although you can still create your own mesh network using BLE advertising if you wanted to.

    Until recently I'm pretty sure there wasn't any standard form of meshing, which makes it basically useless (sure, your Pucks can mesh, but if they won't talk to your phone or PC...). I think that may have changed now though.

    It's still potentially a big tricky as meshing will probably hurt battery life quite a lot.

  • I forgot about the battery life :-(

  • I'll have to look into it at some point - assuming it is supported by Nordic's softdevice it could definitely be added, but would possibly have to be a separate firmware.

    But until it's supported by routers or will work with existing Bluetooth LE devices like phones and PCs, there's going to be an extremely limited market for it, and it's definitely not a priority for me...

    Although obviously that doesn't stop anyone from playing around and implementing it themselves, or if it's needed for a business I'm open to consultancy work around it.

  • Hi Gordon, there are Firmware Updates including mesh functionality from Nordic. Maybe the firmware for the pucks could also be updated for BLE 5 mesh?

  • Do you mean this?­Bluetooth-low-energy/nRF5-SDK-for-Mesh

    It's still an Alpha release - and I'm wary of putting too much effort into targeting those. In the past, it's been very difficult to change code written for one Nordic release for another because what's in the example applications seems to change a lot and the changes aren't easy to follow when you've integrated it into your code - so I'd rather wait for something more stable.

    The required softdevice is the one Puck.js uses, so it would be possible to compile a firmware - however as far as I can tell it's not a small change at all... It basically involves throwing away all Espruino's existing Bluetooth LE code and starting from scratch.

    Also, as I said above - until some other device supports mesh, I think it's of limited use. You program Puck.js wirelessly - so if the only other device that can talk to your Puck.js is another Puck, it makes it quite difficult unless you're willing to physically solder a USB-TTL converter to your Puck, which I doubt most people will bother with.

  • Hi yes, we have the new BLE5 Pre Eval Kit from Nordic and will start first testing with Mesh in 1-2 weeks. If you like i can keep you updated.

    I think there is a hell of opportunities with BLE Mesh. And if the pucks would fit into a heterogen mesh topology the use cases for them will increase.

  • There's no reason why the Pucks wouldn't work, but I do wonder what the impact on battery usage will be - I guess we'll see.

    The private key for the Puck's firmware updates is in the repo, so once you're set up building code for Nordic it'd be trivial to copy the key over and then build some of Nordic's examples to work on Puck.js

  • Hi!
    This topic seems rather old now, and Bluetooth stack has somehow evolved. BLE mesh is being used more and more. It seems that the mesh is offered by Nordic within the softdevices. Is it planned to support BLE mesh within Espruino (NRF based platforms) in a near future or still no interest in going in that direction?

  • I'm still kind of interested, but a few things still put me off:

    • You can still use normal BLE devices as edge devices on a Bluetooth Mesh - so you should be able to use Espruinos with meshing just fine right now.
    • Non-edge BLE Mesh nodes that actually do meshing have to have the radio receiving all the time (drawing around 12mA I think), which means realistically they cannot be battery powered (Pixl.js is probably the only Espruino device it makes sense for, and maybe the MDBT42 breakout)
    • The mesh protocol itself is really geared towards stuff like lights and light switches - it's not that suitable for sending serial data over, so you're not going to be able to program your Espruino devices over mesh - you'd just be able to define endpoints on a device that you could set a value on.
    • Not that many people have asked for mesh, and I think pretty much everyone that wanted it went off the idea when they realised that mesh nodes can't be battery powered

    So I'd definitely be interested in having it available if someone wanted to do the work on it (and I'm happy to help out with any queries), but right now it's not such high priority for me to spend time doing the port for.

    OpenThread seems like it would actually be perfect, but unfortunately it's only for the nRF52840 so none of the existing Espruino devices would work with it.

  • OK, thanks for your feedback.
    I didn't realize that a BLE mesh relay had to be always on. I tried to look for the Bluetooth SIG roadmap of the mesh feature but it seems not to be published. I hope they will improve the mesh mechanisms in order to support routing packet in low power mode (bluetooth seems to have good capabilities in term of node synchronization , however..)
    I'll try to use advertising instead. Again, thanks for your feedback.

  • Yeah, it's a pain. It feels like it wouldn't have been the end of the world for them to do something just a tiny bit more complex and make Bluetooth Mesh really amazing, but it's really just a dumb implementation of meshing (using flooding). I think they had a very specific use case in mind (Bluetooth LE lighting) and just designed it for that.

    Noah at Baronbrew did something really cool for their Espruino-based repeater though:

    Basically a device listens for advertisements and then 'syncs' with the beacon, so it's only listening for a short period of time. You can't make it too small as some randomisation is built into the BLE spec, but you can still save a lot of power that way.

    I had plans for a module that did it for you for multiple beacons, but haven't got around to finishing that yet.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview

mesh networking?

Posted by Avatar for d0773d @d0773d