I have followed the board integration instructions for RPi 3 found here, except that I am using a Compute Module 3+. I was able to convert the stock Raspbian Stretch Lite 2019-04-08 image to support Mender, using the mender-convert tool as described (though curiously I had to explicitly set the “–storage-total-size-mb 7400” parameter before it would fit in the 8GB eMMC). With this converted image flashed to the CM3+, and the CM3+ connected to my custom PoE carrier board, the board boots successfully however it is not connecting to my network via Ethernet. If I use the stock Raspbian image without converting for Mender, it works and connects fine.
I see in the “Known Issues” section how “Devicetree is not updated”, and other forum posts like this one where it seems the root issue may be related to U-Boot doing some of its own pin muxing instead of honoring the .dtb as supplied in the image.
As we use a custom carrier board, there are various tweaks that we have made and need regarding pin muxing. Is there any simple way to use the mender-convert tool while maintaining our customized pin muxing? Or is our only option to set up a Yocto environment, attempt to modify the U-Boot files to avoid undesired muxing, and build the image that way?
I am new to Yocto and U-Boot, so that seems a bit daunting. Any tips or guidance would be much appreciated.
In the case of stock Raspbian, without Mender, how do you provide updated DTBs? I know Raspbian makes heavy use of config.txt and DTB overlays and I suspect that can be made to work with mender-convert although you may need to do some of the setup manually on the board during first boot.
The new iteration of mender-convert allows you to add custom hooks to modify the created images so it’s possible that may allow you to add your customizations during image creation. And if you are not using the new version of mender-convert, I strongly urge you to do so as the old one is not being actively maintained.
To answer your question, I have made a customized Device Tree source (.dts file, non-customized sample found here) with desired pin muxing settings, which is then compiled into a .dtb following the RPi instructions here.
The instructions in the Mender RPi board integration guide pointed me to v1.2.1 of mender-convert, but okay thank you for the link and I will soon test with the new iteration recommended there. Where can I find information on how I might use these custom hooks?
We are in the processing of updating the docs for the new iteration of mender-convert. You can take a look here for a couple of examples,
You would have a similar problem in Yocto with this, and you can provide a custom U-Boot binary in the new mender-convert as well.
Unfortunately this is just how the Raspberry Pi works, and as they are not using U-Boot in “stock” images they do not care if they break/conflict in functionality so it is up to the community/users to sort out the problems.
There are some interesting discussions going on regarding this topic, and the possibility of supporting Raspberry Pi together with Mender and other similar workflows that require boot loader integration without U-Boot is currently investigated.
You can read more here:
Please join the discussion if you have any feedback