Configuring the Radio
The DNT900 radio module is highly configurable. Configurations can be made in a number of areas, including:
- RF channel access methods (CSMA, TDMA, polling),
- network topographies (point-to-point, point-to-multipoint, peer-to-peer, tree-routing),
- RF power levels (1–1000 mW) and transmission rates (38.4–500 kb/s),
- sleep modes, and
- I/O configuration.
It is advisable to thoroughly acquaint yourself with the DNT900 product manual. This will help you to choose the most suitable design for your radio network.
As described in the product manual, several banks of registers are used to configure the operation of the radio module. Accessing these registers require a special protocol mode be used, instead of the usual transparent mode. In this mode, specially formatted packets of characters are sent to the radio. Instead of being transmitted, the data in these packets instructs the radio to retrieve or change register values. Sending a special sequence of characters switches the radio from transparent to protocol mode.
It is possible to manually or programmatically construct the necessary command packets for the settings you need to change. For simple, one-time configuration, this may be sufficient. However it becomes tiresome for sustained use and experimentation with the radio. A better solution is available, in the form of driver which allows you to change radio settings in a more approachable manner.
DNT900 Line Discipline
The DNT900 driver is technically a line discipline: a layer of code which sits between the serial driver and the end-user of the serial port. In this case, the line discipline translates data into protocol mode packets on behalf of the user. Radio configuration registers are exposed as attribute files in the sysfs filesystem. As an example of usage of a sysfs attribute, the following command sequence reads then modifies the
TxPower register of the radio with MAC address
Comprehensive documentation for the DNT900 line discipline is available on GitHub.
It is worthwhile noting that the DNT900 line discipline implements a virtual TTY for each remote radio on the network. This is particularly useful when you are using multiple remotes (in a point-to-multipoint or tree-routing network). It allows you to transmit data to individual radios without resorting to protocol mode commands.
Also noteworthy is the ability to change registers of remote radios, not just the radio attached to the Raspberry Pi you are using. In many cases, this lets you make changes without needing physical access to the remote radio.
Installing the Software
The DNT900 line discipline is provided by the rpi900 package, and this is the recommended way of getting the software. The package also adds a service file to attach the line discipline automatically at startup.
To begin, setup the package repository, if you haven’t yet done so:
Next, build and install each of the required packages:
A configuration file at
/etc/rpi900.conf specifies the serial speed used to connect the DNT900 and defaults to 9600 bits/second. (Follow these instructions to change the serial speed.)
From the next reboot, the line discipline will load automatically. For example:
If your radio is linked to other radios, list their TTYs:
With the line discipline set up and the DNT900 registers accessible, this is a good time to properly configure your radio network.
Some basic registers which will require attention include
Choice of channel access mode is particularly important. For point-to-point or point-to-multipoint networks, TDMA Fixed Slots mode is recommended, with
MaxSlots set to the number of remotes. CSMA mode may be a better choice if you have many remotes which aren’t generally competing for bandwidth. Avoid TDMA Dynamic Slots mode when using the DNT900 line discipline.
If you intend to run the radios as a tree routing system (using one or more radios as repeaters/routers), CSMA mode is needed, and the
TreeRoutingSysID registers require attention.
If you are concerned with throughput, spend some time with section 2.11 of the DNT900 manual, where throughput is discussed. Murata also provides a Windows throughput calculator which lets you observe the effect of different values for
BaseSlotSize on base and remote throughputs. Optimising these values is worthwhile if you wish to achieve the highest possible bandwidth for your application.