Wednesday, June 15, 2016

Rhizome over ad-hoc UHF is FINALLY working


 As many of you will already know, we have been working away in the background on getting the RFD900 radios working in something that approximates ad-hoc mode on Wi-Fi, but using the ISM 915 MHz band, so that we can have Mesh Extenders communicate over long distance, without any limit on the number of Mesh Extenders, and without them having to be in specially paired groups.

FINALLY at 4am this morning I fixed the remaining bugs that were stopping this from working in most cases.  There are still a few little niggly issues of course, but it is now working.

Together with some work-experience students, we have tested the units in and around the lab today.

First, we set one unit up on the bench in our lab on the fourth floor, together with an Android tablet running Serval Mesh that could receive MeshMS messages, and therefore cause automatic delivery acknowledgements to be pushed back to the message sender.


We then went for a wander with another Mesh Extender and a phone, and sent messages to the tablet, and waited for delivery confirmation to come through.  This typically took a couple of minutes, although in many cases the MeshMS text message itself is delivered in about 15 seconds.

Here we are one floor down from the lab:


And then two floors down.  Note that our building has 1/2 metre thick concrete floor decks.


And yet another floor down:

 And a bit closer in on the same floor:


And then down on the first floor -- with three thick floor decks between us and the Mesh Extender.


We also went outside on the ground floor under the metal main assembly building roof, and saw radio packets, and the units attempting to transfer messages, but no messages came through.  We think that the bundle synchronisation process needs a bit of help when faced with >50% packet loss.  This should be quite possible to achieve.

Then we went to a local supermarket to buy lunch, and took the Mesh Extenders with us.  One stayed in the car in the underground car park, and the other we took with us into the shopping centre.  Here is our Mesh Extender in its special shopping centre disguise vehicle:



This was quite nice, with one of our work experience students sending text messages down to the car park, and receiving delivery confirmations in the supermarket.

So, in other words, it lives!  Hopefully we will have more updates soon, as we start testing the resulting capabilities more thoroughly and in different contexts, particularly outdoors.

Wednesday, June 1, 2016

Mesh Extenders for the Pacific

Recently we were named a winner in the Pacific Humanitarian Challenge, receiving a grant from the Australian Department of Foreign Affairs to undertake a pilot of the Serval Mesh in one or more Pacific nations.

We're now starting to get underway in our planning for this, in particular, how we can make the Mesh Extender easily manufacturable in reasonable quantities (we need about 100 for the pilot), and as robust and reliable as possible, without making it too expensive.  Of course, we know that at these small quantities, the cost will still be much higher than we would like.

We have begun talking with our good friends at RFDesign about making an all-in-one Mesh Extender PCB, including both RFD900X + Atheros 9k based embedded Linux computer.  I think we have some good ideas about how we can go about that within the budget constraints of this project.  In many ways, this is the most important part, because it simply isn't realistic to hand-build 100+ Mesh Extenders the way that we have been prototyping them so far.

A picture of an injection moulding machine (Cjp24 CC-BY-SA 3.0), because this post was too boring with just text.

One of the really interesting ideas we are exploring is including a solar and battery controller in the unit, so that you can just plug in a solar panel, car battery or other supply to run the unit, in addition to the normal 5V USB supply.  You would then also be able to connect two LiFePO4 cells, that the unit would charge from the supply, and use to operate when there is no power supply available.  We have yet to work out what impact this will have on the cost, although at this stage, the RFD900 radio is by far the single most expensive component, so we are hopeful that we can make it fit.

I have also been introduced to the world of injection moulding through a helpful colleague here in the department.  Together with a local injection moulding company, we think we have found a way to get full-custom polycarbonate injection-moulded cases designed and manufactured at a relatively affordable price.  We are currently aiming for IP65 or IP66 rating for the case, so that it can be safely used in dusty outback conditions, as well as in tropical maritime climates.

However, injection moulding is not cheap, so "relatively affordable" is still code for "will stretch our budget to the very limit".  Our current estimate is that it will take at least AUD$30,000 for us to get the tools designed, built, and then squeeze out several hundred complete cases.  Given that it was previously looking like $50,000 to just get the tools made, and then only being able to do large production runs, this is a huge step forward. Also, with the injection moulding company being within easy riding distance, and being able to do very small production runs, and pick them up in beloved my cargo bike, this all spells good news for the Mesh Extender being able to be turned into a real, purchasable product, with some very nice characteristics and capabilities.

There are some other hurdles to jump through before we would be able to offer it as a complete product, including regulatory certification from the FCC and our Australian equivalent, and ideally, also EC approval from Europe.  Given the current shenanigans with the FCC, TP-LINK and locking down router firmware to prevent undesired 3rd-party access, we are thinking very carefully about how we can avoid that whole problem, but still have common hardware between the totally incompatible US/Australia/New Zealand/Canada versus Europe radio bands that we need to use for the UHF radio.

One approach that we are thinking about is having the power/data cable that feeds the Mesh Extender be wired differently for each regulatory domain.  That way, the firmware and everything can be completely common, and the radio firmware can simply probe the cable to work out which bands it should be operating on.  Given that owners of Mesh Extenders are likely in many cases to be internationally mobile, especially when trying to respond to disaster events, we think that this is a sensible approach.

We would also likely have another cable wiring that would tell the unit to accept unsigned firmware, so that people who wish to replace the firmware and experiment can do so, but there would be no risk of someone accidentally flashing the unit with firmware that would make it operate outside of authorised bands.

We understand that this whole area is a rather sensitive one for all of us in the open-source community, so we invite your feedback on whether what we are proposing in this regard, and whether there might be any better ways of doing it, without risking the FCC of EC folks refusing certification.

Also, I'll be picking the brains of some other folks who have created open-source consumer products to try to find out about and avoid any likely hazards along the way.  If you have any wisdom or experience to offer here, it would also be very welcome.

Paul.

Serval Mesh 0.93 Released

After much too long, the next official release of the Serval Mesh app for Android has been released on Google Play.

This includes many, many bug fixes incorporated during that time, and also the following major improvements:
  • Greatly reduced power usage, particularly when no peers are present. In previous versions of the software, a CPU lock would be held whenever the software was enabled and connected to a viable Wi-Fi network. This would completely prevent the CPU from suspending, draining the battery in a matter of hours. In this release, Android alarms are used to wake up the CPU, holding a CPU lock for only a short time. While there are still improvements to be made in this area, the software may be able to remain enabled and connected to a Wi-Fi network without significantly impacting battery life.
  • Bluetooth has been added as a usable network transport. The addition of bluetooth support has the potential to greatly simplify the process of discovering and connecting to other phones.
  • Better support for more recent versions of Android. Android 5.0 requires that native binaries are compiled in a way that isn't supported on version before 4.1. So we must now include 2 sets of compiled binaries.
  • Improved user feedback while networks are turning on and off.

You can read full release notes at:

 https://github.com/servalproject/batphone/blob/master/CURRENT-RELEASE.md,

and get the app itself at:

 https://play.google.com/store/apps/details?id=org.servalproject

Thursday, May 12, 2016

The Australian Prime Minister used Serval this morning

Today we had a surprise visit from our Prime Minister to the University to make some announcements of local importance in the lead up to the election.  He also made a brief tour of a couple of research labs, including ours, at the suggestion of the University.  The end result: The Prime Minister and I had a short exchange using MeshMS on the Serval app:



And the result:


Not how I was expecting this morning to be, but very nice all the same.

Friday, May 6, 2016

Pacific Pilot is Go!

[Deutsch unten]

The announcement was made today by the Australian Minister for Foreign Affairs and Trade, that together with our long-time partners in New Zealand Red Cross, and our collaborators in Germany at TU-Darmstadt and Philips University in Marburg, our submission was one of the five grand winners of the challenge, and we now have funding and mandate to undertake a pilot in one or more pacific nations over the coming year:

http://foreignminister.gov.au/releases/Pages/2016/jb_mr_160506d.aspx?w=tb1CaGpkPX%2FlS0K%2Bg9ZKEg%3D%3D

Together with our existing grants from Radio Free Asia, and the NLnet Foundation, this means we have a busy few months ahead as we implement a number of technical and user-interface improvements, so that we are ready for the pilot, beginning most probably in the new year.

This is needless to say a very existing development, and it would not have been possible for us to reach this point without the continuing and generous support of so many people and organisations.

Und auf Deutsch...

Endlich war es angekündigt bei unsere Ministerin des Außenpolitik und Handel, dass zusammen mit NZ Rote Kreuz und TU-Darmstadt und Philips Universität Marburg, wir sind einer der fünf Gewinner des „Pacific Humanitarian Challenge.“ Das heißt, dass wir haben Geld für eine Pilotstudie in ein Pazifik Land.  Wahrscheinlich wird das früh 2017 sein.  Die Pressemitteilung ist hier:

http://foreignminister.gov.au/releases/Pages/2016/jb_mr_160506d.aspx?w=tb1CaGpkPX%2FlS0K%2Bg9ZKEg%3D%3D

Wir haben schon Zuschüsse von NLnet Foundation und Radio Free Asia.  Ingesamt heißt das, dass wir haben dieses Jahr viel zu machen! Wir werden beide Technische und UI Verbesserungen und auch mehr Arbeit auf unsere iOS Fassung.

Natürlich haben wir hier nicht allein bekommen. Sondern sind wir hier nur durch die Hilfe von viele Leute und Organisationen.

Sunday, April 3, 2016

Making self-updating APKs

Serval Mesh is designed to operate without infrastructure.  This makes over-the-air updates for it "interesting," because we cannot rely on the internet and Google Play being available, either because the network is broken, or because Naughty People are preventing others from accessing Google Play or installing Serval Mesh specifically.

We have had a solution for this for a while, where we attach the signed manifest to the end of the Serval Mesh APK, so that it can certify to other phones running Serval Mesh, that it is indeed a legitimate update.  That way, the APK can distribute via Rhizome, and each phone receiving it will announce "update available," which then allows the update to be install.

The trouble is, that sometime before Android 5.1.1, Google have stopped allowing APKs to have random stuff attached to the end, presumably for security reasons. After all, we have been bending the ZIP file specification to do this.  Also, we can't just include the manifest inside the APK, because that would change the signature required for the manifest, and so it would never be valid.

Fortunately, ZIP files support the inclusion of comments, which are not included in the Jar signing signature -- so we can put our manifest in as a comment, without it upsetting the signature.  That is, the APK will install on a phone, whether or not the manifest is in there.  Once installed, we can then pull out the manifest, so that the APK can be inserted into Rhizome with the manifest that certifies it is a genuine update of Serval Mesh.

In short, we now have a nicer solution than we had before, and which follows the ZIP file standard completely. Needless to say, we are very happy about this.

Sunday, March 20, 2016

... and Serval is a first-round winner of the Pacific Humanitarian Challenge

See: http://pacifichumanitarianchallenge.org/announcing-top-10-first-round-winners

This is a challenge posed by AusAID, the Australian International Aid agency to help Pacific Nations following disaster and emergency situations.

Together with NZ Red Cross our proposal looks at making Serval operationally ready and in use in Pacific Nations to help people stay connected when cyclones and other disaster strikes.