Files
Openness-Score/scripts/compare.sh
2025-07-03 14:19:53 +02:00

198 lines
9.2 KiB
Bash
Executable File

#!/bin/bash
MINIO_CREDS="$1"
NC_CREDS="$2"
NO_DOWNLOAD="${3:-false}"
BINDIR="binaries"
usage() {
cat <<EOF
Compare Dasharo and proprietary firmware openness score
The script will download binaries to the 'binaries' directory and run openness_score.py with '--compare'.
Usage:
compare.sh MINIO_CREDS NOVACUSTOM_CREDS [no-download]
MINIO_CREDS - JSON with Dasharo MinIO credentials
NOVACUSTOM_CREDS - JSON with credentials to https://repo.palkeo.com/clevo-mirror
no-download - Do not download binaries (assume present in 'binaries' directory)
The JSONs should have the following structure:
{
"login": "<LOGIN>",
"password": "<PASSWORD>"
}
Replace <LOGIN> and <PASSWORD> with appropriate credentials.
EOF
}
download_protectli() {
mkdir -p "$BINDIR/protectli"
repo_path="/tmp/protectli-firmware-updater"
git clone https://github.com/protectli-root/protectli-firmware-updater.git "$repo_path"
cp "$repo_path/images/fw6_all_YKR6LV30.bin" "$repo_path/images/protectli_all_fw6_vault_kbl_v1.0.14.rom" \
"$repo_path/images/protectli_v1210_v0.9.3.rom" "$repo_path/images/v1210_JPL.2LAN.S4G.PCIE.6W.013.bin" \
"$repo_path/images/protectli_v1211_v0.9.3.rom" "$repo_path/images/v1211_JPL.2LAN.D8G.PCIE.6W.009.bin"\
"$repo_path/images/protectli_v1410_v0.9.3.rom" "$repo_path/images/v1410_JPL.4LAN.S8GB.PCIE.6W.007B.bin"\
"$repo_path/images/protectli_v1610_v0.9.3.rom" "$repo_path/images/v1610_JPL.6LAN.D16G.PCIE.007.bin" \
"$repo_path/images/protectli_vp2410_v1.1.1.rom" "$repo_path/images/vp2410_GLK4L280.bin" \
"$repo_path/images/protectli_vp2420_v1.2.1.rom" "$repo_path/images/vp2420_YELD4L13P.bin" \
"$repo_path/images/protectli_vp2430_v0.9.0.rom" "$repo_path/images/vp2430_PRALNDZ4L10.bin" \
"$repo_path/images/protectli_vp4600_v1.2.0.rom" "$repo_path/images/vp4630_v2_YW6L2318.bin" \
"$repo_path/images/protectli_vp6600_v0.9.2.rom" "$repo_path/images/vp6630_ADZ6L314.bin" \
"$BINDIR/protectli"
}
compare_protectli() {
./openness_score/openness_score.py "$BINDIR/protectli/protectli_all_fw6_vault_kbl_v1.0.14.rom" \
-c "$BINDIR/protectli/fw6_all_YKR6LV30.bin" -p "Protectli FW6" -a "sklkbl"
./openness_score/openness_score.py "$BINDIR/protectli/protectli_v1210_v0.9.3.rom" \
-c "$BINDIR/protectli/v1210_JPL.2LAN.S4G.PCIE.6W.013.bin" -p "Protectli V1210" -a "jsl"
./openness_score/openness_score.py "$BINDIR/protectli/protectli_v1211_v0.9.3.rom" \
-c "$BINDIR/protectli/v1211_JPL.2LAN.D8G.PCIE.6W.009.bin" -p "Protectli V1211" -a "jsl"
./openness_score/openness_score.py "$BINDIR/protectli/protectli_v1410_v0.9.3.rom" \
-c "$BINDIR/protectli/v1410_JPL.4LAN.S8GB.PCIE.6W.007B.bin" -p "Protectli V1410" -a "jsl"
./openness_score/openness_score.py "$BINDIR/protectli/protectli_v1610_v0.9.3.rom" \
-c "$BINDIR/protectli/v1610_JPL.6LAN.D16G.PCIE.007.bin" -p "Protectli V1610" -a "jsl"
./openness_score/openness_score.py "$BINDIR/protectli/protectli_vp2410_v1.1.1.rom" \
-c "$BINDIR/protectli/vp2410_GLK4L280.bin" -p "Protectli VP2410" -a "glk"
./openness_score/openness_score.py "$BINDIR/protectli/protectli_vp2420_v1.2.1.rom" \
-c "$BINDIR/protectli/vp2420_YELD4L13P.bin" -p "Protectli VP2420" -a "ehl"
./openness_score/openness_score.py "$BINDIR/protectli/protectli_vp2430_v0.9.0.rom" \
-c "$BINDIR/protectli/vp2430_PRALNDZ4L10.bin" -p "Protectli VP2430" -a "adl"
./openness_score/openness_score.py "$BINDIR/protectli/protectli_vp4600_v1.2.0.rom" \
-c "$BINDIR/protectli/vp4630_v2_YW6L2318.bin" -p "Protectli VP46XX" -a "cnl"
./openness_score/openness_score.py "$BINDIR/protectli/protectli_vp6600_v0.9.2.rom" \
-c "$BINDIR/protectli/vp6630_ADZ6L314.bin" -p "Protectli VP66XX" -a "adl"
}
download_msi() {
mkdir -p "$BINDIR/msi"
bios_url="https://download.msi.com/bos_exe/mb"
minio_bucket="dasharo-msi-uefi"
# Z690-A DDR4
wget -O "/tmp/7D25v1L.zip" "$bios_url/7D25v1L.zip"
unzip "/tmp/7D25v1L.zip" -d "/tmp"
cp "/tmp/7D25v1L/E7D25IMS.1L0" "$BINDIR/msi"
# Z690-A-WIFI
wget -O "/tmp/7D25vAL.zip" "$bios_url/7D25vAL.zip"
unzip "/tmp/7D25vAL.zip" -d "/tmp"
cp "/tmp/7D25vAL/E7D25IMS.AL0" "$BINDIR/msi"
# Z790-P DDR4
wget -O "/tmp/7E06v1F.zip" "$bios_url/7E06v1F.zip"
unzip "/tmp/7E06v1F.zip" -d "/tmp"
cp "/tmp/7E06v1F/E7E06IMS.1F0" "$BINDIR/msi"
# Z790-P WIFI
wget -O "/tmp/7E06vAH.zip" "$bios_url/7E06vAH.zip"
unzip "/tmp/7E06vAH.zip" -d "/tmp"
cp "/tmp/7E06vAH/E7E06IMS.AH0" "$BINDIR/msi"
mc get "openness-score/$minio_bucket/MS-7D25/v1.1.4/msi_ms7d25_v1.1.4_ddr4.rom" "$BINDIR/msi"
mc get "openness-score/$minio_bucket/MS-7D25/v1.1.4/msi_ms7d25_v1.1.4_ddr5.rom" "$BINDIR/msi"
mc get "openness-score/$minio_bucket/MS-7E06/v0.9.2/msi_ms7e06_v0.9.2_ddr4.rom" "$BINDIR/msi"
mc get "openness-score/$minio_bucket/MS-7E06/v0.9.2/msi_ms7e06_v0.9.2_ddr5.rom" "$BINDIR/msi"
}
compare_msi() {
./openness_score/openness_score.py "$BINDIR/msi/msi_ms7d25_v1.1.4_ddr4.rom" -c "$BINDIR/msi/E7D25IMS.1L0" -p "MSI MS-7D25 DDR4" -a "adl"
./openness_score/openness_score.py "$BINDIR/msi/msi_ms7d25_v1.1.4_ddr5.rom" -c "$BINDIR/msi/E7D25IMS.AL0" -p "MSI MS-7D25 DDR5" -a "adl"
./openness_score/openness_score.py "$BINDIR/msi/msi_ms7e06_v0.9.2_ddr4.rom" -c "$BINDIR/msi/E7E06IMS.1F0" -p "MSI MS-7E06 DDR4" -a "adl"
./openness_score/openness_score.py "$BINDIR/msi/msi_ms7e06_v0.9.2_ddr4.rom" -c "$BINDIR/msi/E7E06IMS.AH0" -p "MSI MS-7E06 DDR5" -a "adl"
}
download_novacustom() {
mkdir -p "$BINDIR/novacustom"
bios_url="https://repo.palkeo.com/clevo-mirror"
dasharo_url="https://dl.3mdeb.com/open-source-firmware/Dasharo"
wget_cmd="wget --user $NC_LOGIN --password $NC_PASSWORD"
# V54/56 MTL
$wget_cmd -O "/tmp/B10709.zip" "$bios_url/Vxx0TU/B10709.zip"
unzip "/tmp/B10709.zip" -d "/tmp"
cp "/tmp/B10709/V5xxTU(32M).09" "$BINDIR/novacustom"
# NV4x ADL
$wget_cmd -O "/tmp/B10703.zip" "$bios_url/NV4xPZ/B10703.zip"
unzip "/tmp/B10703.zip" -d "/tmp"
cp "/tmp/B10703/ALL/NV4xPZ(32M).03" "$BINDIR/novacustom"
# NV4x TGL
$wget_cmd -O "/tmp/B10705.zip" "$bios_url/NV4xMB_ME/B10705.zip"
unzip "/tmp/B10705.zip" -d "/tmp"
cp "/tmp/B10705/ALL/NV4XBX.05" "$BINDIR/novacustom"
# NS5x ADL
$wget_cmd -O "/tmp/B10709.zip" "$bios_url/NSxxPU/B10709.zip"
unzip "/tmp/B10709.zip" -d "/tmp"
cp "/tmp/B10709/ALL/NSx0PU(32M).09" "$BINDIR/novacustom"
# NS5x TGL
$wget_cmd -O "/tmp/B10716N.zip" "$bios_url/NS5xMU/B10716N.zip"
unzip "/tmp/B10716N.zip" -d "/tmp"
cp "/tmp/NS50_70MU.16N/ALL/68C1/NS50_70MU.16N" "$BINDIR/novacustom"
wget -O "$BINDIR/novacustom/novacustom_v54x_mtl_v0.9.0.rom" "$dasharo_url/novacustom_v54x_mtl/v0.9.0/novacustom_v54x_mtl_v0.9.0.rom"
wget -O "$BINDIR/novacustom/novacustom_v56x_mtl_v0.9.0.rom" "$dasharo_url/novacustom_v56x_mtl/v0.9.0/novacustom_v56x_mtl_v0.9.0.rom"
wget -O "$BINDIR/novacustom/novacustom_nv4x_adl_v1.7.2_full.rom" "$dasharo_url/novacustom_nv4x_adl/v1.7.2/novacustom_nv4x_adl_v1.7.2_full.rom"
wget -O "$BINDIR/novacustom/novacustom_nv4x_tgl_v1.5.2.rom" "$dasharo_url/novacustom_nv4x_tgl/v1.5.2/novacustom_nv4x_tgl_v1.5.2.rom"
wget -O "$BINDIR/novacustom/novacustom_ns5x_adl_v1.7.2.rom" "$dasharo_url/novacustom_ns5x_adl/v1.7.2/novacustom_ns5x_adl_v1.7.2.rom"
wget -O "$BINDIR/novacustom/novacustom_ns5x_tgl_v1.5.2.rom" "$dasharo_url/novacustom_ns5x_tgl/v1.5.2/novacustom_ns5x_tgl_v1.5.2.rom"
}
compare_novacustom() {
./openness_score/openness_score.py "$BINDIR/novacustom/novacustom_v54x_mtl_v0.9.0.rom" -c "$BINDIR/novacustom/V5xxTU(32M).09" -p "Novacustom V540TU" -a "mtl"
./openness_score/openness_score.py "$BINDIR/novacustom/novacustom_v56x_mtl_v0.9.0.rom" -c "$BINDIR/novacustom/V5xxTU(32M).09" -p "Novacustom V560TU" -a "mtl"
./openness_score/openness_score.py "$BINDIR/novacustom/novacustom_nv4x_adl_v1.7.2_full.rom" -c "$BINDIR/novacustom/NV4xPZ(32M).03" -p "Novacustom NV4xPZ" -a "adl"
./openness_score/openness_score.py "$BINDIR/novacustom/novacustom_nv4x_tgl_v1.5.2.rom" -c "$BINDIR/novacustom/NV4XBX.05" -p "Novacustom NV4xME_MB" -a "tgl"
./openness_score/openness_score.py "$BINDIR/novacustom/novacustom_ns5x_adl_v1.7.2.rom" -c "$BINDIR/novacustom/NSx0PU(32M).09" -p "Novacustom NSxxPU" -a "adl"
./openness_score/openness_score.py "$BINDIR/novacustom/novacustom_ns5x_tgl_v1.5.2.rom" -c "$BINDIR/novacustom/NS50_70MU.16N" -p "Novacustom NS5xMU" -a "tgl"
}
download_odroid() {
mkdir -p "$BINDIR/odroid"
bios_url="https://dn.odroid.com/ODROID-H4/bios"
minio_bucket="dasharo-odroid-h4-plus-uefi"
echo "Please download stock binaries from $bios_url to $BINDIR/odroid"
read -p "Press any key after downloading binaries"
mc get "openness-score/$minio_bucket/hardkernel_odroid_h4/v0.9.0/hardkernel_odroid_h4_v0.9.0.rom" "$BINDIR/odroid"
}
compare_odroid() {
./openness_score/openness_score.py "$BINDIR/odroid/hardkernel_odroid_h4_v0.9.0.rom" -c "$BINDIR/odroid/ADLN-H4_B1.07.bin" -p "Odroid H4" -a "adl"
}
if [ $# -lt 2 ]; then
usage
exit 1
fi
mkdir -p "$BINDIR"
MINIO_LOGIN=$(jq -r '.login' "$MINIO_CREDS")
MINIO_PASSWORD=$(jq -r '.password' "$MINIO_CREDS")
mc alias set openness-score "https://dl.dasharo.com" "$MINIO_LOGIN" "$MINIO_PASSWORD"
NC_LOGIN=$(jq -r '.login' "$NC_CREDS")
NC_PASSWORD=$(jq -r '.password' "$NC_CREDS")
if [ $NO_DOWNLOAD != "no-download" ]; then
download_msi
download_protectli
download_odroid
download_novacustom
fi
compare_msi
compare_protectli
compare_odroid
compare_novacustom