2010年1月26日 星期二

linux gprs

GSM 上的 Linux GPRS 和資料

GPRS 是一個用於透過 GSM 傳輸資料的資料分組服務,是一種卓越的數位蜂窩標準。儘管 GSM 上的資料是線路交換的並且不管怎樣都佔用一個通道,但是 GPRS 上的資料是一直連接的(always-on)、分組交換(packet-switched)的資料流程,使用者根據使用付費。GSM 的傳輸速度一般是 9.6 kbps,而 GPRS 能夠執行的速度為 56 kbps 到 170 kbps。

GPRS 和 GSM 晶片通常有一個到系統的 UART 介面。對於內置 GSM/GPRS 支援的電路板(例如,一個帶有連接到 UART 通道的 Siemen MC-45 模組的電路板),傳統的串列埠驅動程式就能驅動這個鏈結。考慮 PCMCIA/CF 的形成因素(例如一張可選 GPRS 網卡), serial_cs (是用於存取 PCMCIA 串列埠設備的普通網卡服務驅動程式)能夠允許其他作業系統把此網卡當作一個串列埠設備。第一個未使用的串列埠設備(/dev/ttySx)被分配給此網卡,然後此網卡就可以被當成串列埠設備存取。 serial_cs 也可以透過全球定位系統 (GPS) PCMCIA 和 CF 網卡模擬序列埠。針對 USB GPRS 數據機而言,USB-to-serial 轉換器一般 USB 埠轉換為虛擬序列埠,因此系統其他部分就會將它看作串列埠設備。

GPRS 網路使用 GGSN(GPRS 閘道支援節點) 連接到一個外部網路(例如 Internet)。GPRS 設備類似於擁有擴充 AT 指令集的數據機,在進入資料模式之前必須使用 AT 命令定義一個上下文。上下文字串看起來類似於清單 3 中給出的範例。

清單 3. 上下文字串

'AT+CGDCONT=1,"IP","internet.voicestream.com","0.0.0.0",0,0'



在這個範例中, 1 代表上下文編號, IP 是資料分組類型, internet.voicestream.com 是接入點名稱(APN) 字串, 0.0.0.0 意味著服務提供者選擇 IP 位址,其他參數與資料和標頭壓縮有關。APN 字串取決於服務提供者。一般不需要使用者名稱和口令。

PPP 允許網路協定(比如 TCP/IP)在串列埠鏈路上執行。在無線網路的環境中,PPP 可以使 TCP/IP 執行於 GPRS 上,資料透過 GSM、Bluetooth RFCOMM 以及 IrDa COMM 進行傳輸。清單 4 給出了一種呼叫 PPP 後臺預設程式 pppd 的公共語法。

清單 4. 呼叫 PPP 後臺預設程式 pppd 的公共語法

pppd ttySx call connection-script



在這個範例中, ttySx 是實體或虛擬的串列埠設備(PPP 執行其上), connection-script 是 /etc/ppp/peers/ 目錄中的一個檔檔,這個目錄包含在 pppd 和服務提供者之間交換的用於建立鏈結的 AT 命令序列。建立鏈結並完成身份驗證以後,PPP 將啟動網路控制協定(Network Control Protocol,NCP)。IPCP (Internet Protocol Control Protocol,Internet 協定控制協定) 是用於執行 IP 的 NCP。一旦 IPCP 成功透過 IP 地址,PPP 就開始與 TCP/IP 堆疊互動。

清單 5 給出了用於連接到 GPRS 服務提供者的 PPP 鏈結腳本範例,而清單 6 給出的是用於到 GSM 服務提供者的資料連接的連接腳本範例。

清單 5. 針對 GPRS 的 pppd 鏈結腳本範例(/etc/ppp/peer/gprs-script)

115200
connect "/usr/sbin/chat -s -v "" AT+CGDCONT=1,"IP",
"internet2.voicestream.com","0.0.0.0",0,0 OK AT+CGDATA="PPP",1"
crtscts
noipdefault
modem
usepeerdns
defaultroute
connect-delay 5000



從作業系統的角度出發,GSM 上的資料類似於透過撥號除錯解調器連接收發的資料。網際網路服務提供商(ISP)的電話號碼是使用 GSM 撥入的,並且會建立一個撥號連接。利用使用者名稱和口令進行身份驗證。

一旦 PPP 建立了與服務提供者的 IP 連接,TCP 應用程式例如 Web 瀏覽器就可以不加更改地在 GSM/GPRS 設備上執行。

gsmlib 專案為透過 GSM 發送語音和 SMS(Short Messaging Service,短信服務)提供了實用程式(請參閱 參考資料了解更多關於 gsmlib 的資訊)。它包括用於存取 Subscriber Identity Module (SIM)網卡中的電話簿、收發 SMS 訊息等功能的實用程式。

清單 6. 用於透過 GSM 傳輸資料的 pppd 連接腳本範例(/etc/ppp/peer/gsm-script)

115200
connect '/usr/sbin/chat -s -v ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT "BUSY" "" AT OK
ATDT CONNECT'
crtscts
noipdefault
modem
user "linux"
usepeerdns
defaultroute
connect-delay 5000

沒有留言:

張貼留言