分类 硬件折腾 下的文章

由于新冠肺炎疫情严重,国内推行在线教育,CFO下令入手个平板。找来找去,最后选择了小米平板1代。

本来个人偏好Nexus 9,8.9英寸2K屏,NVidia Tegra K1平台,64位CPU……重点是系统升级不是问题。但是发现屏幕普遍出现气泡的通病,比较难找到完美屏。有个谈到350RMB包邮了,因为迟了一点付款而错失了。无奈之际又看了一直心仪已久的联想Yoga平板,可惜还是贵。最后遇到这个小米平板1代,200RMB包邮,成色还不错。

说说小米平板的优点吧。大小适中,8英寸2K屏,NVidia Tegra K1平台,32位CPU,可插TF卡,有非官方的LineageOS 16(Android 9)可刷等等。

缺点嘛,只能买二手。电池肯定不耐用。32位CPU,虽然使用上没什么问题,但这个CPU(NVidia的GPU拖着CPU跑)还是慢。需要相机可用的话,目前只能刷LineageOS 14(Android 7.1.2),再上去就不能用相机了。自带外方(音箱)是垃圾。

总体来说,这个价格以及成色,加上续航能有4小时左右,已很超值了。就算作为儿童画板也不错。

记录一下刷机过程吧。

1)刷Recovery
TWRP for Xiaomi Mi Pad
https://twrp.me/xiaomi/xiaomimipad.html

刷机方法就不详细说了,一般adb或者fastboot命令都可以。但是发现原来TWRP的Recovery支持在刷img文件,包括Recovery。就是说,如果机器已经刷了TWRP,就可以进入Recovery刷最新的TWRP了。

2)刷ROM,LineageOS 14.1
由于LineageOS 15和16都不能使用相机,所以只能刷14了。详细介绍、教程,以及下载地址,见下文:
[UNOFFICIAL][14.1][7.1.2][2017-09-11] LineageOS 14.1 for Xiaomi MiPad (mocha)
https://forum.xda-developers.com/mi-pad/development/unofficial-lineageos-14-1-xiami-mipad-t3557616

进入Recovery里刷就可以了。该ROM的作者提到,小米平板原来是有两个640MB的系统分区,需要合并分区后再刷。可能我买的已经合并了,所以不能执行这个(二手的好处)。作者提供的链接已不能访问,找到一个翻译的:
【翻译】MiPad Mocha 合并分区教程
https://www.xiaomi.cn/post/4968452

3)刷Root包
刷入LineageOS 14的官方root包即可:
https://download.lineageos.org/extras

4)刷GApps,可选
由于是给小孩用的,没必要刷这个了。跳过。

5)装“冰箱”
由于机器只有2GB内存,所以有必要装个“冰箱”去冻结那些常驻后台的应用。由于安装后需要删除所有用户,再用adb设置“冰箱”的管理员权限,所以需要刷后系统后优先安装。免费版可以冻结10个应用,基本够用吧。下载地址:
冰箱 IceBox:自动冻结・省电神器
https://coolapk.com/apk/com.catchingnow.icebox

如果“冰箱”不能满足需求,可以考虑使用Shelter,免费无限制。但其实现方式是把应用安装到“工作资料”区域,会造成文件、数据互通不方便。由于是小孩使用的,就没搞那么复杂了。下载地址:
Shelter - Isolate your Big Brother Apps / Multiple Accounts
https://f-droid.org/en/packages/net.typeblog.shelter/

6)消除WiFi图标的叉
国情问题,按教程去做就可以了。参考这个:
(类) 原生 Android 网络去叉/叹号 Android 5.0-9.0
https://ericclose.github.io/Captive-Portal-Android.html

斐讯真是个神奇的公司,凭着其高质量的产品,本来可以好好做个科技公司。其崩盘后,这些优秀的产品给我们带来了一波又一波的惊喜。在某网站的推广下,加上大学同学推坑,终于入手了N1。刷上被清理过的Android系统后,非常适合作为智能机顶盒!主要还是价格不算贵。整理一下相关的资料:

一、相关介绍
N1相关的一切,这个文章都说得很清楚了,我也是跟着上面步骤的来折腾。只是相关的资源都不能很好地下载。
我购买了斐讯N1做电视盒子,发现它远比想象的...
https://pockies.github.io/2019/03/07/phicomm-n1/

这个值得看看是由于N1的功耗很低,就算作为服务器不关机也不用担心电费的问题。
[N1盒子] 闲着无聊测试了下N1的功耗,曲线解决开关机问题
https://www.right.com.cn/forum/thread-322865-1-1.html

二、刷机经历
所需硬件:
1)双公头的USB 2.0线,用来连电脑刷系统。找两根USB线,把两个公头按同颜色的线连接即可。
2)网线,连接路由,用于远程adb操作N1。
3)USB鼠标或键盘,接到N1操作。
4)一台x86CPU的电脑,并且装了Windows的电脑,用来运行刷机工具。

所需软件:
1)webpad的rom,里面的“工具”包含了adb、降级工具、线刷工具等。喜欢这个rom的话,可以刷上,不用下载其它了。
[2018-9-22]斐讯N1 官改v2.2线刷包,精简版,扩展功能可选
https://www.right.com.cn/forum/thread-338759-1-1.html
工具说明:
a)“android-adb-fastboot_1.0.39.7z”,adb和fastboot工具
b)“斐讯T1、N1官方系统降级工具.zip”,官方ROM降级工具
c)“使N1进入线刷模式.zip”,降级后进入线刷模式,其实就是进入bootloader
d)“USB_Burning_Tool_v2.1.6.zip”,Amlogic的线刷工具,只支持windows

2)RUSH固件
[T1] 极限精简斐讯T1/N1 极客开发者强迫症福音6.23/6.24
https://www.right.com.cn/forum/thread-315889-1-1.html
我跟着前面的刷机教程,选择了这个固件。但由于是精简的,几乎应用什么都没有,后面需要折腾。

3)救砖
由于刷ROM中途以为失败了而强制结束,导致刷成砖。最后找到网上的教程,算是比较简单的解决方法,如下:
[N1盒子] 小白折腾了几天刷N1,稍总结下N1刷机和N1救砖,大神略过
https://www.right.com.cn/forum/thread-480477-1-1.html
简单来说是,拆机,短接两个触点,刷入T1固件(RUSH的rom包内有T1 ROM和救砖教程),再刷入所需的ROM

三、使用经验
1)遥控
本来可以买个蓝牙遥控,或者2.4无线遥控。但是本着省钱的原则,接了个有线鼠标上去,应付特殊情况。另外配对了一个蓝牙手柄,基本可以胜任遥控的工作。家里还有个Rapoo 1800 2.4G无线鼠键,可以考虑用上。

2)相关应用

  • 媒体中心:VLC,开源播放器,可以播放各种格式的视频,支持DLNA,支持多语音频等。个人感觉比Kodi好。
  • 横屏工具:还没找到好用无需破解的。由于很多apk都是手机端,默认不支持横屏,需要转个强制横屏工具。
  • 浏览器:无脑推荐Chrome,没考虑操作是否舒适之类,反正能在线追番就可以了。
  • 电视直播:这是个灰色地带。详细关注微信公众号”KUMI分享“,会有不定期推介。
  • 文件管理:ES Explorer,RUSH的ROM自带。支持FTP服务端和客户端,方便局域网内互传文件。
  • 桌面:直接用RUSH自带的那个,很简单,也有一点不方便,没去找其它的,凑合用吧。

3)游戏
N1自带空间不大,不适合玩大型游戏,而且大部分Android游戏都不支持手柄。
a)Minecraft破解版。家里部署了bedrock服务,手机装了正版Minecraft,但是N1没刷GAPPS,所以只能找可以登录的破解版了。跟孩子一起玩,大屏幕,还不错,但是画面略有卡顿。
b)赛车游戏。只是装了个SuperTuxKart来试试,效果还行,手柄还是不如手机的体感操控。
c)游戏机模拟器及游戏。能支持手柄,占用空间小,资源丰富,就只有模拟器了。曾经很期待地装上Dolphin模拟器,以为能玩Wii游戏,但是跑不起来。看来只能考虑旧主机的模拟器。

用Pro Micro做了个摇步器,感觉有点浪费。于是入手了个ATTiny85开发板(国外好像叫Digispark),计划把Pro Micro替换出来。

这个ATTiny85开发板非常迷你和便宜,面积比邮票还小(大约2cm*2.5cm),价格不到7rmb/个。自带Micro USB母口(插上USB就可以烧录程序),除了5v VCC、GND、VIN,还有6个针脚。采用ATTiny85芯片,集成8位CPU,主频最高20MHz,内存512B,闪存8KB等等。更详细的参数,参考以下PDF文档:
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf

总体来说这,非常适合细小的项目。但是这货历史有点久远(网上很多资料都是2013年左右),相关资料不好找。踩了一些坑后,终于成功刷入程序并运行。

首先安装 Arduino IDE,版本是1.6以上,然后根据以下文章去配置:
Connecting and Programming Your Digispark
https://digistump.com/wiki/digispark/tutorials/connecting

遇到Linux的问题,主要是需要相关的安装包,可参考这个链接:
Linux Troubleshooting
https://digistump.com/wiki/digispark/tutorials/linuxtroubleshooting

然后,关于编写舵机控制程序,尝试了几个库,最后采用了SoftRcPulseOut并运行成功。参考以下链接:
Beginner Servo
https://digistump.com/board/index.php?topic=1157.0
Digispark (Attiny85) servo tester
http://www.circuitdb.com/?p=1203

最后再说说摇步机。摇步机的原理就是利用舵机进行单摆运动。原来使用手机摇的,现在入手了个二手小米手环2,解放了手机。接线图就不上了,简单描述如下:

ATTiny85 -> 9G舵机(SG90)
5V       -> 红(正极)
GND      -> 棕(负极)
P4       -> 橙(信号)

程序也很简单,舵机先复位到0度,再不断重复从0度转到120度后复位。代码如下:

#include <SoftRcPulseOut.h> 

SoftRcPulseOut myservo;
int pos = 0;
#define NOW  1

void setup() {
  myservo.attach(4); // P4,舵机信号
  myservo.setMaximumPulse(2200);

  for (int i = 0; i < 5; i++) { // 复位到0度
    myservo.write(pos);
    delay(100);
    SoftRcPulseOut::refresh(NOW);
  }
  delay(3000);
  SoftRcPulseOut::refresh(NOW);
} 

void loop() {
  for (pos = 0; pos < 120; pos += 20) {
    myservo.write(pos);
    delay(50);
    SoftRcPulseOut::refresh(NOW);
  }
  
  for (pos = 120; pos >= 0; pos -= 20) {
    myservo.write(pos);
    delay(50);
    SoftRcPulseOut::refresh(NOW);
  }
}


入手斐讯(PHICOMM)K2P这个无线路由差不多3个月,终于把问题都解决了,于是把折腾过程记录一下。

原来一直在用仕牌(SeaPai)WR1200,当时(2016年)号称屌丝专用的超高性价比千兆路由。其价格在100RMB以下,支持千兆有线以太网,2.4GHz和5GHz无线WiFi,信号稳定,网上也有很多刷机改造教程。后来发现无线设备多了以后,会卡,单反拍的1080p视频无法通过WiFi访问DLNA播放等等,于是在一番搜索后,入手了K2P。这货开卖时,带有挖矿属性,甚至可以赚钱,可惜入手晚了。

简单总结一下K2P的使用感受。无线信号很好(中等强度可覆盖两层楼),性能很强(前面提到的1080p视频可以流畅播放了),功能丰富(当然是刷了固件之后),超出了对无线路由的认识和理解。缺点是内置存储容量不够(导致固件功能需要取舍),也没有USB口(导致不能扩展容量)。由于有自家的服务器,这两个缺点可以无视。

入手第一件事,当然是刷固件。搜了一圈,很多人都说官方定制固件(简称:官改)比较稳定,于是就选择这个。刷机过程没什么好说的,固件下载地址及详细刷机教程如下:
斐讯K2P MTK官方固件定制版
https://www.right.com.cn/forum/thread-221578-1-1.html

官改的问题如下:
1)“功能设置”没有端口映射,只有“端口转发”。解决方法很简单,就是ssh进去,手动设置防火墙(/etc/config/firewall)。详细的教程如下:
斐讯k2p 官改固件 设置端口映射
https://www.right.com.cn/forum/thread-304738-1-1.html

2)不能访问mindlna服务。服务器上运行着minidlna服务,刚启动该服务时,手机可以找到并访问该DLNA服务,但是过一段时间就不能访问了。这个不知道是不是官改固件的问题。后来把minidlna配置文件的notify_interval值改小一点,就解决了。

当年曾入手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