pantum-universal-driver 1.1.186-5
seededverified· maintained by osguot· LicenseRef-Pantum
Universal printer and scanner driver for Pantum devices
baa2796c557f→
75e5e90b30f0
·
9 files changed.SRCINFO
modified +1615 -617diff --git a/.SRCINFO b/.SRCINFO
index a115939..d48f202 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,15 +1,41 @@
pkgbase = pantum-universal-driver
- pkgdesc = Universal driver for Pantum printers
- pkgver = 1.1.167
- pkgrel = 1
+ pkgdesc = Universal printer and scanner driver for Pantum devices
+ pkgver = 1.1.186
+ pkgrel = 4
url = https://global.pantum.com/support/
- install = pantum-universal-driver.install
arch = x86_64
- license = custom
+ license = LicenseRef-Pantum
depends = cups
- optdepends = ipp-usb: for IPP over USB support
- noextract = pantum-universal-driver-1.1.167-1.zip
- source = pantum-universal-driver-1.1.167-1.zip::https://github.com/osguot/pantum-universal-driver/releases/download/release/Pantum.Linux.Driver.V1_1_167.zip
- sha256sums = 680a0b3534cd5411207b48382a2c2d266cb86c6c65d6ac0eec5430df00594e09
+ depends = libcups
+ depends = cups-filters
+ depends = ghostscript
+ depends = sane
+ depends = libusb
+ depends = libjpeg-turbo
+ depends = zlib
+ depends = libgcc
+ depends = libstdc++
+ provides = pantum-driver=1.1.186
+ conflicts = pantum-driver
+ noextract = pantum-universal-driver-1.1.186.zip
+ options = !strip
+ backup = etc/sane.d/pantum6500.conf
+ backup = etc/sane.d/pantum_bm2400.conf
+ backup = etc/sane.d/pantum_bm4200.conf
+ backup = etc/sane.d/pantum_bm5200.conf
+ backup = etc/sane.d/pantum_bm5230.conf
+ backup = etc/sane.d/pantum_mfp.conf
+ backup = etc/sane.d/dll.d/pantum6500
+ backup = etc/sane.d/dll.d/pantum_bm2400
+ backup = etc/sane.d/dll.d/pantum_bm4200
+ backup = etc/sane.d/dll.d/pantum_bm5200
+ backup = etc/sane.d/dll.d/pantum_bm5230
+ backup = etc/sane.d/dll.d/pantum_mfp
+ source = pantum-universal-driver-1.1.186.zip::https://drivers.pantum.in/userfiles/files/download/%E9%A9%B1%E5%8A%A8%E6%96%87%E4%BB%B6/4020/%E6%AC%A7%E6%B4%B2%E5%AD%90%E7%AB%99%E9%80%82%E9%85%8D%E8%8D%B7%E5%85%B0%E8%AF%AD20260520/Pantum%20Linux%20Driver%20V1_1_186.zip
+ source = pantum-ipp-usb.conf
+ source = fix-pantum-ppd.awk
+ sha256sums = ce28c1f42e3c6a642cd49af3d6827b63ad4f0484b2151f0594470a1746828a45
+ sha256sums = b24a64ae11b9e3b5eb1e5da608b38592b8131644be48e2e8d75d9491750aa6f5
+ sha256sums = 262d88bd34188a401fae2599ed8ac255236cec3b7d86fd22618fcf0f46a11f4e
pkgname = pantum-universal-driver
PKGBUILD
modified +9959 -6047diff --git a/PKGBUILD b/PKGBUILD
index 6342883..570e58a 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -9,31 +9,31 @@
# BM2200FW BM2200N BM2200NW BM2200W BM2300 BM2300A BM2300ANW
# BM2300AW BM2300NW BM2300W BM2301W BM2303W BM2312NW BM2316W
# BM2318NW BM2336W BM2345W BM2400 BM2400A BM2400ANW BM2400NW
-# BM2408 BM2408A BM2408ANW BM2408NW BM2460 BM2460A BM2460ANW
-# BM2460NW BM4000ADN BM4000ADW BM4000FDN BM4000FDW BM4005ADN BM4005FDN
-# BM4100FDN BM4100FDW BM4200AD BM4200ADN BM4200ADW BM4200D BM4200DN
-# BM4200DW BM4208AD BM4208ADN BM4208D BM4208DN BM4208DW BM4210ADN
-# BM4210ADW BM4210DW BM4240ADW BM4248ADW BM4300ADW BM4308ADW BM4310ADN
-# BM4310ADW BM5100ADN BM5100ADW BM5100FDN BM5100FDW BM5105ADN BM5105FDN
-# BM5106ADN BM5106ADW BM5106FDN BM5106FDW BM5110ADN BM5110ADW BM5140ADN
-# BM5200ADN BM5200ADW BM5205ADN BM5205ADW BM5208ADN BM5208ADW BM5230ADN
-# BM5230ADW BM5237ADN BM5237ADW
+# BM2460 BM2460A BM2460ANW BM2460NW BM4000ADN BM4000ADW BM4000FDN
+# BM4000FDW BM4005ADN BM4005FDN BM4100FDN BM4100FDW BM4200AD BM4200ADN
+# BM4200ADW BM4200D BM4200DN BM4200DW BM4208AD BM4208ADN BM4208D
+# BM4208DN BM4208DW BM4210ADN BM4210ADW BM4210DW BM4240ADW BM4248ADW
+# BM4300ADW BM4308ADW BM4310ADN BM4310ADW BM5100ADN BM5100ADW BM5100FDN
+# BM5100FDW BM5105ADN BM5105FDN BM5106ADN BM5106ADW BM5106FDN BM5106FDW
+# BM5110ADN BM5110ADW BM5200ADN BM5200ADW BM5205ADN BM5205ADW BM5208ADN
+# BM5208ADW BM5210ADN BM5210ADW BM5218ADN BM5218ADW BM5220ADN BM5220ADW
+# BM5225ADN BM5225ADW BM5230ADN BM5230ADW BM5237ADN BM5237ADW BM5285ADN
+# BM5300ADN BM5300ADW
#
# === BP Series ================================================================
#
# BP1800 BP1800W BP2100 BP2100N BP2100NW BP2100W BP2200
# BP2200N BP2200NW BP2200W BP2300 BP2300NW BP2300W BP2301W
# BP2303W BP2312NW BP2316W BP2318NW BP2320NW BP2336W BP2345W
-# BP2400 BP2400NW BP2408 BP2408NW BP2460 BP2460NW BP4000DN
+# BP2400 BP2400NW BP2460 BP2460NW BP4000DN
# BP4000DW BP4005DN BP4200D BP4200DN BP4200DW BP4208D BP4208DN
# BP4208DW BP4210DN BP4210DW BP5100DN BP5100DW BP5101DN BP5105DN
-# BP5106DN BP5106DW BP5126DN BP5140DN BP5200DN BP5200DW BP5208DN
+# BP5106DN BP5106DW BP5126DN BP5200D BP5200DN BP5200DW BP5208DN
# BP5208DW BP5230DN BP5230DW BP5237DN BP5237DW
#
# === CM Series ================================================================
#
-# CM1100 CM1100ADN CM1100ADW CM1100DN CM1100DW CM1100FDW CM230ADN
-# CM230ADW CM230DN
+# CM1100 CM1100ADN CM1100ADW CM1100DN CM1100DW CM1100FDW
#
# === CP Series ================================================================
#
@@ -46,14 +46,15 @@
# === M Series =================================================================
#
# M118DW M15DW M29DW M5100 M5200 M5300 M6200
-# M6200N M6200NW M6200W M6500 M6500N M6500NW M6500W
+# M6200N M6200NW M6200W M6500 M6500N M6500NW M6500NW+
# M6503 M6503NW M6507N M6518NW M6535NW M6550 M6550N
-# M6550NW M6550W M6568NW M6595NW M6600 M6600N M6600NW
+# M6550NW M6550NW+ M6550W M6568NW M6595NW M6600 M6600N
+# M6600NW
# M6600W M6602W M6700D M6700DN M6700DW M6700DW+ M6708D
# M6708DN M6708DW M6710DW+ M6760D M6760DW M6760DW+ M6768DW
# M6770DW+ M6789DW+ M6800FDW M6860FDN M6860FDW M7000D M7000DW
# M7010DN M7100D M7100DN M7100DW M7100DW+ M7108DN M7108DW
-# M7140DN M7160DW M7160DW+ M7170DW M7189DW+ M7200FD M7200FDN
+# M7160DW M7160DW+ M7170DW M7189DW+ M7200FD M7200FDN
# M7200FDW M7300FDN M7300FDW M7310DN M7310DW M7312DN M7312DW
# M7318DN M7318DW
#
@@ -64,13 +65,13 @@
# === P Series =================================================================
#
# P1000 P2000 P2200 P2200NW P2200W P2210 P2210W
-# P2300 P2300W P2500 P2500N P2500NW P2500W P2503
-# P2503W P2510 P2510W P2517 P2518NW P2535NW P2550
+# P2300 P2300W P2500 P2500N P2500NW P2500W P2500W+
+# P2503 P2503W P2510 P2510W P2517 P2518NW P2535NW
# P2550N P2595NW P2600 P2600N P2600NW P2650 P2650N
# P3000 P3007D P3007DW P3010D P3010DW P3010DW+ P3020D
# P3020DWS P3030D P3060D P3060DW P3100 P3300 P3300DN
# P3300DW P3300DW+ P3307DN P3308DN P3308DW P3320D P3320DWS
-# P3340DN P3500D P3500DN P3500DNT P3500DW P3508DN
+# P3500D P3500DN P3500DNT P3500DW P3508DN
#
# === S Series =================================================================
#
@@ -79,52 +80,154 @@
# ==============================================================================
pkgname=pantum-universal-driver
-pkgver=1.1.167
-pkgrel=1
-pkgdesc="Universal driver for Pantum printers"
+pkgver=1.1.186
+pkgrel=4
+pkgdesc="Universal printer and scanner driver for Pantum devices"
arch=('x86_64')
url="https://global.pantum.com/support/"
-license=('custom')
-depends=('cups')
-optdepends=('ipp-usb: for IPP over USB support')
+license=('LicenseRef-Pantum')
+depends=(
+ 'cups'
+ 'libcups'
+ 'cups-filters'
+ 'ghostscript'
+ 'sane'
+ 'libusb'
+ 'libjpeg-turbo'
+ 'zlib'
+ 'libgcc'
+ 'libstdc++'
+)
+provides=("pantum-driver=${pkgver}")
+conflicts=('pantum-driver')
+options=('!strip')
# Auxiliary variables
_zipver="${pkgver//./_}"
-_zipname="Pantum.Linux.Driver.V${_zipver}.zip"
-_debname="pantum_${pkgver}-${pkgrel}_amd64.deb"
+_debrel=1
+_debname="pantum_${pkgver}-${_debrel}_amd64.deb"
_foldername="Pantum Linux Driver V${pkgver}"
+_download_url='https://drivers.pantum.in/userfiles/files/download'
+_download_path='%E9%A9%B1%E5%8A%A8%E6%96%87%E4%BB%B6/4020/%E6%AC%A7%E6%B4%B2%E5%AD%90%E7%AB%99%E9%80%82%E9%85%8D%E8%8D%B7%E5%85%B0%E8%AF%AD20260520'
-install=pantum-universal-driver.install
+backup=(
+ 'etc/sane.d/pantum6500.conf'
+ 'etc/sane.d/pantum_bm2400.conf'
+ 'etc/sane.d/pantum_bm4200.conf'
+ 'etc/sane.d/pantum_bm5200.conf'
+ 'etc/sane.d/pantum_bm5230.conf'
+ 'etc/sane.d/pantum_mfp.conf'
+ 'etc/sane.d/dll.d/pantum6500'
+ 'etc/sane.d/dll.d/pantum_bm2400'
+ 'etc/sane.d/dll.d/pantum_bm4200'
+ 'etc/sane.d/dll.d/pantum_bm5200'
+ 'etc/sane.d/dll.d/pantum_bm5230'
+ 'etc/sane.d/dll.d/pantum_mfp'
+)
-source=("${pkgname}-${pkgver}-${pkgrel}.zip::https://github.com/osguot/pantum-universal-driver/releases/download/release/${_zipname}")
-sha256sums=('680a0b3534cd5411207b48382a2c2d266cb86c6c65d6ac0eec5430df00594e09')
-noextract=("${pkgname}-${pkgver}-${pkgrel}.zip")
+source=(
+ "${pkgname}-${pkgver}.zip::${_download_url}/${_download_path}/Pantum%20Linux%20Driver%20V${_zipver}.zip"
+ 'pantum-ipp-usb.conf'
+ 'fix-pantum-ppd.awk'
+)
+sha256sums=(
+ 'ce28c1f42e3c6a642cd49af3d6827b63ad4f0484b2151f0594470a1746828a45'
+ 'b24a64ae11b9e3b5eb1e5da608b38592b8131644be48e2e8d75d9491750aa6f5'
+ '262d88bd34188a401fae2599ed8ac255236cec3b7d86fd22618fcf0f46a11f4e'
+)
+noextract=("${pkgname}-${pkgver}.zip")
prepare() {
- # Extract DEB-file
- bsdtar -x -f "$srcdir/${pkgname}-${pkgver}-${pkgrel}.zip" "${_foldername}/Resources/${_debname}"
-
- # Move DEB-file
- mv "${_foldername}/Resources/${_debname}" .
+ bsdtar -xOf "$srcdir/${pkgname}-${pkgver}.zip" \
+ "${_foldername}/Resources/${_debname}" > "${_debname}"
+ bsdtar -xOf "$srcdir/${pkgname}-${pkgver}.zip" \
+ "${_foldername}/Resources/locale/en_US.UTF-8/license.txt" > EULA
+ bsdtar -xOf "$srcdir/${pkgname}-${pkgver}.zip" \
+ "${_foldername}/Resources/locale/en_US.UTF-8/privacy.txt" > PRIVACY
}
package() {
- # Extract data.tar.xz from DEB-file
- ar p "${_debname}" data.tar.xz | tar -xJ -C "$pkgdir"
+ bsdtar -xOf "${_debname}" data.tar.xz | \
+ bsdtar --no-same-owner -xpf - -C "$pkgdir"
+
+ # Debian ships duplicate SANE files in /usr/local, which packages must not own.
+ rm -rf "$pkgdir/usr/local"
+
+ # Use Arch's native SANE library directory.
+ install -d "$pkgdir/usr/lib/sane"
+ mv "$pkgdir/usr/lib/x86_64-linux-gnu/sane/"* "$pkgdir/usr/lib/sane/"
+ rmdir "$pkgdir/usr/lib/x86_64-linux-gnu/sane" \
+ "$pkgdir/usr/lib/x86_64-linux-gnu"
+
+ # Vendor udev rules belong in /usr, not in the administrator-owned /etc.
+ install -d "$pkgdir/usr/lib/udev/rules.d"
+ mv "$pkgdir/etc/udev/rules.d/"*.rules "$pkgdir/usr/lib/udev/rules.d/"
+ rmdir "$pkgdir/etc/udev/rules.d" "$pkgdir/etc/udev"
+
+ # Do not make USB devices world-writable. Members of lp retain access, and
+ # libsane_matched lets Arch's 70-uaccess.rules grant an ACL to active users.
+ sed -i \
+ -e 's/MODE="0666", OWNER="root", GROUP="lp"/GROUP="lp", MODE="0664"/g' \
+ -e '/^LABEL="mud_rules_end"$/d' \
+ "$pkgdir/usr/lib/udev/rules.d/"*.rules
+
+ # The bundled ipp-usb fork conflicts with Arch's supported ipp-usb package.
+ rm -rf "$pkgdir/opt/pantum/ippfilter" "$pkgdir/opt/pantum/{lib}"
+ install -Dm644 "$srcdir/pantum-ipp-usb.conf" \
+ "$pkgdir/usr/share/ipp-usb/quirks/pantum.conf"
- # Remove unnecessary folder
- rm -rf "$pkgdir/${_foldername}"
+ # V1.1.186 PPDs still reference these filters, omitted from the vendor DEB.
+ ln -s rastertoPantum "$pkgdir/usr/lib/cups/filter/BM2400"
+ ln -s rastertoPantum "$pkgdir/usr/lib/cups/filter/BP2400"
- # Move libs from usr/lib/x86_64-linux-gnu to usr/lib
- if [ -d "$pkgdir/usr/lib/x86_64-linux-gnu" ]; then
- mkdir -p "$pkgdir/usr/lib"
- mv "$pkgdir/usr/lib/x86_64-linux-gnu"/* "$pkgdir/usr/lib/" 2>/dev/null || true
- rmdir "$pkgdir/usr/lib/x86_64-linux-gnu" 2>/dev/null || true
+ # Normalize invalid JCL UI blocks and let Pantum's PDF filters consume
+ # standard PDF directly, avoiding a failing bannertopdf/pdftopdf chain.
+ local ppd ppd_count=0 original_valid
+ while IFS= read -r -d '' ppd; do
+ ppd_count=$((ppd_count + 1))
+ original_valid=false
+ if cupstestppd -q -I filters -W none "$ppd"; then
+ original_valid=true
+ fi
+
+ awk -f "$srcdir/fix-pantum-ppd.awk" "$ppd" > "$ppd.fixed"
+
+ if $original_valid &&
+ ! cupstestppd -q -I filters -W none "$ppd.fixed"; then
+ printf 'PPD normalization broke a valid file: %s\n' \
+ "${ppd#$pkgdir/}" >&2
+ return 1
+ fi
+
+ awk -f "$srcdir/fix-pantum-ppd.awk" "$ppd.fixed" \
+ > "$ppd.checked"
+ if ! cmp -s "$ppd.fixed" "$ppd.checked"; then
+ printf 'PPD normalization is not idempotent: %s\n' \
+ "${ppd#$pkgdir/}" >&2
+ return 1
+ fi
+
+ rm "$ppd.checked"
+ mv "$ppd.fixed" "$ppd"
+ done < <(find "$pkgdir/usr/share/cups/model/Pantum" -type f \
+ -name '*.ppd' -print0)
+
+ if ((ppd_count == 0)); then
+ printf '%s\n' 'No Pantum PPD files found in the vendor package' >&2
+ return 1
fi
- # License stuff
- if [ -f "$pkgdir/usr/share/doc/pantum/copyright" ]; then
- install -Dm644 "$pkgdir/usr/share/doc/pantum/copyright" \
- "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+ if grep -R -E '^\*cupsFilter:.*application/vnd\.cups-pdf.*(ptps|phase2filter)' \
+ "$pkgdir/usr/share/cups/model/Pantum" >/dev/null; then
+ printf '%s\n' 'Unnormalized Pantum PDF filter declarations remain' >&2
+ return 1
fi
+
+ install -Dm644 EULA "$pkgdir/usr/share/licenses/$pkgname/EULA"
+ install -Dm644 PRIVACY "$pkgdir/usr/share/licenses/$pkgname/PRIVACY"
+ install -Dm644 "$pkgdir/usr/share/doc/pantum/copyright" \
+ "$pkgdir/usr/share/licenses/$pkgname/copyright"
+ install -Dm644 "$pkgdir/usr/share/doc/pantum/changelog.gz" \
+ "$pkgdir/usr/share/doc/$pkgname/changelog.gz"
+ rm -rf "$pkgdir/usr/share/doc/pantum"
}
pantum-universal-driver.install
removed +0 -1523diff --git a/pantum-universal-driver.install b/pantum-universal-driver.install
deleted file mode 100644
index 6f7cd85..0000000
--- a/pantum-universal-driver.install
+++ /dev/null
@@ -1,54 +0,0 @@
-post_install() {
-
- RULES_DIR="/usr/lib/udev/rules.d/"
- SERVICE_DIR="/usr/lib/systemd/system/"
- IPP_FILTER_DIR="/opt/pantum/ippfilter"
- PANTUM_BIN_DIR="/opt/pantum/bin"
-
- IPPUSB_RULES="$IPP_FILTER_DIR/71-ipp-usb.rules"
- IPPUSB="$IPP_FILTER_DIR/ipp-usb"
- IPPUSB_SERVICE="$IPP_FILTER_DIR/pt-ipp-usb.service"
-
- # Check ipp-usb service
- IPPUSB_EXIST=0
- if [ -f /usr/lib/udev/rules.d/71-ipp-usb.rules ] && \
- [ -f /usr/lib/systemd/system/ipp-usb.service ] && \
- [ -f /usr/bin/ipp-usb ]; then
- IPPUSB_EXIST=1
- fi
-
- echo "ipp-usb: $IPPUSB_EXIST"
-
- # Processing ipp-usb
- if [ $IPPUSB_EXIST -eq 1 ]; then
- cp "$IPPUSB_RULES" "$RULES_DIR"
- cp "$IPPUSB_SERVICE" "$SERVICE_DIR"
-
- # Copy ipp-usb into /opt/pantum/bin/
- mkdir -p "$PANTUM_BIN_DIR"
- cp "$IPPUSB" "$PANTUM_BIN_DIR/"
- chmod 755 "$PANTUM_BIN_DIR/ipp-usb"
-
- systemctl daemon-reload
- udevadm control --reload
-
- # Check ipp-usb service status
- IPPUSB_SERVICE_IS_ACTIVE=$(systemctl is-active ipp-usb)
- if [ "$IPPUSB_SERVICE_IS_ACTIVE" = "active" ]; then
- systemctl stop ipp-usb
- systemctl start pt-ipp-usb
- fi
- fi
-
- # Reload udev rules and activate for USB-device
- udevadm control --reload-rules
- udevadm trigger --subsystem-match=usb
-
- echo "Pantum driver ${pkgver} installed successfully!"
- echo "Restarting CUPS service..."
- systemctl restart cups.service
-}
-
-post_upgrade() {
- post_install
-}
.gitignore
added +39 -0diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..55d8a92
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+/src/
+/pkg/
+/*.zip
+/*.deb
+/*.pkg.tar.*
LICENSE
added +660 -0diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..87358a1
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,12 @@
+Copyright (C) 2026 Ivan Burmin <osguot@vivaldi.net>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
LICENSES/0BSD.txt
added +660 -0diff --git a/LICENSES/0BSD.txt b/LICENSES/0BSD.txt
new file mode 100644
index 0000000..87358a1
--- /dev/null
+++ b/LICENSES/0BSD.txt
@@ -0,0 +1,12 @@
+Copyright (C) 2026 Ivan Burmin <osguot@vivaldi.net>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
REUSE.toml
added +266 -0diff --git a/REUSE.toml b/REUSE.toml
new file mode 100644
index 0000000..6a08ff4
--- /dev/null
+++ b/REUSE.toml
@@ -0,0 +1,13 @@
+version = 1
+
+[[annotations]]
+path = [
+ ".SRCINFO",
+ ".gitignore",
+ "PKGBUILD",
+ "fix-pantum-ppd.awk",
+ "pantum-ipp-usb.conf",
+]
+precedence = "aggregate"
+SPDX-FileCopyrightText = "2026 Ivan Burmin <osguot@vivaldi.net>"
+SPDX-License-Identifier = "0BSD"
fix-pantum-ppd.awk
added +800 -0diff --git a/fix-pantum-ppd.awk b/fix-pantum-ppd.awk
new file mode 100644
index 0000000..d220156
--- /dev/null
+++ b/fix-pantum-ppd.awk
@@ -0,0 +1,47 @@
+function flush_ui_block() {
+ if (!in_ui_block)
+ return
+
+ if (has_jcl_setup) {
+ sub(/^\*OpenUI /, "*JCLOpenUI ", ui_block)
+ sub(/\n\*CloseUI:/, "\n*JCLCloseUI:", ui_block)
+ }
+
+ printf "%s", ui_block
+ ui_block = ""
+ in_ui_block = 0
+ has_jcl_setup = 0
+}
+
+/^\*cupsFilter:/ &&
+/application\/vnd\.cups-pdf/ &&
+/(ptps|phase2filter)"[[:space:]]*$/ {
+ sub(/application\/vnd\.cups-pdf/, "application/pdf")
+ print
+ next
+}
+
+/^\*OpenUI / {
+ flush_ui_block()
+ in_ui_block = 1
+ ui_block = $0 ORS
+ next
+}
+
+in_ui_block {
+ ui_block = ui_block $0 ORS
+
+ if ($0 ~ /^\*OrderDependency:.*[[:space:]]JCLSetup[[:space:]]/)
+ has_jcl_setup = 1
+
+ if ($0 ~ /^\*CloseUI:/)
+ flush_ui_block()
+
+ next
+}
+
+{ print }
+
+END {
+ flush_ui_block()
+}
pantum-ipp-usb.conf
added +103 -0diff --git a/pantum-ipp-usb.conf b/pantum-ipp-usb.conf
new file mode 100644
index 0000000..a86ee23
--- /dev/null
+++ b/pantum-ipp-usb.conf
@@ -0,0 +1,3 @@
+# The proprietary Pantum driver needs direct access to Pantum USB devices.
+[232b:*]
+ blacklist = true