Home Plug 使用經驗談

Home Plug 是使用電力線傳送網路訊號的一種規格, 現在已經發展到 200Mbps 的程度. 至於我們家為什麼會用這個東西呢? 這就說來話長了. 我還是簡短地說明它的好處與設定方式好了. 它比 wireless LAN 好的地方, 就是可以把網路由 4F 輕鬆傳送到 1F.

如果要 WLAN 來做這件事, 我那支 6 dBi 的 全向天線都還做不到, 訊號到 2F 就奄奄一息了. 如果買一支超大天線 或許可以達成目標, 不過我怕電磁波. 另一個做法是用 repeater. 不過在只接一個 repeater 的前提下, 我必須把 repeater 放在 2F 與 3F 的樓梯口, 我想除了我懶得去鑽牆施工, 老婆也會強烈抗議我毀壞家容吧! 在以上兩種做法都不可行的情況下, 那當然只剩 HomePNA (走電話線) 與 Home Plug (走電力線)了. 前者已經 看不到新產品了, 但後者在順發的角落裡還有幾隻. 興匆匆地抱了一對 Home Plug 回家, 接著就開始安裝.

我買的是 Gigaway 的產品, 只有 14Mbps, 而傳說中的 200Mbps 或是茂發牌 (STT) 產品, 我一時也買不到. 首先把一隻 Home Plug 插進延長線再接延長線的插座, 另一端接上我 4F 的 router 的 switch LAN 孔. 然後把我的 Notebook 接第二隻 Home Plug, 再接到另一個插座上的延長線的插孔, 把 LAN 的 IP 設成 DHCP…. 嗯, 立刻看到一個 10Mbps 的網路已經通了, 收發 mail 都正常. 好像很簡單是吧….呃…問題在後面.

我的目標是要在 2F 把 Home Plug 再接到另一個 AP router 上, 這樣我就可以在全家每個角落上網了. 嗯… 這有什麼用咧? 唯一的用處就是可以在餐廳邊吃東西邊上網, 其實也沒什麼大用, 瘋技術而已. Anyway, 我開始把第二隻 AP 設成 WAN 等於 dynamic IP, 我猜想這樣就可以跟第一隻 AP 隨便要到一個 IP. 那麼內網要怎麼設呢? 最近大家都在 bring up 小黑. 內網都是設成 192.168.1.x. 不過我的第一隻 AP 都已經 是 192.168.1.x 了, 那內網的內網要怎麼設呢? 果然學藝不精就注定要吃虧.

搞了一個晚上加一個早上, 終於把網路設對了. 最後一次犯錯是我把第二隻 AP 的 LAN AP 設成 192.168.2.1, mask 設成 255.255.0.0. 不過這樣是不行的, mask 要設成 255.255.255.0 才可以. 當然它的 DHCP 範圍也要是 192.168.2.x. 正確答案很直覺對吧! 不過我可是試了很多排列組合, 每一種也都蠻 有道理的, 只是不會 work. 為什麼講這些呢? 因為產品說明書都沒有講到這裡. 他們只希望第二隻 Home Plug 直接連 PC or Notebook, 並沒 強調如何設定 AP-Home Plug-Home Plug-AP 的解法. 花了我好幾個小時改來改去, 當然我要把它記下來, 讓未來的 使用者可以節省時間.

Automake 如何把簡單的事情變複雜

 

由於聽過 automake 這個東西, 也看見它到處肆虐, 卻不知道怎麼玩? 所以就找了資料來試試看. 一試之下, 才發現這是個把簡單的事情變難的方法 ! 當然, 網路有教人家怎麼玩? 不過可千萬別信他們的, 可以輕輕鬆鬆產生 makefile. 以下就是我悲慘的遭遇.

 

首先要安裝好 cygwin, 這個大家都會, 不成問題. 後面就一步一步來囉  :

 

source code 的目錄底下, 執行 autoscan, 一般來說執行的是 /usr/bin/autoscan, which 指令就可以確認 .這時會產生一個 configure.scan 的檔案.

 

喔喔, 光是長相就和網路上長得不一樣了. 一定是 autoscan 版本的問題. AC_INIT 變成 3 個參數, AM_INIT_AUTOMAKE 卻不見了 .

 

無可奈何之下, 只好把前幾行改成這樣  :

 

因為它會生出一個 config.h 把我的 config.h 蓋過去!

 

此時會出現一些 configure.ac 的錯誤訊息, 不過不用管它. 那是因為舊的中間檔案在作祟吧!?

 

configure.scan copy confiqure.in . 做下一步的準備 .

 

執行 autoconf, 結果會得到 configure . 它會參考剛才的 configure.in . 這個檔案大約是幾百   KB.

 

執行 aclocal, 此時應該要產生 aclocal.m4, 不過實際上它是抱怨連連. 如何看到這一句     : Can't locate object method "path" via package "Autom4te::Request" at /usr/autotool/devel/bin/autom4te line 81.

 

那就執行一下 rm -r autom4te.cache, 後面一律比照辦理 .為了避免大家過於投入 debug 的細節, 我就只講對的做法吧 

 

!中間還要加入 AC_PROG_LIBTOOL 這一行, 不然後面過不了

 

.此時執行 libtoolize –force, 若沒有執行 libtoolize, 待會兒 automake 會找不到   ltmain.sh.接著執行 autoheader, 它會產生 config.h.in. 沒有這個 automake 會抱怨   .現在再做一次 aclocal 就平安無事了. alocal.m4 這個檔案也幾百 KB.

 

此時有個抱怨: You should add the contents of `/usr/share/aclocal/libtool.m4' to `aclocal.m4', 但據說不用理它 !

 

現在人工又要介入了, 我們得寫一個 makefile.am 的檔案, 裡面放這些東西  :

 

b.c 中間用空隔分開.

 

此時可以執行 automake -a . 當然它還會再抱怨, 包括叫我用 2.59 . 天啊! 我不就是 2.59 版嗎? 因此我回去把 configure.in 的第一行改成 2.57, 重跑第 N   .生出 configure 檔了!

 

什麼? 還不是 Makefile? 只好 run ./configure 再跑個半天   .終於等到 Makefile , 好久啊! 太恐佈了   !!

 

打下去! 程式的 bug 出來了, 終於可以 debug 了 .

 

為了避免大家不知道我說了什麼? 看看我這個醜不拉幾的 a.rc   !    (倒站後找不到 code 了!)