Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package xone-dongle-firmware for
openSUSE:Factory checked in at 2026-02-01 22:04:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xone-dongle-firmware (Old)
and /work/SRC/openSUSE:Factory/.xone-dongle-firmware.new.1995 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xone-dongle-firmware"
Sun Feb 1 22:04:00 2026 rev:2 rq:1330200 version:0+git20251208.d8be599
Changes:
--------
---
/work/SRC/openSUSE:Factory/xone-dongle-firmware/xone-dongle-firmware.changes
2025-11-17 12:23:02.236906834 +0100
+++
/work/SRC/openSUSE:Factory/.xone-dongle-firmware.new.1995/xone-dongle-firmware.changes
2026-02-01 22:04:44.246861162 +0100
@@ -1,0 +2,6 @@
+Sat Jan 31 16:46:46 UTC 2026 - Tobias Görgens <[email protected]>
+- Update to version 0+git20251208.d8be599:
+ - Update to new firmware file locations
+ - Make version linked to upstream firmware donwload script
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xone-dongle-firmware.spec ++++++
--- /var/tmp/diff_new_pack.8NgtDM/_old 2026-02-01 22:04:45.198901572 +0100
+++ /var/tmp/diff_new_pack.8NgtDM/_new 2026-02-01 22:04:45.198901572 +0100
@@ -1,7 +1,7 @@
#
# spec file for package xone-dongle-firmware
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,22 +16,24 @@
#
Name: xone-dongle-firmware
-Version: 0.1
+# Version of the install/firmware.sh script
+Version: 0+git20251208.d8be599
Release: 0
Summary: Xbox Wireless Controller Adapter firmware downloader
# The firmware itself is proprietary and downloaded from Microsoft;
# this package only contains helper scripts and placeholders.
License: GPL-3.0-or-later
-URL: https://github.com/medusalix/xone
+URL: https://github.com/dlundqvist/xone
Source0: xone-dl-firmware.sh.in
Source1: COPYING
Source2: firmware.sha256
-Requires: cabextract
-Requires: wget
+Requires: bash
+Requires: bsdtar
Requires: curl
Requires: w3m
+Conflicts: xone < 0.5.0
BuildArch: noarch
%description
@@ -58,26 +60,40 @@
xone-dl-firmware.sh.in > xone-dl-firmware.sh
%install
-%suse_install_update_script xone-dl-firmware.sh
-
-mkdir -p %buildroot/var/adm/update-messages
-touch %buildroot/var/adm/update-messages/%name-%version-%release-1
+mkdir -p %{buildroot}%{_libexecdir}/%{name}
+install -m 0755 xone-dl-firmware.sh
%{buildroot}%{_libexecdir}/%{name}/xone-dl-firmware.sh
mkdir -p %buildroot/usr/share/doc/%{name}
touch %buildroot/usr/share/doc/%{name}/MICROSOFT-TOS.html
mkdir -p %buildroot/usr/lib/firmware
-touch %buildroot/usr/lib/firmware/xow_dongle.bin
+touch %buildroot/usr/lib/firmware/xone_dongle_02e6.bin
+touch %buildroot/usr/lib/firmware/xone_dongle_02fe.bin
+touch %buildroot/usr/lib/firmware/xone_dongle_02f9.bin
+touch %buildroot/usr/lib/firmware/xone_dongle_091e.bin
mkdir -p %{buildroot}/usr/share/%{name}
mv firmware.sha256 %{buildroot}/usr/share/%{name}
+# Store update messages under /usr/share to work with transactional-update
snapshots
+mkdir -p %{buildroot}/usr/share/%{name}/update-messages
+touch %{buildroot}/usr/share/%{name}/update-messages/%name-%version-%release-1
+
+%posttrans
+%{_libexecdir}/%{name}/xone-dl-firmware.sh --no-fail || :
+
%files
%license COPYING
-/var/adm/update-scripts/*
-%ghost /var/adm/update-messages/%name-%version-%release-1
+%dir %{_libexecdir}/%{name}
+%{_libexecdir}/%{name}/xone-dl-firmware.sh
%dir /usr/share/doc/%{name}
%ghost /usr/share/doc/%{name}/MICROSOFT-TOS.html
-%ghost /usr/lib/firmware/xow_dongle.bin
-/usr/share/%{name}
+%ghost /usr/lib/firmware/xone_dongle_02e6.bin
+%ghost /usr/lib/firmware/xone_dongle_02fe.bin
+%ghost /usr/lib/firmware/xone_dongle_02f9.bin
+%ghost /usr/lib/firmware/xone_dongle_091e.bin
+%dir /usr/share/%{name}
+%dir /usr/share/%{name}/update-messages
+%ghost /usr/share/%{name}/update-messages/%name-%version-%release-1
+/usr/share/%{name}/firmware.sha256
++++++ firmware.sha256 ++++++
--- /var/tmp/diff_new_pack.8NgtDM/_old 2026-02-01 22:04:45.254903949 +0100
+++ /var/tmp/diff_new_pack.8NgtDM/_new 2026-02-01 22:04:45.258904119 +0100
@@ -1,2 +1,5 @@
-48084d9fa53b9bb04358f3bb127b7495dc8f7bb0b3ca1437bd24ef2b6eabdf66
FW_ACC_00U.bin
+080ce4091e53a4ef3e5fe29939f51fd91f46d6a88be6d67eb6e99a5723b3a223
xone_dongle_02e6.bin
+48084d9fa53b9bb04358f3bb127b7495dc8f7bb0b3ca1437bd24ef2b6eabdf66
xone_dongle_02fe.bin
+0023a7bae02974834500c665a281e25b1ba52c9226c84989f9084fa5ce591d9b
xone_dongle_02f9.bin
+e2710daf81e7b36d35985348f68a81d18bc537a2b0c508ffdfde6ac3eae1bad7
xone_dongle_091e.bin
++++++ xone-dl-firmware.sh.in ++++++
--- /var/tmp/diff_new_pack.8NgtDM/_old 2026-02-01 22:04:45.278904968 +0100
+++ /var/tmp/diff_new_pack.8NgtDM/_new 2026-02-01 22:04:45.278904968 +0100
@@ -1,12 +1,11 @@
-#!/bin/sh
+#!/usr/bin/bash
TOS_URL="https://www.microsoft.com/en-us/legal/terms-of-use"
TOS_FILE="/usr/share/doc/xone-dongle-firmware/MICROSOFT-TOS.html"
-POST_MESSAGE="/var/adm/update-messages/__NAME__-__VERSION__-__RELEASE__-1"
+POST_MESSAGE="/usr/share/__NAME__/update-messages/__NAME__-__VERSION__-__RELEASE__-1"
-FIRMWARE_URL="http://download.windowsupdate.com/c/msdownload/update/driver/drvs/2017/07/1cd6a87c-623f-4407-a52d-c31be49e925c_e19f60808bdcbfbd3c3df6be3e71ffc52e43261e.cab"
-FIRMWARE_FILE="/usr/lib/firmware/xow_dongle.bin"
CHECKSUM_FILE="/usr/share/__NAME__/firmware.sha256"
+FIRMWARE_DIR="/usr/lib/firmware"
CURL_OPTIONS="-L -s"
@@ -24,6 +23,7 @@
echo " already present"
else
echo -n " Fetching ... "
+ mkdir -p "$(dirname "$TOS_FILE")" 2>/dev/null || true
if curl $CURL_OPTIONS -o "$TOS_FILE" "$TOS_URL"; then
echo "done"
else
@@ -42,90 +42,133 @@
cd "$tmpdir" || exit $exit_code
-if [ -e "$FIRMWARE_FILE" ]; then
- echo "*** No update necessary. Firmware already installed at
$FIRMWARE_FILE. ***"
- # Still show ToS summary below
-else
- echo "Downloading Xbox Wireless Controller Adapter firmware..."
+# Firmware sources
+urls=(
+
'https://catalog.s.download.windowsupdate.com/d/msdownload/update/driver/drvs/2017/03/2ea9591b-f751-442c-80ce-8f4692cdc67b_6b555a3a288153cf04aec6e03cba360afe2fce34.cab'
+
'https://catalog.s.download.windowsupdate.com/c/msdownload/update/driver/drvs/2017/07/1cd6a87c-623f-4407-a52d-c31be49e925c_e19f60808bdcbfbd3c3df6be3e71ffc52e43261e.cab'
+
'https://catalog.s.download.windowsupdate.com/c/msdownload/update/driver/drvs/2017/06/1dbd7cb4-53bc-4857-a5b0-5955c8acaf71_9081931e7d664429a93ffda0db41b7545b7ac257.cab'
+
'https://catalog.s.download.windowsupdate.com/d/msdownload/update/driver/drvs/2017/08/aeff215c-3bc4-4d36-a3ea-e14bfa8fa9d2_e58550c4f74a27e51e5cb6868b10ff633fa77164.cab'
+)
+filenames=('FW_ACC_00U.bin' 'FW_ACC_00U.bin' 'FW_ACC_CL.bin' 'FW_ACC_BR.bin')
+pids=('02e6' '02fe' '02f9' '091e')
+
+log_msg() {
+ mkdir -p "$(dirname "$POST_MESSAGE")" 2>/dev/null || true
+ echo "$*" | tee "$POST_MESSAGE"
+}
- echo -n " Fetching ... "
- if ! wget -q -O driver.cab "$FIRMWARE_URL"; then
- echo "failed!"
+get_expected_hash() {
+ local firmware_name="$1"
+ if [ ! -f "$CHECKSUM_FILE" ]; then
+ return 1
+ fi
+ awk -v f="$firmware_name" '$2 == f { print $1; exit }' "$CHECKSUM_FILE"
+}
+
+download_firmware() {
+ local pid="$1"
+ local url="$2"
+ local extracted="$3"
+
+ local firmware_name="xone_dongle_${pid}.bin"
+ local dest_file="${FIRMWARE_DIR}/${firmware_name}"
+
+ if [ -e "$dest_file" ]; then
+ echo "*** No update necessary. Firmware already installed at
$dest_file. ***"
+ return 0
+ fi
+
+ local expected_hash
+ expected_hash="$(get_expected_hash "$firmware_name")" || expected_hash=""
+ if [ -z "$expected_hash" ]; then
+ echo "Checksum entry for $firmware_name not found in $CHECKSUM_FILE."
if [ "$exit_code" -ne 0 ]; then
exit $exit_code
else
- echo "*** No Firmware installed. ***" | tee "$POST_MESSAGE"
- # Show ToS and exit
+ log_msg "*** No Firmware installed. ***"
if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then
w3m -dump "$TOS_FILE" | tee "$POST_MESSAGE"
fi
- exit 0
+ return 0
fi
fi
- echo "done"
- echo -n " Extracting ... "
- if ! cabextract -F FW_ACC_00U.bin driver.cab >/dev/null 2>&1; then
+ echo "Downloading Xbox Wireless Controller Adapter firmware
(${firmware_name})..."
+
+ echo -n " Fetching ... "
+ if ! curl $CURL_OPTIONS -o driver.cab "$url"; then
echo "failed!"
rm -f driver.cab
if [ "$exit_code" -ne 0 ]; then
exit $exit_code
else
- echo "*** No Firmware installed. ***" | tee "$POST_MESSAGE"
+ log_msg "*** No Firmware installed. ***"
if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then
w3m -dump "$TOS_FILE" | tee "$POST_MESSAGE"
fi
- exit 0
+ return 0
fi
fi
echo "done"
- rm -f driver.cab
-
- if [ ! -f FW_ACC_00U.bin ]; then
- echo "Firmware file FW_ACC_00U.bin not found after extraction."
+ echo -n " Extracting ... "
+ if ! bsdtar -xf driver.cab "$extracted" >/dev/null 2>&1; then
+ echo "failed!"
+ rm -f driver.cab
if [ "$exit_code" -ne 0 ]; then
exit $exit_code
else
- echo "*** No Firmware installed. ***" | tee "$POST_MESSAGE"
+ log_msg "*** No Firmware installed. ***"
if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then
w3m -dump "$TOS_FILE" | tee "$POST_MESSAGE"
fi
- exit 0
+ return 0
fi
fi
+ echo "done"
- if [ ! -f "$CHECKSUM_FILE" ]; then
- echo "Checksum file $CHECKSUM_FILE not found."
+ rm -f driver.cab
+
+ if [ ! -f "$extracted" ]; then
+ echo "Firmware file $extracted not found after extraction."
if [ "$exit_code" -ne 0 ]; then
exit $exit_code
else
- echo "*** No Firmware installed. ***" | tee "$POST_MESSAGE"
+ log_msg "*** No Firmware installed. ***"
if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then
w3m -dump "$TOS_FILE" | tee "$POST_MESSAGE"
fi
- exit 0
+ return 0
fi
fi
- if ! grep "FW_ACC_00U.bin" "$CHECKSUM_FILE" | sha256sum --check --quiet
--status >/dev/null 2>&1; then
- echo "Checksum mismatch for FW_ACC_00U.bin ... deleted!"
- rm -f FW_ACC_00U.bin
+ echo -n " Verifying ... "
+ actual_hash="$(sha256sum "$extracted" | awk '{print $1}')"
+ if [ "$actual_hash" != "$expected_hash" ]; then
+ echo "failed!"
+ echo "Checksum mismatch for $firmware_name ... deleted!"
+ rm -f "$extracted"
if [ "$exit_code" -ne 0 ]; then
exit $exit_code
else
- echo "*** No Firmware installed. ***" | tee "$POST_MESSAGE"
+ log_msg "*** No Firmware installed. ***"
if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then
w3m -dump "$TOS_FILE" | tee "$POST_MESSAGE"
fi
- exit 0
+ return 0
fi
fi
+ echo "done"
- chmod 644 FW_ACC_00U.bin
- mv -f FW_ACC_00U.bin "$FIRMWARE_FILE"
- echo "*** Firmware installed. ***" | tee "$POST_MESSAGE"
-fi
+ chmod 644 "$extracted"
+ mv -f "$extracted" "$dest_file"
+ log_msg "*** Firmware installed: $dest_file ***"
+}
+
+# Install all known dongle firmwares
+for ((i = 0 ; i < "${#urls[@]}" ; i++)); do
+ download_firmware "${pids[$i]}" "${urls[$i]}" "${filenames[$i]}"
+done
# Show ToS at the end
if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then