There are 2 radio versions depending on the country selected:

  • XBee 900HP US

  • XBee 900HP BR

Due to the End of Life protocol declared by the manufacturer Digi, Libelium discontinued the 900HP radio for the AU version in May 2021.



Transmission powe





XBee 900HP US

902 – 928 MHz

24 dBm

-110 dBm


15.5 km


XBee 900HP BR

902 - 906.8 MHz

915.6 - 928 MHz

24 dBm

-110 dBm


15.5 km


* To determine your range, perform a range test under your operating conditions

Note: The XBee 900HP module is provided with 4.5 dBi antenna, which enables maximum range.

The frequency used is the 900 MHz band, using up to 64 software selectable channels. Channels are spaced 400 kHz apart. The transmission rate is 10 kbps. There are different versions of the XBee 900HP: USA & Canada and Brazil. More information can be obtained about the Certifications in Waspmote Technical Guide.

The different versions differ mainly in the available channels, which are hard-coded in the XBee. Be aware that it is not possible to change from one version to other with just a firmware change. According to the country where the user is located, a different version must be chosen.

To know what band is legal in your country, please check the ITU region map. Region 1 ISM free band is 868 MHz and Region 2 ISM free band is 900 MHz. You must also check the legal restrictions by region to use the proper configuration and channel. It is the responsibility of the users to know the allowed frequency band and channels in their country, and use them. Ignoring this, could lead to considerable penalties.

Libelium replaced the XBee 900 module with its natural evolution, the XBee 900HP, in October 2016. The XBee 900HP module is [not]{.underline} compatible with the former XBee 900 module. Among other differences, they use different baudrates so they cannot interoperate. The new XBee 900HP features a higher transmission power and a better sensitivity, so it can reach much longer ranges.

Due to the propagation characteristics of the 868/900 MHz band, the near field effect could make that 2 modules cannot communicate if they are placed very close (\< 1 m). We suggest to keep a minimum distance of 3 or 4 meters between modules.

It is not recommended to work without an antenna screwed to the module. The module could be damaged due to RF reflections.

Encryption is provided through the AES 128b algorithm. Specifically, through the type AES-CTR. In this case the Frame Counter field has a unique ID and encrypts all the information contained in the Payload field which is the place in the link layer frame where the data to be sent is stored.

The way in which the libraries have been developed for module programming means that encryption activation is as simple as running the initialization function and giving it a key to use in the encryption.


The classic topology for this type of network is star topology, as the nodes can establish point to point connections with brother nodes through the MAC address.

How to connect the module

This module can be connected to both SOCKET0 and SOCKET1 on the Waspmote board.

In order to connect the module to the SOCKET1, the user must use the Expansion Radio Board.

Expansion Radio Board (XBee 900HP)

The Expansion Board allows to connect 2 communication modules at the same time in the Waspmote sensor platform. This means a lot of different combinations are possible using any of the wireless radios available for Waspmote: 802.15.4, ZigBee 3, DigiMesh, 868 MHz, 900 MHz, LoRa, WiFi, GPRS, NB-IoT / Cat-M, 4G, Sigfox, LoRaWAN, Bluetooth Pro, Bluetooth Low Energy and RFID/NFC. Besides, the following Industrial Protocols modules are available: RS-485/Modbus and CAN Bus.

Some of the possible combinations are:

  • LoRaWAN - 4G

  • 802.15.4 - Sigfox

  • 868 MHz - RS-485

  • NB-IoT / Cat-M - WiFi

  • DigiMesh - 4G

  • NB-IoT / Cat-M - RFID/NFC

  • WiFi - 4G

  • CAN Bus - Bluetooth

  • etc

NB-IoT / Cat-M and 4G modules do not need the Expansion Board to be connected to Waspmote. They can be plugged directly in the socket1.

In the next photo you can see the sockets available along with the UART assigned. On one hand, SOCKET0 allows to plug any kind of radio module through the UART0. On the other hand, SOCKET1 permits to connect a radio module through the UART1.

The API provides a function called ON() in order to switch the XBee module on. This function supports a parameter which permits to select the SOCKET. It is possible to choose between SOCKET0 and SOCKET1.

Selecting SOCKET0 (both are valid):



Selecting SOCKET1:


In the case 2 XBee 900HP modules are needed (each one in each socket), it will be necessary to create a new object from WaspXBee900HP class. By default, there is already an object called xbee900HP normally used for regular SOCKET0.

In order to create a new object it is necessary to put the following declaration in your Waspmote code:

WaspXBee900HP xbee900HP_2 = WaspXBee900HP();

Finally, it is necessary to initialize both modules. For example, xbee900HP is initialized in SOCKET0 and xbee900HP_2 in SOCKET1 as follows:



The rest of the functions are used the same way as they are used with older API versions. In order to understand them we recommend to read this guide.

  • Avoid to use DIGITAL7 pin when working with Expansion Board. This pin is used for setting the XBee into sleep.

  • Avoid to use DIGITAL6 pin when working with Expansion Board. This pin is used as power supply for the Expansion Board.

  • Incompatibility with Sensor Boards:

    • Agriculture PRO v30: Incompatible with Watermark and solar radiation sensors

    • Events v30: Incompatible with interruption shift register

    • Smart Water v30: DIGITAL7 incompatible with conductivity sensor

    • Smart Water Ions v30: Incompatible with ADC conversion (sensors cannot be read if the Expansion Board is in use)

    • Gases PRO v30: Incompatible with SOCKET_2 and SOCKET_3

    • Cities PRO v30: Incompatible with SOCKET_3. I2C bus can be used. No gas sensor can be used.

Last updated