วันพฤหัสบดีที่ 21 กุมภาพันธ์ พ.ศ. 2556

OpenWrt Print Server โดยใช้ TP-Link TL-WR703N

วัสดีครับ วันนี้ผมขอนำเสนอโครงงานแนว Embeded Linux ซึ่งก็คือ Open-WRT ซึ่งจะนำมาทำเป็น Wireless Print Server โดยมันช่วยเพิ่มความสะดวกในการใช้เครื่อง Printer เนื่องจากไม่ต้องเชื่อม Printer เข้ากับคอมพิวเตอร์โดยตรง การเชื่อมต่อจะใช้ TL-WR703N เชื่อมกับ Printer ซึ่งผมใช้ Brother HL-2130 มานำเสนอ ในตัวของ TL-WR703N มี Wireless LAN Interface อยู่ ทำให้การเชื่อมต่อเข้าเครือข่ายไม่ต้องใช้สาย
TP-Link TL-WR703N 

Printer Brother HL-2130 ที่นำมาทดสอบเป็นเครื่องพิมพ์แบบ Laser ขาว-ดำ มีพอร์ตเชื่อมต่อแบบ USB ดังรูป
Brother HL-2130
อุปกรณ์ที่ต้องใช้มี 2 อย่างคือ
  • TP-Link TL-WR703N
  • Brother HL-2130

ในส่วนของ Software ที่ต้องใช้มีดังนี้
  • Openwrt Firmware สำหรับ TL-WR703N ผมใช้ตัวนี้ครับ Firmware
  • p910nd Printer Server software
  • usb-printer-support module
ก่อนการทดลองต้องเปลี่ยน firmware และตั้งค่า IP Address ให้กับ WiFi Interface ก่อน สามารถดูรายละเอียดได้ที่เว็บนี้ครับ
ในระหว่าการทดลองจะมีการดาวโหลด Packet มาติดตั้งเสริม ดังนั้นตัว Router ต้องสามารถเชื่อมต่ออินเตอร์เน็ตได้ด้วย

ขั้นตอนการติดตั้ง
  • ต่อสายแลนเข้ากับ Router เพื่อที่จะ Telnet หรือ SSH เข้าไปทดลอง
  • IP address ของ Router คือ 192.168.1.1
  • ทำการ Telnet เข้าไปยัง Router
  • ตั้งค่า WiFi interface โดยทำดังนี้
  • พิมพ์คำสั่ง vi /etc/config/network
  • กดปุ่ม 'i' 1 ครั้งเพื่อเข้าสู่โหมดแก้ไข
  • เพิ่ม ข้อความนี้เข้าไป 
                config interface 'wan'
                           option ifname 'wlan0'    
                           option proto 'dhcp' 
  • กด esc 1 ครั้ง แล้วพิมพ์ :wq กดปุ่ม Enter
  • พิมพ์คำสั่ง vi /etc/config/wireless
  • กดปุ่ม 'i' 1 ครั้งเพื่อเข้าสู่โหมดแก้ไข
  • เพิ่ม ข้อความนี้เข้าไป 
        config wifi-iface
              option device radio0
              option network wan
              option mode sta
              option ssid 'ชื่อของ wifi'
              option encryption psk2
              option key 'รหัสผ่าน'

  • กด esc 1 ครั้ง แล้วพิมพ์ :wq กดปุ่ม Enter
  • พิมพ์ reboot กดปุ่ม enter เราเตอร์จะรีบูตตัวเอง หลังจากเปิดตัวเองขึ้นมาใหม่ก็จะสามารถใช้งาน WiFi ได้เลย
  • เมื่อ boot เสร็จเรียบร้อยก็ให้พิมพ์คำสั่ง opkg update จะได้ผลลัพธ์


Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz.
Updated list of available packages in /var/opkg-lists/barrier_breaker.


  • พิมพ์ opkg install kmod-usb-printer ผลลัพธ์จะได้เป็น
Installing kmod-usb-printer (3.7.9-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/kmod-usb-printer_3.7.9-1_ar71xx.ipk.
Configuring kmod-usb-printer.
[  257.810000] usblp 1-1:1.0: usblp0: USB Bidirectional printer dev 2 if 0 alt 0 proto 2 vid 0x04F9 pid 0x003F
[  257.820000] usbcore: registered new interface driver usblp


  • พิมพ์ opkg install p910nd ผลลัพธ์จะเป็น
Installing p910nd (0.95-3) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/p910nd_0.95-3_ar71xx.ipk.
Configuring p910nd.



  • พิมพ์คำสั่งดังนี้
    • /etc/init.d/p910nd enable
    • /etc/init.d/p910nd start
  • พิมพ์คำสั่ง vi /etc/hotplug.d/usb/20-printer
  • กดปุ่ม 'i' 1 ครั้งเพื่อเข้าสู่โหมดแก้ไข
  • เพิ่ม ข้อความนี้เข้าไป 
#!bin/sh
if [ "$PRODUCT" = "4f9/3f/100" ]
then
case "$ACTION" in
        add)
        /etc/init.d/p910nd stop
        echo "`date` : Brother HL-2130 add" >> /tmp/hl-2130
        /etc/init.d/p910nd start >> /tmp/hl-2130
        echo "Done." >> /tmp/hl-2130
        ;;
        remove)
        echo "`date` : Brother HL-2130 removed" >> /tmp/hl-2130
        /etc/init.d/p910nd stop >> /tmp/hl-2130
        echo "Done." >> /tmp/hl-2130
        ;;
esac
fi



  • กด esc 1 ครั้ง แล้วพิมพ์ :wq กดปุ่ม Enter
  • ลองเสียบสาย USB ของ Printer แล้วถอดออก
  • เมื่อพิมพ์คำสั่ง  cat /tmp/hl-2130 ผลลัพธ์จะเป็น

Wed Feb 20 17:07:06 UTC 2013 : Brother HL-2130 removed
Done.
Wed Feb 20 17:07:06 UTC 2013 : Brother HL-2130 removed
Done.
Wed Feb 20 17:07:11 UTC 2013 : Brother HL-2130 add
Done.
Wed Feb 20 17:07:12 UTC 2013 : Brother HL-2130 add
Done.

  •  พิมพ์ชุดคำสั่งต่อไปนี้ลงไป
uci set p910nd.cfg1=p910nd
uci set p910nd.cfg1.device=/dev/usb/lp0
uci set p910nd.cfg1.port=0
uci set p910nd.cfg1.bidirectional=1
uci set p910nd.cfg1.enabled=1
uci commit p910nd
/etc/init.d/p910nd restart

  •  พิมพ์ vi /etc/config/firewall 
  • กดปุ่ม 'i' 1 ครั้งเพื่อเข้าสู่โหมดแก้ไข
  • เพิ่ม ข้อความนี้เข้าไป 
    #Open Port For Network Printer
    config 'rule'
            option 'src' 'lan'
            option 'proto' 'tcp'
            option 'desc_port' '9100'
            option 'target' 'ACCEPT'
    config 'rule'
            option 'src' 'wan'
            option 'proto' 'tcp'
            option 'desc_port' '9100'
            option 'target' 'ACCEPT'

    • กด esc 1 ครั้ง แล้วพิมพ์ :wq กดปุ่ม Enter
    • พิมพ์ reboot เพื่อรีบูตตัวเอง
    หลังจากทำการตั้งค่าฝั่ง Server เสร็จก็สามารถใช้งาน Print-Server ได้ โดยมีขั้นตอนดังนี้


    ขั้นตอนการ Add Printer 

    ในที่นี้จะแสดงตัวอย่างของ Windows 8 ซึ่งสามารถนำไปประยุกต์ใช้กับ  Windows รุ่นอื่นๆ ได้เช่นกัน โดยขั้นตอนมีดังนี้

    • เข้าไปยัง Devices and Printers ที่อยู่ใน Control Panel



    • กดที่ Add a Printer





    • คลิกที่ The printer that I want isn't listed



    • คลิกตัวเลือกล่างสุด แล้วคลิก Next




    • คลิกตัวเลือกล่างและตั้งค่าเป็น Standard TCP/IP Port แล้วคลิก Next



    • ที่ช่อง Hostname ให้ใส่หมายเลขไอพี Wireless ของ Router ช่อง Port name ใส่เป็นอะไรก็ได้ ส่วนที่ check box ให้ติ๊กออกแล้วคลิก Next


    • จะพบกับหน้า Detecting TCP/IP port ให้รอจนมันเปลี่ยนเป็นหน้าถัดไป



    • เมื่อเข้าสู้หน้า addination port information required ให้เลือก Custom แล้วคลิก Settings



    • จะปรากฎหน้าตั้งค่า คลิก OK แล้วคลิก Next

    • เลือก Driver ให้ตรงรุ่นกับ Printer แล้วคลิก Next
    • คลิก Next
    • ตั้งชื่อเครื่องพิมพ์แล้วคลิก Next
    • คลิก Next
    • คลิก Finish
    • จะปรากฎเครื่องพิมพ์รูปขวาสุด สามารถสั่งงานได้แบบปกติ

    แหล่งข้อมูล


    แหล่ง Firmware






                          8 ความคิดเห็น:

                          1. เทพจริง ทุกงาน สู้ๆนะคะ

                            ตอบลบ
                          2. สอบถามค่ะ หลังจากลง Openwrt Firmware แล้ว reboot ขึ้นมา ไม่สามารถ telnet ไปที่ router ได้ ลอง กดปุ่ม reset หลายทีแล้วก็ไม่หาย

                            ไม่ทราบว่าควรแก้ไขอย่างไรคะ

                            ตอบลบ
                            คำตอบ
                            1. เชื่อมต่อกับเราเตอร์ทางไหนครับ WiFi สายแลนหรือทางพอร์ต Serial

                              ให้ลองเชื่อทางสายแลนดูครับ เชื่อมทางไวไฟรู้สึกจะติด firewall แต่ผมก็ไม่
                              แน่ใจนะครับ ผลเป็นยังไงรบกวนรายงงานด้วยนะครับ

                              ลบ
                            2. ลองเชื่อมต่อทาง wifi และสายแลนแล้วไม่ได้ (IP ของ PC เป็น 192.168.1.10)

                              ทาง port serial ไม่ทราบว่าทำยังไงคะ อยากลองแบบ serial ค่ะ

                              เนื่องจาก firmware ที่ลงไป load มาจาก web นี้ค่ะ http://wiki.openwrt.org/toh/tp-link/tl-wr703n และคิดว่ารุ่นที่ใช้เป็นรุ่นที่ warning พอดี

                              WARNING If you have a V1.7 firmware, flash OpenWrt trunk r35037 unless you have access to the serial console!

                              รบกวนช่วยแนะนำด้วยค่ะ

                              ลบ
                            3. รบกวนช่วยตอบด้วยนะคะ

                              ลบ
                            4. ขอโทษที่ตอบช้านะครับ ไม่ค่อยได้เข้ามาดู
                              การต่อ serial port ของ router
                              ให้ดูตามภาพนี้ครับ
                              http://wiki.openwrt.org/_media/toh/tp-link/tl-wr703n_top.jpg
                              จะมี pad ไว้ต่อสายสัญญาณอยู่ที่มุมล่างขวาครับ ที่เขียนว่า
                              TP_IN TP_OUT ครับ แต่ผมจำไม่ได้แล้วว่าอันไหนเป็น tx หรือ rx
                              ลองสลับดูครับผม baudrate รู้สึกว่าจะเป็น 115200 ครับ

                              ลบ