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 #
lsusbContoh 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 -dContoh output:
printer Canon_iP2700_series disabled. Printer offlineCatatan 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-installer2. Jalankan Installer #
sudo chmod +x install.sh
sudo ./install.shInstaller 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.confFormat:
# Format: VendorID:ProductID Printer_Name
04a9:10d3 Canon_iP2700_series
1a2b:3c4d Epson_L3150_seriesTambahkan semua printer kamu di sini. Satu printer per baris.
Langkah 3: Verifikasi & Monitor #
Cek Status Printer #
lpstat -p -dLihat Live Log #
tail -f /opt/printer-monitor/logs/monitor.logTest: 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 - EnabledMenambah Printer Baru #
Printer baru? Mudah aja:
- Cek
lsusbdanlpstat -puntuk ID & nama baru - Edit
/opt/printer-monitor/src/printers.conf, tambah baris baru - 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.serviceJalankan Uninstaller #
cd printer-monitor-installer
sudo chmod +x uninstall.sh
sudo ./uninstall.shAtau manual:
sudo rm -rf /opt/printer-monitor
sudo rm /etc/systemd/system/printer-monitor.service
sudo systemctl daemon-reloadTroubleshooting #
Q: Printer nggak terdeteksi?
- Periksa VendorID:ProductID dengan
lsusb(jangan salah ID) - Pastikan nama printer di
lpstat -pcocok 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.rulesIsi:
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! 🖨️✨