How do I use beacons with BeamWriter?

In this post we will walk you through the steps you need to take to get and assign Beacons to Rooms. Note that as of now, only Estimote iBeacons are supported.


  1. Start by ordering your beacons directly from Estimote ( Order standard beacons (not ‘stickers’).  Depending on the size of the room you want to put the beacon in and where in the room you can put it, you may need more than one beacon. The maximum range of the beacon can be found on Estimote’s web site, but is something like 80 yards / 70 meters. NB – make sure you use a real email address that you have access to when ordering. The email becomes you Estimote user name – and you will need it.

When you receive your beacons, you need to create an Estimote account using the same email address you used when ordering.

Once you have the beacons in hand and an account set up with Estimote, the beacons must be transferred to

  1. Log into your Estimote Account at
  2. Check the beacons you want to transfer.
  3. Make sure all of them have the Estimote default UUID (B9407F30-F5F8-466E-AFF9-25556B57FE6D)
  4. Click Transfer at the top of the screen
  5. Type the email address of the new owner – ‘’. Be careful when typing (copying recommended) the email address. If you make a mistake and there by accident is someone registered with the email you did type, you need to ask them to re-assign the beacon to you (see ‘Have beacons, but can’t access them?‘ ) or get Estimote’s help. Unfortunately we cannot do it.
Screen Shot 2016-08-20 at 10.09.14
The ‘Add New beacon’ button has lit up. This means that BeamWriter has detected beacons that are not yet claimed. Press the button to claim the beacons.
Screen Shot 2016-08-20 at 10.09.28
Unclaimed beacons are listed. You can claim a beacon and put it into the room by pressing the claim arrow. The binoculars indicate that the beacon is visible to the app.

The beacons have now been transferred and can be used in the app. You still have to claim them though. You do this by pressing Room and either creating a new Room or editing an existing. If you make sure the beacon is no more than half a metre away from your phone, the ‘Add new beacon’ button will light up after a little while. Once lit up – press it to see the new beacon(s), then press ‘claim’ on the beacons. They are now put into the room.

Screen Shot 2016-08-20 at 10.10.16
One beacon – ‘mint1’ is assigned to the Room ‘DemoRommet’. The app can see the beacon (binoculars are not crossed out). If you press the ‘Press to remove’ button, you will remove the beacon from this room and free it up to be re-assigned to another room.

You can later free the beacons up again. They remain your beacons and cannot be claimed by anyone else and you are free to assign them to a different room.

BeamWriter 4.0 – Lots of cool new stuff!

Rooms, Beacons and tailored advertising – version 4.0 makes BeamWriter more versatile than ever.35InchStartPageWithServices

Put a physical beacon in a lecture hall, meeting room or on your stand and let it beam your web site or engage your audience.beacon

Use your iPhone or iPad to set up and manage your Rooms and  Beams – and do your beaming.

AdvertisingTailor your Advertising Profile. Advertise your beams in a room you own or have access to, use your iPhone or iPad as a virtual beacon or use web-codes. Web codes allow your remote audience or listeners without iPhones, iPads or Androids to access your services by entering the code at

A key change is that beams now live for a predefined time and remain available even if you stop beaming from your phone. Unless you want to use it as a virtual beacon, you no longer need to tie up your phone beaming, but can use it for other stuff!

Watch this space over the coming days as we take you through the new features of BeamWriter 4.0.




Why we built BeamWriter

I give a lot of presentations. Before BeamWriter, involving the audience in impromptu polls, sharing additional information or getting questions from people online – or without having to pass a microphone around – could be anything from a hassle, to expensive to not possible.

BeamWriter was built to address this – make it super easy to involve the audience when giving a presentation or exhibiting at a trade show.

BeamWriter in action at the Telenor Top Management gathering in 2016. Questions from the audience are projected on the screen on the left.

Once installed on your iPhone or iPad, creating an account and starting beaming takes a few minutes at most.

BeamWriter screen with list of Beams
Your ‘Beams’. Icons allow you to project on a big screen, edit, clear, delete or delegate Beams. By tapping a beam or a Folder such as ‘Deep Learning’, the service is broadcast and visible to your audience.

Your audience don’t have to log in – they pick up your Beam automatically when the app is running.

BeamWriter picked up a Poll service
Telenor Research are beaming a vote (poll) service which has been picked up by our phone.

I now find that enriching my presentations and engaging my audience is easy enough that I don’t need an event team to support. I don’t need a bespoke polling solution or text-messaging solution for questions, and sharing a link to a copy of my presentation or collecting the email addresses of the audience, is feasible even when alone at a trade show.

Download 'How To' guide (2 downloads)

Check the BeamWriter Page for more!

Machine Learning at the edge – Training Neural Networks on the phone



Neural Network Training on handwritten characters
Training a neural network to recognise handwritten digits using SNNetwork.swift

You may not consider training your machine learning model on a mobile phone a very likely or viable approach. After all, a phone is a pretty limited computer, both in memory and processing capacity.

For some applications, where the size of say – a neural network – is limited, it could however, be extremely useful. Incremental improvements to a model that is specific to the individual user, could be made on the fly without incurring network overhead or the latency or cost from centralised processing. (The alternative would be to upload the data to the cloud, do the training there and re-download the trained model.)

To test this out we have implemented a classic neural network as a Swift class – SNNetwork.swift and powered it by our Matrix library (see this post). We have packaged SNNetwork with two other classes you will need – SMatrix.swift and MLGenerics.swift in a ‘try-it’ application; NNTester.

Please feel free to download and unzip NNTester. (58 downloads)


NNTester runs in Xcode on your Mac. It uses example data from MNIST for character recognition.


Each character is a 20 x 20 pixel matrix, unrolled into a 400 element vector where each pixel’s grayscale value is a Double. When you check out startTraining() in the MasterViewController class in NNTester, you will see that the neural network is created with a 400 (rather than 784 as in the illustration above) node input layer and a 10 node output layer.

Once trained, the neural network will take a 400 element input vector and produce a 10 element output, where the element with the highest value between 0 and 1 is interpreted as having the highest probability of being the input digit.

So if for instance, a handwritten digit is input as a 400 element pixel vector and the output vector is [0.01, 0.2, 0.05, 0.01, 0.005, 0.7, 0.003, 0.008, 0.004, 0.01], the element with the highest probability is the 6th, and the classifier would conclude that the input vector corresponds to a 6. Running a trained network in ‘feed-forward’ mode like this is done with a simple function call. If snnetwork is an instance of SNNetwork, then snnetwork.h(inputVector x : [Double]) -> [Double] will give you the ouput vector or ‘hypothesis’ given the x input vector.

Finally – don’t be confused by the fact that NNTester is a Mac application. By including SNNetwork.swift, SMatrix.swift and MLGenerics.swift in your iOS projects, you can start training or using pre-trained neural networks on the phone. SNNetwork contains code to save trained networks and read them in again, so you can also choose to train on the desktop and deploy the trained network to the phone.

The software is free for you to use as you please – we have released it under the GNU Lesser public license. If you want support from us – we are happy to provide that on commercial terms. Or if you would like to tell us how you have used the code, we would love to hear from you.  Get in touch on

Happy Coding!

Bjørn Taale