Posted on


Welcome to the 53rd issue of TMPDIR, a weekly newsletter 📰 covering Embedded Linux, IoT systems, and technology in general. Please pass this on to anyone else you think might be interested. Suggestions and feedback are welcome at ✉️

Subscribe Here

Thanks for reading!

Khem and Cliff

Quote for the week

The key to performance is elegance, not battalions of special cases. –-Jon Bentley and Doug McIlroy


Yoe Updater on iMX8 platforms

NXP iMX and iMX8 in particular is one of the best-supported SOC families in Yoe distro. Recently, we have added support to the Yoe updater as well to support MX8 platforms, beginning with VAR-SOM-MX8. It can be easily configured to update either eMMC or SD card based upon the need to use either of them as default boot media for system. Updater also has an installed which can partition the eMMC into BOOT/ROOT/DATA partitioning scheme and provision initial factory image. The factory image yoe-installer-image can be built and the resulting wic image flashed into SD card which is used to provision the eMMC storage media. Once provisioned, normal OTA functionality is available where it can update the system while keeping /data parition intact. It can use updater artifacts from /data parition which is primarily used for network-based updaters (FOTA) or from physical media e.g. USB stick or SD card formatted with VFAT or any other file systems readable by Linux. The Yoe updater can also install/update default recovery images in eMMC hardware partitions mmcblk0boot0 and mmcblk0boot1 if needed; however, that is disabled by default.

Yocto switch to using DT_RUNPATH

While this might look like a one-liner, this is a significant change in toolchain defaults. The search order for libraries is such that first DT_RPATH is searched and then LD_LIBRARY_PATH and finally it looks at DT_RUNPATH. With this change, the toolchain will emit DT_RUNPATH whenever it was emitting DT_RPATH, making it harder for malicious shared libraries to inject themselves. This, however, could also impact some assumptions in applications if they rely upon DT_RPATHs priority, therefore it will be good to check that in your applications with the upcoming 4.2 Yocto release where this change will be available. If reproducible builds are important to you then you might need to regenerate the shared state cache.


Work continues with Shelly Device support and reworking of the Serial MCU high-rate data.

We also switched to golangci-lint for checking/linting in SIOT. This tool is a wrapper around many of the available code checkers for Go and provides a convenient way to run the most useful ones in one easy tool. The tooling for Go is very good.


CANable CAN adapters

While the original CANable device is no longer available, there are numerous clones available from China. I purchased two of them and they seem to work and may be a good option for doing CAN development with Linux. Simple IoT already has support for watching a CAN bus and capturing data in InfluxDB to graph in Grafana -- it is a quick way to get CAN data into graphs during development.


Thoughts, feedback? Let us know: ✉️

Join our 💬 Discourse forum to discuss these or new topics. Find past issues of TMPDIR 📰 here. Listen to previous podcasts at 🎙