FTD (Full Thread Device) versus FED (Full End Device)

405 views
Skip to first unread message

Di Piazza Alain

unread,
Apr 10, 2017, 3:13:43 AM4/10/17
to openthread-users


I have some questions regarding the difference between FTD and FED.

By default, when the system is compiled in ‘FTD mode’, if I play the standard use case shown in the readme (panid 0x1234, ifconfig up, thread start) between two devices , the first one will become ‘Leader’ and the second one will become ‘Child’ and then ‘Router’.

1) If I want my second board to act as an ‘EndDevice, this ‘device’ should not go to the ‘router’ state but should stay ‘child’. (OK/KO)
(Note : How is configured  the time managing the transition child-> router?
otSetRouterSelectionJitter ?)


2) Even if I compile my code in FTD, it will always be possible to use my device as an FED (OK/KO).
(Note : I hope the response is OK, otherwise it means that I need to define my use case at compilation time !!)

3) Using simple ‘cli commands’, how can I have my first board becoming single ‘router’ or ‘leader’ and my second board acts as an ‘end device’ and not as a ‘router’ ?

4) Sleep mode on an End Device :
Once I have configured my device in FED, I will be able to put this device in sleep mode rather easily.
For example, we could have such a device being able to sleep all the time and to wake up only from time to time for a very short period (For example once every 5 seconds), to send some sensors data. In this case, when it will wake up, this device will also be able to catch any specific previous pending request coming from the router on which it is connected. (OK/KO) ?

5) Sleep mode on an Full Thread Device


If I use my device as an FTD and if I use it as a ‘router’ or a ‘leader’, it will be possible to put it in sleep mode only for very short period of time (for instance maximum 10ms every 1 seconds)


6) Apart from gaining ‘memory space’, what it the real added value for compiling OpenThread stack in FED mode ?

Thanks a lot.




Jonathan Hui

unread,
Apr 10, 2017, 1:46:00 PM4/10/17
to Di Piazza Alain, openthread-users
See responses below:

On Mon, Apr 10, 2017 at 12:13 AM, Di Piazza Alain <dipiaz...@gmail.com> wrote:


I have some questions regarding the difference between FTD and FED.

By default, when the system is compiled in ‘FTD mode’, if I play the standard use case shown in the readme (panid 0x1234, ifconfig up, thread start) between two devices , the first one will become ‘Leader’ and the second one will become ‘Child’ and then ‘Router’.

1) If I want my second board to act as an ‘EndDevice, this ‘device’ should not go to the ‘router’ state but should stay ‘child’. (OK/KO)
(Note : How is configured  the time managing the transition child-> router?
otSetRouterSelectionJitter ?)


You can configure whether or not to enable the Router Role on an FTD using the otThreadSetRouterRoleEnabled() API.

2) Even if I compile my code in FTD, it will always be possible to use my device as an FED (OK/KO).
(Note : I hope the response is OK, otherwise it means that I need to define my use case at compilation time !!)


Yes, see configuration API above.

3) Using simple ‘cli commands’, how can I have my first board becoming single ‘router’ or ‘leader’ and my second board acts as an ‘end device’ and not as a ‘router’ ?


See the routerrole CLI command.

4) Sleep mode on an End Device :
Once I have configured my device in FED, I will be able to put this device in sleep mode rather easily.
For example, we could have such a device being able to sleep all the time and to wake up only from time to time for a very short period (For example once every 5 seconds), to send some sensors data. In this case, when it will wake up, this device will also be able to catch any specific previous pending request coming from the router on which it is connected. (OK/KO) ?


To enter sleepy mode, you can clear the `rx-on-when-idle` flag using the otThreadSetLinkMode() API or the mode CLI command.
 

5) Sleep mode on an Full Thread Device


If I use my device as an FTD and if I use it as a ‘router’ or a ‘leader’, it will be possible to put it in sleep mode only for very short period of time (for instance maximum 10ms every 1 seconds)


Yes, see the commands above.  Note that the transitioning between rx-on-when-idle and rx-off-when-idle require communication with the parent.  For that reason, frequently switching between modes is not recommended.
 

6) Apart from gaining ‘memory space’, what it the real added value for compiling OpenThread stack in FED mode ?


Reduced code and memory requirements is the primary reason for only supporting Minimal Thread Device (MTD).  In OpenThread, Full Thread Device (FTD) configuration is capable of supporting all Thread roles (Leader, Router, Router-Capable End Device, Minimal End Device, Sleepy End Device).

Hope that helps.

--
Jonathan Hui

Reply all
Reply to author
Forward
0 new messages