Zephyr OS on ESP32
As mentioned in the description, all three modules of the M5Stack are ESP32s. I already had my Zephyr toolchain set up for ARM, but I had never used Zephyr on an ESP32 before. I found this Youtube channel very helpful:
TIP: If you write your Zephyr code outside the usual zephyr folder, do not forget to source the zephyr-env.sh file before building the project!
$ cd MY_PROJECT_FOLDER
$ source ../../zephyrproject/zephyr/zephyr-env.sh
$ west build -b esp32
As mentioned in the description, I want everything to be available remotely. But to flash Zephyr OS, I would need the toolchain on the Raspberry Pi. The Raspi runs Raspberry Pi OS. I learned from the internet that it is not easy/possible to set up the Zephyr OS toolchain for this operating system. It is recommended to use Ubuntu on the Raspi for this use case. Unfortunately, I had already set up my Raspi as an edge router for OpenThread with the Raspberry Pi OS and did not want to do that again. So I found a Linux tool called usbip. With this tool it is possible to mount a USB port over the network. Everything I need to do is written here: https://developer.ridgerun.com/wiki/index.php/How_to_setup_and_use_USB/IP