Lewati ke konten utama
Auto Enable/Disable USB Printer via CUPS & UDEV

Auto Enable/Disable USB Printer via CUPS & UDEV

Zarvelion Zynji
Penulis
Zarvelion Zynji
Tech enthusiasts (self-proclaimed). Gaming addict (diagnosed). Anime simp (no regrets). I turn my hyperfixations into content—welcome to the chaos.
Daftar isi

Masalah: Printer Stuck di Idle Status
#

Saat pakai CUPS, printer sering stay di status idle meski sudah offline (dimatikan atau dicabut USB). Statusnya nggak otomatis berubah ke disabled. Ribet banget kalau punya banyak printer.

Goal artikel ini:

  • Saat printer colok → otomatis enabled
  • Saat printer cabut → otomatis disabled + pesan “Printer offline”
  • Support banyak printer sekaligus tanpa perlu edit script berulang kali

Apa itu CUPS & UDEV?
#

CUPS (Common Unix Printing System) = standar printing di Linux untuk manage printer status (enabled/disabled).

UDEV (Userspace /DEV) = kernel subsystem yang mendeteksi hardware plug/unplug di real-time.

Kombinasi keduanya → otomatis enable printer saat colok, disable saat cabut. Lebih praktis & stabil daripada polling manual.


Langkah 1: Cek Info Printer
#

Dapatkan VendorID & ProductID
#

lsusb

Contoh output:

Bus 001 Device 003: ID 04a9:10d3 Canon, Inc. iP2700 series
  • 04a9 = VendorID
  • 10d3 = ProductID (ingat dua ID ini, nanti diperlukan)

Cek Nama Printer di CUPS
#

lpstat -p -d

Contoh output:

printer Canon_iP2700_series disabled.  Printer offline

Catatan nama printer ini juga — nanti dipakai di config.


Langkah 2: Install via Installer (Recommended) #

Cara paling praktis: download installer siap pakai, jalankan script, selesai. Folder & service terstruktur rapi.

1. Download & Extract Installer
#

wget -O printer-monitor-installer.tar.gz "http://cdn.zynji.my.id/cscript/printer-monitor-installer.tar.gz"
tar -xvzf printer-monitor-installer.tar.gz
cd printer-monitor-installer

2. Jalankan Installer
#

sudo chmod +x install.sh
sudo ./install.sh

Installer akan:

  • Buat folder /opt/printer-monitor/{bin,src,logs}
  • Deploy monitoring script
  • Setup systemd service
  • Auto-start saat boot

3. Edit Config Printer
#

sudo nano /opt/printer-monitor/src/printers.conf

Format:

# Format: VendorID:ProductID Printer_Name
04a9:10d3 Canon_iP2700_series
1a2b:3c4d Epson_L3150_series

Tambahkan semua printer kamu di sini. Satu printer per baris.


Langkah 3: Verifikasi & Monitor
#

Cek Status Printer
#

lpstat -p -d

Lihat Live Log
#

tail -f /opt/printer-monitor/logs/monitor.log

Test: Cabut & Colok Printer
#

Pantau log sambil cabut printer dari USB. Dalam ~5 detik, status harusnya berubah:

[timestamp] - Canon_iP2700_series disconnected - Disabled
[timestamp] - Canon_iP2700_series connected - Enabled

Menambah Printer Baru
#

Printer baru? Mudah aja:

  1. Cek lsusb dan lpstat -p untuk ID & nama baru
  2. Edit /opt/printer-monitor/src/printers.conf, tambah baris baru
  3. Simpan — monitor script auto-detect dalam 5 detik

Tidak perlu restart service.


Hapus / Uninstall Monitor
#

Hentikan Service
#

sudo systemctl stop printer-monitor.service
sudo systemctl disable printer-monitor.service

Jalankan Uninstaller
#

cd printer-monitor-installer
sudo chmod +x uninstall.sh
sudo ./uninstall.sh

Atau manual:

sudo rm -rf /opt/printer-monitor
sudo rm /etc/systemd/system/printer-monitor.service
sudo systemctl daemon-reload

Troubleshooting
#

Q: Printer nggak terdeteksi?

  • Periksa VendorID:ProductID dengan lsusb (jangan salah ID)
  • Pastikan nama printer di lpstat -p cocok dengan config
  • Coba restart service: sudo systemctl restart printer-monitor.service

Q: Status nggak berubah saat colok/cabut?

  • Lihat log: tail -f /opt/printer-monitor/logs/monitor.log
  • Pastikan service jalan: sudo systemctl status printer-monitor.service
  • Cek permission CUPS: pastikan user bisa jalankan cupsenable/cupsdisable

Q: Banyak error di log?

  • Check ID printer benar: lsusb -d VendorID:ProductID (harus ada output)
  • Check printer name di CUPS: lpstat -p | grep "printer_name"

Alternatif: Manual UDEV Setup (Single Printer)
#

Kalau cuma 1 printer atau mau setup manual, edit UDEV rules langsung:

sudo nano /etc/udev/rules.d/99-usb-printer.rules

Isi:

ACTION=="add", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04a9", ENV{ID_MODEL_ID}=="10d3", \
    RUN+="/bin/sh -c '/usr/sbin/cupsenable Canon_iP2700_series && /usr/sbin/cupsaccept Canon_iP2700_series'"

ACTION=="remove", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04a9", ENV{ID_MODEL_ID}=="10d3", \
    RUN+="/bin/sh -c '/usr/sbin/cupsdisable Canon_iP2700_series && /usr/sbin/cupsreject -r \"Printer offline\" Canon_iP2700_series'"

Reload UDEV:

sudo udevadm control --reload-rules
sudo udevadm trigger

💡 Tapi installer approach jauh lebih fleksibel & stabil untuk multi-printer setup.


Kesimpulan
#

✔ Otomatis enable/disable printer saat colok/cabut
✔ Support banyak printer tanpa edit script
✔ Installer praktis, setup 2 menit
✔ Mudah di-manage & di-troubleshoot

Sekarang printer kamu pintar dan otomatis! 🖨️✨

Terkait


Load Comments