Tune parameters in OpenWSN

There are lots of parameter defined in OpenWSN source code to be tuned for specific network deployment. This page lists those parameters and explain how those parameter influence the behaviors of OpenWSN network.


  • EBPERIOD. The interval of two EBs to be sent. It influences the time of a mote for  joinning a network. The smaller EBPERIOD is, the faster mote joins a network. Unit: mili-seconds.
  • MAXKAPERIOD. The mote sends a KeepAlive packet if it doesn't get synchronized within KAPERIOD. Bydefault, KaPeriod is set to MAXKAPERIOD. The period can be controlled by adaptive sync component. KeepAlive packet must be sent before the mote gets desynchronized. For general crystals with +/- 30ppm drift, MAXKAPERIOD needs to be set less than 33 seconds to meet 1 milisecond GuardTime. Unit: slots
  • DESYNCTIMEOUT. The timeout to mark the mote to "desynchronized" if it doesn't got synchronized within DESYNCTIMEOUT. This parameter needs to be set a little larger than MAXPAERIOD. Unit: slots


  • BADNEIGHBORMAXRSSI. A RSSI threshold to choose mark a neighbor as stable. If a neighbor has RSSI higher than this threshold, then this neighbor is a penitential stable neighbor. Unit: dbm.
  • GOODNEIGHBORMINRSSI. A RSSI threshold to choose mark a neighbor as unstable. If a neighbor has RSSI lower than this threhold, then this neighbor is a suspicious  unstable neighbor. Unit: dbm.
  • SWITCHSTABILITYTHRESHOLD. If a neighbor has higher RSSI than BADNEIGHBORMAXRSSI or lower RSSI then GOODNEIGHBORMINRSSI for SWITCHSTABILITYTHRESHOLD times, then the neighbor is marked as stable or unstable. Unit: times.
  • DEFAULTLINKCOST. The default link cost (Estimated transmission Counts, ETX) if there is no one successfully transmission to a neighbor happens yet. This parameter indicates the default link quality. However, it's hard to know the real link quality until sending a mount of packet to the neighbor. It may be a good idea to set the default link cost depending on the RSSI. Unit: ETX. 


  • SCHEDULE_MINIMAL_6TISCH_ACTIVE_CELLS. The number of shared slots at initial. This parameter needs to be tuned depending on the collision situation on shared slots. E.g. if a mote has lots of neighbor, then there will be more packet sending on the shared slots, including the sixtop packet for reserving more dedicated slots. The number of shared slots should be increased to light the collision. Unit: slots.
  • NUMSERIALRX. Number of slots used for receiving command/data from serial port. Usually, 3 serial Rx slots is enough. Unit: slots.
  • NUMSLOTSOFF. Number of available buffer entries. Each entries can be used for storing one slot information. 
  • MAXACTIVESLOTS. The sum of above three parameters. This parameter needs to be smaller than slotframe length, or there will be no information printed out through serial port.


  • SIX2SIX_TIMEOUT_MS. The max duration for completing a sixtop transaction. Once the timeout reached, sixtop will reset it state and able to start an another sixtop transcation. Unit: mili-seconds


  • TIMER_DIO_TIMEOUT. The interval of two DIO packes. This parameter influence the time that neighbors get their rank. After getting neighbors rank, the mote is able to select its parent. and reserve slots by calling sixtop. Unit: mili-seconds.
  • TIMER_DAO_TIMEOUT. The interval of two DAO packes. Unit: mili-seconds