ผ่านไปหลายปี ตอนนี้มี Pi Zero W อยู่สามตัวไม่ได้ทำอะไร ยังไม่ได้ทำเลยเอามาลองดูใหม่ว่าจะทำได้ไหมครั้งนี้
จากการ Search Google ก็พบกับคนที่ทำไว้แล้วก็เลยลองเข้าไปอ่านแล้วก็ทำตามเขาเลยครับ
ทำ Print Server ด้วย Raspberry Pi Zero W และขอขอบคุณเจ้าของบทความครับ
ปัญหาแรกที่เจอคือพยายาม Fix IP Address ของ WiFi ยังทำไม่ได้ ไม่รู้ว่าติดตรงไหน ขอข้ามไปละกันเดี๋ยวจะไม่ได้เริ่มสักที
***ตอนนี้ใช้ Fix IP ผ่านทาง Router แทน
# Update package และ ทำการ Install CUPS sudo apt update sudo apt install cups # เราสามารถใช้คำสั่ง systemctl กับ cups ได้มี service ให้เหมือนกัน # เช่น ดูสถานะของ cups ด้วยคำสั่ง sudo systemctl status cups # แสดงข้อมูลของอุปกรณ์ด้วยคำสั่ง lpinfo # lpinfo - show available devices or drivers # sudo lpinfo -v sudo lpinfo -v | grep usb: # ข้อมูลอุปกรณ์ที่ต่อกับ Port USB ตามนี้ เราใช้ EPSON L360 direct usb://EPSON/L360%20Series?serial=5647444B3135373352&interface=1 # ทำการตั้งค่าอุปกรณ์โดนกำหนดชื่อ Destination และ URI ของ Printer เอาถึง Serials # lpadmin - configure cups printers and classes # sudo lpadmin -p {destination} -v {device-uri} sudo lpadmin -p EPSONL360 -v usb://EPSON/L360%20Series?serial=5647444B3135373352 # จากนั้นดูข้อมูลสถานะของ Printer # lpstat - print cups status information # sudo lpstat -p {destination} -l sudo lpstat -p EPSONL360 -l # ปกติถ้าพึ่งใส่ข้อมูลจะเป็น Disable printer EPSONL360 disable since Thu 18 Jul 2019 17:40:10 BST reason unknown # ทำการ Enable Printer ด้วยคำสั่ง cupsenable # cupsdisable, cupsenable - stop/start printers and classes # sudo cupsenable {destination} sudo cupsenable EPSONL360 # เสร็จแล้วลองดูข้อมูลเครื่อง Printer อีกครั้งด้วยคำสั่ง lpstat sudo lpstat -p EPSONL360 -l # ตอนนี้ Printer ของเราเป็น Enable แล้ว printer EPSONL360 is idle. Enable since Thu 18 Jul 2019 17:45:10 BST
เสร็จแล้วให้เปิด เว็บเข้าไปที่ IP ของ Raspberry Pi และ Port เป็น 631 ผลที่ได้คือเข้าไม่ได้ งงสิ
พอเจอแบบนี้ก็ลองตรวจสอบดูว่า Port 631 มันเปิดยัง หรือว่าติด Firewall ต้องสักอย่างนี่แหละไปดูก่อน
# Check port sudo netstat -plnt # Filter the list sudo netstat -plnt | grep ':631' # ผลที่ได้แบบไม่มี Filter Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 516/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2241/cupsd tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 654/sshd: pi@pts/0 tcp6 0 0 :::22 :::* LISTEN 516/sshd tcp6 0 0 ::1:631 :::* LISTEN 2241/cupsd tcp6 0 0 ::1:6010 :::* LISTEN 654/sshd: pi@pts/0
เจอว่า Port 631 เปิดอยู่ แต่... เปิดให้เฉพาะ Local คือ 127.0.0.1:631 เราต้องทำการ Config ให้เครื่องอื่นสามารถเข้าไปได้
โดยการเข้าไป Config ที่ไฟล์ cupsd.conf ใน /etc/cups โดยแก้ไขในส่วนของ Listen แก้เป็น 0.0.0.0:631
และ WebInterface ให้เป็น Yes
# Backup File ไว้เผื่อมีปัญหา sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.orginal # เปิดไฟล์เพื่อแก้ไข sudo nano /etc/cups/cupsd.conf
# # Configuration file for the CUPS scheduler. See "man cupsd.conf" for a # complete description of this file. # # Log general information in error_log - change "warn" to "debug" # for troubleshooting... LogLevel warn PageLogFormat # Deactivate CUPS' internal logrotating, as we provide a better one, especially # LogLevel debug2 gets usable now MaxLogSize 0 # Only listen for connections from the local machine. Listen 0.0.0.0:631 Listen /run/cups/cups.sock # Show shared printers on the local network. Browsing On BrowseLocalProtocols dnssd # Default authentication type, when authentication is required... DefaultAuthType Basic # Web interface setting... WebInterface Yes
เสร็จแล้วทำการ Restart CUPS ด้วยคำสั่ง systemctl restart cups แล้วลอง netstat -plnt ดู
เมื่อเปลี่ยนเป็น 0.0.0.0:631 แล้วลองเปิดเว็บดูอีกครั้ง
sudo systemctl restart cups sudo netstat -plnt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 516/sshd tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 2241/cupsd tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 654/sshd: pi@pts/0 tcp6 0 0 :::22 :::* LISTEN 516/sshd tcp6 0 0 ::1:631 :::* LISTEN 2241/cupsd tcp6 0 0 ::1:6010 :::* LISTEN 654/sshd: pi@pts/0
หลังจากเปิดเว็บดูอีกครั้งก็ ยังเข้าไม่ได้ แต่ก็มีอาการที่ดีขึ้น นิดหน่อย คือจากเข้าไม่ได้ เป็นไม่มีสิทธิ์การเข้า
สิ่งที่ต้องทำคือเข้าไปแก้ไฟล์ cups อีกครั้งโดยครั้งนี้เป็นการเข้าไปเพิ่มสิทธิ์ให้สามารถเข้าได้ โดยเพิ่ม Allow all เข้าไปเสร็จแล้ว Save และ Restart CUPS อีกครั้งแล้วลองเข้าดูใหม่
# Restrict access to the server... <Location /> Order allow,deny Allow all </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny Allow all </Location>
เสร็จแล้วเข้าอีกทีก็เข้าได้ในที่สุด
เมื่อต้องการเพิ่ม Printer ให้เราเปิดที่แถบ [Printer] เสร็จแล้วเลือก Printer ที่เราต้องการ จากนั้นดูที่ URL เราจะใช้ตรงนี้
http://192.168.1.203:631/printers/EPSONL360
สุดท้ายทำการ เพิ่ม Printer ก็ใช้งานได้
เสร็จแล้วลอง Print Test ดู
สั่ง Print Test แล้วไม่ออกทำไงดี
เราก็เจอตอนที่เพิ่มเครื่องพิมพ์ใหม่อีกครั้ง ครั้งแรกทำได้ แต่ครั้งที่สองทำไม่ได้ งงเหมือนกันก็ลองหาข้อมูลดูเลยได้คำสั่งเพิ่มมา 2 คำสั่ง คือ lpstat -a และ cupsaccept {destination} พอลองแล้วก็สามารถสั่งพิมพ์ได้
ยังไงก็ลองเอาไปใช้ดู ถ้าเจอปัญหาใหม่ๆ และวิธีการแก้จะเอามาเพิ่มอีก
# lpstat -a เพื่อดูสถานะการ accepting sudo lpstat -a EPSONL360 not accepting requests since Sun 21 Jul 2019 15:38:01 BST - reason unknown # ตั้งค่าให้ accepting # cupsaccept/cupsreject - accept/reject jobs sent to a destination # cupsaccept {destination} cupsaccept EPSONL360 # ทำการดูสถานะอีกครั้ง sudo lpstat -a EPSONL360 accepting requests since Sun 21 Jul 2019 15:38:01 BST
ลองสั่ง Print Test ก็ออกแล้ว
คำสั่งที่ใช้เปิด Firewall
sudo iptables -L sudo iptables -A INPUT -p tcp --dport 631 -j ACCEPT
บทความที่เกี่ยวข้อง
https://en.wikipedia.org/wiki/CUPS | https://www.cups.org/
การติดตั้งเครื่องพิมพ์บน Raspberry Pi | แปลงเครื่องพิมพ์เป็น Wireless Printer ด้วย Raspberry Pi
การล็อคไอพี (Static IP Address) ให้กับ Raspberry Pi
Check listening ports | Open ports in Ubuntu
ไม่มีความคิดเห็น:
แสดงความคิดเห็น