CUPS – ວິທີການແກ້ໄຂບັນຫາການສະແກນ

Brandon Nielsen, Zdenek Dohnal Version unspecified Last review: 2021-06-16

ໄລບຣາຣີ SANE, ໄລບຣາຣີການສື່ສານ ແລະ backend ສາມາດເປີດ ແລະ ປິດການບັນທຶກການແກ້ໄຂຂໍ້ຜິດພາດ (debug logging) ຜ່ານຕົວປ່ຽນສະພາບແວດລ້ອມ SANE_DEBUG_*.

ຕົວປ່ຽນສະພາບແວດລ້ອມທົ່ວໄປ:

  • SANE_DEBUG_DLL - ເປີດໃຊ້ການແກ້ໄຂຂໍ້ຜິດພາດໄລບຣາຣີ SANE

  • SANE_DEBUG_SANEI_USB - ເປີດໃຊ້ການແກ້ໄຂຂໍ້ຜິດພາດໄລບຣາຣີການສື່ສານສຳລັບ USB - ເພີ່ມຕົວປ່ຽນສະພາບແວດລ້ອມນີ້ຫາກອຸປະກອນຂອງທ່ານເຊື່ອມຕໍ່ຜ່ານສາຍ USB

  • SANE_DEBUG_SANEI_TCP - ເປີດໃຊ້ການແກ້ໄຂຂໍ້ຜິດພາດໄລບຣາຣີການສື່ສານສຳລັບ ໄຮ້ສາຍ/ອີເທີເນັດ - ເພີ່ມຕົວປ່ຽນສະພາບແວດລ້ອມນີ້ຫາກອຸປະກອນຂອງທ່ານເຊື່ອມຕໍ່ຜ່ານ Wifi ຫຼື Ethernet

ຕົວປ່ຽນສະພາບແວດລ້ອມສຳລັບການເປີດໃຊ້ການແກ້ໄຂຂໍ້ຜິດພາດຂອງ backend ສະເພາະໃດໜຶ່ງຈະມີໂຄງສ້າງ - SANE_DEBUG_<backend_name>, ຕົວຢ່າງ: ຕົວປ່ຽນສະພາບແວດລ້ອມສຳລັບ backend HPAIO ແມ່ນ SANE_DEBUG_HPAIO*.

ທ່ານສາມາດກວດສອບເບິ່ງວ່າ backend ຂອງ SANE ໂຕໃດທີ່ຮອງຮັບອຸປະກອນຂອງທ່ານໄດ້ ທີ່ນີ້. ຫາກອຸປະກອນຂອງທ່ານແມ່ນ HP ແລະ ບໍ່ໄດ້ຮັບການຮອງຮັບໂດຍ backend airscan ຫຼື backend ອື່ນໆຂອງ SANE, ມັນອາດຈະໄດ້ຮັບການຮອງຮັບໂດຍ backend hpaio ຈາກແພັກເກດ hplip, ເບິ່ງລາຍຊື່ອຸປະກອນທີ່ຮອງຮັບໄດ້ ທີ່ນີ້.

ການແກ້ໄຂຂໍ້ຜິດພາດໃນການຄົ້ນຫາເຄື່ອງສະແກນ

ຫາກທ່ານບໍ່ເຫັນເຄື່ອງສະແກນຂອງທ່ານໃນແອັບພລິເຄຊັນການສະແກນ, ທ່ານຄວນແກ້ໄຂຂໍ້ຜິດພາດໃນຂະບວນການຄົ້ນຫາ. ຂ້ອຍຂໍແນະນຳໃຫ້ໃຊ້ຄຳສັ່ງ scanimage ໃນຕົວຢ່າງ, ແຕ່ຂັ້ນຕອນທີ່ຄ້າຍຄືກັນນີ້ສາມາດນຳໃຊ້ໄດ້ກັບທຸກແອັບພລິເຄຊັນການສະແກນ ເຊັ່ນ: xsane, scanadf, simple-scan ແລະ ອື່ນໆ.

ທ່ານຈະຕ້ອງໃຊ້ຕົວປ່ຽນສະພາບແວດລ້ອມໃນເວລາທີ່ເລີ່ມຕົ້ນແອັບພລິເຄຊັນການສະແກນ (ໃນທີ່ນີ້ແມ່ນ scanimage). ຕົວປ່ຽນສະພາບແວດລ້ອມທີ່ໃຊ້ກັບຄຳສັ່ງ scanimage ແມ່ນຂຶ້ນກັບວ່າເຄື່ອງສະແກນຂອງທ່ານເຊື່ອມຕໍ່ແນວໃດ ແລະ backend ໃດທີ່ຮອງຮັບມັນ. ດັ່ງນັ້ນ, ເພື່ອເອົາ log ການແກ້ໄຂຂໍ້ຜິດພາດສຳລັບອຸປະກອນ HP LaserJet, ທີ່ເຊື່ອມຕໍ່ຜ່ານ Ethernet/Wifi ແລະ ຮອງຮັບໂດຍ backend HPAIO, ໃຫ້ໃຊ້ຄຳສັ່ງ:

$ SANE_DEBUG_DLL=255 SANE_DEBUG_HPAIO=255 SANE_DEBUG_SANEI_TCP=255 scanimage -L &> discovery_output

ຫຼື ຕົວຢ່າງ ຫາກທ່ານມີ CanoScan 8600F, ເຊື່ອມຕໍ່ດ້ວຍ USB ແລະ ຮອງຮັບໂດຍ backend genesys, ໃຫ້ໃຊ້ຄຳສັ່ງ:

$ SANE_DEBUG_DLL=255 SANE_DEBUG_GENESYS=255 SANE_DEBUG_SANEI_USB=255 scanimage -L &> discovery_output

ກະລຸນາແນບໄຟລ໌ discovery_output ທີ່ສ້າງຂຶ້ນນັ້ນໄປກັບປີ້ bugzilla.

ການແກ້ໄຂຂໍ້ຜິດພາດຂອງຂັ້ນຕອນການສະແກນ

ຫາກຄົ້ນຫາເຄື່ອງສະແກນເຫັນແລ້ວ, ແຕ່ເກີດບັນຫາໃນລະຫວ່າງການສະແກນ, ພວກເຮົາຈຳເປັນຕ້ອງໄດ້ແກ້ໄຂຂໍ້ຜິດພາດຂອງຂັ້ນຕອນການສະແກນເອງ - ເຊິ່ງໝາຍເຖິງການກວດສອບການສື່ສານລະຫວ່າງ backend ແລະ ເຄື່ອງສະແກນເມື່ອທ່ານເລີ່ມສະແກນເອກະສານ.

ການແກ້ໄຂຂໍ້ຜິດພາດຂອງການສະແກນແມ່ນມີລັກສະນະຄ້າຍຄືກັນກັບການຄົ້ນຫາ - ຄືການຕັ້ງຄ່າຕົວປ່ຽນສະພາບແວດລ້ອມກ່ອນຈະເປີດໃຊ້ຄຳສັ່ງ/ແອັບພລິເຄຊັນການສະແກນ ແລະ ບັນທຶກ log ລົງໃນໄຟລ໌. ຄຳສັ່ງທີ່ອາດຈະໃຊ້ໄດ້ແມ່ນ (ຕົວຢ່າງ: ຫາກທ່ານມີ ເຄື່ອງສະແກນຜ່ານເຄືອຂ່າຍທີ່ຮອງຮັບໂດຍ backend HPAIO):

$ SANE_DEBUG_DLL=255 SANE_DEBUG_HPAIO=255 SANE_DEBUG_SANEI_TCP=255 xsane &> debug_log

ຫຼື (ເມື່ອທ່ານຮູ້ URI ຂອງອຸປະກອນຈາກ scanimage -L - ເບິ່ງໃນ ພາກຕໍ່ໄປ):

$ SANE_DEBUG_DLL=255 SANE_DEBUG_HPAIO=255 SANE_DEBUG_SANEI_TCP=255 scanimage -d <device_uri> > out.pnm 2> debug_log

, ໂດຍທີ່ທ່ານປ່ຽນ <device_uri> ເປັນ URI ຂອງອຸປະກອນຕົວຈິງ, ຕົວຢ່າງ: 'hpaio:/net/laserjet_m1536dnf_mfp?ip=192.168.1.112'.

ກະລຸນາແນບໄຟລ໌ debug_log ທີ່ສ້າງຂຶ້ນນັ້ນໄປກັບປີ້ bugzilla.

ການເອົາ URI ຂອງອຸປະກອນເຄື່ອງສະແກນ

ຫົວຂໍ້ນີ້ແມ່ນຄູ່ມືວິທີການເອົາ URI ຂອງເຄື່ອງສະແກນເພື່ອໃຊ້ໃນການແກ້ໄຂຂໍ້ຜິດພາດຂອງການສະແກນຜ່ານ scanimage. ທ່ານບໍ່ຈຳເປັນຕ້ອງລະບຸ URI ຂອງເຄື່ອງສະແກນໃນແອັບພລິເຄຊັນທີ່ມີ GUI ເຊັ່ນ xsane ຫຼື simple-scan ເພາະວ່າແອັບພລິເຄຊັນຈະຈັດການໃຫ້ທ່ານເອງ ຫຼື ທ່ານສາມາດເລືອກເຄື່ອງສະແກນໄດ້ດ້ວຍການຄລິກເມົ້າ.

ຄຳສັ່ງ scanimage -L ຈະສະແດງຜົນລັດທີ່ມີ URI ຂອງອຸປະກອນ, ຕົວຢ່າງ:

$ scanimage -L
device `v4l:/dev/video0' is a Noname Integrated Camera: Integrated C virtual device
device `hpaio:/net/laserjet_m1536dnf_mfp?ip=192.168.1.112&queue=false' is a Hewlett-Packard laserjet_m1536dnf_mfp all-in-one

ຕົວຢ່າງ: ຂໍ້ຄວາມ 'hpaio:/net/laserjet_m1536dnf_mfp?ip=192.168.1.112&queue=false' ແມ່ນ URI ຂອງອຸປະກອນສຳລັບເຄື່ອງສະແກນ Hewlett-Packard laserjet_m1536dnf_mfp all-in-one.

ການແກ້ໄຂຂໍ້ຜິດພາດຂອງເຄື່ອງສະແກນ HP ຫາກໄດ້ຮັບການຮອງຮັບໂດຍ HPLIP

ແພັກເກດ hplip ບໍ່ມີການບັນທຶກ log ແບບລວມສູນ, ດັ່ງນັ້ນ log ບາງສ່ວນຈະອອກມາຈາກ backend HPAIO ໄປທີ່ standard output ແລະ log ຂອງເຄື່ອງມືພາຍໃນຂອງ HP ຈະໄປທີ່ journal. ດັ່ງນັ້ນພວກເຮົາຈຳເປັນຕ້ອງບັນທຶກທັງສອງຢ່າງເພື່ອໃຫ້ເຂົ້າໃຈສະຖານະການ.

ສາມາດເຮັດໄດ້ດ້ວຍວິທີນີ້:

  • ເລີ່ມບັນທຶກ log ຂອງ journal ໃນເບື້ອງຫຼັງ:

$ journalctl -f > journal_logs &
$ kill `pidof journalctl`

ຈາກນັ້ນໃຫ້ແນບໄຟລ໌ທີ່ສ້າງຂຶ້ນ - journal_logs - ໄປກັບປີ້ bugzilla. ກະລຸນາເຮັດພຽງແຕ່ໜຶ່ງການທົດສອບຕໍ່ການບັນທຶກໜຶ່ງຄັ້ງ - ນັ້ນໝາຍຄວາມວ່າ ຫາກທ່ານຖືກຂໍໃຫ້ແນບໄຟລ໌ log ສຳລັບການຄົ້ນຫາ ແລະ ການສະແກນຂອງເຄື່ອງສະແກນ HP ທີ່ຮອງຮັບໂດຍ hplip, ທ່ານຈະຕ້ອງແນບໄຟລ໌ທັງໝົດສີ່ໄຟລ໌ - discovery_output, journal_logs ສຳລັບຜົນການຄົ້ນຫາ, debug_logs ແລະ journal_logs ສຳລັບ debug_logs.

ການແກ້ໄຂຂໍ້ຜິດພາດ sane-airscan

ຫາກອຸປະກອນຂອງທ່ານຮອງຮັບ eSCL ຫຼື WSD (ທ່ານສາມາດກວດສອບໄດ້ຈາກຄຸນລັກສະນະສະເພາະຂອງອຸປະກອນ - ໂດຍຊອກຫາໂປຣໂຕຄອນທີ່ກ່າວມາ ຫຼື AirScan), ຟັງຊັນການສະແກນຂອງມັນຈະຖືກຮອງຮັບໂດຍ sane-airscan. ສຳລັບການແກ້ໄຂຂໍ້ຜິດພາດ, ນອກຈາກການບັນທຶກ log ຕາມປົກກະຕິແລ້ວ sane-airscan ຍັງຈະຮິບໂຮມຂໍ້ມູນການສື່ສານ (communication dump) ແລະ ຮູບພາບທີ່ສົ່ງອອກມາ, ເຊິ່ງເປັນປະໂຫຍດຫຼາຍໃນລະຫວ່າງການກວດສອບ.

ການແກ້ໄຂຂໍ້ຜິດພາດຂອງ sane-airscan ສາມາດເປີດໃຊ້ໄດ້ໃນ /etc/sane.d/airscan.conf ໂດຍການຕັ້ງຄ່າ:

[debug]
trace = /path/to/dir/where/debugfiles/will/be/saved
enable = true

ຈາກນັ້ນໃຫ້ເຮັດການທົດສອບເພື່ອໃຫ້ເກີດບັນຫາ (ການຄົ້ນຫາ ຫຼື ການສະແກນ), ເຂົ້າໄປທີ່ໂຟນເດີທີ່ທ່ານໄດ້ກຳນົດໄວ້ໃນ /etc/sane.d/airscan.conf, ເອົາໄຟລ໌ທັງໝົດຈາກບ່ອນນັ້ນແລ້ວແນບໄປກັບປີ້ແຈ້ງບັນຫາ.

ວິທີການແຍກ log

ໃນກໍລະນີທີ່ໄຟລ໌ log ການແກ້ໄຂຂໍ້ຜິດພາດຂອງທ່ານໃຫຍ່ເກີນໄປທີ່ຈະແນບໃນ bugzilla (ຍ້ອນວ່າບັນຫາຂອງທ່ານບໍ່ເກີດຂຶ້ນໃນການຕັ້ງຄ່າລະດັບຕ່ຳສຸດ ຫຼື log ມີຂະໜາດໃຫຍ່ເຖິງແມ່ນວ່າຈະຕັ້ງຄ່າລະດັບຕ່ຳສຸດແລ້ວກໍຕາມ), ໃຫ້ແຍກ log ອອກເປັນສາມໄຟລ໌ດັ່ງນີ້:

$ grep dll debug_log > debug_log_dll
$ grep <connection> debug_log > debug_log_connection
$ grep <backend> debug_log > debug_log_backend

<backend> ແມ່ນຊື່ຂອງ backend ທີ່ຮອງຮັບເຄື່ອງສະແກນຂອງທ່ານ (pixma, genesys, plustek, hpaio, airscan ແລະ ອື່ນໆ), <connection> ແມ່ນປະເພດຂອງການເຊື່ອມຕໍ່ທີ່ທ່ານໃຊ້ສຳລັບອຸປະກອນ (tcp, usb).

ການແຍກໄຟລ໌ຈະເຮັດໃຫ້ການກວດສອບມີຄວາມຫຍຸ້ງຍາກຂຶ້ນ (ຜູ້ກວດສອບຈຳເປັນຕ້ອງເປີດສາມໄຟລ໌ພ້ອມກັນ), ດັ່ງນັ້ນ ໃຫ້ແຍກ log ສະເພາະໃນກໍລະນີທີ່ໄຟລ໌ log ມີຂະໜາດໃຫຍ່ເກີນໄປເທົ່ານັ້ນ.