VisionSensor Linux  2024-05-14
Linux Information

Image configurations

IMAGO provides different image configurations depending on the requirements.

VisionSensor PV3

Images for the VisionSensor PV3 use the arm64 / aarch64 architecture (64-bit ARMv8).

Two image configurations 'a' and 'b' are provided for the VisionSensor PV3:

Configuration Description Installation size
a Basic image
  • Debian base system
  • Additional packages: openssh-server, openssh-client, ntp, snmpd, avahi-daemon, screen, mc, htop, nano, ...
  • Software development packages: gcc, g++, gdb, make, ...
  • Packages provided by IMAGO:
    • linux-image-*-visionsensor-pv3-*: customized Linux kernel
    • linux-headers-*-visionsensor-pv3-*: Linux kernel headers
    • u-boot-visionsensor-pv3: bootloader "Das U-Boot"
    • fpga-visionsensor-pv3: FPGA firmware
    • imago-sdk: IMAGO Linux SDK
    • imago-snmpd-update: Linux service which updates the file /etc/snmp/snmpd.conf.local to make the device discoverable by the VIBFinder tool. Beginning with version 1.1.0.0, the service additionally sets the host name to the device's serial number during boot.
    • vspv3-init: VisionSensor PV3 boot initialization package
    • imago-archive-keyring: public IMAGO APT repository deb.imago.tech for online SDK and ViewIT updates
    • gige-discovery-reply: adds support for device discovery in different subnet and for changing the IP configuration with the VIBFinder 2 tool (uses the GigE GVCP protocol).
≈ 1000 MB
b Support for Coral TPU
≈ 1100 MB
Note
The ViewIT Web GUI software is not included the images. But the current version is ususally installed on top before delivery of new devices.

VisionSensor PV/PV2

Images for the VisionSensor PV/PV2 use the armhf architecture (32-bit ARMv7).

Configuration Description Installation size
a Basic image
  • Debian base system
  • Additional packages: openssh-server, openssh-client, ntp, snmpd, avahi-daemon, screen, mc, htop, ...
  • Software development packages: gcc, g++, gdb, make, ...
  • Packages provided by IMAGO:
    • linux-image-…: customized Linux kernel
    • linux-headers-…: Linux kernel headers
    • u-boot-visionsensor-pv: bootloader "Das U-Boot"
    • pru-firmware-visionsensor-pv: PRU firmware (programmable real-time unit)
    • imago-sdk: IMAGO Linux SDK
    • agex-snmpd-update: Linux service which updates the snmpd.conf file to make the device discoverable by the VIBFinder tool
    • imago-avahi-update: Linux service which updates the avahi-daemon.conf file to make the device accessible using the device's serial number on the network: <Serial Number>.local
    • vspv-init: initialization boot script
≈ 800 MB

IMAGO software updates

The public Debian repository at deb.imago.tech enables online installation and updates of packages provided by IMAGO.

The repository is already prepared in new Linux images. For older images, the repository can be added manually:

wget https://deb.imago.tech/pool/main/i/imago-archive-keyring/imago-archive-keyring_1.1.0.0_all.deb
dpkg -i imago-archive-keyring_1.1.0.0_all.deb
apt update

The following software packages are supported:

  • imago-sdk
  • imago-snmpd-update
  • gige-discovery-reply
  • viewit-light

Example for installing or updating the ViewIT:

apt update
apt install viewit-light

Mass storage devices

The VisionSensor only supports the µSD card as mass storage devices:

Partition Mount point Filesystem Description
/dev/mmcblk0p1 /boot FAT Contains required files for booting (U-Boot, Linux kernel)
/dev/mmcblk0p2 / Ext4 Root filesystem
Note
  • The mount points and options are configured in the file /etc/fstab.
  • The bootloader for the VisionSensor PV3 is stored in the first blocks of the µSD card which is not part of any partition.

Ext4 journaling filesystem

The ext4 filesystem is used for the root partition mmcblk0p2 on the µSD card.

Ext4 supports three data journaling modes:

  • data=writeback
    Journaling is only applied for metadata. Incorrect data may appear in files which were written shortly before a crash.
  • data=ordered
    All data is forced directly out to the main filesystem prior to its metadata being committed to the journal. This technique guarantees that either the old or the new file contents will persist on disk. But ext4's delayed allocation of blocks increases the potential for data loss in programs that have not been specifically written to call fsync() when the programmer wants to ensure data has been flushed entirely to disk.
  • data=journal
    This mode disables delayed allocation of written data. This mode is most robust against data loss, but also has a significant impact on write performance.

The journaling mode is determined during the mount process of the root filesystem. The mode is stored in the ext4 superblock information which is not part of the Linux image. The default mode for delivered devices is data=journal, because data=ordered does not provide the best safeness against data loss.

Note
  • Devices delivered before October 2023 use the journaling mode data=ordered.
  • Recovery scripts before December 2023 do not change the journaling mode. The new scripts set the mode to data=journal by default.

The active journaling mode can be checked by running the following console command:

~# cat /proc/fs/ext4/mmcblk0p2/options | grep "data="
data=journal

The following command can be used to configure data=ordered mode manually:

~# tune2fs -o journal_data_ordered /dev/mmcblk0p2

data=journal mode can be enabled by running the following command:

~# tune2fs -o journal_data /dev/mmcblk0p2

The filesystem will be mounted with the new mode after reboot.

The superlock information is initially configured during installation of images by the install scripts (Remote_OS_Install.cmd, Remote_OS_Install.sh, MAKE_SD.cmd, MAKE_SD.sh). The default mode is data=journal. The Remote_OS_Install scripts accept the parameter -o to change the mode to data=ordered during installation.

References