Saturday, May 16, 2015

Installing Mosquitto for Use with ESP8266


I am working on a home automation project which required I installed Mosquitto, an open source MQTT broker, on my Raspberry Pi. Installation went smoothly, so a few minutes after first hearing about Mosquitto it was ready to be used on my RPi.

Next, I tested it by subscribing to topics and publishing messages from different SSH sessions, all without a problem.


When I configured my ESP8266 to communicate with this Mosquitto broker, it could not connect to it. Interestingly, my ESP8266 could successfully communicate a test broker on the internet at This was really weird, as usually stuff works locally and migrating to the internet things tend to break, not the other way around.

Looking through the logs I found the following errors:
May 12 12:01:47 dev mosquitto[2316]: New connection from
May 12 12:01:47 dev mosquitto[2316]: Invalid protocol "MQTT" in CONNECT from


A quick research on the internet revealed that I am not the only one with this problem, and that the root of the problem is that the version of Mosquitto that's in the debian wheezy repositories is not compatible with the version the ESP8266 uses.

The following steps need to be taken to correct the problem (taken from ):

wget sudo apt-key add mosquitto-repo.gpg.key

cd /etc/apt/sources.list.d/
sudo wget
sudo apt-get update
To display what version of Mosquitto is installed you can use the following:
sudo apt-cache search mosquitto
As soon as I restarted mosquitto the ESP8266 could connect to it with no problem.

Now the logs contain much friendlier messages:
May 12 19:05:37 dev mosquitto[3315]: New connection from on port 1883.
May 12 19:05:37 dev mosquitto[3315]: New client connected from as viktak (c1, k60).