MQTT-SN RSMB Broker Overview,Install and Configuration

The RSMB MQTT-SN broker written by Ian Craggs of IBM isn’t currently being actively developed, but it is still invaluable for anyone wanting to get experience using MQTT-SN.


The RSMB broker functions both as a MQTT-SN broker and also as an MQTT broker allowing messages between MQTT-SN clients and  MQTT clients, as shown in the diagram below:


An MQTT-SN client can publish on a topic that can be received by an MQTT-SN client or an MQTT client subscribed to that topic.

Likewise; An MQTT client can publish on a topic that can be received by an MQTT-SN client or an MQTT client subscribed to that topic.

The demo python scripts in the downloads illustrate this.

Installing the Broker

You can download the RSMB ( Really small message broker here . Unzip it.

When you unzip it you should see a directory structure like the one below:


Open the RSMB folder and go to the src folder:


In the src folder you will find the source files (.c and .h files), it also contains a Makefile that contains instructions to build the broker.

Navigate to this directory and run make to compile the broker.

Note: On Linux the compiler will already be installed and so this will work. However on Windows you will need the necessary software installed. I have only done this on Linux.

You get two brokers called broker and broker_mqtts.

The broker program only supports MQTT over TCP.

The broker_mqtts is the one you need to run MQTT-SN.

I copied the broker files into a directory of their own and created a configuration file called text.txt.

In the configuration file I turned on detailed logging and set the broker port for 1884 just to test it. here is the file.


To run it at a command prompt type.

./broker_mqtts test.txt


If you want the broker to advertise the Gateway address then use this config file.

trace_output protocol

# normal MQTT listener
listener 1883 INADDR_ANY
# MQTT-S listener
listener 1885 INADDR_ANY mqtts
# optional multicast groups to listen on
#This will advertise the Gateway address to clients
# optional advertise packets parameters: address, interval, gateway_id
advertise 30 33

Notice that in the config file above MQTT uses the standard port 1883:

listener 1883 INADDR_ANY

and MQTT-SN uses port 1885.

listener 1885 INADDR_ANY mqtts

The line:

advertise 30 33

sets port 1885 as the multicast port and it is the same as the UDP port. However they can be different.

You will need to configure the MQTT-SN client to listen on port 1885 and Multicast IP of to receive the multicast messages.

This is what the output of the Python client shows when gateway is found


64 bit Processors

If you want to run it on a 64 bit processor it may fail with a strange warning that it can’t find the file.

On Ubuntu you need to do the following:


Screen shot above taken from this forum post.

RSMB Notes

From the documentation and my testing The broker does not support the following:

  • QOS 2
  • searchGW
  • clean sessions

RSMB Alternatives

There aren’t any free MQTT-SN brokers as far as I am aware.There is a Gateway available and released by the Eclipse foundation.

Video – RSMB and Python MQTT-SN Client Demo

Common Questions and Answers

Q -Can I use the MQTT-SN broker as a MQTT broker?

A – Yes provided it is enabled in the config file

Q -Does a client use the same UDP port for sending MQTT-SN messages as used by the Advertisement Multicast messages.

A – It depends on the configuration file>they can be the same or Different.

Q- Do I need to use the advertise feature?

A- No it is optional


There is a very useful getttingstarted.htm file in the doc folder.

Related Tutorials :

Please rate? And use Comments to let me know more


  1. Hey Steve,
    Can you please help me with Eclipse Paho MQTTSN Gateway connection to AWS Iot Core. Have you tried it ?
    I wanted the steps to try the above mentioned setup.

    1. Hi
      No I haven’t tried it. First I would try using a client to connect to AWS as the gateway is effectively a client. Once the client connects ok then configure the Gateway

      1. I have tested out the client connection with AWS Iot and it works fine. Actually thing is i am getting Gateway not found error when i enable the Authentication in mqttsn_gateway.conf file.

        I have added my mqttsn client name in the clients file But i am not clear about any other parameters. Like which IP address is mentioned in below configuration. When i connect with a local broker it connects with always and i am not sure about the Port as well. Which port they are talking about ? My UDP port setting is 47193 , while MQTT connects to 1883 port.

        For Eg:
        #below is mine

        Please help. I am not getting assistance from anywhere

      2. I have tested MQTT connection with AWS Iot but thing is when i enable the client authentication in mqttsn-gateway config file my mqttsn clients re unable to find gateway. I have added my mqttsn client in client list but i dont know exactly what are the parameters i need to set.
        Like there is client name, IP Address and Port Name. I don’t know what IP address they are talking about and also port name. Client name i can imagine is of mqttsn client ID.

        My all clients are connecting to mqtt broker with the same Ip address and the port for Mosquitto is 1883 while port for UDP is 47193.

        Can you please help me with the configurations in the clients.config file

        1. Can you give me the client details you use to cnnnect an MQTT client to AWS.
          Also do you have an mqtt broker that you can use to work with the Gateway. It is best to set your local mqtt broker with more or less the same config as aws and get it working locally and then move to AWS.
          I assume AWS wants authentication and SSL?

          1. Hello,
            I have tested with local broker like mosquitto running on my PC or Eclipse Public broker but without authentication.

            “I assume AWS wants authentication and SSL?”
            Yes for the same we have to pass the RootCA certificates and private key files to it in paho-mqttsn-gateway.conf file.

            What exactly you mean by client details. In my program i have client name set to “P-l496G-CELL01” with topic name snode/test. I don’t know which IP address and port the clients list reffer to in paho-mqttsn-gateway-clients file. In my openthread devices my mqttsn devices are sending data on default UDP port 47193.

  2. Hello Steve
    I want to know if you can help me, Is there a way that RSMB sends a willtopicreq and will topicmessage to the mqttsn client? I would like to use those messages with my client.

  3. Hello
    I´d like to know if there´s a way rsmb sends pingreq to the mqttsn client, I know that it´s no neccesary due to the connection runs over udp but I want to analyse the management traffic so I need RSMB or the mqttsn python client sens pinreq each 30 secs, I saw that there´s a keepalive parameter but I dont jnow how to use it, can you help me?

  4. Hello Steve,

    Let’s say the MQTT-SN works is configured as a bridge towards an MQTT broker, and the later has been setup with an authentication plugin (e.g. mqtt-go-auth connected to a Postgres database). What configuration is needed in MQTT-SN to forward the mqtt client username/password to the MQTT broker through the MQTT-SN gateway? Is this supported?

    1. Mqtt-sn doesn’t use username/password. I’m not sure if the paho gateway will do client mapping to insert it as I haven’t looked at it in that detail. I don’t think RSMB does.
      Sorry I can’t be more help.

  5. Great thank you so much, I tried all the examples that you provided in the video and all of them are working. The only thing is when I try to use the multicasting IP I can’t connect to
    So I ran the broker, pub-sub-mqtt-mqttsn-1, and pub-sub-mqttsn-mqtt on the same machine using the host IP and 1885 port, and everything was working fine.
    When I tried to run a broker, 1 mqtt-client, and 2 MQTT-SN clients. I started the Broker and start publishing from the mqtt-client and I did connect to the broker, but when I ran the MQTT-SN using the m_group which is the IP and m_port 1885 it is not connecting to the gateway somehow.

    If you can help me or give me advice that would be great. I’m new to MQTT and RSMB so I’m just getting to understand these stuff and how it works.

    1. the m_port and group is only used for gateway discovery not for sending and receiving messages.
      you should set the port and broker address to what is configured on the RSMB

  6. Hello Steve,

    thanks for the explanation and the video. I just have one problem in which when I start the broker and start advertising. I run the multi-scan script and I’m not getting anything. I did follow your video and I realized that in the config file for the RSMB broker you have the listener on 1885 and advertising the gateway using 30 33 in the video. but in the provided config it is port 1885. I tried both and still not working.

    1. Hi
      I will take a look but will probably take a few days. Use the ask steve page and send me the config file you are using.

    2. If you look at the broker console you should see the broker advertising. I set min to advertise every 30 secs using
      advertise 30 33
      have you configured this on the broker this is my complete config file

      trace_output protocol

      # normal MQTT listener
      listener 1886 INADDR_ANY
      # MQTT-S listener
      listener 1885 INADDR_ANY mqtts
      # optional multicast groups to listen on
      #This will advertise the Gateway address to clients
      optional advertise packets parameters: address, interval, gateway_id
      advertise 30 33

Leave a Reply to Nikhil Cancel reply

Your email address will not be published. Required fields are marked *