linux training in Thailand
| Home | Articles | Webboard | Download | FreeTips | Resources | Training | Blog | Web Link |
| Courses | Schedule | Price | Promotion | Map | Customer Ref. | Instructors | Certification | FAQ |
เนื่องจากเราจะปิดทำการ 4 วัน ในวันที่ 1-4 พฤษภาคม 2551 กรุณาติดต่อ โทร. 089-890-5494

ตอน Zyxel ADSL USB Modem

โดย ธีรภัทร มนตรีศาสตร์,RHCE,LPIC-2

ในวันนี้บริการอินเตอร์เน็ตชนิดบรอดแบนด์ได้รับความนิยมเพิ่มขึ้นอย่างรวดเร็ว สำหรับผู้ใช้งานทั่วไปตามบ้างหรือกิจการขนาดเล็กเพียงยกหูโทรศัพท์แจ้งความประสงค์ไปยังผู้ให้บริการโทรศัพท์แล้วรอแค่เพียงไม่กี่วัน อินเตอร์เน็ตความเร็วสูงหรือ ADSL ก็จะมาติดตั้งให้ได้สัมผัสกับประสบการณ์ใหม่บนโลกของไซเบอร์กันแล้ว ซึ่งนอกจากสัญญาณอินเตอร์เน็ตความเร็วสูงที่ว่านี้แล้ว ยังแถมอุปกรณ์เชี่อมต่อหรือโมเด็มมาให้ใช้ฟรีอีกด้วย นี่เป็นที่มาของบทความ "ฮาร์ดแวร์ในอ้อมกอดของลีนุกซ์" ในวันนี้ที่เราจะมาพูดคุยกันถึงการใช้งานลีนุกซ์ร่วมกับโมเด็มประเภทนี้กัน Zyxel Prestige 630 ใช่แล้วครับ โมเด็มรูปร่างกระทัดรัดของ Zyxel ตัวนี้ เป็น ADSL USB Modem ที่ใช้อินเทอร์เฟสแบบ USB 1.1สนับสนุนดาวน์สตรีมถึง 8 Mbps และอัพสตรีมที่ 832Kbps อาศัยพลังงานไฟฟ้าจากพอร์ต USB เช่นเดียวกับอุปกรณ์ที่ใช้อินเทอร์เฟสเช่นนี้ รายละเอียดเหล่านี้คงไม่สำคัญเท่ากับคำตอบที่ผู้ใช้งานลีนุกซ์สนใจที่สุดคือ มันใช้งานร่วมกับลีนุกซ์ได้หรือไม่? และจะต้องทำอย่างไรบ้าง? สภาพแวดล้อมของการทดสอบเนื่องจากผู้เขียนต้องการทดสอบในสภาพที่ครอบคลุมทั้งการใช้งานกับลีนุกซ์เคอร์เนล 2.4 และ 2.6 จึงเลือกทดสอบกับ Fedora Core 1 เป็นหลัก ด้วยเครื่องพีซี AMD Duron 950MHz RAM 128MB ใช้เมนบอร์ด Asus A7V8x โดยติดตั้ง Fedora Core 1 แบบ Everything ( ติดตั้งแพคเกจครบทั้งหมด ) เมื่อเปิดเครื่องพีซีลีนุกซ์ไว้ แล้วเสียบโมเด็มตัวนี้เข้าที่พอร์ต USB ก็พบว่า Fedora ของเราไม่มีไดร้วเวอร์ที่เหมาะสมกับอุปกรณ์ตัวนี้ เมื่อเรียกคำสั่ง lsusb ดูพบว่ามีข้อมูลเกี่ยวกับ Vendor/Product ID ดังรูปที่ 1

รูปที่ 1 ผลลัพธ์คำสั่ง lsusb

จากคำสั่ง lsusb ทำให้เราได้ข้อมูลเกี่ยวกับโมเด็มตัวนี้ซึ่งสามารถนำไปค้นหารายละเอียดเกี่ยวกับชิปควบคุมของมัน และโปรแกรมไดร้วเวอร์ที่เหมาะสมได้ ซึ่งพบว่ามีข้อมูลที่น่าสนใจอยู่ตามเว็บไซต์หลายแห่ง เช่น http://www.linux.ie/articles/tutorials/zyxel630-11.php เป็นต้น ซึ่งนำมาใช้เป็นแนวทางการคอนฟิกได้เป็นอย่างดี ดาวน์โหลดซอฟต์แวร์ ซอฟต์แวร์ที่จำเป็นต้องใช้ในการคอนฟิกมีส่วนประกอบหลายส่วน ดังนี้
  • rp-pppoe ซึ่งใช้ในการเชื่อมต่อด้วยโปรโตคอล PPPoE ( PPP over Ethernet ) สามารถดาวน์โหลดได้จาก
    http://www.roaringpenguin.com/products/rp-pppoe
  • amedyn เป็นโมดูลไดร้วเวอร์สำหรับชิปตัวนี้ ดาวน์โหลดได้ที่ http://sourceforge.net/projects/zyxel630-11
  • libusb ใช้ประกอบการคอมไพล์ ดาวน์โหลดได้ที่ http://libusb.sourceforge.net
  • linux-atm ใช้ในการคอมไพล์เช่นกัน ดาวน์โหลดได้ที่ sourceforge.net/projects/accessrunner/
  • คอมไพล์เคอร์เนล และติดตั้งเคอร์เนลใหม่ ขั้นตอนนี้จำเป็นมากสำหรับผู้ที่ใช้เคอร์เนล 2.4 โดยจะต้องทำการคอมไพล์เคอร์เนลใหม่ ซึ่งคุณสมบัติของโปรแกรมต้นฉบับของเคอร์เนลของ Fedora Core 1 จะเปิดการทำงานที่จำเป็นสำหรับการเชื่อมต่อกับอุปกรณ์ USB ไว้แล้ว ในส่วนของการสนับสนุนโปรโตคอล PPPoE /PPPoA ก็มีแล้ว แต่อย่างไรก็ตามเนื่องจากเราจะต้อง patch โมดูลใหม่เข้าไปจึงหลีกเลี่ยงการคอมไพล์เคอร์เนลใหม่ไม่ได้ สำหรับขั้นตอนการคอมไพล์เคอร์เนลและติดตั้งเคอร์เนลใหม่สำหรับผู้ที่าคุ้นเคยอยู่แล้วคงไม่มีอะไรเพิ่มเติมเป็นพิเศษ แต่สำหรับผู้ที่ยังไม่เคยคอมไพล์มาก่อนขอให้ศึกษาจากบทความในเว็บไซต์ของผู้เขียนที่ http://www.itdestination.com/articles/ นะครับ หลังจากบูตด้วยเคอร์เนลใหม่แล้วจึงดำเนินขั้นตอนต่อไป กรณีที่ท่านใช้งานลีนุกซ์ที่เป็นเคอร์เนล 2.6 เช่น Fedora Core 3 สามารถข้ามขั้นตอนนี้ไปได้เลยไม่จำเป็นต้องคอมไพล์เคอร์เนลใหม่แต่อย่างใด คอมไพล์โมดูลไดร้วเวอร์ amedyn เริ่มต้นที่เข้าไปที่ /usr แล้ว extract ไฟล์ amedyn-2003-10-29-src.tgz แล้วจะพบว่ามีไดเร็คทอรี่ชื่อ /usr/amedyn เกิดขึ้น ให้สำเนาโปรแกรมต้นฉบับของ speedtch.c มาทับไฟล์ของ amedyn ที่ชื่อ xdslusb_2.4.c ดังนี้
    # cp /usr/src/linux-2.4/drivers/usb/speedtch.c /usr/amedyn/module/xdslusb_2.4.c
    จากนั้นใช้โปรแกรมอีดิตเตอร์แก้ไขหมายเลข Vendor/Product ID ให้สอดคล้องกับชิปโมเด็ม Zyxel ของเรา ดังรูปที่ 2

    รูปที่ 2 แก้ไขหมายเลข Vendor/Product ID

    หลังจากแก้ไขหมายเลข Vendor/Product ID แล้ว ลงมือคอมไพล์ด้วยคำสั่งต่อไปนี้ # cd /usr/amedyn
    # make

    หากไม่มีความผิดพลาดอะไร จะมีไฟล์คอนฟิกและสคริปต์ควบคุมเกิดขึ้น ซึ่งจะต้องปรับแก้ไขค่าพารามิเตอร์ที่เกี่ยวข้องกับผู้ให้บริการ เช่น ค่า VPI/VCI โดยใช้โปรแกรมอีดิตเตอร์แก้ไขไฟล์ /etc/amedyn ( ค่าพารามิเตอร์ที่เห็นนี้ผู้เขียนทำการทดสอบกับ ADSL ของ TOT ) ดังรูปที่ 3

    รูปที่ 3 กำหนดค่าพารามิเตอร์ของ PPPoE

    คอนฟิกโปรแกรม rp-pppoe ก่อนที่จะเริ่มติดต่อเข้าสู่อินเตอร์เน็ตจะต้องกำหนดค่าเกี่ยวกับการเชื่อมต่อของโปรแกรม rp-pppoe เสียก่อนซึ่ง Fedora Core จะติดตั้งแพคเกจนี้ให้มาพร้อมอยู่แล้ว ดังนั้นจึงเข้าสู่ขั้นตอนของการคอนฟิกได้ทันที โดยรันโปรแกรม
    # adsl-setup
    adsl-setup จะสอบถามข้อมูลทีละคำถาม ให้ตอบไปตามลำดับ เช่น ชื่อล๊อกอิน รหัสผ่าน เป็นต้น ดังรูปที่ 4 เมื่อจบขั้นตอนนี้โปรแกรมจะจัดเก็บชื่อและรหัสผ่านไว้ที่ไฟล์ /etc/ppp/pap-secrets ดังรูปที่ 5

    รูปที่ 4 ขั้นตอนคอนฟิก PPPoE


    รูปที่ 5 ไฟล์จัดเก็บชื่อและรหัสผ่าน

    การใช้งาน ADSL ในชุดโปรแกรม amedyn จะมีสคริปต์ควบคุมมาให้ด้วยแล้ว โดยคำสั่ง amstart.sh ใช้เพื่อการเริ่มเชื่อมต่อ และ amstop.sh ใช้ตัดการติดต่อออก ดังรูปที่ 6 และ 7

    รูปที่ 6 การเชื่อมต่อด้วยคำสั่ง amstart.sh


    รูปที่ 7 คำสั่งยุติการเชื่อมต่อ ADSL

    หากการเชื่อมต่อสำเร็จ จะสามารถตรวจสอบได้จากคำสั่ง ifconfig จะเห็นว่ามีอินเทอร์เฟสเพิ่มขึ้นเป็น ppp0 และ nas0 ดังรูปที่ 8 แน่นอนว่าคุณควรตรวจสอบเรื่องของ Default Gateway ว่ามีการกำหนดลงมาให้ด้วยแล้วหรือไม่ด้วยคำสั่ง route -n และสิ่งที่หลายๆ ท่านมักหลงลืมไปก็คือ ค่าของ DNS Server ที่จะต้องใส่ไว้ที่ไฟล์ /etc/resolv.conf มิฉะนั้นคุณจะไม่สามารถเรียกชื่อเว็บไซต์ต่างๆ ได้ตามที่ต้องการ จะพาลเข้าใจผิดไปว่าโมเด็มไม่คอนเน็กเสียอีก

    รูปที่ 8 ผลลัพธ์คำสั่ง ifconfig

    ปัญหาหนึ่งที่มักจะพบอยู่บ่อยๆ ก็คือ หากมีการเชื่อมต่อซ้ำบางครั้งจะเกิดข้อความแสดงความผิดปรกติเกี่ยวกับ USB ขึ้น และทำให้ไม่สามารถเชื่อมต่อได้ ดังรูปที่ 9 วิธีแก้ไขคือ ให้ถอดสายโมเด็มด้านใดด้านหนึ่งออกแล้วเสียบใหม่จึงจะใช้คำสั่ง amstart เพื่อเชื่อมต่อได้อีกครั้งหนึ่ง

    รูปที่ 9 ข้อความผิดพลาดเมื่อคอนเน็คซ้ำ

    อุปสรรคช่วยให้เกิดการพัฒนา ท่านผู้อ่านคงรู้สึกเช่นเดียวกันถึงความยากลำบากในการติดตั้งใช้งานอุปกรณ์ฮาร์ดแวร์ต่างๆ กับระบบปฏิบัติการลีนุกซ์ อย่างกรณีของโมเด็ม ADSL USB ที่ผ่านไปนี้ช่างเต็มไปด้วยขั้นตอนที่ยุ่งยากต่อการทำความเข้าใจและปฏิบัติ แต่ผู้เขียนมีความเชื่อว่าอุปสรรคเหล่านี้จะเป็นแรงบันดาลใจให้เกิดการเปลี่ยนแปลงในด้านการพัฒนาที่ดีกว่าเดิม บทเรียนที่ชาวโอเพ่นซอร์สต้องเผชิญหน้ากับปัญหาด้านความเข้ากันได้เกับอุปกรณ์ฮาร์ดแวร์ทำให้เกิดเทคโนโลยีใหม่ๆขึ้นมา ไม่ว่าจะเป็น udev หรือ Linux HAL ( Linux Hardware Abstraction Layer ) หรือ Project Utopia หรือ ABI ( Application Binary Interface ) รวมทั้งโปรเจคอิสระอย่างเช่น Driver on Demand ล้วนเกิดขึ้นและกำลังพัฒนาไปข้างหน้า สักวันหนึ่งคุณอาจจะนึกขำตัวเองที่เคยนั่งคอมไพล์เคอร์เนลลีนุกซ์เพียงเพื่อติดตั้งโมเด็มซักตัวนึง แต่มันก็เป็นประสบการณ์ที่ดีไม่ใช่หรือ