Please support newer Ubuntu server version 25.04 codename plucky on Raspberry Pi Compute Module 5. I was able to update the install script which is attached for reference but you are not offering any packages in apt repository. It is still supported until January 2026 or are you only going to serve LTS support?
Thanks for quick response.
Reading package lists...
Error: Failed to fetch https://zk-sw-repo.s3.amazonaws.com/apt-repo-plucky-aarch64/dists/plucky/InRelease 403 Forbidden [IP: 52.217.121.233 443]
Error: The repository 'https://zk-sw-repo.s3.amazonaws.com/apt-repo-plucky-aarch64 plucky InRelease' is not signed.
Installing Zymkey Packages...Reading package lists...
Building dependency tree...
Reading state information...
Error: Unable to locate package libzymkeyssl
Error: Unable to locate package zkbootrtc
Error: Unable to locate package zkifc
Error: Unable to locate package zkapputilslib
Error: Unable to locate package zksaapps
Error: Unable to locate package zkpkcs11
Updated install_zk_sw.sh
#!/bin/bash
#---------------------------------------------------------------------------------------------------------------------------------------------------------------
# Copyright (C) 2021-2022 by copyright Zymbit
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without l> imitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#---------------------------------------------------------------------------------------------------------------------------------------------------------------
mod=""
# ensure running as root or exit
if [ "$(id -u)" != "0" ]; then
echo "run this as root or use sudo" 2>&1 && exit 1;
fi;
function pip()
{
python -m pip $@
}
function pip3()
{
if [ "${distro}" != "bookworm" ] && [ "${distro}" != "noble" ] && [ "${distro}" != "plucky" ]
then
python3 -m pip $@
else
python3 -m pip $@ --break-system-packages
fi
}
function apt()
{
NEEDRESTART_MODE=a DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical \
/usr/bin/apt --yes --quiet \
--option Dpkg::Options::=--force-confold \
--option Dpkg::Options::=--force-confdef \
"$@" # &>/dev/null
}
# for older versions of Raspbian, insure that apt-transport-https is installed first
echo -n "Installing prerequisites (this might take a few minutes)..."
apt update --allow-releaseinfo-change
apt install libboost-thread-dev lsb-release
distro=`lsb_release -c | cut -f2 -d$'\t'`
if { uname -m | grep -q "arm"; }
then
arch=""
else
arch="-"`uname -m`
fi
if [ "$distro" = "noble" ] && [ "$distro" = "plucky" ]
then
USE_SYSFS_GPIO=false
else
USE_SYSFS_GPIO=true
fi
if $USE_SYSFS_GPIO; then
# ensure that the group 'gpio' exists
if ! grep "^gpio" /etc/group; then
if [ "$1" == "-y" ]
then
answer="YES"
else
echo "Group 'gpio' does not exist. This group is necessary for zymbit software to operate normally."
read -p 'Type yes in all capital letters (YES) to create this group: ' answer <&1
fi
if [ "${answer}" == "YES" ]
then
# Add group 'gpio'
groupadd -r gpio
else
echo "Quitting..."
exit -1
fi
# Modify /etc/rc.local to change the group of /etc/sys/class/gpio
if ! grep -q "chown -R root:gpio" /etc/rc.local; then
[[ -f /etc/rc.local ]] || echo '#!/bin/sh' > /etc/rc.local
echo "chown -R root:gpio /sys/class/gpio" >> /etc/rc.local
echo "chmod -R ug+rw /sys/class/gpio" >> /etc/rc.local
fi
fi
fi
# Check for existence of udev rule
if [[ ! -f "/etc/udev/rules.d/80-gpio-noroot.rules" ]]; then
echo "ACTION==\"add\", SUBSYSTEM==\"gpio\", PROGRAM=\"/bin/sh -c 'chown -R root:gpio /sys/\$devpath; chmod -R g+w /sys/\$devpath'\"" >> /etc/udev/rules.d/80-gpio-noroot.rules
fi
# jammy uses python3-dev; no longer supports python-dev
if [ "${distro}" != "jammy" ] && [ "${distro}" != "bookworm" ] && [ "${distro}" != "noble" ] && [ "${distro}" != "plucky" ]
then
apt install apt-transport-https curl libyaml-dev libssl-dev libcurl4-openssl-dev python3-pip python-setuptools i2c-tools
else
apt install apt-transport-https curl libyaml-dev libssl-dev libcurl4-openssl-dev python3-pip python3-setuptools python3-pycurl i2c-tools
fi
if [ "${distro}" != "focal" ] && [ "${distro}" != "bookworm" ] && [ "${distro}" != "bullseye" ] && [ "${distro}" != "jammy" ] && [ "${distro}" != "noble" ] && [ "${distro}" != "plucky" ]
then
apt install -y python-pip
pip install inotify || exit
pip install pycurl progress python-gnupg
fi
pip3 install inotify progress python-gnupg
pip3 install pycurl &>/dev/null || exit # Will error for bookworm; installed via apt install above
echo "done."
baseurl="https://zk-sw-repo${mod}.s3.amazonaws.com"
# import zymbit gpg key
gpg_key_url="$baseurl/apt-zymkey-pubkey.gpg"
echo -n "Importing Zymbit Packages gpg key... "
# import the gpg key
curl -L "${gpg_key_url}" 2>/dev/null | sudo gpg --dearmor --yes -o /usr/share/keyrings/zymbit.gpg
echo "done."
# add zymbit apt repo to sources list
apt_source_path="/etc/apt/sources.list.d/zymbit.list"
echo -n "Installing $apt_source_path..."
repodist="$distro"
#if [[ "$distro" == noble ]]; then
# repodist="jammy"
#fi
echo "deb [signed-by=/usr/share/keyrings/zymbit.gpg] $baseurl/apt-repo-${repodist}${arch}/ ${repodist} main" > $apt_source_path
echo "done...Updating now."
apt update
# install our packages
echo -n "Installing Zymkey Packages..."
apt install libzymkeyssl zkbootrtc zkifc zkapputilslib zksaapps zkpkcs11 cryptsetup || exit
if [ "${distro}" != "focal" ] && [ "${distro}" != "bookworm" ] && [ "${distro}" != "bullseye" ] && [ "${distro}" != "jammy" ] && [ "${distro}" != "noble" ] && [ "${distro}" != "plucky" ]
then
pip install -U zku zk_luks &>/dev/null
fi
pip3 install -U zku zk_luks &>/dev/null
if [ "${distro}" != "focal" ] && [ "${distro}" != "bookworm" ] && [ "${distro}" != "bullseye" ] && [ "${distro}" != "jammy" ] && [ "${distro}" != "noble" ] && [ "${distro}" != "plucky" ]
then
ln -s /usr/local/lib/python2.7/dist-packages/zk_luks/__init__.py /usr/local/bin/create_zk_crypt_vol
fi
# Install example scripts
echo; echo "Installing example scripts..."
mkdir -p /usr/local/share/zymkey/examples
curl -G https://s3.amazonaws.com/zk-sw-repo/zk_app_utils_test.py > /usr/local/share/zymkey/examples/zk_app_utils_test.py
curl -G https://s3.amazonaws.com/zk-sw-repo/zk_crypto_test.py > /usr/local/share/zymkey/examples/zk_crypto_test.py
curl -G https://s3.amazonaws.com/zk-sw-repo/zk_prep_encr > /usr/local/bin/zk_prep_encr
chmod +x /usr/local/bin/zk_prep_encr
# Make sure necessary crypt packages are included
apt install cryptsetup-initramfs cryptsetup-run
# Check for NVIDIA Xavier platform
nv_model_fn="/proc/device-tree/model"
if [ -e ${nv_model_fn} ]
then
if grep -q -i "Xavier" ${nv_model_fn}
then
# Configure the zymkey environment variables for the xavier
echo "Configuring zymkey environment for Xavier..."
sed -i "s/216/436/" /var/lib/zymbit/zkenv.conf
sed -i "s/=1/=8/" /var/lib/zymbit/zkenv.conf
fi
fi
# Debian 6.6 and later use different GPIO numbering, no long forces the base number of the main GPIO controller to be global GPIO 0.
# Need to determine correct wake pin number
function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" = "$1"; }
version_to_check="6.6"
current_version=`uname -r`
if version_gt $version_to_check $current_version
then
wake_pin=`grep GPIO4 /sys/kernel/debug/gpio | sed -r 's/[^0-9]*([0-9]*).*/\1/'`
echo "ZK_GPIO_WAKE_PIN=$wake_pin" > /var/lib/zymbit/zkenv.conf
fi
# temp workaround to set for noble for standalone apps
if [[ "$distro" == noble ]] && [ "${distro}" != "plucky" ]
then
if grep -q "Pi 5" /sys/firmware/devicetree/base/model; then
wake_pin=575
elif grep -q "Compute Module 5" /sys/firmware/devicetree/base/model; then
wake_pin=573
elif grep -q "Pi 4" /sys/firmware/devicetree/base/model; then
wake_pin=516
elif grep -q "Compute Module 4" /sys/firmware/devicetree/base/model; then
wake_pin=516
else
:
fi
if [ -n "$wake_pin" ]; then
echo "ZK_GPIO_WAKE_PIN=$wake_pin" > /var/lib/zymbit/zkenv.conf
fi
fi
#jammy uses dialout group for i2c. Add zymbit to dialout group
if [[ "${distro}" == jammy ]] || [[ "$distro" == noble ]] && [ "${distro}" != "plucky" ]
then
adduser zymbit dialout
fi
systemctl restart zkifc
sync
sleep 10
# reboot
echo "Rebooting now..."
reboot