Google
 

FreeRunner手机的基本操作

本文记录一些FreeRunner手机的基本操作。本文把FreeRunner手机简称为fr。

1、ssh登录

1.1、主机用VMWare+Ubuntu

将VMWare窗口选为当前窗口,然后用USB线连接PC和FreeRunner手机。这时如果在VMWare窗口的状态栏看到USB图标,就说明已经检测到设备。

我用的虚拟机有时会出现插上USB线但VMWare没有反应的情况。这时可以检查一下VMWare/Ubuntu的本次启动是否正常。 如果启动正常,可以先在USB上插一个容易识别的U盘或移动硬盘。识别后就umount掉,然后用同一个USB口连接fr,通常可以连接成功。

在连接好fr后,敲ifconfig可以看到usb0连接。配置这个连接的IP:

sudo ifconfig usb0 192.168.0.200

fr的IP地址默认是192.168.0.202。这时应该可以ping通fr。用ssh登录:

ssh root@192.168.0.202

fr默认没有密码。提示输入密码时直接回车。你就登录了FR。如果在ssh时出现这样的提示:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

只要:

rm ~/.ssh/known_hosts

再用ssh登录就可以了。

1.2、主机用Windows

安装驱动后, 设备管理器的网络适配器类别中会增加一个“Neo1973 USB Ethernet/RNDIS”。 在网络连接中会增加一个本地连接。将这个本地连接的ip设为192.168.0.200后, 你就可以用自己习惯的ssh工具(例如putty)登录fr了。

2、文件传输

在主机和fr之间传输文件既可以用scp,也可以用tftp。

2.1、scp

在主机上用scp复制文件到fr:

$ scp scim_1.4.7-r0_armv4t.ipk root@192.168.0.202:
root@192.168.0.202's password:
scim_1.4.7-r0_armv4t.ipk                      100% 1007KB 251.7KB/s   00:04

在fr上用scp复制文件到主机:

# scp 1.png lvjie@192.168.0.200:
lvjie@192.168.0.200's password:
1.png                                         100%   68KB  67.9KB/s   00:00

下面的例子是在虚拟机中用scp将fr上的文件复制到虚拟机与windows的共享目录。

$ scp root@192.168.0.202:3.png /mnt/hgfs/share/
root@192.168.0.202's password:
3.png                                         100%  205KB 204.6KB/s   00:00

2.2、tftp

如果主机上安装了tftp服务器,在fr上可以用tftp工具put或get主机上的文件。

2.2.1、安装tftp服务器

可以这样安装tftp服务器:

sudo apt-get install tftpd-hpa tftp-hpa

编辑/etc/default/tftpd-hpa:

$ cat /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -c -s /tftpboot"

"-l"表示独立启动,不依赖inetd。"-c"允许创建文件。"-s /tftpboot"在启动时将/tftpboot设置为根目录。创建/tftpboot,chmod到777。 重启后就可以使用tftp服务了。

2.2.2、在fr上使用tftp

fr上的tftp通常是busybox中的简化版本,用法如下:

Usage: tftp [OPTION]... HOST [PORT]
Transfers a file from/to a tftp server using "octet" mode.

Options:
        -l FILE Local FILE.
        -r FILE Remote FILE.
        -g Get file.
        -p Put file.

使用示例如下:

# tftp -p -r 2.raw 192.168.0.200
# tftp -g -r scim-pinyin_0.5.91-r0_armv4t.ipk 192.168.0.200

"-p"是put 文件。"-g"是get 文件。

3、屏幕截图

最简单的方法是使用fbgrab。 将这个安装包传输到fr后,用opkg或ipkg安装。例如:

opkg install fbgrab_1.0-r1_armv4t.ipk

安装了fbgrab后,截图就很简单了:

# fbgrab 1.png

不用fbgrab,也可以直接复制framebuffer中的数据,例如:

# cat /dev/fb0 > 2.raw

将原始数据文件传输到主机后,可以用fb2png转换到png,例如:

# fb2png 2.raw 2.png 0 480 640 16

fb2png用法如下:

fb2png 0.1 (2001-09-19)
fb2png [dev] [filename] [sec] (x) (y) (depth)
Usage: fb2png /dev/fb0 filename.png 5 800 600 24

参数[sec]是截图的延时时间,即截取sec秒后的图像。

4、通过usb线上网

在测试时可以让fr通过主机连接外网。在主机上执行:

sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
sudo sysctl -w net.ipv4.ip_forward=1

iptables命令在nat表中添加一条规则,"-s 192.168.0.0/24"指定源数据包地址,其中"24"表示掩码255.255.255.0。 sysctl命令设置内核参数net.ipv4.ip_forward,允许主机转发ip包。

用ssh登录fr后执行:

# echo nameserver 208.67.222.222 > /etc/resolv.conf
# echo nameserver 208.67.220.220 >> /etc/resolv.conf

这两个ip是OpenDNS的DNS服务器地址,OpenDNS是一个提供免费DNS服务的网站。通过上述设置,我们就可以在fr上访问外网了,例如:

5、更新fr软件

5.1、简介

更新fr软件的通俗说法就是“刷机”了,我习惯说软件升级。软件升级有两种方式,通过jtag接口或者通过通过USB线。

与NEO1973不同,FreeRunner有一块NOR flash。 如果通过NAND flash里的boot程序升级,我们可以更新kernel和rootfs,但不能更新NAND flash的u-boot。 如果我们通过NOR flash里的boot程序升级,就可以更新kernel、rootfs和NAND flash的u-boot。

5.2、启动模式

除了正常启动外,我们还可以把fr启动到NOR boot或NAND boot模式。将fr左上方的按键称作aux键。 先按下aux键并保持,再按下电源键,保持两键同时按下,过几秒钟就应该进入NOR boot模式。 先按下电源键并保持,再按下aux键,保持两键同时按下,过几秒钟就会进入NAND boot模式。

我只用过NAND boot模式,因为我的fr不能进入NOR boot模式。 我估计原因是这个fr的NOR flash是空的,没写入boot程序。我用grep在flash中查找boot程序版本:

root@om-gta02:~# grep Bootloader /dev/mtdblock1
Neo1973 Bootloader U-Boot 1.3.2-rc2-dirty-moko12
root@om-gta02:~# grep Bootloader /dev/mtdblock0
root@om-gta02:~#

在NAND flash中可以找到boot程序版本。在NOR flash里却找不到boot程序。

5.3、用dfu-util升级程序

升级用的PC程序是一个叫dfu-util的程序,既有linux版本,也有Windows版本。 Windows版本还要装一个叫作OpenMokoDFU的驱动。 我在VMWare中升级不成功,就只能用Windows版本。首先安装好驱动。将fr启动到NAND boot模式后,用USB线连接fr和主机,设备管理器中会增加一个"libUSB-Win32 Devices"的设备类别,其中有个叫"Device Firmware Upgrade"的设备。执行:

D:\tools\dev>dfu-util -l
dfu-util - (C) 2007 by OpenMoko Inc.
This program is Free Software and has ABSOLUTELY NO WARRANTY

Found Runtime: [0x1d50:0x5119] devnum=1, cfg=0, intf=2, alt=0, name="USB Device Firmware Upgrade"

这就表示找到设备了。注意在boot模式,如果一段时间没有任何操作(例如没有开始升级),是会自动关机的。更新内核的命令是:

dfu-util -a kernel -R -D uImage-2.6.24+r10+gitr9706327002caebe6633c93e605882ea37172ec57-r10-om-gta02.bin

"-a" 指定要更新的程序别名。别名可以是一个词汇或一个数字。常用别名见下表:

内核kernel或3
文件系统rootfs或6
引导程序u-boot或1
开机画面splash或4
开机参数u-boot_env或2

"-R" 表示操作完成后复位。"-D 文件名"指定要下载的文件。同理,更新文件系统的命令可以是:

dfu-util -a rootfs -R -D poky-image-sato-om-gta02-20081127082421.rootfs.jffs2

 

Google
 

个人主页留言本我的空间我的程序 fmdd@263.net