Search by Tags

Torizon Frequently Asked Questions

 
Applicable for

  1. Introduction
  2. Prerequisites
  3. Frequently Asked Questions
    1. About Torizon
      1. What is Torizon?
      2. Why should I use Torizon?
      3. Why should I use TorizonCore?
      4. What is the difference between Torizon and TorizonCore?
      5. Is TorizonCore Linux-based?
      6. What OS options do I have besides Torizon?
    2. IDE Integration
      1. What is the best development environment for Torizon?
      2. Where do I find more information about the Torizon Visual Studio Code support for Python?
    3. Containers
      1. Why Containers?
      2. Does the use of containers increases complexity and affects performance?
      3. What is the difference between a Docker image and container?
      4. I have a raw NAND SoM and my flash memory is full. How can I overcome it?
      5. How relevant is the processor's architecture in containers?
      6. Can I run 32-bit containers on 64-bit platforms?
    4. Pricing and Licenses
      1. How much does TorizonCore cost?
      2. What does it mean TorizonCore is Open Source Software (OSS)?
      3. What license does TorizonCore use?
    5. Yocto Project
      1. How does TorizonCore work with Yocto Project/OpenEmbedded BSP layers?
      2. Does TorizonCore replace Yocto Project/OpenEmbedded BSP layers?
      3. What are the compelling features of TorizonCore vs building your own Yocto Project/OpenEmbedded custom distribution?
    6. Linux Kernel
      1. What is DeviceTree?
      2. What does Mainline and Downstream kernel/drivers mean and how does this affect TorizonCore?
      3. What video driver is being used on SoMs supported by the mainline kernel?
    7. Graphical User Interface
      1. How does GUIs work on TorizonCore using containers?
    8. Hardware
      1. How do hardware interfaces such as video, GPIO, I2C, SPI, etc. work with TorizonCore using containers?
    9. Over-the-Air Updates
      1. What is OSTree?
      2. How does TorizonCore work with OTA?
    10. Known Issues
      1. After re-installing TorizonCore using the Toradex Easy Installer, the board does not boot. What can I do?
      2. How to fix apt-get not working because security certificates dates don’t match on Windows?
      3. Container not running: standardinitlinux.go:211: exec user process caused "exec format error"
Article updated at 06 Aug 2020
Subscribe for this article updates

Introduction

This article holds frequently asked questions (FAQ) about Torizon and TorizonCore.

Prerequisites

You are encouraged to search for your topic of interest in the Torizon related articles.

Frequently Asked Questions

Browse the sub-sections below after your topics of interest.

About Torizon

What is Torizon?

Torizon is an open-source software platform that simplifies the development and maintenance of embedded Linux software.

You can read a technical overview at TorizonCore Technical Overview.

Why should I use Torizon?

Torizon is a new Linux-based software platform that simplifies the process of developing and maintaining embedded software. It allows you to configure the system for your use case quickly and easily, so you can focus on application development instead of Linux builds.

Check out the Torizon page on the Toradex website to learn more.

Why should I use TorizonCore?

TorizonCore came out of a need to ease our customers into Embedded Linux, allowing them to focus on application development by using containers and shipping a binary operating system based on Yocto/OpenEmbedded which is completely open-source. We’re including ease-of-use technology such as Integrated Development Environment (IDE) support, allowing a customer to do development and debugging without leaving the comfort of their IDE.

You can learn more about the technical details on TorizonCore Technical Overview.

What is the difference between Torizon and TorizonCore?

  • Torizon is a platform and a brand name encompassed by the TorizonCore operating system and many other innovative projects.
  • TorizonCore is a distribution, sometimes referred to as an Operating System (OS), that is the foundation to support the Torizon platform and its ecosystem.

Here are some examples of offerings that are part of the Torizon ecosystem: - Torizon OTA: the project is currently under Toradex Labs, comprising a full CI/CD infrastructure, a cloud-hosted dashboard to expose features for our customers among other components, and relies on the native OTA support on the device provided by the TorizonCore OS. - Partner Demo Containers: container images that make it possible to use partner technologies easily on Torizon, running on TorizonCore. - Visual Studio Extension For Torizon: enables a developer-friendly migration path for Windows and Windows CE application developers. - Visual Studio Code Extension for Torizon: support one of the most popular IDEs of the moment. With a large ecosystem and several tools, this is a great way to get started for an awesome development experience.

Is TorizonCore Linux-based?

TorizonCore is 100% Linux-based, using Yocto Project/OpenEmbedded as a base, adding container support, an OTA update client, OSTree and several other key technologies.

What OS options do I have besides Torizon?

Refer to the Software page on our developer center.

IDE Integration

What is the best development environment for Torizon?

Torizon is focused on providing an experience to our customers they are used to and developing integration with IDE’s we all know and love. We’ve started with Visual Studio and Visual Studio Code and will be working on expanding support to all of the most popular use-cases. Please let us know your development workflow!

Where do I find more information about the Torizon Visual Studio Code support for Python?

Check out the Visual Studio Code Knowledge Base page.

Containers

Why Containers?

Containers allow you to focus on just building your application as quickly and efficiently as possible by utilizing 3rd party pre-built containers and not having to worry about incompatibilities with libraries on dependencies.

Does the use of containers increases complexity and affects performance?

Containers actually utilize user-mode virtualization to isolate processes but share the same kernel, allowing performance to match native applications. There is some storage/memory overhead, however, with some library duplication when using different versions.

What is the difference between a Docker image and container?

An image is a read-only, stateless template, whereas a container is a running instance of it. More than one container can be run from the same image. For comprehensive information, go through the Docker documentation. For instance, in the Docker overview, there is a section that defines what are images and containers.

I have a raw NAND SoM and my flash memory is full. How can I overcome it?

The full-featured image is rather large taking up most of the space on the raw NAND-based modules. As such it is not recommended to experiment with containers on these devices since there isn't much space for containers as is. In the future, we hope to slim down the footprint. Alternatively, the Balena based image is slimmer by about ~70MB, although fully unsupported by Toradex.

How relevant is the processor's architecture in containers?

Just like when building regular applications, a container built on an x86 machine will work only on x86 targets, the same is true for ARM and other computer architectures. Both images used in this lesson have been built for a wide variety of architectures, including ARM.

Note: There is also a distinction between ARMv7 (32 bit) and ARMv8 (64 bit)

Can I run 32-bit containers on 64-bit platforms?

Preliminary tests show that it's possible, though you're encouraged to use the 64-bit version whenever possible.

Pricing and Licenses

How much does TorizonCore cost?

TorizonCore is completely free to all of our customers and we encourage modifications by publishing all of our source code.

What does it mean TorizonCore is Open Source Software (OSS)?

All of the source code needed to build TorizonCore is publicly available and licensed under a free modifiable license. Some components such as GPU drivers may be binary only but this is outside of Toradex control. We strive to open source all components we can and will continue to support upstreaming our changes into mainline anytime we can.

You can find the source-code in our GitHub. In addition, comprehensive documentation about how to Build TorizonCore With Yocto and BSP efforts to mainline, among several other topics, can be found in our developer website.

What license does TorizonCore use?

TorizonCore is built from Yocto Project/OpenEmbedded and utilizes over 200 open source projects which all have licensing which fall under the Open Source Initiative guidelines. The only proprietary pieces we include are from the SoC vendor and actively work to find OSS alternatives.

Yocto Project

How does TorizonCore work with Yocto Project/OpenEmbedded BSP layers?

TorizonCore is built upon our foundational work that is done by our BSP team who handles the majority of our driver work. It means that TorizonCore is built on top of the Toradex BSP Layers and Reference Images for Yocto Project.

TorizonCore is focused on building ease of use and the best out of the box experience without requiring the customer to have extensive Yocto Project/OpenEmbedded knowledge.

Does TorizonCore replace Yocto Project/OpenEmbedded BSP layers?

TorizonCore is built on top of Yocto BSP layers, therefore it cannot work without the BSP layers. One of the great advantages is that you don't have to build and maintain it by yourself.

If you have strong Yocto Project/OpenEmbedded skills or fall into some corner-cases where customization at the OS level is inevitable (e.g. fast boot), then you must either: - Build your own customized version of TorizonCore, if you still want to benefit from its components and ecosystem. - Opt to go with the traditional Yocto approach to build your own Yocto image.

What are the compelling features of TorizonCore vs building your own Yocto Project/OpenEmbedded custom distribution?

In a nutshell, ultra-summarized sentence, TorizonCore’s focus is to not require the customer to have extensive Yocto Project/OpenEmbedded experience to build applications. Leveraging our container support and IDE integration, you can quickly go to market with your embedded solution.

If you deeply skilled with Yocto Project/OpenEmbedded and need to fully customize your OS experience, the value of TorizonCore is less of an impact. Often this happens for a corner-case not covered by TorizonCore, such as a fast-boot system or the use of a raw NAND-based SoM.

Linux Kernel

What is DeviceTree?

The primary purpose of Device Tree in Linux is to provide a way to describe non-discoverable hardware. TorizonCore utilizes Device Tree files to define a set of hardware and allows you to customize it to your exact specifications.

To learn more, read our article about Device Tree Overlays that focuses on TorizonCore.

What does Mainline and Downstream kernel/drivers mean and how does this affect TorizonCore?

In our context, in a very summarized way, Mainline is the tip of the Linux kernel maintained directly by Linus Torvalds. Downstream are modified releases of specific versions of the mainline maintained by someone else, usually hardware vendors.

We strive to be on the mainline whenever possible with TorizonCore. We work with our SoC vendors to open up as much source code as possible and upstream their drivers, removing as many proprietary drivers as possible - as you can glimpse on BSP efforts to mainline. Nevertheless, when it is not possible to follow the mainline for various reasons, we make sure that the downstream version offered by the SoC vendor works well on our SoMs. You can easily see it by looking at our Linux BSP releases and our commit history in our downstream Linux kernel.

What video driver is being used on SoMs supported by the mainline kernel?

In our i.MX6-based Debian containers we are using the Armada X.org DDX driver which seems to have worked fine in our tests but, it might show stability issues.

Graphical User Interface

How does GUIs work on TorizonCore using containers?

Our out of the box experience includes Wayland, Chromium, and Portainer, which is a web-based tool to manage containers. You can easily customize our pre-built containers or add your one.

We have examples documenting how to run a Graphical User Interface on TorizonCore using several different technologies as Qt, Crank and TotalCross.

Keep an eye on the list of Torizon related articles, or subscribe to our updates in the footer of the developer website. We plan to document how to use other technologies to build and run a GUI app on TorizonCore.

Hardware

How do hardware interfaces such as video, GPIO, I2C, SPI, etc. work with TorizonCore using containers?

We have documented how to access devices and interfaces through the container isolation layer from the Host OS, allowing the customer to control exactly what their application can use and keep it as secure as possible.

Search for your use-case in the list of Torizon related articles. If you didn't find what you need, post a question in our community.

Over-the-Air Updates

What is OSTree?

OSTree is a way to check and store filesystem changes in a git-like filesystem, allowing the customer to do atomic updates in their rootfs. When updates do occur, only the delta between the difference is sent to the customer, which makes updating much quicker.

Learn more on our article about OSTree.

How does TorizonCore work with OTA?

TorizonCore has a built-in client updater, called Aktualizr, which allows someone to update using a Uptane backend, such as HERE or our own OTA solution. It relies on OSTree to execute the updates.

Learn more about it on Torizon Update System. Keep in mind that Torizon OTA is under Toradex Labs.

Known Issues

After re-installing TorizonCore using the Toradex Easy Installer, the board does not boot. What can I do?

Make sure to clear the U-Boot environment by using env default -a && env save. If resetting the U-Boot environment does not help, use setenv tdxargs loglevel=7 to enable kernel debug messages. Also setenv tdxargs "loglevel=7 earlycon" can help to initialize a console during very early boot and thus see debug output in case the kernel crashes very early during boot.

How to fix apt-get not working because security certificates dates don’t match on Windows?

There is an open Docker bug that affects Windows machines in which the date inside the containers may not be correctly synced with the host PC.

You may experience weird issues due to that, such as apt-get failing due to security certificates dates not matching, or wrong dates in logs.

The only solution at the moment is to restart the Docker deamon on your host machine.

Container not running: standard_init_linux.go:211: exec user process caused "exec format error"

Configure Build Environment for Torizon Containers on your PC.