การอัพเกรดเฟิร์มแวร์ของ
WRT54G เพื่อทำเป็น APRS4R
(เรียกว่าส่วนของ
Software)
(ขั้นตอนทั้งหมดห้ามทำผ่านไวร์เลสโดยเด็ดขาด)
เอามาจาก http://www.100watts.com/smf/index.php?topic=46040.0 เขียนโดย E20GMY
-------------------------------------------------------------------------------------------------------------------------------------------------------
คำเตือน
การกระทำต่อไปนี้จะทำให้ข้อมูลเฟิร์มแวร์เดิม
ๆ ในตัว Linksys WRT54GL
สูญหายทั้งหมด
และยังผิดเงื่อนไขการรับประกันกับทางร้านผู้ขายอีกด้วย
-------------------------------------------------------------------------------------------------------------------------------------------------------
ลองมาดูวิธีการปลุกชีพ
ของเจ้าตัว WRT54GL กัน
สำหรับคนที่ทำผิดพลาดและไม่สามารถ
login เข้าไปที่ WRT54GL ได้
1. ทำการล้างความจำกันก่อน
โดยหาโลหะปลายแหลมช็อตระหว่างขา
15-16 ของตัว ROM จิ้มไว้จนกว่าจะ ping
ติดแล้วจึงปลดช็อต (ดูที่ขั้นตอนที่
5)
ถ้ารุ่น WRT54G v4 ให้ช๊อตขา 15
กับ 16
ถ้ารุ่น WRT54GL v1.1
ช๊อตขา 16 กับ 17
2. ดาวน์โหลด ไฟล์เฟิร์มแวร์
openwrt-wrt54g-2.4-squashfs.bin
มาเก็บไว้บนเครื่อง
http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/openwrt-wrt54g-2.4-squashfs.bin
( ถ้าดาวน์โหลดไม่ได้
ผมมีสำรองอยู่ที่ http://www.hs9dmc.com/APRS4R/openwrt-wrt54g-2.4-squashfs.bin
ขนาด 1.75 MB )
3. เปิด Dos command prompt แล้วพิมพ์คำสั่ง
ping -t 192.168.1.1 เปิดทิ้งไว้เลย
4. เปิดโปรแกรม tftp ของ linksys
แล้วเลือก FW
ที่ดาวน์โหลดไว้ตอนขั้นตอนที่
2 มารอไว้เลย
โหลดได้ที่ http://www.redrocknet.com/downloads/Linksys%20TFTP/Tftp.exe
( ถ้าดาวน์โหลดไม่ได้
ผมมีสำรองอยู่ที่ http://www.hs9dmc.com/APRS4R/Tftp.exe
ขนาด 36 KB )
5. จากนั้นให้เสียบสาย power
และรอจน ping มีการตอบกลับมา
ปลดช็อตที่ขา 16-17 แล้ว กด upgrade
ที่โปรแกรม tftp
โปรแกรมก็จะทำการโปรแกรม firmware
ตัวใหม่ให้เป็นที่เรียบร้อย
ปล.
เท่าที่ลองมาต้องให้เลขตัวหลังมันเป็น
TTL=100 ถึงจะยิง FW เข้านะครับ
ถ้าเป็น 64 ยิงไม่เข้า
มันจะโผล่มาประมาณ 3-5
วินาทีหลังจากเสียบสาย power
ครับ
Pinging 192.168.1.1 with 32 bytes of data:
Reply from 192.168.1.1: bytes=32 time<1ms TTL=100
Reply from 192.168.1.1: bytes=32 time<1ms TTL=100
Reply from 192.168.1.1: bytes=32 time<1ms TTL=100
Reply from 192.168.1.1: bytes=32 time<1ms TTL=100
6. หลังจากอัพเฟิร์มแวร์ตัวใหม่เรียบร้อย
การตอบกลับการ ping
ก็จะหายไปประมาณ 5-10 วินาที
จากนั้นผลการ ping
ก็จะกลับมาเป็น 64 เหมือนเดิม
Reply from 192.168.1.1: bytes=32 time<1ms
TTL=64
Reply from 192.168.1.1: bytes=32 time<1ms TTL=64
Reply from 192.168.1.1: bytes=32 time<1ms TTL=64
Reply from 192.168.1.1: bytes=32 time<1ms TTL=64
7. ใช้ dos command ทำการ telnet 192.168.1.1 เข้าสู่หน้าจอ OS ตัวที่เราเพิ่ง upgrade
พิมท์ passwd เพื่อทำการเปลี่ยน password (ระบบจะให้ป้อนพาสเวิร์ดสองครั้งเหมือนกัน)
(หลังจากเปลี่ยน password แล้วจะเข้าใช้งานด้วย telnet ไม่ได้อีกต่อไป แต่เรายังสามารถใช้โปรแกรมพวก ssh เข้าไปคอนฟิกค่าได้เหมือนเดิม โดยใช้ Protocal ssh2 ผ่านทาง port 22)
จากนั้นก็ดำเนินการติดตั้ง aprs4r ต่อไป
ข้างล่างนี้เอามาจาก http://www.100watts.com/smf/index.php?topic=5774.msg145553#msg145553 เขียนโดย E20EHQ
การลงโปรแกรม
(ตามที่ได้กล่าวมาตามข้างบน)
- นำ WRT54G มาทำการลง OpenWRT
โดยเลือก Download
ให้ถูกต้องกับรุ่นของ Router
ที่มี หรือ Chipset ของ Router ตัวนั้นๆ
- ทำการ Telnet เข้าไปที่ IP
192.168.1.1 เพื่อเข้าไป
เปลี่ยนรหัสผ่านตามที่ท่านต้องการ
- ใช้ SSH เข้าไปที่ IP
192.168.1.1 เพื่อเข้าสู่การติดตั้ง
APRS4R
อันนี้ผมเขียนเพิ่มเติมเองนอกเหนือจากเวบที่อ้างอิง
การต่อสายอินเตอร์เน็ตเข้าตัว
WRT54GL ทำได้สองวิธีครับ |
การติดตั้งโปรแกรม
APR4R เพื่อให้เป็น I-Gate
(ขั้นตอนทั้งหมดห้ามทำผ่านไวร์เลสเด็ดขาด)
(01) ใช้คำสั่ง
vi /etc/ipkg.conf แล้วแก้ไข บรรทัดที่ 2
คือ src packages
http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel
เพราะเดิมที ไม่มี เลข 7.09 (สงสัยพวกพิมพ์ตกไว้)
(02) ใช้คำสั่ง ipkg update แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง
== (แซงคิว) ============================================================
การติดตั้ง
NTP Client เพื่อให้เวลาของตัว Router
ตรงกับเวลามาตรฐาน
(A)
ใช้คำสั่ง ipkg install ntpclient
แล้วรอจนมันขึ้น Prompt
มาอีกครั้งหนึ่ง
root@OpenWrt:~# ipkg install ntpclient Installing ntpclient (2003_194-4) to root... Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./ntpclient_2003_194-4_mipsel.ipk Configuring ntpclient Done. ~ |
(B) ใช้คำสั่ง vi /etc/config/ntpclient เพื่อใส่ค่า Time Server ลงไปแทน (เราใช้ของกรมอุทกศาสตร์กองทัพเรือ time.navy.mi.th เป็นหลัก และของสถาบันมาตรวิทยา time2.nimt.or.th (203.185.69.60) เป็นรอง)
root@OpenWrt:~#
vi /etc/config/ntpclient config ntpclient option hostname 'time.navy.mi.th' option port '123' option count '1' config ntpclient option hostname '203.185.69.60' option port '123' option count '1' ~ |
(C) ทำการตั้งเวลาให้ตรงกับ server ดังนี้
root@OpenWrt:~#
/usr/sbin/ntpclient -c 1 -s -h time.navy.mi.th 40440 40734.476 89739.0 33.6 181463.2 366.2 0 |
จากค่าที่ได้
พอจะทราบว่าเวลาของตัว WRT54GL
กับเวลามาตรฐาน
ต่างกันเยอะมาก
(อันที่จริงเมื่อเราอัพเดทเฟิร์มแวร์ใหม่
ๆ ค่าของเวลาจะอยู่ที่ ปี 2006
โน๊นนนเลย..)
จากนั้นลองตรวจสอบค่าเวลา หลังจากได้ตั้งเวลากับ server แล้วดังนี้
root@OpenWrt:~#
date Tue Sep 21 06:54:04 UTC 2010 |
(Z) ถ้าท่านคุ้นเคยกับการใช้ pico editor มาก่อนนี้ ก็สามารถติดตั้ง nano editor ได้ด้วยคำสั่ง ipkg install nano (ซึ่งการใช้งาน nano จะเหมือนกับ pico ทุกประการ)
== (จบการแซงคิว) ========================================================
(03) ใช้คำสั่ง ipkg install ruby ruby-core ruby-yaml ruby-cgi แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง
root@OpenWrt:~#
ipkg install ruby ruby-core ruby-yaml
ruby-cgi Installing ruby (1.8.6-p36-1) to root... Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./ruby_1.8.6-p36-1_mipsel.ipk Installing libruby (1.8.6-p36-1) to root... Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./libruby_1.8.6-p36-1_mipsel.ipk Installing ruby-core (1.8.6-p36-1) to root... Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./ruby-core_1.8.6-p36-1_mipsel.ipk Installing ruby-yaml (1.8.6-p36-1) to root... Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./ruby-yaml_1.8.6-p36-1_mipsel.ipk Installing ruby-cgi (1.8.6-p36-1) to root... Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/./ruby-cgi_1.8.6-p36-1_mipsel.ipk Configuring libruby Configuring ruby Configuring ruby-cgi Configuring ruby-core Configuring ruby-yaml Done. root@OpenWrt:~# |
(04) ใช้คำสั่ง vi /etc/ipkg.conf แล้วเพิ่มบันทัด src aprs4r http://www.aprs4r.org/openwrt/kamikaze แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง
root@OpenWrt:~# vi /etc/ipkg.conf src release http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/packages src packages http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel src aprs4r http://www.aprs4r.org/openwrt/kamikaze dest root / dest ram /tmp ~ root@OpenWrt:~# |
(05) ใช้คำสั่ง ipkg update แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง
root@OpenWrt:~# ipkg update Downloading http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/packages/Packages Updated list of available packages in /usr/lib/ipkg/lists/release Downloading http://downloads.openwrt.org/kamikaze/7.09/packages/mipsel/Packages Updated list of available packages in /usr/lib/ipkg/lists/packages Downloading http://www.aprs4r.org/openwrt/kamikaze/Packages Updated list of available packages in /usr/lib/ipkg/lists/aprs4r Done. root@OpenWrt:~# |
(06) ใช้คำสั่ง ipkg install aprs4r แล้วรอจนมันขึ้น Prompt มาอีกครั้งหนึ่ง
root@OpenWrt:~# ipkg install aprs4r Installing aprs4r (1.0.3-2) to root... Downloading http://www.aprs4r.org/openwrt/kamikaze/aprs4r_1.0.3-2_mipsel.ipk Installing ruby-serialport (0.6-1) to root... Downloading http://www.aprs4r.org/openwrt/kamikaze/ruby-serialport_0.6-1_mipsel.ipk Configuring aprs4r ls: /etc/aprs4r/*.yaml: No such file or directory APRS4R disabled (see /etc/default/aprs4r) APRS4R Watchdog disabled (see /etc/default/aprs4r) Configuring ruby-serialport Done. root@OpenWrt:~# |
(07)
ใช้คำสั่ง vi /etc/default/aprs4r
แล้วใส่ค่านี้ลงไป
PROFILE=นามเรียกขาน.yaml
START_DAEMON=true
TIMEOUT=120
START_WATCHDOG=true
(08) ใช้คำสั่ง cd /etc/aprs4r
(09) ใช้คำสั่ง wget http://pioneer.netserv.chula.ac.th/~ntinnawa/CALLSIGN.yaml เพื่อเอา File มาแก้ไข config เป็นของผู้ใช้งาน
(10) ใช้คำสั่ง cp CALLSIGN.yaml นามเรียกขาน.yaml
(11)
ใช้คำสั่ง vi นามเรียกขาน.yaml
เพื่อตามแก้ตรงที่เป็นตัวอักษรสีน้ำเงิน
(แก้ CALLSIGN
ให้เป็นนามเรียกขานของผู้ใช้
และ ใส่ค่าพิกัดสถานี (ส่วนตัวอักษรสีชมพู
แก้ไขเพิ่มเติม)
โดยแทนที่คำว่า PUT YOUR LOCATION + INFO HERE FOR
BEACON
)
การใส่ Beacon
นั้นจะมีรูปแบบของเขาอยู่
คือ !DDMM.mmN/DDDMM.mmE#PHGxxxx Beacon Text
(เช่น
!0712.21N/10036.06E&PHG2260 I-Gate
Songkhla) - - - - คลิ๊กอ่านรายละเอียดตรงนี้
--- !ruby/object:APRS4R::APRS4RConfiguration version: devices: device0: !ruby/object:APRS4R::AX25SocketConfiguration name: rf0 type: AX25Socket enable: true remote: true deprecated: false call: HS9DMC-2 device: port: baudrate: mode: kiss/tnc2/northlink speed: duplicatePeriod: 15 timeout: 300 parameters: !ruby/object:APRS4R::KISSDeviceConfiguration name: kiss port type: KISSDevice enable: true remote: false deprecated: false device: /dev/tts/1 baudrate: 9600 port: speed: 1200 timeout: 300 txdelay: persistence: slottime: duplex: device01: !ruby/object:APRS4R::ISSocketConfiguration name: is0 type: ISSocket enable: true remote: true deprecated: false hosts: - asia.aprs2.net - aprs.station.in.th port: 14580 username: HS9DMC-2 filter: "# filter p/E2/HS" duplicatePeriod: 15 timeout: 60 plugins: digipeater01: !ruby/object:APRS4R::GatewayPluginConfiguration name: is0<->rf0 type: GatewayPlugin enable: true remote: true deprecated: call: HS9DMC-2 inDevice: rf0 outDevice: is0 localOnly: "" replacePath: "" path: "" beacon00: !ruby/object:APRS4R::BeaconPluginConfiguration name: is0Beacon type: BeaconPlugin enable: true remote: true deprecated: false device: is0 period: 300 offset: 0 message: !ruby/object:APRS4R::APRSMessage source: HS9DMC-2 destination: AP4R10 path: [] payload: "!0711.88N/10036.03E&PHG2260 I-Gate Songkhla" beacon01: !ruby/object:APRS4R::BeaconPluginConfiguration name: rf0Beacon type: BeaconPlugin enable: true remote: true deprecated: false device: rf0 period: 300 offset: 0 message: !ruby/object:APRS4R::APRSMessage source: HS9DMC-2 destination: AP4R10 path: - WIDE2-1 payload: "!0711.88N/10036.03E&PHG2260 I-Gate Songkhla" digipeater00: !ruby/object:APRS4R::GatewayPluginConfiguration name: rf0<->is0 type: GatewayPlugin enable: false remote: false deprecated: call: HS9DMC-2 inDevice: is0 outDevice: rf0 localOnly: true replacePath: true |
หากต้องการรายละเอียดของการคอนฟิกไฟล์ callsign.yaml เพื่อการทำความเข้าใจเพิ่มเติม ลองเข้าไปดูที่ http://www.aprs4r.org/cgi-bin/trac.cgi/wiki/APRS4RSoftware
(12) ใช้คำสั่ง reboot เพื่อให้ Router เริ่มทำงาน
(13)
หลังจากรีสตาร์ทแล้ว ให้ใช้
SSH เข้าไปที่ WRT54GL อีกครั้ง
แล้วไปดูข้อมูลที่วิ่งเข้า-ออกตัว
APRS4R โดยใช้คำสั่ง
root@OpenWrt:~#
tail -f /tmp/log/aprs4r/aprs4r.log
[LOG] 2010-09-21 13:44:13 BeaconPlugin:: sending beacon on device is0: HS9DMC -> APR4R via []: (!0711.88N/10036.03E&PHG2260 I-Gate Songkhla) [LOG] 2010-09-21 13:44:13 SocketSendThread:: message send on is0: HS9DMC -> APR4R via []: (!0711.88N/10036.03E&PHG2260 I-Gate Songkhla) [LOG] 2010-09-21 13:44:14 BeaconPlugin:: sending beacon on device rf0: HS9DMC -> APR4R via [WIDE2-1]: (!0711.88N/10036.03E&PHG2260 I-Gate Songkhla) [LOG] 2010-09-21 13:44:14 SocketSendThread:: message send on rf0: HS9DMC -> APR4R via [WIDE2-1]: (!0711.88N/10036.03E&PHG2260 I-Gate Songkhla) [LOG] 2010-09-21 13:44:49 SocketRecvThread:: message recv on is0: HS9YS-9 -> APU25N via [TCPIP*, QAC, HS9YS]: (@211344z0651.42N/10114.96E>/000/A=000074 javAPRSrvr=qrk5.no-ip.org:14580 {UIV32N}) [LOG] 2010-09-21 13:45:48 SocketRecvThread:: message recv on is0: HS9YS-9 -> APU25N via [TCPIP*, QAC, HS9YS]: (@211345z0651.42N/10114.96E>/000/A=000079 javAPRSrvr=qrk5.no-ip.org:14580 {UIV32N}) [WARN] 2010-09-21 13:45:54 KISSSerialConnection:: readFrame: ex: execution expired [LOG] 2010-09-21 13:50:53 SocketRecvThread:: message recv on is0: HS9LWR -> AP4R10 via [TCPIP*, QAC, T2THAPR-1]: (>APRS4R 1.0.2 Digi/I-Gate) [WARN] 2010-09-21 13:51:00 KISSSerialConnection:: readFrame: ex: execution expired [LOG] 2010-09-21 13:51:04 SocketRecvThread:: message recv on is0: HS9LWR -> AP4R10 via [TCPIP*, QAC, T2THAPR-1]: (<IGATE) [LOG] 2010-09-21 13:53:14 SocketRecvThread:: message recv on is0: HS8GLR -> APRSTH via [TCPIP*, QAC, T2THAPR-1]: (=0700.37N/10028.20E-PHG239052/hs8glr_9@hotmail.com HATYAI) |
ออกจากหน้าจอนี้โดยการกดปุ่ม Ctrl กับปุ่ม Z
เป็นอันว่าจบกระบวนการทำให้ WRT54GL v1.1 กลายเป็น APRS4R (เขาควาย)
ปล. ท่านควรเข้าใจการใช้ คำสั่ง vi ด้วยครับ (รายละเอียดการใช้ vi อยู่ด้านล่าง ก็คงไม่ยากนักนะครับ)
ข้างล่างนี้เอามาจาก http://www.webserverthai.com/linux/การใช้งาน-vi-editor/
การใช้ vi editor
การเรียกใช้ vi editor ก็ง่ายๆให้พิมพ์ว่า vi ตามด้วยชื่อไฟล์
เช่น #vi name1.txt
จะเป็นการ edit ไฟล์ name1.txt (ถ้าไม่มีจะสร้างขึ้นใหม่เลย)
โหมดการทำงาน
มี 2 โหมดคือ
1. โหมด command จะ save จะ quit จะค้นหาต้องอยู่ในโหมดนี้
2. โหมดการพิมพ์ เมื่อทำการกด i หรือ a จะเข้าสู่โหมดนี้ ใช้แก้ไขข้อมูลในไฟล์
การสลับระหว่างโหมดให้ใช้ปุ่ม Esc ( คิดอะไรไม่ออกกด Esc ไว้ก่อน )
การกระทำการ (Operator)
เมื่ออยู่ในโหมด command เราสามารถใช้ปุ่มเหล่านี้กระทำการได้
การจัดการเกี่ยวกับไฟล์
เมื่ออยู่ในโหมด command เราสามารถกระทำการเหล่านี้ได้ (ถ้าอยู่ในโหมดการพิมพ์ให้กด Esc ออกมาก่อน)
หวังว่าคงไม่ยากเกินไปนะครับ