TP-Link 703N刷OpenWrt的實踐
1)下載編譯好的韌體
http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wr2543-v1-squashfs-factory.bin
韌體分為squashfs和jiffs2兩種檔案系統。具體的區別是jiffs2將韌體本身和後續安裝的包會放置在一個分割槽內,因此可以充分利用空間。squashfs則將韌體單獨掛在在/rom分割槽,系統出現問題時,系統的恢復非常便利。推薦squashfs!關鍵時刻留有退路。
2)通過原有的路由器管理頁面,進行韌體升級。
注意重啟沒有完成前,不要關掉頁面。
3)初始設定
A) password重置
預設的網段為192.168.1.*。將703N用網線和PC相連,且將PC的IP設定為不為192.168.1.1的任意IP。這裡假設為192.168.1.100,掩碼為255.255.255.0。通過PC,telnet 192.168.1.1後,若可連線。則大功成半。然後
將root的密碼進行重置。因為要用telnet和SSH的緣故,windows上要安裝putty和配置自帶的telnet,便利起見,推薦直接使用安裝linux的PC。
預設情況下不開啟wifi,另外需要連線到網路來安裝軟體,所以需要修正配置檔案。
這裡假設連線到另一路由器,來充當AP。(前提是DCHP的網段不一致,恰巧家裡的路由器被我設為192.168.0.*網段了)如果是直接充當路由器,則設定型別需要設定為PPPoE。
-- 修改/etc/config/network檔案,將靜態IP設定修改為DHCP。
config interface 'lan'
option ifname 'eth0'
option type 'bridge'
option proto 'dhcp'
#option proto 'static'
#option ipaddr '192.168.1.1'
#option netmask '255.255.255.0'
#option ip6assign '60'
-- 修改/etc/config/wireless
將option disable 1 註釋掉,開啟wifi。
如果需要密碼的場合,可如下設定
config wifi-iface
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'OpenWrt'
option encryption 'psk2'
option key '12345678' #這是wifi的密碼
C) 重啟之後,就可以搜尋到名為OpenWrt的無線網路了。
4)軟體安裝
因為主要目的還是要用703N來控制arduino,因此必須要安裝一些軟體。
#opkg update (獲取包列表,就像apt-get update 和 yum update)
OpenMrt有這個非常贊,感覺好像在用ubuntu一樣,非常暢快,速度也好。
#opkg install kmod-us-serial-ftdi (USB轉串列埠包,用於和arduino通訊)
#opkg install ser2net (串列埠轉TCP,可通過TCP控制arduino,是本次刷機的主要目的)
因為703N的ROM很小,刷完OpenWrt只剩1.1M左右的空間,因此若有剩餘空間,以下軟體強烈推薦:
#opkg install luci (Web管理介面)
#opkg install minicom (串列埠除錯)
安裝完luci後,要手工重新啟動uhttpd,/etc/init.d/uhttpd start。
可放入/etc/rc.local來做開機啟動。
opkg的其他命令:
opkg remove <package> 刪除包
opkg remove --aoturemove <package> 刪除包並且刪除所有關聯依賴包
opkg list 列出所有可安裝的包(update的結果)
opkg list-installed 列出所有的已安裝包
opkg info <package> 檢視包資訊
至此,703N刷入OpenWrt的流程就已結束。下面的流程與控制外設相關,與OpenWrt並無太多關聯。
5)Arduino裝置插入
將arduino裝置插入703的usb口,檢視/dev可發現有新裝置被增加了。在Mega1280的場合,裝置名為:/dev/ttyUSB0。
6)Ser2Net的設定
Ser2Net的功能與windows上的serProxy非常類似。它支援多種方式啟動,比較便利的是
利用/etc/ser2net.conf配置檔案,在其中追加
2222:raw:5:/dev/ttyUSB0:9600
然後,執行ser2net即可。
然後,通過telnet就可以無線控制arduino了!
重要:系統恢復的方法
途中有一次為了試圖能夠在703N上掛載普通usb(可用空間只有2M多點),解除安裝了不少系統軟體,甚至把UCI給解除安裝了,導致系統起來後沒有SSH服務,只有DNS服務,幾乎變磚。百般無奈下,終於找到有高人提供如下做法,真是柳暗花明,慶幸不已,否則只能TTL重刷了。
1)電源重啟,在藍燈開始閃爍的時候,按復位3秒 鬆開,藍燈快速閃爍進入安全模式
2)用LAN口TELNET接入 192.168.1.1 ,然後執行firstboot命令。
按照命令提示清空了設定,重啟。
3)再TELNET接入,重置ROOT使用者口令,然後重啟
4)重新加電,SSH接入 192.168.1.1 搞定。
原連結見:http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=13335