Facebook using MQTT

Something else that has happened recently is the announcement by Facebook that they're using MQTT in their new Facebook Messenger app They've posted some details in a facebook-engineering blogpost and cite the low bandwidth and battery usage as important considerations.

This is very exciting as an application that is potentially huge and very user oriented (rather than "internet of things" oriented), but the really exciting bit is if you use an iPhone under Settings and Licenses (apparently it's quite hard to find):

Thanks to Michael Rowe for getting me the screenshot and Andy Piper for pestering Michael on my behalf.

You should note that if you're in the UK, the Facebook Messenger app isn't currently available.

Mosquitto on OpenWrt

Thanks to work done by Karl Palsson, Mosquitto is now available on OpenWrt, the embedded Linux distribution frequently used on wireless routers. This is exciting if you want a really low power way of running an MQTT broker. It also includes the mosquitto clients and development libraries.

It's only in the source tree at the moment, so if you want to install it I believe you'll have to download everything and compile it yourself.


Karl tells me that if you're running a binary snapshot from trunk then you can do:

opkg update
opkg install mosquitto mosquitto-client libmosquitto

You only need to build it yourself if you're running a stable binary.

Version 0.12 released

This is an update with some features and bug fixes. The most significant change is configuration reloading support. This will be improved to include bridge reloading in the future.

  • Reload (most) configuration on SIGHUP.
  • Memory tracking is no longer compiled in the client library.
  • Add --help option to mosquitto to display usage.
  • Add --id-prefix option to clients to allow easier use with brokers that are using the clientid_prefix option.
  • Fix compilation on QNX.
  • Add -P as a synonym argument for --pw in the clients.
  • Fix python MosquittoMessage payload parameter. This is now returned as a pointer to an array of c_uint8 values so binary data is handled correctly. If a string is needed, use msg.payload_str
  • Fix memory leaks on client authentication.
  • If password_file is not defined then clients can now connect even if they¬† use a username/password.
  • Add mosquitto_reconnect() to the client library.
  • Add option for compiling with liberal protocol compliance support (enabled by default).
  • Fix problems with clients reconnecting and old messages remaining in the message store.
  • Display both ip and client id in the log message when a client connects.
  • Change the socket connection message to make it more obvious that it is just a socket connection being made (bug #801135).
  • Fix retained message delivery where a subscription contains a +.
  • Be more lenient when reloading persistent database to reduce errors with empty retained messages.

Debian and Ubuntu packaging

I'm very pleased to say that Mosquitto is very nearly packaged in Debian and Ubuntu. In truth, 0.10 is packaged and uploaded for both Debian testing (Wheezy) and Ubuntu Oneiric Ocelot, but there is a problem with the config that means it won't restart properly. That is fixed with the 0.11.3 upload which is now in unstable. That means after 10 days and it will be in Debian testing for all to use. I've also submitted a sync request with Ubuntu (bug #808530) to ensure it makes it across. I'll still be maintaining the Launchpad PPA for older versions of Ubuntu.

Thanks to the Debian developer Michael Tautschnig for reviewing my package and doing the upload.

Mosquitto on QNX

Andrea asked a question on launchpad about problems compiling Mosquitto on QNX. I've now managed to get an evaluation version of QNX and fix the compilation problems. These fixes will be in 0.12, but you can get them in the current snapshot if it's urgent. I've also put compiled binaries in the downloads directory but they are completely untested, so use at your own risk.

Although I've provided these binaries I don't intend to keep doing so for each version of Mosquitto. I will endeavour to fix any other problems that arise in the future though.

Version 0.11.3 released

This is a bugfix release.

  • Don't complain and quit if persistence_file option is given (bug #802423).
  • Initialise listeners correctly when clients with duplicate client ids connect. Bug #801678.
  • Memory tracking is now disabled for Symbian builds due to lack of malloc.h.
  • Fix memory tracking compilation for kFreeBSD.
  • Python callbacks can now be used with class member functions.
  • Fix persistent database writing of client message chunks which caused errors when restoring (bug #798164)

Thanks to Neil Bothwick, Yuvraaj Kelkar, Craig Hollabaugh, Karl Palsson and Andy Piper.