I have to install proprietary camera drivers (ids ueye) that are provided as bullseye debian packages for ARMv8. I would like to install them on the iMX8 Torizon target (NOT on a target’s container) but I am not able to do it because dpkg or apt-get does not exist on the target.
Installing the files manually does not work any better since /usr is read-only even with sudo.
I guess I am not following the right way to install new packages. Could you point me to the solution ?
Unfortunately there isn’t a straightforward way to install new packages in TorizonCore. The standard procedure is to build TorizonCore with Yocto to include them.
I don’t see in the custom meta layer examples a case that fits exactly my need but I guess the recipe recipes-customer/hello-world/hello-world_1.0.0.bb is a good starting point.
Since I have binary drivers I would then make the binary archive accessible from SRC_URI and have a do_install() script to actually make it installed at the right place ? I would make a recipe like this :
# Package summary
SUMMARY = "Proprietary binary drivers"
# License
LICENSE = "Company providing drivers"
# License checksum file is always required
LIC_FILES_CHKSUM = "???? WHAT TO DO HERE ?????"
# drivers from local file
SRC_URI = "file://mydriver.run"
# Change source directory to workdirectory where the binary driver file is
S = "${WORKDIR}"
# Install binary and configuration files to final directory (/usr/bin, /etc, )
# nb: the mydriver.run is a self extracting archive that installs the file at the right place
do_install() {
yes y | sh mydriver.run
}
Alternatively, I could use debian packages so the recipe would become :
...
# drivers from local file
SRC_URI = "file://mydrivers-debs.tgz
# Change source directory to workdirectory where the binary driver file is
S = "${WORKDIR}"
# Install binary and configuration files to final directory (/usr/bin, /etc, )
do_install() {
tar xfvz mydrivers-debs.tgz
dpkg -i mydeb1.deb
dpkg -i mydeb2.deb
dpkg -i mydeb3.deb
....
}
Could you confirm one (or both) of this way is the way to go before I start ?
I am also wondering how I could generate the LIC_FILES_CHKSUM ?
nb: I am still investigating a way to have the drivers inside the container because I managed to make it work once, but it is not reproducible (when I change the camera, or give the container to a colleague). However that is a discussion that I started in another thread, and I may come back to you later on this (Systemd service management on Torizon).
nb: I am working with @sivagganesan so our issues are actually the same
LIC_FILES_CHKSUM is the license file checksum for the recipe. In your case, given that these packages are closed source, the value of LICENSE should be “CLOSED”. With this Bitbake won’t ask for a license checksum.
I’m just getting in touch to see if you managed to install the IDS Camera using the Yocto project.
The reason I’m asking is that I’ve been tasks to install a IDS (uEye) camera on a “Colibri iMX6DL”
(with Viola Carrier Board Rev 1.2) board.
Would you have any example (recipe) files, or steps to follow which might help.
So far, I’ve gone through the steps of creating the Meta Layer and following the steps for creating the recipe, but have hit several errors along the way running the command lines.
I have never tried to integrate the IDS-imaging ueye driver in yocto. I was rather installing them manually on an existing yocto image.
I am now using Torizon and it is quite easy to automate the driver installation in a docker file (the same commands for the SDK, debug or release images)
...
RUN apt-get -q -y update && apt-get -q -y install [required-packages-if-any-I-don't-remember]
...
COPY external-dependencies/libs/ /home/torizon/
...
RUN yes y | sh /home/torizon/libs-IDSImaging/ueye_4.94.0.1220_arm64.run
assuming the file is located in VSCodeWorkspace/external-dependencies/libs/libs-IDSImaging/ueye_4.94.0.1220_arm64.run