Thread development recommendations from Allie Clifford.
Newer users
- Dev boards
-- For FTDs/MTDs:
---- ESP32-C6-DevKitC // comes in two flavors, 8 MB flash and 4 MB flash.
The 8MB flash version is 10$ here https://www.adafruit.com/product/5672
I have only played with the 8MB board so cant speak to the 4MB flavor (I also cant seem to find a link for one that is reasonably priced). Very easy to get going with the esp-matter SDK and also
---- ESP32-H2-DevKitM-1 - 4 MB Flash // This can be programmed as an FTD/MTD or RCP, is 10$ here https://www.adafruit.com/product/5715
-- For BRs:
--- ESP THREAD BR-ZIGBEE GW // this has an H2 and an S3 chip, its $10 here https://www.digikey.com/en/products/detail/espressif-systems/ESP%2520THREAD%2520BR-ZIGBEE%2520GW/21292142
You can also get a daughter card to include sub ethernet for an extra 8$ I was only able to find it on sale on amazon here https://www.amazon.com/dp/B0C89J43LN?psc=1&ref=ppx_yo2ov_dt_b_product_details
This was also very easy to get up and running immediately out of the box, highly recommend
- Tooling/building/docs etc:
All espressif dev boards use the esp-idf: https://github.com/espressif/esp-idf
Its a very nice tool, plus one or two other repos depending on application layer.
-- For Matter+Thread:
https://github.com/espressif/esp-matter
-- For just Thread:
BR SDK: https://github.com/espressif/esp-thread-br
General thread libs: https://github.com/espressif/esp-thread-lib
-- There is tons and tons of ESP support in the Rust embedded ecosystem too, so if you want to encourage attendees to consider integrating Rust into their projects (which I think you should!) you can skip using the esp-idf and use cargo for configuring/building/flashing (it is possible to use esp-idf as outlined here: https://github.com/espressif/rust-esp32-example but they recommend cargo now). Here are some links for anyone interested in using rust with esp boards:
https://github.com/esp-rs
https://github.com/esp-rs/esp-openthread (only supports MTDs right now but still this is awesome!!!)
https://github.com/esp-rs/esp-hal
https://github.com/esp-rs/esp-idf-hal
esp-rs can be used with the embassy framework (which is a really cool project) that could easily be used to implement SSH functionality on top of: https://github.com/embassy-rs/embassy (or just generally could be useful to give attendees some ideas of what they can do with an esp board + rust) which has an async network stack already available / ready for use https://docs.embassy.dev/embassy-net/
And also a nice "getting started with no_std and embedded rust with ESP32" (although this is for the ESP32-C3 not the C6) : https://github.com/esp-rs/no_std-training
For more advanced users:
- Silabs dev boards
There are a number of silabs dev boards with thread/zigbee support but probably the easiest/quickest way to get started with these more advanced options is to use the one that is used in thread cert, because the fw images are already built & available and the test harness guide has all the steps needed and all the sw dependencies defined that are needed to program these dongles as either FTD/MTD or as an RCP dongle+RPI. The one cert uses is the Thunderboard Sense 2, BRD4166A REV C (also listed in cert harness catalogue as XG12-DK4166C / SLTB004A/C) . There's also an openthread codelab in which any of the MG12, MG13, or MG21 series can be used (here https://openthread.io/codelabs/silabs-openthread-hardware#1). A seasoned person familiar with simplicity studio can probably also easily work with the MG24 or MG27 dev boards also.
While these are very nice dev boards in general they are also the pricey-est of all the ones I have worked with. And simplicity studio can be its own learning curve so its lowest on my list of recs.
- Nordic dev boards
The nordic dongle that I have experience with / that is used in thread cert is the nRF52840-Dongle. Its very straightforward to use/program, its also very cheap and easy to get in bulk. Thread cert also has all the needed steps/sw dependencies and the fw images to program these as stand alone FTD/MTDs or as an RCP with an RPI. And openthread has this nice how-to as well: https://openthread.io/codelabs/openthread-hardware#2 which also has links to tools needed to program these dongles
The embassy project I linked above also can be used with nordic boards, theres a 15.4 radio driver implemented here https://github.com/embassy-rs/embassy/blob/main/embassy-nrf/src/radio/ieee802154.rs plus loads of examples: https://github.com/embassy-rs/embassy/tree/main/examples/nrf52840/src/bin
More Rust plugs:
Both espressif and nordic dev boards have very robust support in Rust, both with std and no_std support. If you are hoping folks will work on building SSH functionality, there are some really nice minimal (no_std) Rust implementations of SSH for example this excellent one that is both no_std and uses async i/o: https://github.com/TomCrypto/zssh
And in general, embedded dev in Rust is the best!