歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

玩轉Linux下的Modem

  Modem可謂Linux下最難搞定的設備之一,它是我們使用Linux時許多失望和喜悅的源泉。本文介紹Modem相關的各種問題,比如端口、中斷、PnP以及Modem檢測、網絡配置,等等。


作者:俞良軍(仙人掌工作室)


端口與Modem類型

  計算機有許多連接其內部和外部世界的接口,部分接口是專用的,例如鍵盤接口只能連接鍵盤而不能連接任何其他設備,連鼠標也不能。

  連接外部設備的多用途接口稱為“端口”(Port)。大多數PC機都帶有兩個串行端口和一個並行端口。串行端口用一條線路串行傳送數據,每次傳送一個數據位,接收後再組合成字節。並行端口使用八條線路每次並行傳送8個數據位。大多數家用打印機都連接到PC的並行端口。

  Modem是一種通過電話線路傳送數字信息的設備。我們知道,電話系統原本只為傳送語音信息而設計,Modem技術突破了這一局限,它能夠調制(modulate)數字信息,把數字信息轉換成可以通過電話線路發送的模擬信號。在接收端,模擬信號重新被轉換成數字信號(即解調,demodulate)。Modem這個詞就是從modulator-demodulator縮寫得到。

  Modem發明於串行口廣泛應用的時代。那時的Modem都是獨立在計算機外的設備,通過電纜連接到串行口。今天我們仍可以見到這種外置的Modem,但更多的是插入主板的Modem卡,即內置Modem。由於大多數計算機都帶有二個串行口,內置Modem通常增加第三個端口。

  外置Modem的設置一般都相當簡單,只需接好串行口和Modem之間的電纜、接上電話線、開啟電源,大多數外置Modem就能直接開始工作。

  內置Modem剛出現時,它的板子上總是帶有所有通信所需的電路元件,並提供設置地址和IRQ的跳線。硬件廠商總是在尋求降低成本的途徑。隨著PC功能越來越好,Modem廠商開始用軟件來替代部分電路元件,這些Modem稱為軟Modem或Winmodem。軟Modem價格低廉,它用設備驅動程序來完成原來必須由Modem卡電路元件完成的部分任務。

  軟Modem的問題在於它的驅動程序是為Windows而不是為Linux編寫的。雖然不存在什麼特別的原因使得這種驅動程序的Linux版本無法編寫,不過這最終還得看Modem廠商。到目前為止還沒有廠商這麼做。這就意味著軟Modem不能在Linux下工作。

  購買Modem時應注意它是否注明了Linux兼容。軟Modem的清單可以在http://www.o2.net/~gromitkc/winmodem.html找到。根據經驗,如果Modem包裝盒注明了“HCF”、“HSP”、“Winmodem”或“soft modem”字樣,那麼它很可能不能用於Linux。

總線、中斷、地址和PnP

  PC機的大多數配件都和CPU、內存一起直接插入主板。主板提供許多擴展卡的接口,供顯示卡、Modem之類的設備接入使用。現在也有許多主板直接集成這些功能,因此也就不需要再加這些擴展卡。許多集成到主板的Modem都可以順利地在Linux下工作。

  主板上的接口連接到系統總線。總線有許多類型,較早的PC使用ISA總線,新的PC使用PCI總線。還有其他一些總線類型,但通常只涉及這兩種總線。這些總線的物理和電學特性都是不兼容的,ISA卡絕不能插入PCI插槽,因此購買Modem之前一定要搞清楚可以使用的總線。除非你的機器非常古老,一般它會支持PCI。

  在計算機和新插入的卡建立聯系之前,計算機必須知道該卡的I/O地址(輸入/輸出地址)和中斷請求線。

  當計算機想要和插入系統總線的卡通信時,它通過發送I/O地址來選中該卡。每塊卡都只應答自己的地址,所有卡都必須有不同的地址,

  中斷(Interrupt)稍微復雜一點。當我們在浏覽器中輸入一個URL地址,就會建立與目標網站的連接,Modem開始接收數據;與此同時,計算機還可以做其他事情,比如監視鼠標狀態、打印輸出等等。計算機不應該單獨排外地專注於一件事情,應該有一種方法讓Modem告訴計算機說:“打擾一下,這兒有傳送給你的數據”。這種方法就是中斷。

  每一個中斷都有一個獨一無二的編號,稱為IRQ。IRQ是Interrupt ReQuest的縮寫。中斷的數量很多,必須搞清楚每一個中斷被分配到了什麼設備上。例如,如果中斷來自Modem,就不應該去檢查鼠標。

  早期的擴展卡提供跳線讓用戶設置其I/O地址和IRQ。這種方法很容易出錯,比如容易把兩塊卡設置成相同的地址或IRQ。為解決這個問題,軟硬件廠商們共同建立了一個標准,這個標准允許計算機主動地查詢各個擴展卡並分配I/O地址和IRQ。它不僅使得地址和IRQ的分配自動化,同時也避免了可能出現的沖突。這個標准就是“即插即用”,即Plug and Play,簡稱PnP。

  計算機啟動時首先運行的軟件是BIOS(Basic Input Output System)。BIOS喚醒計算機的所有設備,簡單地檢查計算機安裝了哪些設備,然後裝入操作系統。PnP設備的許多配置工作均由BIOS完成,但也有部分工作要由操作系統完成。Linux還未能提供完善的PnP支持,雖然許多PnP設備可配置成在Linux下工作,但也有許多不能。

  如果Linux沒有初始化某個PnP設備,不要馬上對此絕望,很有可能存在解決方法。請查看isapnp工具的文檔,Modem-HOWTO同樣可以提供幫助。如果兼容設備清單包含了該類Modem,不管它是不是PnP的,很可能無需任何額外的努力它就可以順利地工作。

  安裝Modem最常見的問題有三個:I/O地址或IRQ設置沖突,使用的是軟Modem,不完善的PnP支持導致Modem配置錯誤。

配置撥號網絡

  Modem接入計算機之後,怎樣才能找到它?

  如果Modem是外置式的,那麼你應該清楚它連接到了COM1還是COM2。如果Modem是內置式的,那麼它很可能連接到COM3。COM1、COM2這類名字是Microsoft對串行端口的稱呼。在Linux中,COM1被稱為/dev/ttyS0, COM2是/dev/ttyS1,而COM3 則是/dev/ttyS2。在較早的Linux中,COM端口可能分別叫做/dev/cua0、/dev/cua1以及/dev/cua2。

  如果Modem是在Linux安裝期間配置的,那麼/dev目錄下會生成/dev/modem。這應該是一個指向Modem正確端口的連接。要查看/dev/modem指向了何處,在X終端輸入命令file /dev/modem。輸出結果應當類如:


/dev/modem: symbolic link
to ttyS2




  它告訴我們Modem安裝在COM3。如果/dev/modem存在且沒有指向Modem實際安裝的端口,則應刪除該連接。有些Linux發行版本提供一個名為modemtool的工具,使用它可以創建正確的連接。

  請確保所有用戶都具有訪問/dev/modem以及串行端口的權限。

  如果你使用KDE,那麼kppp是一個幫助你配置和管理Internet連接的優秀工具。大多數Linux發行都提供kppp。注意在建立撥號連接之前必須先收集必要的信息,比如用戶名字、密碼、電話號碼、DNS服務器地址。下面是具體的配置過程。

  步驟1:指定系統所安裝的Modem

  啟動kppp。如果不能在KDE菜單上找到它,試一下/usr/bin/kppp命令。

  首先要做的事情是讓kppp知道Modem在哪裡。點擊Setup按鈕,在配置窗口中選擇“Device”。

  點擊“Modem Device:”旁邊的箭頭,出現一個可選用Modem端口的清單,選擇Modem所接入的端口。接下來,再把“Connection Speed:”設置成115200,當然如果機器支持的話也可以把這個速度設置得更高。

  步驟2:測試Modem

  要測試Modem,先選擇“Modem”頁。點擊“Query Modem”按鈕,此時將出現一個窗口顯示查詢Modem的進度。請確保“Modem Volumn”(音量)設置在指示條的中間,以便在Modem工作時聽到聲音。

  如果kppp不能找到Modem,你可以返回步驟1試一下另外的端口(或速度)。

  步驟3:設置帳號參數

  接下來就可以設置帳號參數。返回“Accounts”頁,選擇“New”設置一個新的帳號。

  在“Dial”頁下面,取一個容易使人記起撥號目標的名字(建議使用ISP的名字)並將它輸入“Connection Name”框。然後再將ISP的電話輸入“Phone Number”框。

  現在選擇“IP”頁,選中“Dynamic IP Address”檢查框(如果ISP提供了固定的IP地址,則不要選中該項)。在DNS頁,輸入ISP提供的DNS服務器的IP地址。

  點擊OK保存新創建的帳號。再次點擊OK關閉“Configuration”窗口。

  步驟4:連接

  現在我們回到了最初的kppp窗口。輸入用戶名字和密碼,然後點擊“Connect”按鈕。

  如果計算機能接通Modem,它將開始向設定的ISP撥號。此時可以聽到Modem撥號的聲音。

用Minicom測試Modem

  把Modem接入計算機之後首先要做的事情之一是測試一下看看它能否工作。這可以使用前面介紹的kppp,如果kppp不行,還可以使用一個名為minicom的Linux小工具。

  第一次運行minicom的時候必須進入設置模式,告訴它Modem所使用的端口。在X終端輸入命令minicom -s(必須以root身份運行),此時將出現一個菜單。使用“Serial port setup”,確保端口和速度的設置都正確無誤。

  配置好minicom之後,接下來就可以直接向Modem發送命令。大多數Modem都支持“賀氏協議”(Hayes Protocol)。試一下AT命令,如果Modem能正常工作,它將應答OK。如果沒有得到OK應答,那麼可能端口設置錯誤,可能Modem已經損壞,可能Modem不能適應你所設置的速度等選項。

  另外一個可能的原因是Modem被設置成了“靜默”模式。試一下ATE1Q0V1命令。該命令告訴Modem回顯並應答用戶命令(如果它能夠接受命令的話)。

  賀氏協議

  正如計算機業的其它許多事情,標准往往是由特定領域第一個取得成功的公司建立。第一個真正成功的Modem廠商是賀氏(Hayes)。賀氏開發了一種用於控制其Modem的非常簡潔的語言,即賀氏協議(Hayes Protocol)。今天,賀氏協議得到了幾乎所有Modem的支持。

  賀氏協議的命令以AT開頭,一行之內單個“AT”之後可以跟隨多個命令。雖然賀氏協議的應用已經相當普遍,但某些Modem仍不能支持完整的賀氏命令集。要得到Modem所支持賀氏命令的完整清單,請參見Modem手冊或制造商網站。

  下面是你應該熟悉的基本命令,大多數Modem都支持這些命令:


Z:(重新)初始化/重置
H:掛斷
Ln:揚聲器音量(L0=最低,L1=低,L2=中,L3=高)
Mn:揚聲器控制(M0=關,M1=連接後關,M2=總是開啟)
Vn:結果碼格式(V0=以數字顯示結果碼,V1=以文字顯示結果碼)
En:命令回顯(E0=不回顯,E1=回顯命令)




Copyright © Linux教程網 All Rights Reserved