Container contracts

Hi,

I have some questions about container contracts as in this guide:

  • Is it possible to extend the feature for Jetson Nano emmc, jn30b, … devices?

  • What needs to be updated (I suppose the Supervisor) and is this possible without a BalenaOS update? So older devices doesn’t need a OS update.

  • Is it possible to define the contract at docker-compose level?

Hey there

  • Is it possible to define the contract at docker-compose level?

the contract should be at the root of the respective service.

Could you please clarify the following:

  • Is it possible to extend the feature for Jetson Nano emmc, jn30b, … devices?

Container contracts are supported on all devices where the Supervisor version is >= 10.6.17 . Do you mean L4T support?

Thanks

Hi,

Yes indeed. I’m using the Supervisor version now to decide on which L4T version we are. But this is just a workaround and doesn’t work when we update the Supervisor version on older BalenaOS versions.

So yes my question is, is this possible to add L4T support?

Kind regards,
Clint

Hey Clint,
what you want should already work out of the box. If you just take the first example from Container contracts - Balena Documentation

type: "sw.container"
slug: "my-app"
name: "My fantast Application"
requires:
  - type: "sw.l4t"
    version: "28.2"

You don’t have to add the lines referring to the supervisor.
Creating multiple containers with contracts describing the compatible L4T version should make it work

Hi,

I just did another try using the L4T container contracts. This is not working on:

  • Auvidea JN30B in local mode
  • Jetson Nano SD-CARD in local mode
  • Auvidea JN30B with production release

Can please somebody check this?

Is there a way to debug this? How can I request/see the desired sw.l4t variable on a device?

Kind regards,
Clint

Ok, I found out it was a version mismatch.
How does the mechanism determine which L4T version is on the device?

HI @Hades32 ,

I’m picking this up again. The version mismatch is still there, the sw.l4t version only checks the X.X version. Not X.X.X.

Is there a way to define multiple hw.device-type values?

Tested this and isn’t working:

type: "sw.container"
slug: "enforce-l4t-version-32-7-SOC-t186"
name: "enforce-l4t-version 32.7 SOC t186"
requires:
  - type: "sw.l4t"
    version: "32.7"
  - type: "hw.device-type"
    name: [ "cnx100-xavier-nx", "photon-tx2-nx", "photon-xavier-nx", "jetson-tx2-nx-devkit",
            "jetson-xavier-nx-devkit-emmc", "jetson-xavier-nx-devkit" ]

Kind regards