Manually using GSM/zh tw
From Openmoko
When men were real men and typed their own AT commands... 這篇文章簡單的為您介紹了如何使用手動的方式,使用GSM。
Contents |
需求
- 安裝最新的u-boot boot-bootloader的GTA01Bv2 或 GTA01Bv3(透過USB)。
- 不要連接任何debug board!
實際操作
啟動系統
- 確認你所使用的 rootfs在 /etc/network/interfaces 下包括 'auto usb0'
- 將主機的usb0介面設定為 192.168.0.200 netmask 255.255.255.0 See USB_Networking
- ssh to root@192.168.0.201
停用 getty
我們預設的映像檔在/dev/ttySAC0都包含了getty,請編輯/etc/inittab ,並且停用該通訊埠的getty。
消除loglevel
NOTE: You don't need this in kernel builds with patchset ≥ 1288 |
為了避免kernel寫入 /dev/ttySAC0,你必須使用 dmesg -n1
.
啟動GSM Modem
- 檢核 getty 是否存在,或者是其它的程式是否在 /dev/ttySAC0 上執行
root@fic-gta01:~$ lsof | grep ttySAC0
- 若gsmd 目前使用 GSM modem,使用下列指令停用它:
root@fic-gta01:~$ /etc/init.d/gsmd stop
- 啟動GSM Modem
root@fic-gta01:~$ echo "1" > /sys/bus/platform/devices/neo1973-pm-gsm.0/power_on
連接到GSM Modem (using socat)
- If you have the command socat (built and installed):
root@fic-gta01:~$ socat - file:/dev/ttySAC0,crtscts,crnl AT-Command Interpreter ready
連接到 GSM Modem (使用cu)
若你沒有 socat,你可以使用 cu,雖然它有一些檔案存取及硬體流量控制的問題存在。
- 修改ttySAC0的使用權限
root@fic-gta01:~$ chown uucp.uucp /dev/ttySAC0
- 安裝 /usr/spool/uucp
root@fic-gta01:~$ mkdir -p /usr/spool/uucp root@fic-gta01:~$ chown uucp.uucp /usr/spool/uucp
- 啟動 CTS/RTS 流量控制
root@fic-gta01:~$ stty -F /dev/ttySAC0 crtscts
- 存取 GSM Modem UART
root@fic-gta01:~$ cu -l /dev/ttySAC0 連接 AT-Command Interpreter Ready OK
若停滯在 "Connected" 訊息,你的GSM modem可能無法運作 - 請查看check Bug #256,或者,你可能想要再次重新啟動
cu seems to have problems with the hardware flow control. The one way I always managed to get GSM working is to start cu first and then on a different console issue the stty command. --DanielWillmann 01:15, 20 March 2007 (CET)
- close the connection with <Return>~~.<Return>
OK ~[fic-gta01]. Disconnected. root@fic-gta01:/$
Using it manually
Registering with the Network
- enter the following Hardware:AT_Commands:
ATE1 OK AT+CFUN=1 ERROR AT+CPIN="...." OK AT+COPS OK
List available carriers
This can take a few seconds to process but will list the available carriers
AT+COPS=?
Answering an incoming call
RING ATA OK
Dialling an outgoing call
To actually be able to talk you have to configure your audio accordingly
root@fic-gta01:~$ cd /etc/alsa/ root@fic-gta01:/etc/alsa$ wget http://opensource.wolfsonmicro.com/~gg/neo1973/gsmheadset.working.state root@fic-gta01:/etc/alsa$ alsactl -f /etc/alsa/gsmheadset.working.state restore
Up the "Amp right" volume to hear the speaker on both ears, then dial (note the ; at the end of the dial string, this signifies a voice call, if you omit the ; it is regarded as a data call).
ATD012340234;
If you get NO CARRIER, try...
ATD+xxyzzzzzzz
ie, ATD+<country_code><area_code><phone_number>
Hanging up
ATH OK
Using gsmd
You can use the gsmd and libgsmd-tool programs to have a slightly more high-level interface to the GSM Modem. It's still console based, though.
For further instructions, see gsmd
Using tui
Tui (available from sourceforge) is able to do all this. It is still text-based, but input-rxvt can take data from touchscreen, so you can actually do the calls using your finger. It also plays wav file on incoming call, so it is theoretically usable. It even does caller id.