显示标签为“物件”的博文。显示所有博文
显示标签为“物件”的博文。显示所有博文

2015年11月6日星期五

Keyboards

DELL AQ6-7D40

(好吧,我必须要说一句,图片是网上找来的,这并不是我的键盘和桌子…)

这一套键鼠2008年购于淘宝,加上邮费一共170块。鼠标产自罗技,而键盘是NMB出品。因为鼠标加上电池太沉,耗电量感人而且DPI也不太够,没用很久就被我换了下来。不过让我也很意外的是,键盘却一直敲到了2014年,差不多用了5年半的样子。

时至今日,想起这一把键盘,我的印象任然是非常好的。按键的稳定性很好,手指放在键帽上做水平移动,并不会像廉价键盘那样哗啦啦的乱晃。确认感相当明显,并不是简单的按橡皮碗的感觉。压克力数大概比茶轴还要更重一点,手感偏硬。最下面一排按键面积加大,并且做出了一点坡度,拇指放在空格上确实会比较舒服。

当然,这仍然还是一把薄膜键盘,手感要跟机械比那是不可能的。橡皮碗加上火山口的结构就决定了,必须要从按键正中垂直按下才会有最佳的手感,稍微歪一点就会有卡键的感觉,这一点在大键上的表现尤其明显。

这一把键盘的存在充分说明,手感不错的薄膜仍然是有的。不过这样的产品好不好找那就是另外一回事了。比如曾经被吹上天了的DELL 8115,我接触过的基本都只能给同样一个评价:呵呵。

IKBC F104 黑茶

这一把键盘购于2014年初,时价549,还附送了一套PBT二色键帽。虽然我也曾经用过机械键盘,不过毕竟随便了这么些年,所以在买这一把键盘的时候,我也算是一个价格敏感型用户,可以说是几经挑选之后,才选中了这一把。

至今我也没闹明白,IKBC究竟是一家什么样的公司。看网上的资料,似乎是一些外设发烧友弄出来的。从产品透露出来的气息来看,倒真是蛮符合这个背景的。

不管是材质用料还是外形设计,整个键盘都给人一种相当用心的感觉。尤其特别的是键帽,“加厚二色成型黑色PBT”,搞不好还真的是独此一家了。

然而真的用起来,这一把键盘的毛病却很多。

F104的大键用的是卫星轴,虽然很多软文或者人品好的用户都说没什么问题,可我手上这一把的问题却非常的大,大到空格键可以卡在中间无法回弹的程度。网上传言,导致这个问题的正是“加厚二色成型黑色PBT”,键帽太厚太重,精度又没控制好,所以就卡住了。虽然IKBC发现这个问题后补送了一个用于替换的空格键帽,可是我拿到的却是一个原厂高度的键帽,装上去压根就不匹配,完全没法用。

跟大键巨肉无比甚至卡键相比,什么键盘指示灯亮瞎人眼都完全不算什么了。反正我从拿到这把键盘那天起,指示灯就是用黑色胶布遮住的。

基本上,我并不是个很爱惜外设的人。坐电脑桌前吃吃喝喝是常事,关机再来个防尘罩一类的就更是不可能了。不过这一把F104用了不到两年就出现左Ctrl和F5同时失效也是我完全没想到的。如果找原厂修势必需要快递来快递去,于是我索性也不打算修了,暂时就这么放着吧。

这么看来,这一把键盘给予我的使用感受应该并不怎么样才是。可很意外的是,我对这一把键盘却并没有什么怨气。

机械键盘的手感确实是比普通薄膜好很多的,然而这也确实是个神坑。青、茶、黑、红,ABS、PBT、POM,丝印、蚀刻、二色,原厂、OEM,各种概念不是一般的多。通过这两年的使用,我从这一把F104上体会到了很多其实没法用文字来描述的概念和感受,所以也算是交学费了吧。

平心而论,除开“卡键”和“两年坏”这俩很严重的问题,F104是一把挺不错的键盘。听起来很矛盾,所以我的结论是IKBC的东西烧友向,普通用户可能还是选别的牌子比较好。

Cherry G80-3000 黑茶

有些东西,一旦试过就再也回不去了,人的本性就是如此。左Ctrl和F5也确实没法忍,正好2015年购物季来了,所以我打算换一把键盘。

虽然很认真地考虑过Realforce,不过我仍然还是很介意没票没售后这件事,无奈放弃。到了正日子,罗技G710+说降价不降价,酷冷至尊那一把号称跟Filco同一生产线下来的型号不但预先提价还没货,最后干脆就入了一把原厂。

名声在外的白茶瞬间卖光,所以也不用多考虑什么了。入手价格575,对于常年699的原厂来说,也算不小的优惠幅度了吧。

用下来的感觉,G80-3000真是一把很有意思的键盘。

手感方面,跟F104等一众OEM比起来真是非常的不同。因为没有钢板,震手的感觉自然就没有了。但同样因为没有刚性支撑,导致手感就没有那么脆,第一印象会有一点松散。可是仔细体会的话又会发现,或许是整个键盘和电路板的形变充当了一个大号弹簧的关系,G80-3000上的茶轴是要比F104要稍微重那么一点点的。

非要说的话,这一把键盘的手感确实没那么“机械”,有可能会让人联想起普通的薄膜。不过我觉得这也不是坏事,毕竟“机械”与否也不是评价一把键盘好坏的标准。没有钢板震手的感觉,茶轴干脆利落的确认感还在,不管打字还是打游戏都可以应付,挺好的其实。

我觉得吧,评价一把键盘好坏的标准很简单:如果在用的时候感觉不到他的存在,那就是一把好键盘。G80-3000的手感是不错的,然而以我这个标准来衡量的话,这一把键盘离好键盘却也有那么一点距离。

槽点无非也就是那几个。曾经是标准,然而今天看来却有如十万八千里一般远的F区。POM键帽的F键和J键上没有凸起的定位点,只是凹陷的曲面做得比其他按键稍微大一点,盲打的时候并没那么好分辨。蚀刻填充的键帽摸起来相当隔手,不但比不了二色,就连丝印都比不了。

我也相信,用一段时间习惯以后,这些问题都不会像刚接触时那么严重。可作为卖了这么多年的一个型号,一直都不改,或许这就是德国佬的固执吧?

最后,“原厂渣做工”什么的,我倒没有太特别的感觉。入手很轻,产品细节也确实不是很精致,不过渣不渣的,且看他什么时候坏吧…

Logitech K480

一直以来,我都想要一把蓝牙键盘,虽然我也不知道那是因为什么。

最想要的无疑是ThinkPad那一把,除了TP的品牌加持,小红点当然也是很重要的一个原因。然而小400的价钱我实在是下不了手,尤其跟USB版相比价差150,我只能说信仰不足了吧。

这次光棍节,某东罗技K480丢出了169的价钱,和之前249相比打了7折还多,脑子一热我就下单了。显然,这是一次典型的冲动消费。而实际使用下来的感受,似乎也应证了这一点。

K480的外观给人一种扎实而美观的感觉,颜值不错。键盘本身有点分量,至少我并不会想把它背出家门。插槽设计也很有趣,放入iPad,还真有那么一点变身笔记本的的感觉。而且键盘支持跟三个不同的设备配对,有一个旋钮可以快速切换,看起来很方便的样子。可以说,K480在输入体验以外的地方都做得很不错。

然而最大的问题,也就是输入体验了。

作为一把键盘,敲起来感觉怎么样无疑是最要紧的一件事。这一点上,我实在无法给K480打出一个超过及格线以上的分数。诡异的孤岛式,人为的减少了按键和手指的接触面积。键程很短,按键又偏硬,导致敲字的时候需要比较用力又很小心,不然很可能会按空某个键。最下面一排按键和键盘下沿几乎零距离,对手腕和手指完全没有支撑,只适合平放在桌面上使用,放膝盖上都不是很适合。总体来说,应付一下是可以,但如果有选择的话,我是决计不会用这一把键盘写东西的。

当然,手感能跟机械比的超薄键盘本来也不可能存在,所以我的标准确实会有些太苛刻。这一节内容我就是用K480在iPad上敲出来的,手指也并没有抽筋。对于有需要在平板设备上大量输入文字又没有被机械键盘惯坏的人来说,这一把键盘或许是个不错的选择。

至于我,大概也只能是家里停电的时候用来聊QQ才用得上了吧…

插个花。虽然输入法用着不太习惯,可能需要看看水果的文档之外,iOS对外接键盘的支持真是意外的好。再加上远比Windows好的字体和显示效果,iPad其实是完全可以胜任码字这项工作的。

于是我又忍不住在想了,如果用TP那一把键盘的话,感觉会不会好很多呢…

2014年7月16日星期三

Flash Programer Based on STM32F103

前些日子需要写flash芯片,图便宜淘宝了个CH341A。可是拿回来以后才发现,这货只能在Windows下用,相当不方便。试着在Linux里用QEmu跑WindowsPE,因为写很慢所以丢在那里吃东西去了,回来发现CH341A和flash芯片都很烫,上机没反应,flash芯片烧掉了。

想要搞一个Linux下也能用的,股沟里扒拉半天,找到了dword这篇《Linux 下离线烧写 SPI 闪存》

电路层面的东西,我基本是十窍通了九窍的程度,不过电路图看着还算简单,于是各种长草啊。可dword特别强调,不能买USB只能供电或做ISP的板子,而淘宝上STM32F103虽多,但在USB这个问题上的表述大多是“预留通讯功能”。

各种翻资料还是没把握,干脆就给dword写了一封信求教,没想到居然收到了回信。好吧,这下子不造都有些过意不去了…

卖家链接我就不贴了,设计做工并不漂亮,要资料什么都没有,而且焊上去的排针居然还有歪的。对着datasheep数,这板子上PXX管脚37根,VBAT管脚1根。剩下的是BOOT0和NRST,以及三组VDD/VSS和一组VDDA/VSSA。嗯,至少管脚是全部引出来了的。

由于买的是成品开发板,所以电路图上的大部分内容都不需要自己做。flash芯片上3、7两脚接的电阻,dword说是因为需要拉高的关系,阻值1至20k随意。而两个发光二极管串的R3是一个限流电阻,查了一下发现这个电阻的阻值是需要算的:

R = ( E - UF ) / IF

R为阻值,E为电源电压,UF为二极管正向压降,IF为二极管工作电流。不同厂家不同颜色的二极管参数都不一样,似乎很麻烦的样子。不过dword标了220R,所以电路中三个电阻我都用了200R的,貌似没什么问题。

另外这篇文章还提到说,建议在不使用外部电池时,VBAT和VDD间连一个100nF的瓷片电容。嘛,我这里没有,希望不会出岔子。

其实对我来说吧,最困难的是怎么把坏掉的芯片从转接板上弄下来,然后再换一块新的上去。

拆芯片的部分,网上的说法各种高大上,我这里东西又没那么齐全。最后还是先弄了一坨焊锡到管脚处一并加热才弄了下来,并且还是弄断了一根管脚。好容易搞定一半,又发现转接板上的焊盘伤了一点点。本以为除了人生中第一次拆芯片第一次焊芯片之外,还要贡献出第一次飞线,还好最后发现用不着。

软件方面,Ubuntu 14.04仓库里的flashrom是0.9.6.1,spispeed参数是0.9.7才加入的,所以需要自己编译一份:

sudo apt-get install gcc-arm-none-eabi libpci-dev libusb-dev libftdi-dev

cd ~/tmp
mkdir -p dep/include dep/lib

svn co svn://flashrom.org/flashrom/trunk flashrom
cd flashrom
make
sudo cp flashrom ~/opt/bin/

然后编译serprog-stm32vcp以及相关依赖:

cd ..
git clone https://github.com/esden/libcmsis.git
cd libcmsis
make
install_dir=~/tmp/dep make install

cd ../
git clone https://github.com/esden/libstm32.git
cd libstm32
C_INCLUDE_PATH=~/tmp/dep/include make
install_dir=~/tmp/dep make install

cd ../
git clone https://github.com/esden/libstm32usb.git
cd libstm32usb
C_INCLUDE_PATH=~/tmp/dep/include make
install_dir=~/tmp/dep make install

cd ../
git clone https://github.com/dword1511/serprog-stm32vcp.git
cd serprog-stm32vcp
# 交叉编译时LIBRARY_PATH不起作用,所以需要改common.mk,加上-L
C_INCLUDE_PATH=~/tmp/dep/include make

接下来编译stm32flash,一个用于将固件写入开发板的工具:

cd ../
git clone https://git.gitorious.org/stm32flash/stm32flash.git
cd stm32flash
make

一切就绪。现在将开发板的BOOT0拉高(ISP模式),接上TTL线并插入PC,给开发板上电,然后用stm32flash将固件写入开发板:

sudo ./stm32flash/stm32flash -b 115200 -w ../serprog-stm32vcp/serprog_vcp.bin -v /dev/ttyUSB0

写完以后TTL线就可以拔掉了。将BOOT0拉低并插入USB线,dmesg会有以下输出:

[ 2707.384103] usb 1-1.4: new full-speed USB device number 8 using ehci-pci
[ 2707.478418] usb 1-1.4: New USB device found, idVendor=0483, idProduct=5740
[ 2707.478423] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2707.478426] usb 1-1.4: Product: flashrom.org serprog-STM32VCP
[ 2707.478429] usb 1-1.4: Manufacturer: STMicroelectronics
[ 2707.478431] usb 1-1.4: SerialNumber: 84FF05086333
[ 2707.519125] cdc_acm 1-1.4:1.0: This device cannot do calls on its own. It is not a modem.
[ 2707.519155] cdc_acm 1-1.4:1.0: ttyACM0: USB ACM device
[ 2707.519585] usbcore: registered new interface driver cdc_acm
[ 2707.519589] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

然后应该就可以用了:

sudo flashrom -p serprog:dev=/dev/ttyACM0:4000000,spispeed=36000000 -r flash_orig.bin
sudo flashrom -p serprog:dev=/dev/ttyACM0:4000000,spispeed=36000000 -v flash_orig.bin
sudo flashrom -p serprog:dev=/dev/ttyACM0:4000000,spispeed=36000000 -w somefile.bin

实际效果方面,我这边用一块MX25L12845测试下来,spispeed参数只能设置为18000000才可以稳定运行。一次读取耗时约21s左右,平均780KiB/s。这个速度倒是跟dword给出的数据差不多,不过写入方面却没想象的快。

flashrom为了减少flash芯片的损耗,在写入时会先读取一次以确定要更新的块,写完了会再校验一次,所以一次完整的写入要读两次写一次。我测试了几次,整个过程耗时大概在5到6分钟的样子。以6分钟计算,扣除两次读取,写入的速度大概是51.5KiB/s。

根据dword的说法,spispeed是根据flash芯片的工作频率来的。至于我这里的测试结果虽然不理想,但也“不算太离谱”,或许跟SPI连接线和USB电缆有关。嘛,暂时不管了,能用就行。

另外就是,flashrom目前在Windows下也是可用的,只是需要自己编译。有需要的话,可以用我这里编译好的版本,Ubuntu 14.04 x64和Windows版的flashrom都有。

如果要在Windows里用,除了libusb-win32-bin-1.2.4.0.zip外,还需要STM32的VCP驱动

2014年5月22日星期四

Native Linux for TMall MagicBox

一开始对这个问题有兴趣,是想看看能不能通过原生linux解决魔盒伪1080输出的问题。毕竟国内厂商靠不住这件事人尽皆知,而且新版魔盒都已经出来了,阿里肯定是指望不上的。

经过这段时间里无穷无尽的折腾,成果固然是有一些,不过要说解决问题的话,还差得有些远。从这次的经历也可以看得出来,不管是拿来玩还是拿来用的硬件,充分的技术支持和成规模的社区都是很重要的。

单纯就视频播放而言,可能回头去找个1186的机器会更好。如果有更高的要求,x86是个更好的选择。arm嘛,嗯。

uboot

因为我希望保留nand上的安卓系统,所以linux就只能安装到tf卡里,这需要对uboot环境变量进行一定的修改。虽然这件事安卓系统里也能做,但是没有uart就看不到输出,折腾起来很不方便,所以就目前来说拆机焊线还是有必要的。

为了两个系统里都用得上,我把一张16G的tf卡分了两个区,第一个4G的fat32,剩下的则格式化为ext3。

想要启动时加载fat32分区上的uImage内核文件,需要在uboot中进行如下操作:

mmcinfo
fatload mmc 0 ${loadaddr} uImage
bootm

如果希望启动时默认加载tf卡上的linux内核,则可以这样做:

setenv bootlnx 'mmcinfo; fatload mmc 0 ${loadaddr} uImage; bootm; '
setenv bootcmd 'run bootlnx'
saveenv

另外还有个法子,可以在上电时通过狂按遥控上的菜单键加载tf卡上的系统:

setenv bootlnx 'mmcinfo; fatload mmc 0 ${loadaddr} uImage; bootm; '
setenv irremote_update 'if irkey 0x1f2d12e 500000 ;then run bootlnx; fi'
saveenv

uboot还支持脚本文件,如将以下内容以auto_script文件名保存:

mmcinfo
fatload mmc 0 0x82000000 uImage
bootm 0x82000000

使用u-boot-tools软件包中的mkImage生成aml_autoscript:

mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n “auto_script” -d auto_script aml_autoscript

将aml_autoscript放入fat32分区,uboot中run update即可执行该脚本。

内核

amlogic官方放出的代码这里有:http://openlinux.amlogic.com:8000/download/ARM/

不过直接用这里的代码虽然能够成功编译,但实际用起来问题非常多。wjb@github修改整理的版本相对比较靠谱一点,目前的版本是3.0.96+。

编译过程大概是这样:

sudo apt-get install gcc-arm-linux-gnueabihf

git clone https://github.com/wjb/mx-common.git
cd mx-common

export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm
make mrproper
make meson6_g18_mx2_defconfig
make menuconfig
make uImage -j4
make modules -j4

sudo cp arch/arm/boot/uImage /media/BOOT
sudo make INSTALL_MOD_PATH=/media/AMLinux modules_install

一个linux跑不跑得起来,一大半都在内核上,可m6内核离完善真心差很远。

一开始我使用的是gcc 4.8,且打上了如下补丁:

diff --git a/drivers/amlogic/gpio/am_gpio.c b/drivers/amlogic/gpio/am_gpio.c
index c4ab581..771b529 100755
--- a/drivers/amlogic/gpio/am_gpio.c
+++ b/drivers/amlogic/gpio/am_gpio.c
@@ -196,7 +196,7 @@ static ssize_t am_gpio_write(struct file *file, const char __user *buf,

    if(buf == NULL || op == NULL)
        return -1;
-   val = copy_from_user(tmp, buf, size);
+   val = copy_from_user(tmp, buf, bytes);
    if (0 > val) {
        printk("am_gpio_write: Some bytes could not be copied: %d\n", val);
        return -EFAULT;
diff --git a/drivers/amlogic/hdmi/hdmi_tx/hdmi_tx_edid.c b/drivers/amlogic/hdmi/hdmi_tx/hdmi_tx_edid.c
index 80391ed..5020450 100755
--- a/drivers/amlogic/hdmi/hdmi_tx/hdmi_tx_edid.c
+++ b/drivers/amlogic/hdmi/hdmi_tx/hdmi_tx_edid.c
@@ -233,7 +233,7 @@ static unsigned char Edid_TimingDescriptors[204]=    //12x17
 //-----------------------------------------------------------
 void Edid_CompareTimingDescriptors(HDMI_TX_INFO_t * info, unsigned char *Data)
 {
-   int index1,index2;
+   volatile int index1,index2;

  for(index1=0;index1<17;index1++)
     {

其中第二处修改,如果不加上volatile,index1会出现远大于17的情况,这显然是gcc的bug。

这样编译出来的内核可以启动,但是usb不能用音频也存在问题。尝试换用gcc 4.7,结果问题更严重了,三次上电只能成功启动一次,而且失败时没有任何错误信息,就是直接挂在那里不动。

wjb@github提供的mx2ref内核可以直接拿来用,版本号是3.0.50。这个内核问题略少,但也就是略少而已。

debian

ubuntu和debian都提供了arm支持,下面的方法两个发行版都适用。不过只用命令行的话,ubuntu远不如debian,再加上stable的debian软件包都太老,所以这里装的是sid的debian。

sudo apt-get install qemu-arm-static debootstrap
mkdir debian-armhf-sid
sudo debootstrap --foreign --arch armhf sid debian-armhf-sid http://ftp.tw.debian.org/debian/
sudo cp /usr/bin/qemu-arm-static debian-armhf-sid/usr/bin/
sudo chroot debian-armhf-sid /debootstrap/debootstrap --second-stage
sudo chroot debian-armhf-sid

qemu-arm-static在ubuntu 14.04中包含在qemu-user-static中,这东西很好用,可以直接在pc里chroot进arm系统。这样很多操作就可以在pc上完成,再慢也比在目标机器上弄要快。

然后就是一些基本设置:

passwd
echo AMLinux > /etc/hostname
echo deb http://ftp.tw.debian.org/debian sid main contrib non-free >> /etc/apt/sources.list
apt-get update
apt-get install locales
dpkg-reconfigure locales
apt-get install wireless-tools wpasupplicant
mknod -m 660 /dev/ttyS0 c 4 64

编辑/etc/inittab,将ttyS0所在行改为:

T0:2345:respawn:/sbin/agetty -L ttyS0 115200 vt100

其他设置去看debian文档吧,很详细。弄完cp -a将debian-armhf-sid复制到tf卡的ext3分区,到这里该tf卡就可以在魔盒中成功启动了。

现有问题

音频

gcc 4.8编译的内核,aplay只能播放特定格式的wav,mpg123无法成功播放mp3,xbmc只能放得出爆音。wjb预编译的内核,xbmc中可以成功播放音频视频文件,但声音听起来有点怪,有点像跑调了。

视频

wjb预编译内核跑xbmc,加载libamplayer,可以全速播放avc1/ac3(瞬时码率最高约30Mbps)。因为usb不能用,samba也遇到点小问题所以更多的没有测试。

效果方面,第一印象很一般,感觉颜色有些暗淡。

usb

无论哪个内核,不管是启动前还是启动后插入的设备均不能用。

eth0的mac地址问题

在启动linux时,log里有一句未配置mac地址,使用随机地址的信息。进入linux后重启进入android,系统会自动运行一个叫MiptAutoTestForAli-10030的程序。虽然看起来很吓人,但其实只要在这个程序中选择写入随机mac地址再退出,就可以正常使用android系统了。

这个问题应该可以通过修改驱动解决,不过我暂时没去管。

遥控器不能用

遥控使用的是BK2433,没找到驱动。不过问题不大,xbmc可以用android或ios设备当遥控。

2014年5月11日星期日

Mini ITX

乔伯他娘亲抱怨家里的机器太慢想要换一台,而这事儿发生至今已经好几个月了。再这么拖下去指不定要拖多久,所以我就当仁不让滴把事情揽了过来。说起来这也是我第一次弄ITX板子的机器,值得记一笔的东西还不少。

最后的配置定下来是这个样子:

  • CPU I5 4570
  • 主板 华擎 H87E-ITX/ac
  • 硬盘 浦科特 M5S 120G
  • 内存 金士顿 Genesis 4G*2
  • 机箱 乔思伯 V3+
  • 电源 海韵 S12II-430
  • 散热器 九州风神 加百利

虽然就目前而言,娘亲辈用I3也差不多,不过考虑到他家换机器的周期比五年计划还长,选个I5还是比较合适的。至于架构,既然不打算上独显,Haswell的GPU还是值得多花一点钱的。

主板则是第一个难选的东西。另外两个备选项分别是微星H87I AC和技嘉B85N Phoenix。

除了ALC892略次和价钱小贵之外,微星那块本来是不错的。可这块板子CPU插槽离PCIE太近,导致CPU散热器的选择和安装很受限制,很容易挡到未来有可能插入的PCIE设备,放弃。而技嘉和华擎之间,除了牌子略好之外,单纯用眼睛来看技嘉那块就没一样比华擎强的。这一点上真的不能不佩服华擎,配置、接口、用料都是看得见的,虽然在华擎身上也遇到过不愉快,可到最后选择的时候,华擎还是很有可能会胜出…

因为是娘亲机,并不会存放什么重要的数据。SSD本打算再买一块我现在用的万胜。怎么说都是MLC,性能也还不错,质量拼一下人品无妨。可万胜堕落到阉掉了缓存,写入掉到了90M/s的级别,这实在不能忍。翻了老半天,只发现金泰克的性能还不错价钱也不错,无奈没货。三星和金士顿之间几番踌躇怎么都下不了手,还是回头去找了浦科特。

内存最近又狂涨,无马甲金士顿标准版和低压版一个价。又是低压又是矮版,上ITX本是极好的,可4G版你就只给我剩了一条叫我怎么买。这次虽然还不得不选了骇客神条,可在ITX这种寸土寸金的板子上,矮版才是绝配啊。

整个系统弄下来,待机功率预计在30w左右,满载功率则是100w左右。为了转换效率考虑,电源应该选个小些的。可现如今的电源,更小更便宜的也选不出什么好货了。再加上前些日子遇到家里的电压异常偏高,一个充电器都烧掉了,我机器里的海韵却一点反应都没有,证明这个牌子还是很不错的。

其实关于电源,模组与否也是个让人纠结的地方。对ITX来说,模组电源当然比较好,最起码对风道的干扰就会比较小,也不需要找地方塞用不上的线。可是海韵X系列贵到飞起,反正装进去了以后也看不见,不管了…

机箱和CPU散热器绝对是ITX系统最难选的东西,没有之一。

一开始我倾向于小巨蛋,材质、做工、外观没什么可挑的。可是因为小巨蛋的宽度达到了250mm,电源开关和前置端口还很缺心眼地放在了右侧板上,跟乔伯家使用环境有不少冲突,放弃。

接着我选中的是乔思伯 U2。这个机箱形制上更接近传统机箱,可以从下往上,由CPU风扇再通过电源风扇将热量排出,形成一条完整的风道,散热应该比较好。可是这样的话,CPU散热器就需要找一个不能太宽了的,不然有可能跟内存插槽冲突。为了保险,最后只选了超频三红海mini。这个的散热片8cm宽,几乎是塔式里最窄的了。至于散热效果,不行再换吧。

本来选件的部分到此就应该告一段落了的,可在京东上成功下单以后,却发现后台显示机箱没有货。如果换个比U2还大的,那跟小一点的中塔也没什么区别,失去了ITX的意义。看来看去,最后选了乔思伯的V3+。这个机箱体积更小,但由于电源是直接悬在CPU之上,散热就成了一个问题。风扇换了个九州风神加百利,具体效果等装好了再看吧。

正式安装时一切都还算顺利,遇到的问题不算多。

首先是CPU散热器必须要先安装到主板上,再将主板放入机箱。但这样一来,四颗主板固定螺丝中的一颗就被散热片挡住了。随机附带的又只有螺丝而没有卡口型支撑柱,把另外三颗螺丝上紧以后试了试还算稳定,所以也只能这样了。

主板上各插针都比较分散,所以除了8PIN供电需要在安装CPU散热器之前先插好之外,其他插针都没遇到什么问题。

金士顿马甲条跟加百利马甲条没出现冲突。

虽然官方说明书也提到了风扇反装,可我试了试,感觉加百利这个风扇如果不加脚垫直接放上去很有可能会卡住扇叶,为了保险所以我也没试。实际跑下来效果也还过得去,就是不知道夏天的时候怎么样。

这么小的机箱塞入非模组电源果然有些麻烦,好在不用的线缆绑一起刚好可以塞在电源后面,应该也不影响什么。标准ATX电源对这么小的机箱来说真心显得太大,期待以后吧。

整机要说有什么不满意的,那就是机箱了。板材边缘没怎么处理,赤手触摸有锋利感,即使很小心小指头还是被割了个口子。加工精度也不大好,安装完成后能明显发现很多缝隙。不过考虑到价钱,好像也不能要求太多。更何况在京东上翻遍了小机箱,即使不去考虑价格,类似尺寸似乎也没有更好的可选。

总的来说,不考虑一两年以后机箱会变成什么样,最后成品的效果看着还成。

乔妈,母亲节快乐~

2013年9月29日星期日

OpenWrt 12.09 for Mercury MW4530R

OpenWrt的编译一如既往的容易,如果官方提供机型支持,也不需要打什么额外补丁的话,简直比很多X86应用程序还好编译。唯一需要留意的地方就是menuconfig的部分,只要修改了内核相关的参数设置,哪怕是多M一个模块,内核版本号也会发生变化,这会导致opkg的依赖产生问题,必须要重刷固件来解决。所以编译OpenWrt时,凡是未来有可能用得上的模块最好都M上,无非是多等一会儿而已,省得以后需要重刷更麻烦。

补丁包:openwrt_12.09_mw4530r_wr941nv2_patches.zip

MW4530R目前还没有官方支持,我用的补丁出自这里。其他内容基本就是以前改的。因为还没时间弄WR941N,所以相关补丁并没有经过测试,有砖的可能,慎用。

sudo apt-get install build-essential subversion git libncurses5-dev zlib1g-devasd gawk

mkdir ~/openwrt
cd ~/openwrt

svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment

cd attitude_adjustment
ln -s ../dl dl
./scripts/feeds update -a
./scripts/feeds install -a

rm -rf tmp

patch -p1 < ../patches/mw4530r-support.patch
patch -p0 < ../patches/nls-cp936.patch
patch -p0 < ../patches/wr941nv2_8m.patch

make defconfig
make prereq
make menuconfig
make

感觉上,启动、luci等方面,MW4530R的反应速度都比WR941N快了不少,不过CPU频率高了近一倍,快也是正常的。而我比较期待的USB外接存储设备方面,速度没什么本质,略失望。

服务器端速率(MBps)
vsftpd12.1
uhttpd9.45
busybox ftpd11.0
busybox httpd12.1
dropbear2.9
samba5.96

以上测试,OpenWrt端接了个IT-CEO USB2的盒子,ext4分区,测试用的文件是一个约为1.4G的mp4,写入Win7下用内存虚拟出来的磁盘分区,基本可以排除本地IO对速率的影响。

USB口供电方面,不加独立电源MW4530R带一个移动硬盘仍然会有问题。至于加上独立电源后怎么样,还有待时间验证。

附一张MW4530R的TTL接口定义,希望大家都用不上吧。

2013年8月30日星期五

iFive Mini2, again

机器刚拿回来的时候升级过一次系统,本打算以后就这么着的,反正国内厂商所谓升级也就那么一回事。可是半年过去,重力感应经常无故失效,系统反应越来越慢,并且各种双击,于是我终于烦了。再升一次吧,最后一次,好不好就这样了。

固件以刷机程序去第五元素官方论坛,当前迷你兔的最新版本固件是v1.35。安装刷机程序后,关机,按住menu键插入机器装驱动,然后打开刷机程序刷固件。整个过程需要将机 器平放,因为第一次开机的时候会校对重力感应和陀螺仪。

一切搞定之后,我震惊了,怎么会那么快?时间隔太久所以刚买回来的时候是什么感觉我不记得了,可是跟刷机之前比,流畅度真是天壤之别。我不相信这是新固件带来的提升,难道安卓跟当年的XP一样,三不五时就要重装一下系统才能保证速度?好吧,不管怎么样,这也算是意外之喜就是了。

如果觉得有需要的话,可以顺便把recovery也刷上。还是关机按住menu并插入机器,pc端RKAndroidTool.exe,只选中recovery然后选执行就成。稍微需要提醒的是,刷上recovery之后设备就变成筛子了,虽然安卓系统本身就是隐私筛子。

接下来是ADB驱动的问题。就像我以前吐槽过的那样,厂家还是没有提供,所以如果你没备份也不会自己改的话,除了装豌豆荚也没别的办法。

迷你兔算是自带root,adb shell进去就有root权限,可我没找到在设备上完成root过程的法子,所以还是要手动来做。先下载root.zip,再执行以下操作。

adb shell mount -o remount,rw /system
adb shell busybox mkdir /mnt/sdcard/@_bak
adb shell busybox cp /system/xbin/su /mnt/sdcard/@_bak/
adb push system\xbin\su /system/xbin/su
adb shell chmod 6755 /system/xbin/su
adb push system\app\SuperSUPro.apk /system/app/_SuperSUPro.apk
adb shell chmod 644 /system/app/_SuperSUPro.apk

接下来装busybox,放到/vendor/bin下。同时因为没passwd和group,shell看起来会很难看,所以我根据android_filesystem_config.h弄了个出来,一并放进去。

adb shell mkdir /vendor/bin
wget http://www.busybox.net/downloads/binaries/latest/busybox-armv7l
adb push busybox-armv7l /vendor/bin/busybox
adb shell chmod 755 /vendor/bin/busybox

adb shell "echo nameserver 8.8.8.8 > /etc/resolv.conf"
adb shell "echo nameserver 8.8.4.4 >> /etc/resolv.conf"
adb shell chmod 644 /etc/resolv.conf

adb push passwd /etc/
adb push group /etc/
adb shell chmod 644 /etc/passwd
adb shell chmod 644 /etc/group

adb shell /vendor/bin/busybox --install -s /vendor/bin/
adb shell busybox rm /vendor/bin/su
adb shell busybox rm /vendor/bin/sh

字体我还是用了冬青黑,不过我换的是第二版,因为不想把英文字体也换了,而第二版笔划粗细跟Roboto比较搭。

adb shell cp /system/fonts/DroidSansFallback.ttf /mnt/sdcard/@_bak/
adb push DroidSansFallback.ttf /system/fonts/DroidSansFallback.ttf
adb push DroidSansFallback-Bold.ttf /system/fonts/DroidSansFallback-Bold.ttf
adb shell chmod 644 /system/fonts/DroidSansFallback.ttf
adb shell chmod 644 /system/fonts/DroidSansFallback-Bold.ttf

adb shell "sed -i '/DroidSansFallback.ttf<\/file>/a DroidSansFallback-Bold.ttf' /etc/fallback_fonts.xml"
adb shell "sed -i '/DroidSansFallback.ttf<\/file>/a DroidSansFallback-Bold.ttf' /etc/fallback_fonts-ja.xml"

尽可能不装app,就这么用了几天以后,系统流畅度方面仍然很理想。看来安卓系统的正确使用方法是,不常用的app就上钛备份,随用随卸载…

毫无疑问,我肯定不是果粉,可是跟iOS相比,我真是越来越不喜欢安卓了。性能方面不去说,用户控制app行为的手段实在太有限,隐私问题也好,电量也好,指望app开发商自律,做梦吧。

2013年8月13日星期二

Playstation 2

前些日子,因为某些事故,我弄丢了很多的过去。今天打扫卫生的时候,看到那台又是有日子没碰了的PS2,我突然发现有很多事情我已经想不起来了。趁着还有些许印象,赶紧记下来吧,并非为了过去,也不是为了将来。

PS2常见的视频输出线有三种,分别是AV、S端子和色差。个人觉得S端子最好,因为AV输出太模糊,如uLaunchELF一类的程序连文字都看不清楚;而色差则有各种各样的兼容性问题,如Modbo 3.0看不见开机Logo,画面无法全屏等等。不过现在的电视都没有S端子了,实在没办法也只能将就用色差。

虽然PS2的自制程序也有很多,不过受限于机能等各种问题,唯一实际的还是免光盘打游戏。通行的实现方法有两个,一是Free McBoot,二是如Modbo一类可以直接启动自制程序的直读IC。

Free McBoot可以免改机免直读,通过一张特制的记忆卡加载各种自制程序。不过没装IC的机器即使有FMCB,仍然需要ESR一类的程序辅助,不然就D版不能。我这台机器装了Modbo 3.0(最早实现启动记忆卡上自制程序功能的IC是MATRIX,很贵,Modbo只是MATRIX的Clone而已),用起来还是比FMCB方便些,所以我主要用的是IC提供的功能。

为了以防万一,我也做了张FMCB的记忆卡备用。下载Free McBoot v1.8 Noobie Package直接下载文件),解压后将Noobie_Package/INSTALL下的四个ELF删掉,将LbFn放入并改名为BOOT.ELF,将uLaunchELF放入并改名为BOOT2.ELF,然后将Noobie_Package目录下的所有文件复制到SD卡根目录,在PS2端以任意方法加载FREE_MCBOOT.ELF,格式化记忆卡并选择Multi-Version install进行安装即可。

这样制作出来的记忆卡大约会用掉3.2MB空间。在没有安装直读的机器上不放光盘启动后会看见FMCB的菜单,选择uLaunchELF即可启动LbFn(菜单可以添加和修改,我懒得弄了)。而在装了Modbo并且设置为记忆卡启动的机器上,会直接载入LbFn(按住R2并启动则会加载uLaunchELF)。

uLE和LbFn都是PS2上的文件管理器。从功能角度上说,uLE要强大很多,但我曾经遇到过因硬件故障导致uLE启动不能而LbFn却可用的情况,再加上默认设置下LbFn的显示效果更清晰,所以FMCB记忆卡里的默认文件管理器我选择了LbFn。

(uLE内置了FTP服务器的功能,不过我测试下来发现又慢又不稳定,基本不可用。想在uLE里直接看到存档游戏名,需要额外的字体ELISA100.FNT,放入记忆卡内的/SYS-CONF/即可。顺便佩服一下日本人,8*16的字体都有。)

安装了Modbo的机器,启动时按住手柄上不同的按键可以实现各种不一样的功能,如△+○可进入IC的功能设置菜单。该菜单中最重要的一项是BOOT MODE,各选项的含义分别是:

  • AUTO:启动Sony Browser。(显示Matrix Logo时仍然可以通过快捷键加载其他程序。)
  • FAST:疑似直接加载PS2游戏光盘的意思。
  • INFMAN:启动Infinity Manager,盗版的Modbo似乎是不能用。
  • DEV1:加载记忆卡上的自制程序,即mc0:/BOOT/BOOT.ELF。
  • DEV2:加载硬盘上的的自制程序,即hdd0:/__boot/boot.elf。
  • DVDV:播放DVD光盘,或是加载PS1游戏。

另外还有几个常用的启动快捷键:

  • R1:mc0:/BOOT/BOOT.ELF
  • R2:mc0:/BOOT/BOOT2.ELF
  • L1:mc0:/BOOT/BOOT3.ELF
  • L2:hdd0:/__boot/boot.elf
  • SELECT:屏蔽IC并开机
  • ○:同DVDV
  • ╳:同AUTO
  • △:同INFMAN

可用于加载光盘镜像的自制程序不少,比如曾经的HD Loader和HD Advcane,不过后期大部分用的都是Open PS2 Loader。OPL当前的版本是v0.9.1,似乎已经相当稳定了。但也有人说新版本有些游戏无法运行,旧版的r547反而可以,如零系列,我倒是没去求证过。

PS2免光盘加载游戏镜像的方式有很多,比如添加内置硬盘,比如USB,比如Samba。过去USB方式曾一度很受关注,但因为PS2的USB接口只是v1.1标准,速度太慢导致可用性比较差(据说后来有改善,可我没试过)。至于加硬盘的方式,3W和5W系的厚机得天独厚,因为直接就能买到可装硬盘的网卡(曾经各种降价没人买,曾经涨得各种没道理),而薄机则只有7W最早的型号(7000X)可以通过从主板上飞线接出IDE接口的方式来做,相当的麻烦。

我的是3W厚机,自然是用内置硬盘的方式,一块从朋友那里搞来的日立160G。在把硬盘装进PS2之前,首先需要用WinHIIP将其格式化为HDL特有的格式。另外我还把OPL放在了硬盘的/__boot/boot.elf,这样Modbo设置为DEV2启动时,就可以直接加载OPL了。

趁着还有机会,多灌几个游戏进去吧,一旦把硬盘装进PS2最好就不要再拆了。因为拆装硬盘不但很容易损坏娇贵的PS2网卡,WinHIIP这个程序的代码质量也没有很好,PS2端操作过的硬盘再用WinHIIP进行读写很容易造成数据丢失。

OPL有Apps Loader,可用于加载其他ELF程序。使用方面有些麻烦,需要在记忆卡内创建一个/OPL/conf_apps.cfg,比如我的:

uLaunchELF v4.42d=mc0:/BOOT/BOOT.ELF
LbFn v0.70.18=mc0:/BOOT/BOOT2.ELF

如果想把ELF放在硬盘里,则需要将文件保存在+OPL分区。创建该分区可以用uLE的HDDManager,分区名写OPL,大小我给了512M。+OPL分区会被OPL加载为pfs0,所以conf_apps.cfg中就要写类似这样:Sega Mega Drive Emulator=pfs0:/APPS/PGEN.ELF

OPL支持VMC,即虚拟记忆卡功能。在需要使用该功能的游戏上按△,VMC Slot 2项,选Use Generic,not set就会变成generic_1,进入该项选32M并格式化,硬盘里就会出现一个文件/+OPL/VMC/generic_1.bin,这就是虚拟记忆卡文件了。uLE可以mount将该文件,然后就可以往里面复制旧存档了。

很多自制程序都需要在记忆卡里保存配置文件,所以slot1里的物理记忆卡我没有用来保存游戏存档,存档放VMC里就好。

OPL支持IGP(In-Game Reset?),游戏中按L1+L2+R1+R2+Select+Start就是软复位,L1+L2+L3+R1+R2+R3则是关闭电源。软复位后执行哪个ELF可以在设置里面改,我指向了mc0:/BOOT/BOOT.ELF,也就是uLE,默认是Sony Browser。

封面文件PS2上没法自动下载,需要自己下载以后放到/+OPL/ART/目录下,这里可以下到一大堆,不过也没有很齐就是。想要补的话,这里也可以找到一些。

用网线将ISO传入PS2可以用HDL Server和hdl_dumb。OPL内置了HDL Server,可很奇葩的是,所有人都说去设置里选Start HDL Server,却没人提怎么样让这个选项出现。最后还是我把源码抓回来看过才知道,需要加载硬盘,并且开启了删除和改名游戏的选项才行。

这种方式需要非比寻常的耐心,我这里从PC灌入游戏的速度大概只有不到1.3MBps,也就是1GB大概需要13分钟的样子。好在PS2功耗一般只有15W左右,加上一块硬盘也顶多25W,不至于太心疼电费。

PS1游戏方面,基本就不要指望了。PSXLAUNCHER需要5W及以后的机型,我的机器用不了。PS2PSXe我测试了月下,画面各种破碎。至于传说中的Sony官方模拟器POPS-00001,模拟月下只能用AV输出,并且CG黑屏,并且人物开始对话就死在那里了。

2013年8月1日星期四

Wii

前几天我弟告诉我说,他那里有个Wii放着积灰,于是这台机器就落到了我的手里,整个经过一如我手里那台39001一样。或许,如果把认识的人全问一个遍,搞不好我可以把三红姬和三公主也给收了?

首先做功课。Wii的整个系统大致包括三个部分:IOS、SystemMenu和频道。

IOS有点像驱动程序,每个IOS都提供了各自不同的功能。IOS有编号,范围在1至255之间。每个编号的IOS还有各自的不同版本,如IOS36-1042,1042即IOS36的其中一个版本。

除了官方的IOS外,还有custom IOS(cIOS),即在官方IOS基础上改出来的IOS,用于提供官方IOS不具备的功能。cIOS通常都安装在很靠后的slot,如cIOS36一般装在IOS236。cIOS装在哪个slot也并不是固定的,如d2x v10包含了cIOS37、38、53、55-58,安装位置可以自由选择。

SystemMenu是Wii的用户界面,平常说的3.2J、4.1U,指的就是SystemMenu的版本。虽然看起来SystemMenu干的是操作系统的活,但SystemMenu和各个频道以及游戏是在Wii系统中是平级关系。加载某个游戏后SystemMenu即退出,游戏并不是运行在SystemMenu之上。

频道即为应用程序。Mii、Shop等等和光盘游戏一样,都是独立的应用程序。不同的地方无非是频道安装在内置存储空间内而已。

Wii破解的大致过程就是通过系统漏洞,加载SD卡上的第三方程序将The Homebrew Channel(HBC)安装至SystemMenu。以后就可以通过HBC直接加载SD卡上的各种程序了。

我弟这个机器是日版,易碎标签上写着08年4月12日。两个手柄的电池都已经放到没电了,好在没漏液。IC应该装过,不过种类未知。220V转110V变压器还自带风扇那种,并且动静超级大。(用了几个小时后实在受不了,那绝对是可以让人神经衰弱的分贝,减掉风扇电源线了事。)

开机进入Wii本体设定,显示:You tried to access the address marc:JP/JP/JPN/index01.html, which is currently unavailable.

网上搜了一下,这算是半砖了,据说这是日版机放了美版游戏进去并且选择升级SystemMenu的结果。一般的方法是找张附带更高版本SystemMenu的光盘进行修复,不过我这里没有刻录机,于是打算尝试直接安装HBC。

进不了本地设置所以看不到当前SystemMenu的版本,不过08年买的机器,SystemMenu版本应该不会很新,于是下了适用于3.0至4.1的bannerbomb v1HackMii Installer v1.2

询问是否加载boot.elf的提示看见了,HackMii的THIS SOFTWARE MUST NOT BE SOLD的提示也看见了,然后就没有然后了,Press 1 to continue的提示不出现,卡在这里不动了。

既然能够加载boot.elf,那bannerbomb的部分应该是正常的。在网上搜了一下,虽然也有人遇到过类似问题,但情况都不大一样。抱着试试看的心态,先下了旧版的HackMii v1.0,居·然·安·装·成·功·了,无语…

因为机器够老,可以把BootMii装在boot2,也算福利吧?虽然全部搞好了之后应该还需要再备份一次,不过为了以防万一,还是先按图索骥备份NAND。出厂坏块有12个,也不知道算不算多。顺便在BootMii看了看版本,3.1U,果然刷错了。

然后是修复半砖。爬文的结果,似乎是用ARC把Region改对了再刷一次就好,不过为了方便,我还是找了个别人弄好的修复包。我没有刷IOS,而是直接上ARC。过程很顺利,重启以后本体设置恢复正常,3.2J。

SystemMenu好升不好降,所以暂时打算留在3.2J。日文各种看不懂,所以装了个汉化版的SystemMenu

因为曾经跨区升级,所以新闻和天气都双频(Double Channel)了。找了个Duplicate Channel Remover,可这东西居然把U版和J版的东西一起删了,于是频道列表里弄出两个白色图标,一点进去就说要升级。想要的话倒是装回来就可以,不过想想没什么用,暂时A+B拖到后面去了。

IOS方面,除了cIOS36(IOS236)和BootMii装的IOS254,d2x-v10-beta52我只装了cIOS37(IOS249,据说对游戏兼容性比较好),以后有需求再说吧。

读取硬盘游戏方面,据说CFG USB Loader可控性要好些。用起来倒没觉得有什么问题,只是不过这玩意儿默认的背景音实在鬼畜,中文字体也很难看,搞了个微软雅黑的弄进去还是难看。

Priiloader,据说主要是防砖用的,另外还可以装些Hack,实现比如开机跳过健康警告,直接进HBC等功能。Priiloader v0.7默认设置下hacks.ini放SD卡根目录无效,需要放在:/apps/priiloader/hacks_hash.ini

WiiMod号称可以替代MMM等等等程序,确实还不错,就是程序略有点问题,很容易按键双击。另外WiiMod的Wad管理功能不是很完整,Wad Manager仍然是需要的。

WiiXplorer是一个文件管理器,而且有FTP服务器的功能,SD卡不用拔来拔去的了。该程序读取USB设备需要IOS58或者IOS202,我改成IOS249也一样可以用。只不过从无线网卡走FTP上传数据,速度大概只有700KB/S的样子,太慢了一点,没太多实用价值。

目前差不多就是这样了。试了试《纸片马里奥》和《Wii Sports》,感觉都还不错。NGC游戏也有几个感兴趣的,只是因为没手柄所以没法试。另外官方标配只有AV线,也想看看换上分量是什么效果,只希望别跟二公主一样满屏狗牙就是了。

Update 2013-08-07

DOP-Mii可用于直接在Wii上从NUS下载官方IOS,顺便还可以打补丁。比起一股脑装一堆东西进去,还是自己控制装些什么比较好。

由于我之前下的CFG USB Loader版本太老,并且字体很难看,并且WiiXplorer的FTP服务器不是很稳定导致修改配置文件还得拔SD卡,所以我还是找了个USB Loader GX来试了试。相比CFG UL,ULGX界面更好看,字体更好看,自动下载图标,而且所有设置都有GUI可用,只要稳定性和兼容性没有太大的问题,我大概是不会换回CFG UL了。

ULGX官网上的版本同样很老,下载此处的r1215自己组合一个出来好了。装上Forwarder(需要IOS58)以后,可以直接从游戏中退出到ULGX。不过这个设置是全局的,从其他Homebrew中退出也会加载ULGX,而ULGX加载又挺慢的,所以这个功能只有在机器折腾完了以后才比较有意义。

MIOS是一种特殊的IOS,NGC硬件兼容层IOS?总之,是跟加载NGC游戏相关的IOS。DIOS-MIOS配合较新版本的ULGX,即可加载USB设备上的NGC游戏(DM Lite用来加载SD卡上的游戏)。与其他IOS不同,一台Wii只能装一个MIOS,所以安装DIOS-MIOS以后就会把官方的覆盖掉,想要恢复的话仍然是从NUS下了装回去。

试了试NGC的斑鸠,加载是没问题,可还是因为没手柄所以没法玩。目前淘宝上几乎找不到NGC的新手柄卖了,那些号称全新的也无非是从二手里挑出成色好的来卖,价钱还要小100。再加上记忆卡,想在Wii上玩NGC游戏投入也不是很低,兼容性还未必好,不太值得折腾,真想玩上模拟器好了。

Update 2013-08-09

新的南孚5号电池电压大约是1.6V左右,用到手柄会断开信号是1.15V的样子。很久之前买的劲霸1800mAH,翻出来的时候电压只剩下0.8V左右,充电12个小时后是1.39V,装进手柄依然显示四格满电,就是重量比南孚重了很多,有些压手,而且用不了太久就没电了…

新闻和天气频道被老任给砍掉了,所以也被我砍掉了。Shop更新到了v21,NUSD和DOP-Mii都下不回来,只有WiiDownloader有。另外这个版本需要IOS56 v5662,这倒是可以用DOP-Mii来装。

Update 2014-01-12

之前用易驱线接了个3.5寸的硬盘用了一段时间,不过老这么吊着也不是事儿,就又买了个IT-CEO的USB 3.0硬盘盒(NS1066芯片)装了块120G的日立硬盘,谁知道却出问题了。

USB Loader GX加载时卡在Initialize USB Device,进去之后提示找不到USB设备。同一块硬盘,WiiXplorer用IOS58可以正常加载。将ULGX升级到v3.0 r1218,换用IOS58,又卡在Reinitialize devices。

用d2x-cios-installer,将cIOS58安装至IOS250,使用250版的ULGX v3.0 r1218,成功加载硬盘,进入游戏也正常。

另外,在淘宝上买了一只Wii Pro组装手柄。价钱倒是不贵,35,只是插上Remote后HBC和ULGX都有崩溃的情况(Exception (DSI) occurred!),进MH3也一样死机。

再换上易驱线,cIOS50加载程序,cIOS37加载游戏,接鸡腿进MH3后换手柄,似乎一切正常。看来很有可能又是NS1066的问题?

顺便整理了一下cIOS。BootMii的IOS254保留,IOS249删除,留d2x的cIOS36(IOS236)、cIOS37(IOS237)、cIOS38(IOS238)、cIOS50(IOS250)。

2013年4月8日星期一

New PC, Finally...

配置单

  • 主板:华擎 H77 Pro4/MVP
  • CPU:Intel I5 3470
  • 内存:芝奇 C10 8G*2
  • 显卡:微星 N650 Ti Hawk 1G
  • SSD:Maxwell MX-SSD-X3000-120GB
  • HD:希捷 ST2000DM001/神舟数码
  • CPU风扇:超频三 红海至尊版
  • 机箱风扇:超频三 旋风F-122Y
  • 电源:航嘉 jumper500
  • 机箱:酷冷至尊 开拓者U3普及版
  • 音箱:惠威 D1010MKII
  • 显示器:DELL U2312HM
  • 减震架:UMBRELLA 3.5寸硬盘光驱位减震架
  • 音箱线控:仿麦博M200十周年纪念版

因为家里某亲戚需要一台“可以上网就好”的机器,正好我也有换机器的计划,于是就把我的旧机器给了他。虽然计划提前导致各种匆忙,还遭遇了各种缺货各种涨价和一次退换,不过我上次买机器是很久之前(真的是“很久之前”)的事了,所以总的来说还是挺开心的吧。

配置单如上。价钱就不写了,如果加上打算入的键盘和之前买的几个硬盘,总价已经突破9k,实在是很深重的负罪感。其实仔细看来,这张单子上压根就没有什么奢侈的东西,顶多是每一样都稍微放松了些。所以说计算机配件降价什么的,完全就是错觉。

主板

本来想选技嘉,但因为某胖纸说:“现在的主板没什么技术含量,有什么必要买那么贵”,再加上这一块我用过,于是就选了它。只可惜人品不好,主板是本次采购中最折腾的一样。

东西本身倒没太多可说的。整体外观谈不上漂亮,做工过得去。该有的功能都有,还比一线那些多了一块ASM1061。各插口布局略蛋疼,全是直插式导致走线各种难看(尤其是SATA),前置音频接口离太远导致无法背线。其他的也就没什么了。

之所以说它最折腾,是因为经历了一次换货。拿到手的时候我就发现,我选的内存在这块板子上上不了1600。本以为有可能是兼容性问题,就给华擎售后写了信。后续测试又发现,同一条内存在四个插槽中表现不一,似乎并不是兼容性问题。最后还是到同一型号另一块主板上跑了一下才确定,是主板的硬件问题。

经过这么一通折腾,东西到我手上已经接近一个月了。不幸中的幸运吧,这块板子是在亚马逊买的,而亚马逊的退换期是30天(京东是15天)。换货过程很顺利,亚马逊客服态度各种好,提交申请后的处理速度也很快。唯一让人有点介意的地方,换回来的东西不是新的。

我个人并没有处女情节,事情能解决我觉得就可以念佛了。但其实选择先退货再重新下单,就可以拿到一块全新的板子。既然售后政策有空子可钻,亚马逊这种换“良品”的做法,还是有些不大厚道。而且换货时快递把我的旧发票收走了,新发票却要单独用挂号信给我寄来,实在有些麻烦。

机箱

机箱是这次采购选得最痛苦的一样,同时满足“尽可能大”,“能放进我的电脑桌”(鄙视一下有全塔情结的某胖纸,居然说放不下就换桌子)和“有货”三个条件的机箱实在是没有几个,只好买了它。而这次采购要说有什么东西买得最不满意,那也还是它。

这几年来,酷冷至尊的机箱我买了也有四、五个了,品质方面有种每况愈下的感觉。具体到这个机箱,最不满意的一点是边缘处理很不好,装机时我的手指居然见红了。再加上漆也不厚,很容易就会在外观上留下划痕。

四年前我其实买过一个同样型号的机箱。印象中,那个机箱并没有边缘太过锐利的问题。而且当时没有的Reset键现在还是没有,当时有的eSATA如今却拿掉了,空出来的位置却没有用USB来填上。

如果最近要买机箱,我推荐看看thermaltake家的东西。几个月前我买过一个,造型方面有些花哨,但是做产品的态度要比现在的酷冷至尊好很多。

显示器

在显示器这个问题上,我在乎的只是分辨率,尺寸倒是没所谓。可是2560的U2713H那性价比实在下不去手(某常够狠,表示一下佩服),U2412M又没货,所以就退而求其次了。

第一次在网上买显示器,这一款又只包无亮点,于是很忐忑。还好运气不错,开箱测试无点,漏光也不像网上说的那么离谱,基本完美。

DELL出名的立架是很有趣,高度和垂直角度可调感觉很实用,不过旋转90°对我来说倒没什么用处。显示器背后有两个USB口,左侧也有两个,正好机箱前面板USB口不多,挺方便的。

因为之前那款是急着用所以随便买的TN屏,换上这一款之后观感差距非常大。相对来说,这一款的色彩浓度非常高,初看之下确实有一种油腻感。颗粒感也确实存在,全屏显示同一种颜色时,会有色彩不均匀的感觉。不过这也算不上什么缺点,毕竟价钱摆在这里。只需要把亮度和对比度调低一些,再用上几天习惯一下就好。

至于漏光,当我瘫坐在椅子上看东西的时候,某些情况下显示器的边角的确会出现明显偏色。但坐正了去看,偏色情况又会消失。这算不算漏光?呃,不大清楚…

就整体效果而言,比不上爱疯,比我手上另一个同样号称IPS屏的ifive mini2好很多。1500以下,品牌、面板和设计,恐怕也选不出更好的了。

内存

要说旧机器上让我觉得最憋屈的东西,无疑就是内存。启动就占用1G多,开个浏览器逛逛就涨到3G多,再随便干点什么,硬盘就开始奏狂响曲了。若说升点内存吧,这一代当前的价格比上一代便宜得多,花更多的钱却只能用更差的东西。你还别不乐意,再晚点儿你即使愿意掏钱也未必买得到了。

这种恶心的状况,从史前的SDRAM时代我就遇到过,然后DDR1、DDR2,每一代都遇到过。所以这一次,即使价钱比年前涨了50%,我还是直接上了16G。(写这些字的时候我又去看了看,价钱比我买的时候又涨了15%。)

现在的状况是,划出4G作RamDisk后,内存占用也很少超过10G。嗯,稍微矫枉过正了些。

音箱

我的桌子比较小,100*50的,再加上摆位问题,地上也放不了东西,所以本想买小一点的音箱。创新的T20II是不错,可一来贵了点,二来又缺货,倒是免了我一番纠结。

想起乔伯号称低烧,于是就让他帮忙选一对。在数次鼓动我掏出1k以上来失败之后,他还是在我的接受范围以内选了款最贵的。交友不慎的例子,莫过于此。

东西拿到后发现,包装纸箱侧面中部裂了个口。虽然东西没事,但如果是在配送过程中造成的,那亚马逊真的应该考虑自筹快递了。

重量方面还好,主箱是比较压手,副箱没我想象的重。线材长度很够,尤其主、副箱之间的线,应该是有两米。不过比起非标准线材,我更宁愿是莲花线,出了什么问题好换。

背噪确实有,而且不用贴很近,只要仔细听就能听到,不过还在可以接受的范围。开关电源时动静挺大,恐怕是电路方面省了点什么。

以我的桌子来说,体积还是大了点。两个音箱和一个显示器,一米长的电脑桌就排满了。深度方面也很可观,扣除必要的间距,半米宽的桌子会占去一半。相比之前用的2.1的小箱子,个人会觉得略有压迫感。

音质方面,我也不发烧,说不出什么来。第一印象是解析能力和定位能力比之前的便宜麦博要强很多。低频对我来说很够了,只是高频和中频总觉得能清亮些更好。这一对能比较明显地区分出ape和mp3的差距,可一想到硬盘上那么多mp3,又觉得能分得出也不全是好事…

最后,以多媒体音箱而言,这一对的指向性有些太明显。直接摆在桌子上,坐直了音箱是在耳朵下面,方向感和窝在椅子上听的时候差别很大,多少也算个小缺点吧。

硬盘

SSD的水太深,MLC、TLC,同步、异步,还有颗粒生产商、主控、固件等等等。所以我也懒得纠结了,买了某胖纸选用的同一款。主控很渣4k很挫,不过在便宜货里注明了同步颗粒的,的确也就只有这一款。

牌子和性能离一线有点远,但好歹是SSD,基本表现还是在,所以一直以来都还算满意。可是有一天闲逛之后发现,这款SSD有了新固件之后,我就开始有点不满意了。

我手上这一块原厂固件是4.6,但万胜网站上只有4.3升至5.0的工具。想着硬盘还是保险一点吧,就写信给售后,问问4.6能不能用,可是过了十多天,还是没有收到回复。不管不顾把固件升级了,本以为应该不至于有什么问题的,谁知道刷完了测试发现,除了Seq Read之外,其他性能指标有明显的下降,下降幅度大概是3%到9%的样子。再次写信过去问,看看这次能不能收到回复吧。

机械硬盘方面,目前机箱里装了三个,都是希捷,都是2T。我倒不是有多喜欢希捷,实际上买了三次才买到一块两碟(三碟更慢,声音也更大),不但不喜欢还有一点不爽。这次本想说换西数的,可是2T没有蓝盘,绿盘价钱不便宜性能也不怎么样,所以不得已还是选了希捷。

在安装硬盘的时候,我还遇到了很严重的共振问题,最后买了减震架挪了两个硬盘到光驱位解决了这个问题,也颇费了一番周折。

显卡

从各种评测来看,A卡的性价比应该是要好过N卡的。尤其是OpenCL,A卡居然甩了N卡几条街。奈何驱动和实际游戏方面,A卡的表现太不给力,再加上黑苹果的驱动问题,所以拖了好些日子之后,还是选了块N卡。

因为还没开始打游戏,这块卡表现如何暂时还不清楚。但做工、散热和噪音方面,我都还比较满意。而且拖了几天价钱还降了100块,这是本次采购中买到唯一一样降价了的东西,也算是意外的收获吧。

散热

我不超频,再加上比起温度,我更介意的是噪音,所以若不是担心原扇太吵,我都可以不必买CPU风扇了。不过为了预防万一,还是多买了一个12cm的机箱风扇备用。

实际使用下来,这个全铜表现还是不错的。1500RPM左右的低速状态下,CPU的闲时温度不会超过30度。当然,IVB本来也没多热情。从这个情况看来,不想花钱的话,30几块的红海mini搞不好都可以将就用。

至于多买的那个风扇,虽然风压还不错,但有点儿太吵。加上电阻式降速线,声音是下来了,可不多一会儿降速电阻的确有很明显的发热问题。既然现在温度并不高,所以我还是把这个扇子给拔掉了。

机箱原厂就附带了一个前置风扇,是对着3.5寸硬盘位的。装在这里的硬盘,温度大概在25到30度的样子。而为了解决共振问题挪到光驱位的两个硬盘,大概是35度左右。略高些,但也在可接受的范围内。

从AIDA64的读数来看,除了南桥,各组件闲时温度都只有30度上下,应该是还不错。

2013年2月19日星期二

IFIVE Mini 2

其实一直觉得平板于我没什么用,只是年前想着给自己买点啥,再加上对现在的安卓变成什么样了有几分兴趣,所以就打算买个7寸的小平板来玩玩。

亲儿子Nesux 7是最先考虑的,但也是最先放弃的。性能和固件方面,N7不用怀疑,可我实在不想买水货,于是作罢。

从艾诺出极光开始,我对这个牌子的印象就很不错。1280的IPS,他们是国内第一家,价格和品质之间更倾向于后者也是我所欣赏的,而且一直以来对开源都相当友好。可是艾诺前些日子出的神话实在是把我恶心坏了,只能说,没缘分吧。

第五元素是之前压根没什么印象的牌子,或许是之前一代IFIVE Mini分辨率才1024的关系,即使看见了我大概也不会留意。这次Mini 2虽然没用四核,不过除了CPU外,各方面配置都算国内一流。如果要说等四核,还不知道要等到什么时候去,所以将就吧,就他了。

原价799,天猫上订了个839的套餐,就只是图套子。16号大年初七下午3点半下单,18号上午11点送达,顺丰这次表现很不错。

本体略厚重(9.5mm厚,380g,iPad Mini则是7.2mm厚,308g)。背面是光滑材质,不防滑且非常容易沾染指纹。边框上了银漆,塑料感很重,估计也很容易磨损。组装时搞不好用了很多胶水,因为边框和背盖的边缝都有残留。

不过我也承认,上述这些话略有点儿严苛。IFIVE的做工用料自然是没法和水果比的,可要跟火腿肠之流比一比,却也不至于完全拿不出手就是了。真正明显有差的是配件,USB和耳机无论线材做工都很一般,比之中兴、华为都不如。

至于套餐里的皮套是什么材质,不问可知。因为是原厂,服帖倒是服帖,可是边框并不厚材质却太厚,装进去甚至会影响操作。绒布袋则略大,而且是明艳艳的本命红,连我都有点带不出去。感觉上,都不大合用。

开机之后的第一印象,就是“花里胡哨”四个字。启动画面且不去说了,IFIVE所谓skin2.0,泰半都体现在题图屏幕上半那几个色块上。这几个色块既不可删,也不能挪,就这么霸占着首屏。左边六个大的,除了左上角绿色那个之外,其他五个都表示一个App,略有些像Windows Phone的瓷砖。好看未必有多好看,无用却是真真的。

显示效果上,我个人是觉得差水果有点多,至于是色温色调还是对比度什么,等我问过某胖纸再说。1280的分辨率虽然还是略低,可比起iPad Mini仍然是完胜。不过要说字体,安卓明显输给iOS。好在安卓换字体容易,等过几天换上冬青体试试。

找USB驱动时还遇到了一点麻烦,IFIVE的官网和论坛上都没有,瑞芯微那边也没有,却找到了这么一张抱怨贴。最后无法,还是装了恶心的豌豆荚。

买国产货最担心的就是系统维护的问题,升级4.2之类的我是不指望了,只要出了问题会去修就好,可看IFIVE这德性,我持悲观态度。而IFIVE对待开源明显就是没兴趣,官方论坛也是个小白横行洪水肆虐的地方,所以第三方估计是没什么指望的。

嗯,暂时就是这些了。

2013年2月8日星期五

iPhone 4S iOS 6.1 Upgrade and Jailbreak

已更新,见文末。

这次要做的事情是将4S从5.1.1升级为6.1并越狱。先下iOS 6.1 for 4S吧,这玩意儿919M,需要花上一点时间。

然后是备份。首先打开iTunes,手动备份一次。升级系统后,所有通过App Store安装的程序都需要重新下载并安装一次,非App Store渠道安装的程序都会消失。前一类没所谓,升级过后一切数据都还在。至于后一类,有需要的话可以用iTools备份一下,这东西导出的ipa是包含了用户数据的。

有传言说,已越狱设备使用非DFU模式升级会导致白苹果。本着宁可信起有的态度,DFU吧。iTools有进入DFU模式的向导,还挺方便,跟着做就是了。接着在iTunes中按住Shift键点“恢复 iPhone”,选择之前下载的ipsw文件。

升级iOS很快,10分钟都要不了。完成升级后需要再来一次设置向导,接着用之前的iTunes备份恢复设置,同样10分钟不到的样子。完成设置向导之后,再来是从App Store拖回曾经安装的程序。一切搞定之后,设备就成功升级iOS 6.1了。

接下来是越狱,下载evasi0n,解到任意目录。拿掉设备解锁密码,点个按钮照着做,过程很快也很顺利。天气预报崩溃的问题,不知道是不是人品好,没遇到。

使用非DFU模式升级iOS是否会有问题,非App Store渠道安装的程序是否可以保留我并不确定。不过对于没太折腾手机的人来说,再弄一次Cydia程序也不是什么大问题,就当是重装一次系统清理一下垃圾好了。

Update 2013-02-12

4S又升级到了6.1.1,据说修复了性能和电池消耗量大的问题,所以,继续折腾吧。

下载iOS 6.1.1 for 4S,920M,只比6.1多了1M而已…

这么短的时间又要再搞一次,虽然轻车熟路,可也的确有些烦,于是还是翻了一下Cydia的备份问题。PKGBackup很有名,但也有点太贵了。xSellize虽然有比较老的版本,可是中文显示为乱码,而且有自动退出的问题。OpenBackup设置项太少,压根看不出他打算做些什么,不靠谱。想想我也没用Cydia装多少东西,所以就没折腾了。


Update 2013-02-26


iOS 6.1.2 for 4S,据说已经修复了Exchange的问题,不过锁屏漏洞还是没修。6.1.3也已经beta了,只是有消息称该版本已封堵evasi0n所使用的漏洞。


因为我的手机使用频率并不恒定,而且都是每天一充,所以Exchange有没有导致更耗电并没有明确的感觉。鉴于情况还不明朗,先用着6.1.1,等等看吧。

2012年11月30日星期五

OpenWrt Attitude Adjustment

换上12.09差不多两个月了吧,各方面都很满意。尤其是近几天折腾了一下RTD1186,更觉得有完整的第三方支持是多么幸运多么可贵的一件事。

这是我的补丁包:https://www.boxcn.net/s/ybou0cl9yekzd2x7e5mh

基于svn://svn.openwrt.org/openwrt/branches/attitude_adjustment,r34080,没改多少东西:

./nls-cp936.patch
./package/exfat-utils/Makefile
./package/exfat-utils/src/Makefile
./package/exfat/Makefile
./package/exfat/src/Makefile
./toolchain/uClibc/patches-0.9.33.2/999-posix_fallocate.patch
./feeds/packages/net/aria2/Makefile
./feeds/packages/net/autossh/files/autossh.config
./feeds/packages/net/autossh/files/autossh.init
./feeds/packages/net/openssh/patches/999-env-pwd.patch
./feeds/packages/net/vsftpd/patches/999-ssl.patch
./feeds/packages/net/vsftpd/Makefile
./target/linux/ar71xx/patches-3.3/999-tl-wr941nd-usb.patch

除了nls-cp936.patch需要手工打补丁外,其他文件覆盖即可。

busybox

busybox的中文显示需要特别配置一下,首先是打开unicode支持,其次要将"Range of supported Unicode characters"的值改为0,"Allow wide Unicode characters on output"改为yes。另外vi也可以通过调整配置使之能够显示中文,但也仅仅是显示而已,输入和删除的时候仍然会遇到光标的问题。

nls-cp936.patch

增加nls_cp936.ko,mount的时候可能会用到。

exfat、exfat-utils

虽然放在这里,但不知道是usb供电不足还是代码稳定性不佳,总之我不建议挂OpenWrt上的移动硬盘使用exfat。ntfs我也试过了,跟exfat一样,最后我用的还是ext3。

uClibc

增加了fallocate,据说对samba的性能有帮助,据说。

aria2

OpenWrt挂迅雷离线就靠他了。

autossh、openssh

让openssh可以从环境变量中获得登录密码,出墙需要用,详细说明见之前写的《OpenWRT AutoSSH》

vsftpd

打开ftps支持。如果要给远端共享文件的话,或许用得上。内网还是不要用了,路由的cpu扛不住,会导致速度下降很多。

999-tl-wr941nd-usb.patch

我的路由改了个usb口出来,官方的代码没有提供支持。

2012年11月28日星期三

RTD1186折腾记之修改根分区格式

这个盒子是一个朋友买来之后觉得没用暂时放我这里的,Realtek RTD1186方案,主频750MHz,内存512M,闪存4G。单就硬件而言,比我的路由强很多,只不过没有OpenWrt之类完整的第三方支持,所以干什么都需要自己来。

本地端adb connect 192.168.1.186,然后打开adb putty,Host写transport-any,Port保持5037,居然就这么连进去了。固件本身是已经root了的,倒是少了很多麻烦。只是随便乱逛了一下之后,我有一种头痛的感觉。

从/和/system看来,这像是个标准的Android,只是目录结构和文件各种乱。根目录下居然放了三个内核模块。/system/rtk_rootfs/usr/local/bin/下面有个44.1M大的opt2.8.tar。/system/rtk_rootfs/bin/opt和/system/rtk_rootfs/usr/local/bin/opt下各有一套optware,区别仅仅是前者比后者多了两个可执行文件。至于man、include一类,我都不想提了…

想要删改,第一个问题是/system的分区格式。原厂用的是只读的squashfs,随便改点什么都要刷一次系统,这也太累了,改掉。

刷固件并不需要ttl,但是为了能看见自己都干了啥,ttl还是需要的。

将盒子拆开,电路板上只有一个六针的接口是空着的,标注是J1到J6。用万能表在断电的时候测针脚与高频头外侧之间的电阻,J1是0Ω,J4和J5绝缘,其他三针不为0。上电再测试直流电压,J1为0V,J2为2.8V,J3示数不稳定,J6为3.3V。这应该就是ttl针脚了,J1是GND,J2是RX,J3是TX,J6是VCC。

在最终达到目的之前,我遇到了蛮多问题的,也花了不少时间,这里就不写了,直接上结果。

从ttl看到的启动信息里有这么一段:

One H27UBG8T2A chip has 1 die(s) on board
nand part=H27UBG8T2A, id=add7949a, device_size=4294967296, chip_size=4294967296, num_chips=1, page_size=8192, isLastPage=1, eccBits=24

H27UBG8T2A就是闪存芯片的型号,Page尺寸上面就有,8192字节。以型号为关键字搜到了一个pdf技术文档,其中有写OOB的尺寸,448字节。这两个数据在制作img的时候需要。

从官方下回来的install.img中把mkyaffs2image和squashfs1.img解出来,然后:

unsquashfs squashfs1.img
mv squashfs-root system
mkyaffs2image -f -c 8192 -s 448 ./system yaffs2_root.img

改名的那一步不是多余的,mkyaffs2image那一句的./也不是多余的,神奇的设计。

虽说squashfs是压缩过的,可192M的img转换成yaffs2就膨胀到1.2G,可见官方的固件里有多少垃圾。不过这跟8K的Page尺寸也有关系,这块芯片显然更适合用在DC一类的设备里,当系统盘存小文件实在太浪费空间了。

将原厂install.img里的squashfs1.img替换为自己做的yaffs2_root.img,打开configuration.xml并修改:

--- configuration.xml.orig
+++ configuration.xml
@@ -40,9 +40,10 @@
                 <fileName>package5/bootloader.tar</fileName>
                 <version>N/A</version>
             </image>
-            <image type="squash">
-                <fileName>package5/squashfs1.img</fileName>
+            <image type="yaffs2">
+                <fileName>package5/yaffs2_root.img</fileName>
                 <mountPoint>/</mountPoint>
+                <sizeBytesMin>2147483648</sizeBytesMin>
             </image>
             <image type="yaffs2">
                 <fileName>package5/yaffs2_2.img</fileName>

我把新的/system设置为2G,这样/data还有1.7G。其实MIPS跑安卓压根没什么用,/system再改大点也没关系。

把改好的install.img放到一个U盘的根目录下,按住盒子前面板的reset,或连上ttl的时候按住空格键上电,开始刷固件。bootloader会自动构造传递给内核的参数,原厂init会依序尝试squashfs和yaffs2,所以没什么要改的了。刷完之后会自动重启,挂载分区处不知道为什么需要花很长时间,除此之外一切正常,/system已经变成可写的yaffs2了。

2012年8月27日星期一

PhenomMsrTweaker

或许还是主板太老太次的关系,最近发现即使在BIOS里打开Cool&Quite,CPU的主频仍然不会自动调节。

搜了一下,找到了PhenomMsrTweaker。用倒是能用,不过却有点问题。首先是P0到P4一共五档,我这里却只有P0和P1两档有效。P0设置为16X/1.25V,P1设置为4X/0.8V,重启后空载时CPU-Z显示的主频的确是800MHz,但核心电压却是1.032V。

虽然机箱出风口是凉快了些,但能不能省点儿电实在不确定。近来开着机器下东西的时候挺多,这100多W的,有点儿罪恶感的说。

2012年8月14日星期二

CMCC On Licensed EVDO Version iPhone 4S

因为某些不可抗因素,我终于还是用上了iPhone 4S,国行C网版。不过在为了网速老老实实换号之前,我尝试了另外一个法子。

双模卡解锁

CDMA是一种很悲催的制式,因为高通死要钱,导致现在CDMA终端很少,网络覆盖也很不全面。为了解决全球漫游的问题,于是就出现了三频机和双模卡这类东西。所谓双模卡,指的是一张卡上有两个号码,C网号和G网号各一个。有C网覆盖的地方用C网,没有则尝试用G网。

电信的龙卡就是一种双模卡,其内有一个IMSI以46003开头的C网号和和一个IMSI以20404开头的G网号(该编号属于荷兰沃达丰)。在大陆以内使用前者,出国之后使用后者。

经过前辈们的试验发现,IMSI以46003和20404开头的卡均可激活C网版国行4S。如果想要在国C上使用移动或联通号,可以制作一张特别的双模卡,写入一个20404开头的C网号和一个移动或联通的G网号,以达到解锁激活的目的。

制作双模卡首先需要破解G网号。召唤某胖纸帮忙逛淘宝选货,凤凰读卡器11.5人刀,电信标双模卡17.5人刀。卡比设备还贵,有点小意外。据传不好的空白双模卡有被烧的风险,不过我买的这种倒是没看见什么负面反馈。至于“4S解锁专用”的大鹏4S和谐卡,比我买的这种贵不少,听了某人的,没选。

(电信标双模卡SIM卡应用中有一项“UIM卡信息”,点击显示“散采客户专用卡”。散采对应的或许是集中采购?这么说该卡未必真跟电信有关系。)

我手上的移动SIM卡是08年办的雅斯拓,不过ICCID内含的制卡年份是84年,很奇葩。用悟空F9解卡,过了半个来小时感觉不太对劲,于是拔下来用橡皮擦了一下金手指重新开始,不到8分钟就解出来了。总数12535,时速113564,似乎是运气很不错的样子。

(烧写SIM卡我不熟,不过我觉得还是有不少安全隐患。首先是写入卡中的数据能不能被直接读出来?我搜了一下,一卡多号的魔术卡可以用SimEasy读取出写入的KI,至于单号卡和双模卡是否可以尚未确认。其次,PIN可以在手机上修改,但PIN被锁可以用PUK解锁,而空白卡的PUK都是很容易被查到的默认值。目前我能确定双模卡的G网号PUK是可以改的,但C网号可不可改,同样尚未确认。基本上,用烧写的手机卡就要注意安全,最好不要掉…

按照网上的说法是先写C网号,却没有解释原因。其实双模卡中虽然有两个号码,但却只有一个ICCID,后写的那个会覆盖掉之前写入的那个。听说C网定制版的4S不但锁网而且锁号,如果锁的是ICCID,或许用这个法子也可以解锁的说。

写C网号的软件是卖家附盘里的UIM Card Personalize(091026 CDMA EVDO)。因为可执行文件特意改名为9600.exe,所以我也老老实实把读卡器的串口速率改了。先Read UIM,将IMSI前几位改为20404就可以写卡了,如果少填了什么必备的数据程序会提示的。

写G网号我用的也是卖家给的程序,文件名叫“双模牛牛版本.exe”,窗口标题“SIM卡写号工具 专业版 V1.0”,可以改PUK。如果是手工输入数据,记得该软件SMSP字段需要+号。

写完的卡我放进中兴U880试过,发现无法接入网络,即使手工选择运营商也不行。再试Nokia N78,可以正常使用。继续试C网的华为C2829,居然还有信号,虽然电话显然不可能打得通。

全部搞定之后剪卡插入4S第一次开机进入并向导,激活正常。不过这毕竟是非常规手段,电话短信是没问题,想要用好还有得折腾。

(去官网查询保修服务和支持期限,发现苹果似乎是从第一次激活的日期开始保修一年,至少我手上这一台是。)

升级、越狱

本机自带系统是5.1(9B179),爬了很久的文我也没找到完美越狱的工具,貌似5.1的完美越狱从来就没出现过?最后还是先升级为5.1.1(9B206),才完成了越狱过程。

越狱工具我用的是绿毒家的Absinthe v2.0.4,redsn0w名气虽然大,可readme里啥有价值的信息都没写,所以。而且用Absinthe来JB那叫一个简单,一次Click就搞定了。

软件源随便吧,威锋网、维维网、178,之类的。

OpenSSH、SBSettings、Insomnia、iFile、Nano,还没开始干正事儿呢,就装了一堆东西了Linux…

问题

使用双模卡解锁的4S国C主要存在三个问题:APN等运营商相关参数不正确;通话记录、短信、来电不显示姓名;本机号码未知。前两个问题都有办法解决,后一个则暂时无解。

运营商参数

4S的运营商设置文件都保持在/System/Library/Carrier Bundles/iPhone/目录下。首先,4S读取SIM卡IMSI前五位,然后与Unknown.bundle/carrier.plist中MandatoryVerif/SIMs数组的内容进行比对。若存在对应元素,则直接从同名子目录下读取运营商设置文件。以我的机器为例,激活卡IMSI前五位是20404,而20404子目录实际上是一个软链接,指向的是Vodafone_nl.bundle。

虽然直接修改修改Vodafone_nl.bundle下的文件也可以达到目的,不过还有个更好的法子。

(据说修改运营商相关文件,需要先装补丁。维维网的源里有,“CDMA iPhone4S 5.1.1 CC破解”。不装会怎样,我没试过。)

打开Unknown.bundle/carrier.plist,MandatoryVerif/SIMs数组中插入一条“20404_ID-898600”的数据。ID-898600表示ICCID以898600开头,这个编码属于移动。

cd "/System/Library/Carrier Bundles/iPhone/"
mkdir 20404_ID-898600
cp 46000/*.* 20404_ID-898600/

在20404ID-898600子目录中,打开version.plist,BuildVersion、CFBundleShortVersionString和CFBundleVersion都改成一个比较大的数,防止运营商数据更新。Info.plist中的CFBundleShortVersionString和CFBundleVersion也一样。然后打开carrier.plist,SupportedSIMs中增加一条“20404ID-898600”。

修改运营商数据可以做不少事,这里能查到一部分资料。不过忙活这么半天,无非就是避免换卡之后APN设置被覆盖。如果不会频繁换卡,也不在乎关于本机中显示一些沃达丰的内容,如此折腾其实没有多大意义,填一下APN就好了。

通话记录、短信、来电不显示姓名

/System/Library/Frameworks/UIKit.framework/PhoneFormats/下有一个UIMobileCountryCodes.plist文件,该文件的内容决定了电话号码的相关格式。

文件中的三位数字Key值,应该就是MCC,也就是ICCID的前三位。以我的机器为例,用于激活的ICCID是204开头,将该文件中的204由默认的nl改为cn即可。

本机号码未知

网上我看到过的解决方案全都试过,均以失败告终。因为本机号码未知,导致对方联系人不能用手机号码,只能用email地址发起iMessage对话

用旧C网手机写入本机号码的法子,我试过华为的C2829和联想的i909。

经查询,我的号码有向00447786205094、00447537410247、00447537410257、00447537410207等号码发送过短信,但并没有收到回信。

2012年7月5日星期四

Phenom II X4 955 On C.A780H

之前的CPU是Athlon64 X2 4000+,我娘淘汰给我的。撑了这么多年,实在有些受不了了。整个换I5吧,手上的东西全扔了又太可惜,于是594人刀买了个955。想着我也不去超,这一块七彩虹C.A780H应该可以对付,可事实证明,我想得太简单了…

或许是这块主板太古董了的缘故,虽然CPU型号能正确显示,但默认设置的频率却只有800MHz。痛苦的过程就不表了,最终这块CPU可以稳定跑在如下设置上:

  • Custom P-Status:Enabled
  • K10 CPU FID:X16 3200MHz
  • K10 CPU VID:1.25V
  • K10 CPU DID:Divided by 1
  • K10 CPU NB FID:1800MHz
  • K10 CPU NB DID:Divided by 1

Super PI 1M跑下来22.136秒,Windows 7体验指数7.3,基本正常。虽然折腾了一下,但AM2到AM3保持兼容性这一点上,AMD还是很值得表扬的。

2012年6月21日星期四

Razer DeathAdder

手上的Razer Diamonback跟了我很多年,除了微动有些粘黏之外,运行状况倒是良好。只不过毕竟用了这么久,背上RAZER几个字母,都快被磨光了。因为这只鼠标是收到的一份礼物,不想完全用坏,于是就买了个新的,Razer DeathAdder。

要说我有多喜欢Razer,其实还好。我眼中Razer的缺点,在这一枚DeathAdder几乎都有体现。背面所谓的类肤材质虽然防滑,不过用久了跑不掉被磨光的命运。相对于背部,左右两侧的镜面材质又有些太滑,手感差异也太大了些。再加上手掌根部缺少支撑,还有发热,DeathAdder的握持感并没有很好。

找个不错的鼠标垫应该能解决一部分发热问题,至于别的,也只好将就了。毕竟我买的只是所谓的升级版,比起换了材质的经典版便宜差不多100块。

微动糟糕的罗技不想再碰,或许下次应该搞个微软来试试。

2012年5月13日星期日

OpenWRT DNS

就我所知,目前可以应对DNS劫持的方法有以下这么些:

  1. 使用加密的通道进行DNS查询。
  2. 使用TCP协议发送DNS请求。
  3. 使用监听于非标准端口的DNS服务器。
  4. 设法挡掉伪造的DNS应答。

方案一的实现方式有VPN、Tor等等,前者需要额外的开销,后者速度和稳定性不佳,暂不考虑。

使用TCP协议发送DNS请求

由于GFW只污染了使用UDP协议发往服务器53端口的请求,所以改用TCP协议发送请求就可以规避污染。只是具体到OpenWRT,其默认采用的dnsmasq无法强制使用TCP协议向上游服务器转发请求,所以非要用这个法子,就得再装一个unbound。而unbound的资源占用对路由器来说颇为不低,所以这个方案对OpenWRT来说实用性并不强。

opkg install unbound后,修改/etc/unbound/unbound.conf:

server:
  port: 5353
  do-ip4: yes
  do-ip6: no
  do-udp: yes
  do-tcp: yes
  tcp-upstream: yes
forward-zone:
  name: "."
  forward-addr: 8.8.8.8
  forward-addr: 8.8.4.4

然后修改/etc/config/dhcp:

config 'dnsmasq'
        #option 'resolvfile' '/tmp/resolv.conf.auto'
        option 'noresolv' '1'
        list 'server' '127.0.0.1#5353'

注释掉resolvfile并打开noresolv选项,是为了让dnsmasq不使用resolvfile中的DNS服务器进行查询,下同。

使用监听于非标准端口的DNS服务器

如上所说,GFW只污染了使用UDP协议发往服务器53端口的请求,所以若是某个服务器由非标准端口提供DNS服务,同样可以规避DNS污染。

使用非标准端口的DNS服务器不多,Google DNS就不行。有个德国隐私基金会倒是提供了一组服务器,不过速度也太慢了点。于是没得选了,只剩下OpenDNS。

修改/etc/config/dhcp:

config 'dnsmasq'
        #option 'resolvfile' '/tmp/resolv.conf.auto'
        option 'noresolv' '1'
        list 'server' '208.67.222.222#5353'
        list 'server' '208.67.220.220#5353'

针对OpenDNS查询不存在的域名显示广告的问题,可以用dnsmasq的bogus-nxdomain来解决,将下面这一句加入dnsmasq的配置文件即可。(如果遇到国内流氓运营商的劫持问题,也可以用这个法子来试试。)

bogus-nxdomain=67.215.65.132

设法挡掉伪造的DNS应答

用tcpdump或Wireshark抓包可以看到,GFW会在正确的DNS应答之前加塞几条错误应答。如果我们可以分辨哪些是GFW伪造的应答并将其忽略,同样可以达到规避DNS污染的目的。

GFW伪造的应答分两种,一种返回一个错误的IP,另外一种不包含任何查询结果。针对后一种情况,AntiDNSPoisoning提供了如下规则:

iptables -I INPUT -p udp --sport 53 -m u32 --u32 "4 & 0x1FFF = 0 && 0 >> 22 & 0x3C @ 8 & 0x8000 = 0x8000 && 0 >> 22 & 0x3C @ 14 = 0" -j DROP
iptables -I FORWARD -p udp --sport 53 -m u32 --u32 "4 & 0x1FFF = 0 && 0 >> 22 & 0x3C @ 8 & 0x8000 = 0x8000 && 0 >> 22 & 0x3C @ 14 = 0" -j DROP

由于需要安装iptables-mod-u32和kmod-ipt-u32,我的OpenWRT需要重新编译,所以暂时没法实际测试。我依照原文的说法,写了下面两条规则丢掉Answer、Authority和Additional均为0的应答:

iptables -I INPUT -p udp --sport 53 -m string --algo bm --hex-string "|81 80 00 01 00 00 00 00 00 00|" --from 30 --to 40 -j DROP
iptables -I FORWARD -p udp --sport 53 -m string --algo bm --hex-string "|81 80 00 01 00 00 00 00 00 00|" --from 30 --to 40 -j DROP

至于返回错误IP的应答则有点复杂。AntiDNSPoisoning的思路是通过向伪DNS服务器查询被污染域名,获得错误IP的列表,然后再将返回这些IP的应答都丢掉。这个思路看起来可行,但问题在于如何获得完整的错误IP列表。

以下是我这里找到的错误IP:

  • 159.106.121.75
  • 37.61.54.158
  • 59.24.3.173
  • 203.98.7.65
  • 243.185.187.39
  • 78.16.49.15
  • 46.82.174.68
  • 159.24.3.173
  • 93.46.8.89
  • 243.185.187.30
  • 8.7.198.45

假如说这个列表完备,且在相对较长的一段时间内都没有变动的话,则AntiDNSPoisoning提出的方案可行。不过这两个前提条件是否成立,那就需要比较长的时间来验证了。另外,iptables的string模块是否会带来比较严重的延迟也是一个问题。毕竟按照AntiDNSPoisoning方案的思路,每个DNS查询响应都要比对十几条规则,或许为dnsmasq打个补丁来做这件事要更好一点。

除了返回的IP外,TTL值也可以用来分辨GFW伪造的DNS查询响应。比如从本机ping 8.8.8.8,得到TTL值51,则可以构造出以下规则:

iptables -I INPUT -p udp -s 8.8.8.8 --sport 53 -m ttl --ttl-lt 52 -j DROP
iptables -I INPUT -p udp -s 8.8.8.8 --sport 53 -m ttl --ttl-gt 52 -j DROP
iptables -I FORWARD -p udp -s 8.8.8.8 --sport 53 -m ttl --ttl-lt 51 -j DROP
iptables -I FORWARD -p udp -s 8.8.8.8 --sport 53 -m ttl --ttl-gt 51 -j DROP

本机的TTL为51,则路由器上少跳一次所以是52。在网络环境一定的情况下,TTL一般不会变化,而GFW伪造的应答与正确应答的TTL刚好一样的可能性也很低,所以这个法子也有一定的实用价值。

小结

从不需要安装更多的程序和规则数量两方面考虑,目前我用的是5353端口的OpenDNS。

2012年5月12日星期六

OpenWRT Tor

不知道为什么官方源里没有tor,我在网上倒是找到了一个,不过这个包是为了那些境外的爱心人士准备的,苦逼天朝民众并不适用。所以我从这个包里提取出了tor的可执行文件,自己弄了一个出来:

https://www.boxcn.net/s/f072873ad52ec5eac450

/opt/bin/tor-ctrl是我用lua写的一个tor控制脚本,运行需要opkg install luasocket,最主要的用途是通过SSH代理抓取网桥。/etc/init.d/tor start之后手工执行一次就可以,如果想的话,也可以加到cron计划任务里。

编辑/etc/config/cron,加入这么一段:

config 'task'
        option 'task_name' 'Check Tor Bridges'
        option 'task_Everyday' '1'
        option 'task_time' 'everyh_1'
        option 'task_task' '/opt/bin/tor-ctrl'
        option 'enabled' '1'

我路由器里这个Dreambox的/etc/init.d/cron脚本有bug,70行左右改成如下这样:

2)
local task_hour=`echo $task_time |cut  -d "_" -f2`

if [ $task_Everyday == "1" ] ; then
echo "0 */$task_hour * * * $task_task 2>/dev/null #${task_name} " >> /etc/crontabs/root
else
echo "0 */$task_hour * * $task_week $task_task 2>/dev/null #${task_name} " >> /etc/crontabs/root
fi

;;

在本地运行还不觉得,可对于路由器来说,Tor的资源占用还是有点大。再加上Tor还是太慢太不稳定了,留着应急吧,日常使用还是算了。

2012年5月7日星期一

OpenWRT AutoSSH

我没有VPN,并且OpenWRT默认的ssh客户端dropbear不能用来创建socks代理,并且我从SSHChina买来的帐户不支持证书登陆,所以得改个OpenSSH并且重新编译。

OpenWRT的SDK编译起来并不麻烦,只是有点耗时间。为OpenSSH写补丁也不难,将下面的内容存为999-env-pwd.patch,放到feeds/packages/net/openssh/patches下编译即可。

--- a/sshconnect2.c
+++ b/sshconnect2.c
@@ -866,6 +866,7 @@
  static int attempt = 0;
  char prompt[150];
  char *password;
+ char *env_pwd = getenv("OPENSSH_PASSWORD");
  const char *host = options.host_key_alias ?  options.host_key_alias :
      authctxt->host;
 
@@ -875,17 +876,23 @@
  if (attempt != 1)
   error("Permission denied, please try again.");
 
- snprintf(prompt, sizeof(prompt), "%.30s@%.128s's password: ",
-     authctxt->server_user, host);
- password = read_passphrase(prompt, 0);
+ if (env_pwd == NULL) {
+  snprintf(prompt, sizeof(prompt), "%.30s@%.128s's password: ",
+   authctxt->server_user, host);
+  password = read_passphrase(prompt, 0);
+ }
  packet_start(SSH2_MSG_USERAUTH_REQUEST);
  packet_put_cstring(authctxt->server_user);
  packet_put_cstring(authctxt->service);
  packet_put_cstring(authctxt->method->name);
  packet_put_char(0);
- packet_put_cstring(password);
- memset(password, 0, strlen(password));
- xfree(password);
+ if (env_pwd == NULL) {
+  packet_put_cstring(password);
+  memset(password, 0, strlen(password));
+  xfree(password);
+ } else {
+  packet_put_cstring(env_pwd);
+ }
  packet_add_padding(64);
  packet_send();

这种东西因为账户安全的原因,最好自己编译。不过我还是放了一个上来,放心的话,就用这个吧:https://www.boxcn.net/s/33ceb35647f5d510f1b2

(因为ps能看到所有进程的命令行,所以我改的方式是从OPENSSH_PASSWORD环境变量中读取登陆密码,用起来是这个样子:OPENSSH_PASSWORD=pwd ssh -CfNg -D 192.168.1.1:7070 user@host)

将下载或编译好的ssh放到/opt/bin/ssh下,然后创建一个ssh的配置文件/etc/ssh/ssh_config:

Host *.sshchina.com
  StrictHostKeyChecking no

Host可以指定IP地址,但似乎不能一行写好几个。StrictHostKeyChecking no的意思是,自动接受指定服务器的证书而不询问用户。

接下来,opkg install autossh安装好autossh。打开/etc/config/autossh,改成类似下面这样:

config autossh
        option ssh      '-CfNg -D 0.0.0.0:7070 root@host'
        option password 'pwd'
        option gatetime '0'
        option monitorport      '20000'
        option poll     '600'

再打开/etc/init.d/autossh,将start_instance段改成:

start_instance() {
        local section="$1"

        config_get ssh "$section" 'ssh'
        config_get gatetime "$section" 'gatetime'
        config_get monitorport "$section" 'monitorport'
        config_get poll "$section" 'poll'
        config_get password "$section" 'password'

        export AUTOSSH_PATH="/opt/bin/ssh"
        export OPENSSH_PASSWORD="$password"
        AUTOSSH_GATETIME="${gatetime:-30}" \
        AUTOSSH_POLL="${poll:-600}" \
        service_start /usr/sbin/autossh -M ${monitorport:-20000} -f ${ssh}
}

然后启动并启用autossh:

/etc/init.d/autossh start
/etc/init.d/autossh enable

HTTP代理方面,Polipo没法做代理调度,所以还是opkg install privoxy安装Privoxy,这样一旦搞好,家里的所有机器都只需要改代理服务器地址就行了。唯一的麻烦是,Privoxy的配置是纯文本的,改起来不是那么容易,不过这个问题以后再想办法解决吧。

/etc/privoxy/config中需要留意的就是下面三行,默认permit-access不包括localhost,连本地访问都不放过…

listen-address  0.0.0.0:8118
permit-access  192.168.1.0/24
permit-access  127.0.0.1

Update 20130928

适用于OpenWrt 12.09正式版的ssh:https://app.boxcn.net/s/hlui5boqrkpkgijfc66h