วันพฤหัสบดีที่ 10 พฤศจิกายน พ.ศ. 2559

วิธีทำ Raspberry Pi ให้เป็น Print Server

เตรียมตัว


  • Raspberry Pi 3 ลง Rasbian และเปิด ssh เรียบร้อยแล้ว (ในบล็อกนี้เป็น Jessie with PIXEL)
  • Printer เสียบปลั๊กจ่ายไฟเปิดเครื่องให้เรียบร้อย (ในบล็อกนี้เป็น HP Deskjet Ink Advantage 2060 K110)
  • ต่อ Printer กับ Raspberry Pi ให้เรียบร้อยก่อนแล้วค่อยเปิด Raspberry Pi ขึ้นมา
  • ssh เข้าไปที่ตัว Raspberry Pi
    • $ ssh pi@192.168.x.x
  • ลองตรวจสอบดูว่า Raspberry Pi เห็น Printer ที่เราเสียบผ่าน port USB แล้วหรือยัง
    • $ lsusb

Setup Printer บน Raspberry Pi


ตอนนี้เรา ssh เข้าไปทำงานที่ Raspberry Pi แล้วนะครับ ขั้นแรกต้องลง driver ของ printer ที่เราใช้อยู่ก่อน ในบล็อกนี้เป็น printer ของ HP มี package สามารถติดตั้งผ่าน apt-get ได้เลย

ติดตั้ง driver printer HP
  • $ sudo apt-get update
  • $ sudo apt-get install hplip
ติดตั้ง CUPS
  • $ sudo apt-get install cups
เพิ่ม user pi เข้าไปใน group lpadmin
  • $ sudo usermod -a -G lpadmin pi
เสร็จแล้วก็ restart Raspberry Pi ก่อนนะครับ
  • $ sudo reboot
รอซักพักค่อย ssh เข้าไปที่ Raspberry Pi ใหม่ แล้วลองตรวจสอบดูว่า เราเข้าไปอยู่ใน lpadmin group แล้วหรือยัง
  • $ groups
ถ้าเห็นมีชื่อ lpadmin โผล่ขึ้นมาก็แสดงว่า pi อยู่ใน lpadmin group แล้ว

แก้ไข CUPS configuration file

เข้าไปแก้ไขไฟล์ /etc/cups/cupsd.conf (อย่าลืม copy file ต้นฉบับ backup เอาไว้ก่อน)
  • $ sudo vim /etc/cups/cupsd.conf
แก้ไขให้เครื่องอื่นๆ ภายใน network เดียวกันสามารถเข้าถึง CUPS ได้ก่อน
  • หาบรรทัด Listen localhost:631
  • แก้เป็น (ทำ comment ด้วย # ก็ได้)
  • Port 631
  • เพิ่ม 2 บรรทัดนี้เข้าไป
  • BrowseRemoteProtocals CUPS dnssd
  • BrowseAddress @LOCAL
ต่อมาหา # Restrict access to the server... แก้เป็น

<Location />
    Order allow, deny
    Allow all
</Location>

ต่อมา # Restrict access to the admin pages...

<Location /admin>
   # ลบออกให้หมดหรือ comment ไว้ก็ได้
</Location>

ต่อมาหา <Location /admin/conf> ให้ไปลบ (หรือ comment) บรรทัด Order allow, deny ออกไป หลังจากนั้น save file แล้วสั่ง reload service
  • $ sudo service cups reload
จบขั้นตอนบน ssh ต่อไปสามารถทำงานต่อผ่าน Browser ได้แล้วจะทำบนเครื่องหลักหรือจะ remote เข้าไปทำที่หน้าเครื่อง Raspberry Pi เลยก็ได้ 
  • เปิด Browser
  • ถ้าทำงานผ่านเครื่องอื่นๆ อยู่ก็ http://192.168.x.x:631
  • ถ้าทำงานอยู่หน้าเครื่อง Raspberry Pi หรือจะ VNC Remote เข้าไปก็ http://localhost:631
ถ้าขึ้นหน้านี้มาก็แสดงว่ามาถูกทางละ


ไปที่ tab Administration หน้าตาจะเป็นแบบนี้


ต่อไปกดปุ่ม Add Printer ครั้งแรกจะโดนถาม username, password (default คือ pi, raspberry) ในขั้นตอนนี้ถ้าเรากรอก username, password ถูกแล้วแต่ไม่ผ่าน ให้ไปลองเช็คขั้นตอนการ add user เข้า lpadmin ดูอีกครั้ง ถ้าผ่านจะมาพบหน้าเลือก printer ให้เลือกชื่อ printer ที่เราต้องการเพิ่มแล้วกด Continue


หน้าต่อไปให้ check เลือก Share This Printer แล้วกด Continue ต่อไป


ต่อไปสำคัญมากคือเลือก Model printer ให้ถูก แล้วกดปุ่ม Add Printer

(รูปนี้ cap มาตอน setup เสร็จแล้ว จริงๆ ปุ่ม Modify Printer ต้องเป็นปุ่ม Add Printer)
ขั้นตอนต่อไปขี้เกียจ cap รูปแล้วกดปุ่ม Set Default Options ให้มันจบๆ ไป เสร็จ....

ถ้าไม่มีอะไรผิดพลาดเราก็จะสามารถ Add Printer ได้ (ตอนพิมพ์ก็เลือก printer ให้ถูกก็พอ)



Tips การสั่งพิมพ์ผ่าน command line

  • ssh เข้าไปเครื่อง Raspberry Pi ก่อน
  • Print file (มี Printer เครื่องเดียว)
    • $ lp filename
    • หรือ
    • $ lpr filename
  • กรณีที่ Add Printer ไว้หลายตัว
    • $ lpstat -p -d  # ตรวจดูว่ามี printer ชื่ออะไรบ้างที่เชื่อมต่ออยู่
    • $ lp -d printer filename
    • หรือ
    • $ lpr -P printer filename
    • เช่น
    • $ lp -d HP_Deskjet_Ink_Adv_2060_K110 helloworld.c
    • $ lp -P HP_Deskjet_Ink_Adv_2060_K110 helloworld.c
  • Set Default Printer
    • $ lpoptions -d printer
    • เช่น
    • $ lpoptions -d HP_Deskjet_Ink_Adv_2060_K110
    • ต่อไปเวลาสั่ง $ lpr filename ก็จะเท่ากับ $ lpr -P printer filename แล้ว
  • เอา lp หรือ lpr ไปต่อ pipe ได้นะ
    • $ program | lp
    • $ program | lpr
    • $ program | lp -d printer
    • $ program | lpr -P printer

น่าจะหมดแล้วสำหรับการทำ Raspberry Pi ให้เป็น Print Server

สวัสดีครับ :)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น