分类 硬件折腾 下的文章

当年曾入手Chrome第一代,折腾过后,还是放弃了。原因有两个:一要联网才能用,二要能访问Google。相关的资料整理如下:

刷机
刷机,为了获取root权限,也为了获取更多的可能性(最后的结论是,然并卵…)。相关的教程都在:

[ROM] [44433.001 - 2015-11-15] Eureka-ROM - Based on OTA 44433 by Team-Eureka
http://forum.xda-developers.com/showthread.php?t=2578653

记得当时还入手了Arduino Nano(好像吧),用于破解。

开发
只是好奇查了相关的开发资料,但一直没深入。

GoogleCast 開發者官網
https://developers.google.com/cast/

A simple Hello World Sender/Receiver for Chromecast
https://github.com/pjjanak/chromecast-hello-world

然后,就酱……

简单玩过NodeMCU之后,想获取更多的数据,就是多加几个传感器。但是NodeMCU只有一个ADC接口,于是找到利用Arduino与ESP8266结合的解决方案。Arduino的不同版本的接口数量不同,而手头上的Pro Micro就有4个ADC了,勉强够用。ESP8266就是NodeMCU的核心,相比NodeMCU更少接口,但体积更小,价格更低。于是入手了两个ESP8266来折腾。

First of All,刷固件。

刷固件的官方教程
Loading new firmware onto an ESP8266
http://www.esp8266.com/wiki/doku.php?id=loading_firmware

最新的固件下载
[最新发布]ESP8266 Resources
http://espressif.com/en/products/hardware/esp8266ex/resources

官方入门教程
Getting Started with ESP8266
http://www.esp8266.com/wiki/doku.php?id=getting-started-with-the-esp8266#got_an_esp-nn_board_in_the_mail_now_what

大概就这些了。话说,计划中的植物环境数据收集平台升级版,都拖好久了……

说起物联网,最早接触的是Arduino。可是入手Arduino Mega后,一直没做出什么好玩的东西,以致Mega丢在角落里好几年。近来在部门经理的怂恿下,入手了NodeMCU,做了个检测盆栽的土壤湿度。本来想在Github开个项目,但是这第一版太简单了,就随便记录一下。

NodeMCU的特点,在于自带WiFi(还可以使用AP模式),而且价格便宜。当然,缺点也在WiFi,比较耗电。为了省电,可以设置网卡的硬件参数(wifi.setphymode()),关闭WiFi(wifi.sleeptype()),甚至是整块板进入深度睡眠模式(node.dsleep(), rtctime.dsleep())。其开源、基于Lua的开发简单、尺寸迷你等优点,也是其好玩之处。

这个项目很简单,就是NodeMCU连个土壤湿度检测模块,定时(10分钟)获取一次数据,并上传到服务器。服务器是采用树梅派,用Python3,利用Flask框架,写了个HTTP服务,用于保存提交的数据,并做数据展示。数据都保存在MySQL数据库。

NodeMCU上的init.lua

print("\n")
print("ESP8266 Started")

dsleepTime = 630000000
ssid = "my-wifi"
password = "123456"
serverIp = "192.168.1.1"
serverPort = 8080

wifi.setphymode(wifi.PHYMODE_N)
wifi.setmode(wifi.STATION)
wifi.sta.config(ssid, password)
tmr.alarm(0,1000,1,function() 
    curIp = wifi.sta.getip()
    if curIp ~= nil then
        print("Current IP:"..curIp)
        tmr.stop(0)
        sendData(readValue(0, 5))
    end
end)

--发送数据到服务器    
function sendData(value)
    print("sendData start")
    conn = net.createConnection(net.TCP, false)
    conn:on("receive", function(conn, pl)
        print("Send data with value: "..value)
        print("Result:\n"..pl)
        conn:close()
        conn = nil
        wifi.sta.disconnect()
        
        node.dsleep(dsleepTime)
    end)
    conn:connect(serverPort, serverIp)
    conn:send("GET /gather/?key=123456&value="..value
        .." HTTP/1.1\r\nHost: " + serverIp + "\r\n"
        .."Connection: keep-alive\r\nAccept: */*\r\n\r\n")

    --connect time out
    tmr.alarm(1,5000,1,function()
        print("[error]connet to server time out")
        --conn:close()
        --conn = nil
        --wifi.sta.disconnect()
        tmr.stop(1)
        
        node.dsleep(dsleepTime)
    end)
end

--读取土壤湿度数据
--一次有效的采样,最少取3次数据,去掉最大值和最小值,再计算平均值
function readValue(adcPin, readTimes)
    if readTimes <= 2 then
        readTimes = 3
    end
    
    local curValue = 0
    local maxValue = 0
    local minValue = 0
    local sumValue = 0
    
    for i = 0, readTimes - 1 do
        curValue = adc.read(adcPin)
        sumValue = sumValue + curValue
        if maxValue < curValue then
            maxValue = curValue
        end
        if (minValue == 0) or (minValue > curValue) then
            minValue = curValue
        end
    end
    sumValue = sumValue - maxValue - minValue
    curValue = math.floor(sumValue / (readTimes - 2))

    return curValue
end

服务器上的HTTP服务,文件site.ini

[uwsgi]
socket = 127.0.0.1:8080
processes = 2
threads = 1
plugins = python3
master = true
pythonpath = /opt/work/web_gather
chdir = /opt/work/web_gather
module = site
callable = app
chmod-socket = 777
memory-report = true

服务器上的HTTP服务,文件site.py

#!/bin/python3

from datetime import datetime
from flask import Flask, request, abort, render_template
from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy import desc

app = Flask(__name__)
app.config['SECRET_KEY'] = '123456'

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:123456@127.0.0.1/web_gather'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

app.config['HUMIDITY_MIN'] = 740

db = SQLAlchemy(app)

class Humidity(db.Model):
    __tablename__ = 'humidity'
    id = db.Column('id', db.Integer, primary_key=True)
    createDate = db.Column('create_date', db.DateTime)
    sourceValue = db.Column('source_value', db.Integer)
    value = db.Column('value', db.Integer)

    def __repr__(self):
        return '<Humidity % r>' % self.id

@app.route('/', methods=['GET', 'POST'])
def index():
    key = request.args.get('key', '')
    
    if key == app.config['SECRET_KEY']:
        sourceValue = request.args.get('value', '0')
        value = (1024 - int(sourceValue)) / 1024 * 100
        curTime = datetime.today()
        humidity = Humidity(createDate=curTime, sourceValue=sourceValue, value=value)
        db.session.add(humidity)
        db.session.commit()
        return 'true'
    
    humidities = Humidity.query.order_by(desc(Humidity.createDate)).limit(500)
    return render_template('humidity.html', humidities=humidities)

if __name__ == '__main__':
    app.run(debug=False, host='127.0.0.1', port=8080)
    #app.debug = False
    #app.run()

MySQL的表定义

CREATE TABLE `humidity` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `create_date` datetime DEFAULT NULL,
  `source_value` int(11) DEFAULT NULL,
  `value` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2554 DEFAULT CHARSET=utf8

终于还是入手了Kindle3,200RMB的二手货,成色很新。由于带键盘,也有比较成熟的软件,所以非常喜欢。记录一下入手后的折腾经历吧。

1)升级最新固件(fireware)
从官网下载最新固件(目前最新是3.4.2):
Amazon.com Help: Kindle Keyboard Software Updates
http://www.amazon.com/gp/help/customer/display.html/ref=hp_left_v4_sib?ie=UTF8&nodeId=200529700

升级固件时,按照所需版本,一个一个地升。升级到最新版,最大的作用是可以注册美国亚马逊账号。其它的功能,包括阅读PDF(自动切除白边)、漫画等,都很方便。

2)越狱(Jailbreak)
Font, ScreenSaver & USBNetwork Hacks for Kindle 2.x, 3.x & 4.x
http://www.mobileread.com/forums/showthread.php?t=88004

详细操作,上面会详细记录。简单来说,就是下载对应的版本,然后刷进系统。本链接还包括修改默认屏保(ScreenSavers)、修改字体(Fronts)、USB有线网(USBNetwork)、Python等等。

3)快捷键(launchpad)
launchpad -- yet another hotkey manager for Kindle
http://www.mobileread.com/forums/showthread.php?t=97636

一个热键管理程序,可以把shell脚本,包括启动程序的脚本,做成热键,非常好用!

4)命令窗口(Terminal)
One more terminal emulator for kindle
http://www.mobileread.com/forums/showthread.php?t=154500

用launchpad启动,即可进入shell终端,然后就可用编写shell脚本、修改系统文件、ssh远程到其它机器等等。总之就是非常强大。

5)音乐播放器(MPlayer)
MPlayer for Kindle
http://www.mobileread.com/forums/showthread.php?t=119851

一边播放音乐,一边看书,也是不错的。特别要说的是,Kindle3自带的喇叭,音质比预想的好很多。

6)字典(Dictionary)
字典下载
http://kindlefere.com/dict

下载其它字典,并且可以替换系统默认的字典。

7)中文输入法
Kindle 3 原生系统3.4.2拼音输入法完美版安装包
http://terence2008.info/archives/kindle3_pinyin_input_method.html

8)其它
Kindle Hacks Information
http://wiki.mobileread.com/wiki/Kindle_Hacks_Information

这里都有汇总了几乎所有的软件,包括上面提到的。

曾经在“闲鱼”(淘宝二手)上看到有人卖NodeMCU的开发板,查了发现这东西很便宜(30RMB以下可以买到),而且自带WiFi,非常适合打开“物联网”的大门。直到前几天,跟经理说起关于怎样控制窗户的开关,才又提起这个,并买了个来玩。

详细介绍
ESP8266使用
http://suda-morris.github.io/blog/2015/12/06/esp8266/

针脚定义
NodeMCU Pin Map
请输入图片描述

官方文档
NodeMCU的API文档(英文) http://nodemcu.readthedocs.org/en/dev/

入门教程
官方网站(http://www.nodemcu.com/)上没有找到官方的入门教程,但是找这一些比较好的:
1)一个比较全面的教程(针对Windows) http://nodemcu-dev.doit.am/
2)NodeMCU 物联网开发快速上手(适合Linux用户) http://tinylab.org/nodemcu-kickstart/

官方论坛(http://bbs.nodemcu.com/)上也有一个系列的入门教程:
NodeMcu介绍:(一) 概述 http://bbs.nodemcu.com/t/nodemcujie-shao-gai-shu/25
NodeMcu介绍:(二)固件烧写 http://bbs.nodemcu.com/t/nodemcu/22
NodeMcu介绍:(三)启动文件init.lua http://bbs.nodemcu.com/t/nodemcu-init-lua/24
NodeMcu介绍:(四)下载*.lua文件 http://bbs.nodemcu.com/t/nodemcu-lua/26

Lua语言介绍
关于NodeMCU上使用的Lua,这里有个不错的教程
https://moonbingbing.gitbooks.io/openresty-best-practices/content/lua/main.html

经过一段时间的研究和实践,终于把树莓派(Raspberry Pi 2 Model B)作为家庭服务器用起来了。简单来说,就是树莓派作为无线路由、网盘下载机和提供DLNA服务,Chromecast作为播放器在电视机播放多媒体内容,用Android手机作为遥控器控制一切。

树莓派
1)无线路由
参考前面的Bolg
Setup Raspberry Pi 2 as Wireless Router
http://blog.foxail.org/index.php/archives/661/

2)网盘下载机
这里选择了百度盘,其空间足够大(免费2TB空间),有Linux的客户端(第三方开发的)。树莓派上安装客户端:
https://github.com/GangZhuo/BaiduPCS

然后设置个定时同步下载,就可以自动下载电影了。下载前,还会上传当前的下载状态及硬盘空间使用情况到网盘,方便查看。

3)安装USB存储设备
参考以下文章,增加自动挂载USB存储设备:
树莓派自动挂载usb移动存储设备
http://rpi.linux48.com/usbstorage.html

该脚本在Debian 8上有问题,修改了一下,如下:

KERNEL!="sd*", GOTO="media_by_label_auto_mount_end"
SUBSYSTEM!="block",GOTO="media_by_label_auto_mount_end"
IMPORT{program}="/sbin/blkid -o udev -p %N"
ENV{ID_FS_TYPE}=="", GOTO="media_by_label_auto_mount_end"
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="Untitled-%k"
ACTION=="add", ENV{mount_options}="relatime,sync"
ACTION=="add", ENV{ID_FS_TYPE}=="vfat", ENV{mount_options}="iocharset=utf8,uid=1000,gid=1000,umask=000"
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", ENV{mount_options}="iocharset=utf8,uid=1000,gid=1000,umask=000"
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
LABEL="media_by_label_auto_mount_end"

如果是U盘,直接插上就可以了。但如果是移动硬盘,要考虑树莓派的电流不足的问题,会导致硬盘mount不上,或者不能写入数据。不得不换了个2A的USB电源和有源USB Hub。现在算是能顺利运行了,但还是想简化电路和连接方式,后面再考虑。

4)DLNA服务
装个minidlna就可以了。如果需要识别rmvb文件,需要改源码并重新编译。参考这个:
Raspiberry Pi安装minidlna1.1.4并支持rmvb
http://raspi.vanabel.info/wordpress/?p=92

Chromecast
国内真的不推荐用这个,因为要连上google才能使用。为了连上google,花了很多时间去研究,最后采用简单的方案:设置某个固定ip采用代理。本文前面的“无线路由”配置中,包含了相关配置。

关于ROOT。感觉不获取ROOT权限,也不会影响使用。不过个人习惯,ROOT后会增加更多的可能性。并且,升级到最新版系统后,目前不能ROOT了。

检查是否可ROOT:[INFO] Rootable Serial Numbers
http://forum.xda-developers.com/showthread.php?t=2537022

ROOT教程,需要借助硬件Leonardo Pro Micro(基于芯片ATmega32U4):Chromecast ROOT
http://raspberrypihelp.net/motornavigatie-dutch/62-chromecast-root

Android手机
目前安装了connectbot,作为SSH客户端连接树莓派。项目源码:
https://github.com/connectbot/connectbot

DLNA方面,采用BubbleUPnP,可以用本机播放树莓派的多媒体内容,可以把树莓派的多媒体内容推送到Chromecast。Google Play下载:
https://play.google.com/store/apps/details?id=com.bubblesoft.android.bubbleupnp

曾看到有文章介绍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,或者开发更多的应用。那么,只能继续折腾了。