1 unstable release

0.4.0 Jan 14, 2021
0.3.2 Jan 14, 2021
0.1.0 Jan 14, 2021

#12 in #lora


964 lines

Drogue IoT RAK811

crates.io docs.rs Matrix

A network driver for a RAK811 attached via a UART.

Currently requires the RAK811 to be flashed with a 2.x version of the AT firmware.

At first, the UART must be configured and handed to the driver. The uart must implement the embedded_hal::serial traits.


let (uarte_tx, uarte_rx) = uarte
    .split(ctx.resources.tx_buf, ctx.resources.rx_buf)

let driver = rak811::Rak811Driver::new(

In order to connect to the gateway, the LoRa node needs to be configured with the following:

  • Frequency band - This depends on where you live.
  • Mode of operation - This can either be LoRa P2P which allows the node to send and receive data directly from another LoRa node, or LoRaWAN which connects the node to a gateway.

The driver can be used to configure the properties in this way:


In addition, the following settings from the TTN console must be set:

  • Device EUI
  • Application EUI
  • Application Key
driver.set_device_eui(&[0x00, 0xBB, 0x7C, 0x95, 0xAD, 0xB5, 0x30, 0xB9]).unwrap();
driver.set_app_eui(&[0x70, 0xB3, 0xD5, 0x7E, 0xD0, 0x03, 0xB1, 0x84])

// Secret generated by network provider
driver .set_app_key(&[0x00]).unwrap();

To join the network and send packets:


// Port number can be between 1 and 255
driver.send(rak811::QoS::Confirmed, 1, b"hello!").unwrap();


~33K SLoC