可可熊的窝

Tag Archives: E680

读取E680(i,g)的native.db文件-续

IN:Python, 编程相关   Tags: ,    Comments:4

上次写到读E680联系人,后来又增加了读短信,并且做了一些代码上的修改,代码放在了google code里,使用的方法是需要读数据库(native.db)中的什么内容就在databases这个list中添加相应的数据库名,获取数据库名的方法也在代码的首部给出了。

地址

PyFetion也放在了这里,以后Python的脚本就统一用google code管理,这样就方便我在多台电脑修改代码了。

前几天看到一篇文章比较SQLite与Bdb的文章,提到了Bdb中数据存放是使用的原始数据,所以在读到短信中的日期时需要使用struct.unpack来进行处理。

本来以为Bdb也应该是代码很小七的,类似与SQLite,没想到竟然有十多兆的代码:-(
可可熊的Python仓库:

http://code.google.com/p/pytool

————————-google code 中svn使用————————————-
svn checkout https://pytool.googlecode.com/svn/trunk/ pytool –username cocobear.cn
svn status
? cang.py
svn add cang.py
A cang.py
svn ci -m”add cang.py”

02-01
2009

读取E680(i,g)的native.db文件

IN:Life, Python, XylFTP   Tags: , ,    Comments:5

E680手机使用了Berkeley DB,关于这个数据库的一些信息可以看我给的链接。

很早以前就有打算要写个Python读取native.db(不知道这个的请G之)中联系人,短信的程序,不过没能成功,这两天又接触到了bsddb,于是今天分析了下这个native.db,没想到原来挺简单的。Berkeley DB本来就是一个很简单的数据库,只是在E680中系统把多个数据库同时存放在了一个文件中native.db,所以不可以直接使用bsddb.btopen来直接打开这个文件。由于Berkeley DB中只是一种类似Python中dict的数据库(key=value)所以要存放手机联系人(有很多字段,如地址,电话…),就需要使用多个数据库,然后每个数据库使用索引来与其它数据库建立联系。按照一般的想法应该是多个数据库的key是作为索引,然后value分别存放各种信息,但E680中的native.db恰好相反。

其实这样的结构也是很简单的,但是我在写代码的时候遇到一个问题,从某个数据库中读取一个key,然后使用bsddb中的get方法去取这个key对应的value,结果确是None,以前好像就是卡在了这一块,似乎与这个value的值有关系,这个value是二进制数据:“< x03x00x00”,不理解为什么这里不直接用整数作为索引而用这么奇怪的数据,或者这里是某种编码?

先不理这个,不管这个value是什么,使用sorted把每个数据库按照其value排序,下面是所有代码:

读取E680联系人:

不到50行就搞定了:-)

Fedora 9 通过E680G/I手机实现GPRS上网

IN:Linux   Tags: , , ,    Comments:5

电脑通过E680G/I手机实现GPRS上网

E680是一款摩托的Linux系统手机,在Windows下可以通过自带的MPT工具包实现与电脑连接的GPRS上网,在Linux下也是比较方便的,以前我也用过,只是没记下来,今天再用的时候还得看别人写的文章,还是自己记一下。

我用的是Fedora 9,一般的Linux系统都应该可以,大同小异。首先是手机端设置连接模式为调制解调器(Modem),通过数据线连接到电脑后(也可以用蓝牙,我这里没有环境),Fedora 9会识别到有新的调制解调器:

发现新硬件:

它对应的设备就是/dev/ttyACM0。接下来用wvdial这个拨号工具,如果没有这个包的话请自行安装,wvdial有一个配置文件/etc/wvdial.conf,(使用root进行下面的操作)编辑这个文件,:

添加以下内容:

如果已经有Dialer Defaults这一块则覆盖之。这里要注意使用的是cmnet,最好是手机包月不分cmnet和cmwap那种的,不然收费是很贵的。修改完该文件后还需要对/etc/ppp/options文件进行修改,添加一行:
:192.168.0.254
这个修改比较奇怪,E680系列的Linux手机都需要这样:-(,不然用wvdial拨号时会在/var/log/messages中产生下面的错误:

错误信息:

修改完这个文件后就可以开始拨号了,直接使用wvdial命令:

拨号信息:

从上面的信息中可以看出我们成功的拨号上网了,不过这时候我们还需要手动把192.168.0.254添加为默认路由:

route add default gw 192.168.0.254

ping一个google:

Ping结果:

好大的延时,还有丢包,没办法了中国移动的GPRS就这样了,EDGE在西安只有部分地区覆盖了,而且E680手机是不支持的!

终于上来了,搬到新租的房子后还没拉网线,只能先这样了。

羡慕王聪同学的3G上网啊@_@

10-16
2008

Linux系统下E680使用USB网模式

IN:Linux   Tags: ,    Comments:4

草儿同学写了一篇关于在Win下面E680的USB网模式使用,俺就说一说Linux下的使用吧。
对于目前主流的发型版来说驱动问题应该不会有的,2.6.12以后的内核应该都可以直接识别E680的,首先在手机上把连接电脑的模式设计为USB网,然后连接数据线,系统会识别到有新的网卡,在我的网络配置中可以看到:
Motorola PCS EZX GSM Phone(USBLAN),设备名一般是usb0,我们先激活它,

[cocobear@cocobear ~]$ sudo ifconfig usb0 192.168.1.1
然后ping一下手机:

[cocobear@cocobear ~]$ ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=3.59 ms

接下来我们就可以对E680进行操作了,可以使用telnet登录,用户名root,密码为空:

[cocobear@cocobear ~]$ telnet 192.168.1.2
Trying 192.168.1.2…
Connected to 192.168.1.2.
Escape character is ‘^]’.

MontaVista Linux Consumer Electronics Edition 3.0
Linux/armv5tel 2.4.20_mvlcee30-mainstone

(none) login: root
Linux 192.168.1.11 2.4.20_mvlcee30-mainstone #7 Fri Feb 13 15:39:51 CST 2004 armv5tel unknown

MontaVista Linux Consumer Electronics Edition 3.0

为了文件传输方便我们还是使用smb服务把E680挂载到电脑上:

[cocobear@cocobear webpage]$ sudo mount.cifs //192.168.1.2/system /mnt/o/ username=root

这里我们需要使用mount.cifs,而不是平常使用的mount,这时我们就把E680当作普通的一个文件夹来进行操作了。

如果你的系统使用的是utf8(使用locale查看),那么会出现乱码的现象,这里有一个解决办法,我没有去试,应该可以的,但是很不方便,根据文中提到的原理我们完全可以这样搞定:

[cocobear@cocobear soft]$ export LC_ALL=zh_CN.GB18030

这里你需要把Terminal关掉,重新打开一次,如果你使用的是gnome-terminal,可以在菜单中把当前显示的编码改为GB18030,这样访问E680中的文件就不会是乱码了:
[cocobear@cocobear ~]$ cd /mnt/o/mmc/mmca1/soft/
[cocobear@cocobear soft]$ ls
quicksms.jar 快捷方式更改.mtf 删自带主题1_0.mpkg
YYwb_V0.1.3_For_E680i 快速短信(20080303)
[cocobear@cocobear soft]$

如果你想在图形界面中使用的话可以在窗口管理器的菜单中找到:打开位置这个选项,在这里输入:
smb://192.168.1.2/system
你就可以很方便的进行操作了,但这时乱码还会出现:-(

很不幸,俺发现没有权限对挂载的文件系统进行操作,郁闷,暂时还没有找到解决的办法:-(

Update 08.04.01:
今天又试了试发现在图形界面(nautilus)中各种复制、删除都正常,但命令行下就出错了:

[cocobear@cocobear soft]$ cat >d
bash: d: 权限不够

很奇怪的错误,乱码问题在nautilus中依然存在。

03-31
2008
loading...