分类 硬件折腾 下的文章

曾看到有文章介绍Nexus 5(d820)开启LET Band 3,即能使用联通4G,一直想试试。但联通4G套餐还是太贵了,只能作罢。直到上个月收到短信,说我的卡已开通4G网络,于是找了个机会,升级系统之余,顺便开启4G。

操作过程参考了这个文章:
Nexus 5 D820 Android Lollipop 5.1 美版破解band 3
http://hi-it.org/1335.html

总结一下我的经验及步骤吧:
1)手机端准备:
1.1)备份系统及数据。32G版的Nexus 5,备份起来很耗时间。
1.2)刷官方Android 5.0或5.1,并root,开启开发模式。
1.3)安装Recovery。TWRP或Clockworkmod的,都可以。个人比较习惯Clockworkmod。
1.4)安装 Nexus 5 Field Test Mode。
1.5)安装 franco.Kernel updater ,然后运行并安装最新的kernel。

2)电脑端准备:
2.1)最好使用windows7操作系统。windows8会涉及更多的操作步骤。
2.2)准备好电脑端adb。
2.3)安装LG驱动。
2.4)安装QPST。
2.5)准备好qcn文件。

3)开刷:
3.1)手机插上电脑,确认开发模式已开启。
3.2)手机命令行激活 diag mode 。在电脑端运行以下命令(手机端会提示root权限):

adb shell
su
setprop sys.usb.config diag,adb

然后打开 设备管理器 -> 端口(COM和LPT),应该看到“LGE AndroidNet USB Serial Port (COM4)”。COM口的数字,会根据实际情况而定。
3.3)获取SPC码。

首先,电脑端运行命令`adb logcat -s LG_SVC_CMD`。
接着,手机端运行 Nexus 5 Field Test Mode ,进入 Settings (View) -> LTE -> Edit。此时查看电脑端的输出,找到SPC码。在手机端输入该SPC码后,进入了EDIT界面。依次修改设置为“Disable”、“Disable”、“Enable”、“1”、“1”、“0”,然后手机端不要动。

3.4)刷入QCN文件。

电脑端,运行 QPST -> QPST Configuration ,点 Ports ,检查COM口是否已添加。若没有,则点“Add New Port”进行添加。
电脑端,运行 QPST -> Software Download ,点 Restore ,看到 Port 显示手机所在COM口。在 QCN File 点 Browse ,选择 QCN 文件中的“80XXXXXX_RF_QDART_band3 RxTx NV patch.qcn”。SPC填入手机的SPC码。然后点 Start 。
如果看到Errors显示 Could not Reset the Phone 的报错,就表示成功了。
最后重启手机就应该可以了。

相关软件下载地址:
http://yunpan.cn/cgyfsDMTARiY9 密码 56ea

开启4G后,用手机网络上网时确实快了很多。主要体现在打开微信朋友圈,一下子就用了几十MB流量。对于月套餐只有500MB的我来说,一下子就掉了两天的流量,真是悲喜交集。

垂涎于Raspberry Pi 2 Model B的四核性能及低廉的价格,待其跌到200RMB左右时,终于还是入手了一个。

装完Raspbian,立马试了XMBC/Kodi媒体中心。效果还是跟以前一样,不尽人意。无它的,就是视频和音频的编码支持不完善,导致很多视频格式都不支持。(为了解决电视机播放手机视频的问题,入手了Chromecast。但Chromecast也不是个省油的灯,后面再说吧。)于是Pi只能放在后台,作为路由和服务器来使用了。

需求:增强无线网络覆盖范围,即作为桥接的无线路由,手机和Chromecast可以通过其上网,特别Chromecast要可以访问Google。

硬件准备:
1)Raspberry Pi 2 Model B,1台。
2)16GB的TF卡,1个,刷上Raspbian。
3)无线网卡,2个(磊科NW338和水星MW150UH),并且有一个(水星MW150UH)支持Ad-hoc功能,即能开启无线热点功能。
4)USB风扇,1个,用于扇热。温度过高的话,会导致硬件性能下降,就是网络传输速度会变慢。

软件安装及设置:
1)初始化准备
参考以下文章,设置好无线网卡的接口名称。否则每次开机,每个无线网卡的接口名称都可能会改变。
Setting Network Interface Name on Raspbian
http://www.foxail.org/blog/index.php/archives/532/

我设置了“磊科 NW338”为wlan0,“水星 MW150UH”为wlan1,。wlan0用于连接无线路由,wlan1用于开启无线热点。

2)配置无线网卡
MW150UH 可能还需要第三方驱动,这里是已编译好的驱动文件:
(UPDATE) Drivers for TL-WN725N V2 - 3.6.11+ -> 4.1.xx+
https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=62371

确定网卡可以运行后,修改 /etc/network/interfaces 为以下内容:

auto lo
iface lo inet loopback
 
auto eth0
allow-hotplug eth0
iface eth0 inet manual
 
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
 
auto wlan1
#allow-hotplug wlan1
iface wlan1 inet static
  address 192.168.11.1
  netmask 255.255.255.0

3)hostapd
安装命令:

sudo apt-get install hostapd

由于采用了 水星 MW150UH ,芯片为RTL8188EU,所以参考了以下文章,使用相关已编译的 hostapd 文件来替换原来的 /usr/sbin/hostapd 。
Access Point (AP) for TP-Link TL-WN725N V2
https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=54946

然后备份配置文件/etc/hostapd.conf,并改为如下内容:

interface=wlan1
driver=rtl871xdrv
ssid=rpi-ap
channel=1
hw_mode=g
auth_algs=1
wpa=2
wpa_passphrase=123456
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
#macaddr_acl=1
#accept_mac_file=/etc/hostapd/hostapd.accept

4)dnsmasq
安装命令:

sudo apt-get install dnsmasq

然后备份配置文件/etc/dnsmasq.conf,并改为如下内容:

interface=wlan1
bind-interfaces
#except-interface=lo
dhcp-range=192.168.11.100,192.168.11.150,255.255.255.0,6h
 
# chromecast bind ip
dhcp-host=aa:bb:cc:dd:ee:ff,my-chromecast,192.168.11.10

5)iptables
设置iptables,实现转发:

sudo iptables -F
sudo iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -s 192.168.11.0/24 -o wlan0 -j ACCEPT
sudo iptables -A FORWARD -d 192.168.11.0/24 -m conntrack --ctstate ESTABLISHED,RELATED -i wlan0 -j ACCEPT

保存iptables配置:

sudo iptables-save > /etc/iptables.rules

设置系统启动时自动加载iptables的配置。修改文件/etc/network/if-pre-up.d/iptables为以下内容:

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.rules

保存该文件后,设置其权限:

sudo chmod +x /etc/network/if-pre-up.d/iptables

6)设置转发
修改文件 /etc/sysctl.conf ,找到net.ipv4.ip_forward,改为:

net.ipv4.ip_forward=1

7)解决Chromecast连上google的问题
为解决这个问题,花了不少时间去探索和尝试。Chromecast就算ROOT了,也不能安装shadowsocks客户端。解决方法是,固定 Chromecast 的IP地址,该IP的所有连接走 Raspberry Pi 上 shadowsocks-libev 的客户端。由于国内支持 Chromecast 的应用几乎没有,所以没必要再考虑访问国内网站的问题。

具体部署步骤,shadowsocks-libev 的官方说明已经详细说明了:
https://github.com/shadowsocks/shadowsocks-libev#advanced-usage

简单记录一下我的操作:
a)安装shadowsocks-libev,主要用到 ss-redir 。直接去GitHub下载源码编译安装吧:
https://github.com/shadowsocks/shadowsocks-libev

b)设置iptables:

# 建立新的链路
sudo iptables -t nat -N SHADOWSOCKS

# 跳过Shadowsocks服务器IP,这里假设为123.123.123.123
sudo iptables -t nat -A SHADOWSOCKS -d 123.123.123.123 -j RETURN

# 跳过内网IP地址
sudo iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A SHADOWSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A SHADOWSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A SHADOWSOCKS -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A SHADOWSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A SHADOWSOCKS -d 224.0.0.0/4 -j RETURN
sudo iptables -t nat -A SHADOWSOCKS -d 240.0.0.0/4 -j RETURN

# 其他IP跳转到 ss-redir 的代理端口
sudo iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 12345

# 设置 Chromecast 利用代理访问外网
sudo iptables -t nat -A PREROUTING -s 192.168.11.10/32 -p tcp -j SHADOWSOCKS

设置完,记得保存iptables配置:

sudo iptables-save > /etc/iptables.rules

c)配置并启动 ss-redir,记得本地端口要设置为与上面的一致。

ss-redir -u -c /etc/config/shadowsocks.json -f /var/run/shadowsocks.pid

最后,重启一下Raspberry Pi ,应该所有配置都会生效了。

入手Kobo mini一个月后,选择了放弃,把它转手给更需要它的人。

使用时,深深体会到E-ink屏的低功耗,确实很棒。但是机器本身没有良好的系统与开发平台,更没有良好的网络应用,只能离线看书。这不是我想要的。

国外有开发者移植了Debian上去,也写了E-ink屏与多点触控驱动。但是该系统是在旧版fireware上通过Chroot运行的,如要升级最新fireware,需要定制kernel。搞来搞去,搞不成。

最后甚至考虑放在家里,作为留言板、遥控器之类。但是缺乏中文输入,触摸也不好用,而且现在人手一个智能手机,根本不需要这机器。

E-ink屏的低功耗是非常好的优点,但是应用场合太少了。像Yota Phone这种手机,也不能成为主流。如果再不努力,可能会被其它材质取代。

入手Kobo mini已经快一个星期了。总结一下这家伙吧。

关于机器本身
入手Kobo mini,最主要是便宜,淘宝300不到就能买到。其次是体积小,5吋屏幕,分辨率是800x600,自带WiFi,并且可以换更大的TF卡来实现扩展存储空间。最后就是可以刷Debian。关于刷Debian,刷过后才感受到不是那么美好,这个后面再说。

缺点,首先是没有背光。然后是系统基于Linux开发的,比Android的(例如:Nook Simple Touch)可玩性差很多,开发的难度也高很多。原系统对中文支持差,可以说是不支持。虽然可以外挂字体显示中文文档,但是自带的浏览器却搞不定。并且没有其它可以很好利用网络的应用软件,自带的WiFi基本是没用了。最后就是不支持外部存储扩展,更换内部TF卡要打开后背,很麻烦。当然从一个角度来说,可以更专心地用来看书。特别是刷上Koreader之后。

官方介绍机器的详细配置:
http://www.kobo.com/kobomini#techspecs
Mobile Read的WIKI:
http://wiki.mobileread.com/wiki/Kobo_Mini

系统恢复
机器到手后,点了一下factory reset,机器不断重启且不能进入系统。幸好找到img,刷上就好了。刷好后立马备份一个,以防万一。

把img文件刷到TF卡的教程(英文),关键就是改S/N和把4G的镜像刷入2G卡:
http://www.mobileread.com/forums/showpost.php?p=2597246&postcount=15
img文件下载地址(Google Driver):
https://docs.google.com/file/d/0BxbJNE-fuHAmeGloU3drOXF0WE0/edit

固件升级
这个很简单,机器用USB数据线连上PC,把升级包解压到.kobo目录下,安全断开连接后,系统就自动刷。

固件升级包地址如下(目前mini的最新版本是3.4.1):
http://wiki.mobileread.com/wiki/Kobo_Releases
Kobo 固件升级详解
http://www.by-smart.com/forum.php?mod=viewthread&tid=2828

添加中文支持
机器连接到电脑,建一个fonts文件夹,把喜欢的中文字体复制进去,然后安全断开连接。原生系统看中文书时,选复制进去的中文字体就可以完美支持中文了。但是浏览器的中文显示问题解决不了。

Kobo系列书库乱码及字体替换解决方案
http://www.by-smart.com/forum.php?mod=viewthread&tid=3776

安装Kobo Start Menu
第三方的系统中,Kobo Start Menu算是兼容性比较好的了。而且界面都是调用sh脚本文件 + html文件的方式,方便修改。缺点是界面比较丑,简直就是没有做界面。

Kobo Start Menu官方介绍(英文):
http://www.mobileread.com/forums/showthread.php?t=233259
目前最新版本及安装方法(英文):
http://www.mobileread.com/forums/showpost.php?p=2980759&postcount=591

安装Koreader
个人感觉Kobo上,Koreader是最好的阅读软件了(确实也没几个可以选择了)。

Koreader的介绍
http://www.hi-pda.com/forum/viewthread.php?tid=1078988
Koreader的安装使用贴士——该帖适用于Kobo全系列机型
http://bbs.cooldu.net/forum.php?mod=viewthread&tid=1253
Koreader下载地址
https://github.com/koreader/koreader/wiki/Download
字典下载,zh_CN 简体中文词典
http://abloz.com/huzheng/stardict-dic/zh_CN/

安装Vlasovsoftlauncher
Vlasovsoftlauncher集成了几个游戏(数独、国际象棋、国际跳棋、黑白棋、推箱子等),无聊时可以玩玩。还集成了Coolreader。不过已装了Koreader,就对Coolreader不感冒了。

KOBO系列产品CoolReader安装教程(参考方法二)
http://www.cooldu.net/forum.php?mod=viewthread&tid=1495&page=1
Vlasovsoftlauncher各版本安装包下载链接
http://vlasovsoft.triolan.com.ua/files/builds_en.html
安装方法原帖链接
http://wiki.vlasovsoft.net/doku.php?id=en:pbchess-1.2.6#dokuwiki__top

刷Debian系统
试着刷上该系统,但发现操作起来各种不适应,系统很多地方都没有针对本机器进行优化。最后还是刷回原版系统。

Kobo as a Linux tablet(系统作者的Blog)
https://sites.google.com/site/gibekm/hardware/kobo/kobo-as-tablet
系统作者在论坛上发的帖
http://www.mobileread.com/forums/showthread.php?t=222123
另一个详细安装教程,附Debian镜像下载地址
http://robotsfuckyeahalloneword.svbtle.com/debian-on-kobo-mini

至此,应付看书应该没问题了。但是我希望能运行Debian,或者开发更多的应用。那么,只能继续折腾了。

上个月,小曼问我能不能拯救她朋友的iPhone4S,机器不能开机,想把里面的文件拷贝出来。

本来就没用过iPhone,但是还是试着找了一下解决方法:http://iphone.91.com/wap/tutorial/syjc/130718/21591468.html 原理大概是,先让iPhone进入DFU模式,并运行ssh_rd_rev04a.jar来建立SSH服务,再用SSH客户端(例如PuTTY)连上去挂载相关分区,然后用SFTP客户端(例如Winscp)拷贝文件,最后退出DFU模式。

如果一切就绪的话,应该不难,但是没有想象中的简单。

第一个问题是进入DFU模式。因为跟Android不同,进入DFU模式后是黑屏,没有任何提示,只能用ssh_rd这个工具来检测。网上找了很多教程,就是电源键和Home键协同操作的结果。

第二个问题是ssh_rd这个工具。试了好久,也查了好久,才发现可能是ssh_rd这个工具的版本不够新,所以才不能建立SSH。找到项目版本发布地址:https://github.com/msftguy/ssh-rd/releases 下载了最新版ssh_rd_rev04b.jar。

最后一个问题是退出DFU模式的脚本。其实就是执行 itunnel_mux --autoboot 当然,前提是下载 itunnel_mux.exe ,运行时会提示缺少一些dll文件,相关的dll文件都可以在iTunes的安装目录中找到。

第一次见面时,因为那些问题卡住了,搞不了。回去后找了把问题解决了,并找了台iPhone4来测试,证明方法可行。第二次见面时,不知道怎么弄的,iPhone 4S居然可以正常启动,并且系统自动恢复了。于是赶紧用什么手机助手把照片、视频,统统拷贝出来。

心得体会是,更加坚定不用iPhone的信念。

4月份换到新的公司,5月初公司换了个新的笔记本Thinkpad E440,于是卖掉原有的Acer AO522-C6Ckk。今天终于发货给买家了。细数这段日子(从2011年12月6日至今),原来经历了我人生的三个阶段————男朋友、丈夫和父亲。

当初入手AO522,是看中了AMD APU C60集成高性能显卡Radeon HD6290的优势,而且传说中很省电。最重要的是,屏幕是10.1吋,分辨率达到1280x720,同尺寸的屏幕中,分辨率最高,而且方便携带。后来发现,电池也就4个小时多一点吧,体积还是有点大,放小包里还是有点勉强。不过总体还是挺满意的。

AO522主要还是用来看电影,但是要换上Ubuntu 12.10后,才能流畅播720p的电影。跟豆丁拍拖时,吃饭或者吃cake时一起看电影,是最主要的节目。印象比较深的是《春娇与志明》、《3 idiots》、《独裁者》,因为太搞笑了。去旅游也带上了,但真正发挥作用的是,公司组织的旅游,接到房间的电视机看电影。去海南那次,回来时飞机晚点,AO522就在候机室满足了N个人的娱乐————播电影的同时,给手机、平板充电。

由于入手AO522后,台式机都送给锋表哥了。于是AO522成了主要的个人装备了。装上Ubuntu是必然的,然后学习过PHP,用CodeIgniter开发过小网站。装上Eclipse,还开发过Android小程序。还帮豆丁的HTC Incredible S解锁、刷系统和获取Root权限。渐渐适应了这家伙的移动性,还习惯了不关机,直接合上屏幕进入挂起模式。婚前还经常下班后,一个人坐在千禧广场,偷着i-Cafe的WiFi上网。还有考车牌时,用来看教学视频和做笔试练习。

结婚时,整纪念标志、电子请帖,也是用AO522。那时认识了Inkscape这个画图软件,也尝试了用Javascript代替Flash制作动画效果。

现在用着E440,AO522就显得多余了。毕竟背着两个笔记本上班是很辛苦的事情。还有一个原因是,现在的平板已经发展得足够好了————8小时续航时间,数量庞大而且轻易获取的应用程序,足够的娱乐性能,超高的屏幕分辨率,更加轻薄的体型,便宜的价格。那么,夹在高性能笔记本和平板之间的上网本还有什么生存空间呢?

对比上一个“二奶”,这次没那么伤感。或者一切都来得那么自然,而且用着AO522的这两年多,我已经不是一个人了。

通过一晚的测试与实验,终于用YUMI,把Android-x86 4.4.2 RC2装到U盘上,并且启动成功。记录一下吧:

1)打开YUMI并选择U盘,Step 2选“Try Unlisted ISO (via SYSLINUX)”,Step 3选ISO文件,如“android-x86-4.4-RC2.iso”。然后就等待YUMI自动处理完成。

2)进入刚弄好的U盘,找到文件 X:\multiboot\android-x86-4.4-RC2\isolinux\isolinux.cfg 并用编辑器打开。修改 kernel 和 initrd 的路径前缀为 /multiboot/android-x86-4.4-RC2 。具体修改后的文件内容如下:

default vesamenu.c32
timeout 600

menu background android-x86.png
menu title Android-x86 Live &amp; Installation CD 4.4-RC2 
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffff00 #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ffffff00 #ff000000
menu color hotkey 7 #ffffff00 #00000000

label livem
    menu label Live CD - ^Run Android-x86 without installation
    kernel /multiboot/android-x86-4.4-RC2/kernel
    append initrd=/multiboot/android-x86-4.4-RC2/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 video=-16 quiet SRC= DATA=

label vesa
    menu label Live CD - ^VESA mode
    kernel /multiboot/android-x86-4.4-RC2/kernel
    append initrd=/multiboot/android-x86-4.4-RC2/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 video=-16 quiet nomodeset vga=788 SRC= DATA=

label debug
    menu label Live CD - ^Debug mode
    kernel /multiboot/android-x86-4.4-RC2/kernel
    append initrd=/multiboot/android-x86-4.4-RC2/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 video=-16 vga=788 DEBUG=2 SRC= DATA=

label install
    menu label Installation - ^Install Android-x86 to harddisk
    kernel /multiboot/android-x86-4.4-RC2/kernel
    append initrd=/multiboot/android-x86-4.4-RC2/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 video=-16 INSTALL=1 DEBUG=

PS. Android-x86项目越来越完善了,非常适合上网本安装。但要注意驱动的问题,特别是无线网卡!

4月中,终于换了个公司,重新投入到软件开发的行业。公司给我配置了个笔记本,Thinkpad E440(等了一个月才拿到手),于是今天装上Lubuntu 14.04。

安装过程比以前的台式机、前两个笔记本,都简单。iso文件用YUMI弄成启动盘,然后就图形化界面中点“下一步”。然而问题总是出现在安装之后的配置过程,比如内核没带该网卡的驱动,自带了很烂的iBUS输入法,任务栏没显示音量控制图标,大量的软件需要重新安装配置等等。直到写本文时,还没弄好。

过程中,突然感慨,好像我就一直在用Linux,都只停留在系统安装和软件设置上,没弄出个像样的东西。例如,昨天同事问我Linux中如何把禁掉的端口打开,我都没想到用iptable处理。

换上第3个笔记本了,希望能继续努力~

折腾RaspberryPi已经一段日子了,期间还因接错GPIO的线而报废了一个。重新入手了英国版后,却没再怎么玩了。

昨天搜索相关资料时,找到一个很简单的关机按钮方法(http://spaceblogs.org/flipdot/2013/06/shut-down-your-raspberry-pi-on-button-press-and-add-reset-function/)就是利用2.0版新增的P5接口,直接连上个开关,实现关机功能。根据该文章,还可以直接在P6上连个按钮,实现重启。

RaspberryPi针脚相关的资料,可以参考:http://elinux.org/RPi_Low-level_peripherals

今晚测试了一下,该方法可行。然后就是折腾了整晚的钻孔……还是入手个小电钻吧。期待明天可以接线。

PS。关机按钮的作用是保护SD卡,以免强制断电关机后,发生数据损坏或丢失的情况~

在G1时代,入手了蓝牙耳机之后,就一直想把蓝牙耳机当成无线快门来用。虽然很屌丝,但是很实在的一个功能,特别是当年还一个人到处乱逛。

这几天终于启动这个项目。一开始的想法,肯定是参考一些音乐播放软件,利用BroadcastReceiver接受蓝牙耳机的按键事件,再广播一个Camera按键事件,实现从蓝牙的“播放键”到相机的“快门”的动作转换。但是,静态注册了BroadcastReceiver后,不起作用,怀疑是受其它音乐播放软件的影响,但也查不到原因。

后来灵机一动,想起直接修改Android的按键影射文件,把“播放键”直接改成“快门键”。于是修改 /system/usr/keylayout/AVRCP.kl 文件,把 key 200 MEDIA_PLAY WAKE 中的 MEDIA_PLAY 替换成 CAMERA。连上蓝牙后,测试通过,但还有个问题,就是相机不会先自动对焦后拍照,而是直接就拍照。然后就是写个Shell脚本(主要是sed命令吧)来自动修改影射文件。再然后就是写个app来实现这个功能了。当然,这是后话,希望不会成为屁话……

后面还有个想法,通过老G1来自动拍照,上传到服务器,实现监控功能。好吧~继续努力~