technologics.id

Pengesetan Printer Kasir USB pada Sistem Operasi Berbasis Linux


Tutorial ini menggunakan sistem operasi Linux-Lite versi 7.2. Jika Anda menggunakan sistem operasi berbasis Debian seperti Ubuntu, Linux Mint, dan lain-lain, perintah yang digunakan kurang lebih sama.

Sebelum memulai pengesetan, pastikan printer belum terhubung ke komputer.

Sebagai langkah awal, buka aplikasi Terminal melalui menu pada layar desktop atau tekan kombinasi tombol keyboard Ctrl + Alt + T. Setelah keluar layar Terminal, ketikkan perintah:

sudo apt install lighttpd

Perintah di atas akan melakukan instalasi web server lighttpd ke sistem. Tunggu hingga instalasi selesai dan ketikkan perintah berikut ini untuk mengaktifkan cgi:

sudo lighttpd-enable-mod cgi
sudo service lighttpd force-reload

Setelah itu ketik perintah:

cat /etc/lighttpd/conf-enabled/10-cgi.conf

Adapun output dari file 10-cgi.conf seperti pada contoh di bawah ini:

Gambar Tampilan Output File 10-cgi.conf

Catat direktori yang ditunjukkan pada baris alias.url. Pada gambar di atas terlihat contoh output di sistem operasi Linux-Lite 7.2 dan direktorinya adalah /usr/lib/cgi-bin/.

Kemudian ketikkan perintah-perintah berikut ini di Terminal:

sudo -i
cd /usr/lib/cgi-bin
wget https://app.technologics.id/sangkil/downloads/local_print
chown www-data:www-data local_print
chmod 755 local_print

Jika web server Anda menggunakan lokasi cgi-bin yang berbeda, silakan sesuaikan perintah pada baris kedua.

Pada tahap ini Anda telah berhasil melakukan instalasi web server lighttpd dan file pencetak yang diperlukan. 

Tahap berikutnya hubungkan printer ke komputer melalui port USB kemudian ketikkan perintah dmesg pada Terminal. Contoh output perintah seperti di bawah ini. Tergantung jenis printer yang digunakan, output perintah mungkin berbeda.

Jika muncul output seperti di atas, berarti printer sudah terhubung dengan baik ke komputer.

Perhatikan nama produk yang terhubung, yaitu micro-printer. Tergantung tipe dan merek printer USB yang Anda gunakan, nama ini bisa juga berupa USB Thermal Printer, printer, USB Printing Support, dan lain-lain.

Pada sistem kami, printer yang terhubung menghasilkan file /dev/usb/lp2. Bisa juga file berupa /dev/usb/lp0 tergantung pada sistem operasi yang digunakan.

Selanjutnya ketikkan perintah ini di Terminal:

sudo su
udevadm info -a -p $(sudo udevadm info -q path -n /dev/usb/lp2)

Output dari perintah di atas kurang lebih terlihat seperti di bawah ini:


Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
  looking at device '/devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10:1.0/usbmisc/lp2':
    KERNEL=="lp2"
    SUBSYSTEM=="usbmisc"
    DRIVER==""
    ATTR{power/async}=="disabled"
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_enabled}=="disabled"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"
    ATTR{power/runtime_usage}=="0"
  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10:1.0':
    KERNELS=="3-10:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usblp"
    ATTRS{authorized}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceClass}=="07"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bInterfaceProtocol}=="02"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{ieee1284_id}=="int000"
    ATTRS{power/async}=="enabled"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_enabled}=="enabled"
    ATTRS{power/runtime_status}=="suspended"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{supports_autosuspend}=="1"
  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3/3-10':
    KERNELS=="3-10"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0200"
    ATTRS{bmAttributes}=="c0"
    ATTRS{busnum}=="3"
    ATTRS{configuration}==""
    ATTRS{devnum}=="13"
    ATTRS{devpath}=="10"
    ATTRS{idProduct}=="0289"
    ATTRS{idVendor}=="28e9"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="GEZHI"
    ATTRS{maxchild}=="0"
    ATTRS{power/active_duration}=="3760016"
    ATTRS{power/async}=="enabled"
    ATTRS{power/autosuspend}=="2"
    ATTRS{power/autosuspend_delay_ms}=="2000"
    ATTRS{power/connected_duration}=="3760016"
    ATTRS{power/control}=="on"
    ATTRS{power/level}=="on"
    ATTRS{power/persist}=="1"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="3759740"
    ATTRS{power/runtime_enabled}=="forbidden"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="1"
    ATTRS{product}=="micro-printer"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="removable"
    ATTRS{rx_lanes}=="1"
    ATTRS{serial}=="000000000004"
    ATTRS{speed}=="12"
    ATTRS{tx_lanes}=="1"
    ATTRS{urbnum}=="15"
    ATTRS{version}==" 1.10"
  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3':
    KERNELS=="usb3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{authorized_default}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bMaxPower}=="0mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0515"
    ATTRS{bmAttributes}=="e0"
    ATTRS{busnum}=="3"
    ATTRS{configuration}==""
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{idProduct}=="0002"
    ATTRS{idVendor}=="1d6b"
    ATTRS{interface_authorized_default}=="1"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 5.15.0-125-generic xhci-hcd"
    ATTRS{maxchild}=="12"
    ATTRS{power/active_duration}=="5906076"
    ATTRS{power/async}=="enabled"
    ATTRS{power/autosuspend}=="0"
    ATTRS{power/autosuspend_delay_ms}=="0"
    ATTRS{power/connected_duration}=="5906076"
    ATTRS{power/control}=="auto"
    ATTRS{power/level}=="auto"
    ATTRS{power/runtime_active_kids}=="3"
    ATTRS{power/runtime_active_time}=="5906074"
    ATTRS{power/runtime_enabled}=="enabled"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{power/wakeup}=="disabled"
    ATTRS{power/wakeup_abort_count}==""
    ATTRS{power/wakeup_active}==""
    ATTRS{power/wakeup_active_count}==""
    ATTRS{power/wakeup_count}==""
    ATTRS{power/wakeup_expire_count}==""
    ATTRS{power/wakeup_last_time_ms}==""
    ATTRS{power/wakeup_max_time_ms}==""
    ATTRS{power/wakeup_total_time_ms}==""
    ATTRS{product}=="xHCI Host Controller"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{rx_lanes}=="1"
    ATTRS{serial}=="0000:00:14.0"
    ATTRS{speed}=="480"
    ATTRS{tx_lanes}=="1"
    ATTRS{urbnum}=="253"
    ATTRS{version}==" 2.00"
  looking at parent device '/devices/pci0000:00/0000:00:14.0':
    KERNELS=="0000:00:14.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="xhci_hcd"
    ATTRS{ari_enabled}=="0"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x0c0330"
    ATTRS{consistent_dma_mask_bits}=="64"
    ATTRS{d3cold_allowed}=="1"
    ATTRS{device}=="0x8c31"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{driver_override}=="(null)"
    ATTRS{enable}=="1"
    ATTRS{irq}=="29"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{local_cpus}=="f"
    ATTRS{msi_bus}=="1"
    ATTRS{msi_irqs/29}=="msi"
    ATTRS{numa_node}=="-1"
    ATTRS{power/async}=="enabled"
    ATTRS{power/control}=="on"
    ATTRS{power/runtime_active_kids}=="1"
    ATTRS{power/runtime_active_time}=="5906930"
    ATTRS{power/runtime_enabled}=="forbidden"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="1"
    ATTRS{power/wakeup}=="enabled"
    ATTRS{power/wakeup_abort_count}=="0"
    ATTRS{power/wakeup_active}=="0"
    ATTRS{power/wakeup_active_count}=="0"
    ATTRS{power/wakeup_count}=="0"
    ATTRS{power/wakeup_expire_count}=="0"
    ATTRS{power/wakeup_last_time_ms}=="0"
    ATTRS{power/wakeup_max_time_ms}=="0"
    ATTRS{power/wakeup_total_time_ms}=="0"
    ATTRS{power_state}=="D0"
    ATTRS{revision}=="0x05"
    ATTRS{subsystem_device}=="0x8534"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{vendor}=="0x8086"
  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""
    ATTRS{power/async}=="enabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="11"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{waiting_for_supplier}=="0"

Perhatikan baris yang berisikan micro-printer, yaitu pada baris ATTRS{product}=="micro-printer". Lihat pada bagian atas pada baris SUBSYSTEMS dan catat nilai pada baris tersebut.

Selanjutnya buat file 90-printer-kasir.rules dan ketikkan isi berikut ini:

SUBSYSTEMS=="usb", ATTRS{product}=="micro-printer", SYMLINK+="qpos", MODE="0777"

Simpan file dan kemudian letakkan file di folder /etc/udev/rules.d.

SYMLINK berfungsi untuk membuat symbolic link pada printer yang terkoneksi. Printer yang terkoneksi bisa menghasilkan file yang berubah-ubah, misal /dev/usb/lp0, /dev/usb/lp1, dan seterusnya tergantung jumlah printer dan sistem operasi yang digunakan. Dengan SYMLINK, akan menghasilkan nama file yang konstan setiap printer dikoneksikan ke komputer. Pada contoh di atas kami menggunakan nama qpos.

MODE berfungsi untuk menentukan file permission saat printer dikoneksikan. Gunakan file permission 777 untuk dapat mencetak tanpa sebagai root.

Setelah selesai, restart komputer Anda.

Selanjutkan login ke aplikasi Sangkil, lalu akses menu Data - Kasir. Pilih atau buat kasir yang akan diatur printernya, lalu isikan data seperti berikut ini:

Gambar Contoh Pengaturan Printer

Isian yang tersedia adalah:

Simpan pengaturan kasir dan printer telah siap digunakan.

Tips: Anda juga dapat mencetak ke printer kasir yang terkoneksi ke komputer lain dengan mengisikan alamat akses local_print yang ada di komputer tersebut. Misal jika komputer yang dituju memiliki alamat IP 192.168.88.50, isikan URL dengan nilai: http://192.168.88.50/cgi-bin/local_print.

technologics.id
Ph. (+62) 852-9226-8888
Business hour: Mon-Fri (09.00 - 17.00)

Copyright © 2026 Technologics. Hak Cipta Dilindungi Undang-Undang.