<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soul Of Free Loop &#187; 手机</title>
	<atom:link href="https://zohead.com/archives/tag/phone/feed" rel="self" type="application/rss+xml" />
	<link>https://zohead.com</link>
	<description>Uranus Zhou&#039;s Blog</description>
	<lastBuildDate>Sat, 19 Jul 2025 15:42:46 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>Sentio Superbook初步体验</title>
		<link>https://zohead.com/archives/sentio-superbook/</link>
		<comments>https://zohead.com/archives/sentio-superbook/#comments</comments>
		<pubDate>Wed, 13 Feb 2019 13:36:31 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[手机]]></category>
		<category><![CDATA[数码]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[DisplayLink]]></category>
		<category><![CDATA[Nubia]]></category>
		<category><![CDATA[Sentio]]></category>
		<category><![CDATA[Superbook]]></category>

		<guid isPermaLink="false">https://zohead.com/?p=1568</guid>
		<description><![CDATA[关于 Sentio Superbook 2016 年的时候我写了篇 使用DisplayLink显卡组装Android Superbook 的文章，介绍如何使用 Motorola Lapdock 扩展坞和 DisplayLink USB 显卡实现手机扩展笔记本的效果。差不多 9 月份我就下单支持了 Kickstarter 上 Sentio 团队推出的 Superbook 项目，并花了 154 美元选择了 1080p 屏幕的高配版本（99 美元基础费用 + 30 美元升级费用 + 25 美元运费）。 比较坑的是 Superbook 项目众筹达到目标之后，Sentio 团队中间一拖再拖，不断出现供应 [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2 id="about-sentio-superbook">关于 Sentio Superbook</h2>
<p>2016 年的时候我写了篇 <a href="https://zohead.com/archives/displaylink_superbook/">使用DisplayLink显卡组装Android Superbook</a> 的文章，介绍如何使用 Motorola Lapdock 扩展坞和 DisplayLink USB 显卡实现手机扩展笔记本的效果。差不多 9 月份我就下单支持了 Kickstarter 上 <a href="http://www.sentio.com/" target="_blank">Sentio</a> 团队推出的 <a href="https://www.kickstarter.com/projects/andromium/the-superbook-turn-your-smartphone-into-a-laptop-f" target="_blank">Superbook</a> 项目，并花了 154 美元选择了 1080p 屏幕的高配版本（99 美元基础费用 + 30 美元升级费用 + 25 美元运费）。</p>
<p>比较坑的是 Superbook 项目众筹达到目标之后，Sentio 团队中间一拖再拖，不断出现供应商及硬件固件相关的问题，导致我的 Superbook 等了两年多直到 2019 年 1 月份才从香港发到我手上。此处需要额外吐槽的是联邦快递，即使 Superbook 价格里已经包含了关税，联邦无视 Sentio 提供的价格单仍然主动报关，导致到手时我还是另外付了 100 人民币左右的关税。</p>
<h2 id="开箱及外观">开箱及外观</h2>
<p>毕竟只是廉价众筹的产品，Superbook 的外包装也挺简单：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442953/superbook-box-front.jpg" alt="Superbook 包装正面"></p>
<p>众筹版本额外赠送了 Superbook 笔记本保护套及一张 A 面贴纸，自带的电源适配器则是 12V 3A 的：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442951/superbook-accessory.jpg" alt="Superbook 附件"></p>
<p>包装里只附带了一张 A4 纸的简单使用说明，先看看主机正面，金色机身正面也只有 Superbook 字样，和我的 Acer Chromebook 14 比起来还是很小巧的：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442951/superbook-a-all.jpg" alt="Superbook A 面"></p>
<p>整个机身只有左侧的一个 USB Type-A 扩展接口（可外接其它 USB 设备）以及和手机连接的 USB Type-C 接口。</p>
<p>从 D 面可以看到具体型号是 Superbook S1，由于没有处理器之类的不需要散热孔，D 面也只有一个重置按钮：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442956/superbook-d.jpg" alt="Superbook D 面"></p>
<p>B 面和 C 面如下，打开时感觉转轴稍微有点生硬，11 寸的 1080p IPS 屏幕下面就是 Sentio 的图标，C 面做了点磨砂处理，键盘上方只有电池和工作状态指示灯：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442952/superbook-b-c.jpg" alt="Superbook B 面和 C 面"></p>
<p>主要关注下键盘，可以看到 Superbook 主要就是为 Android 专门设计的：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442956/superbook-keyboard.jpg" alt="Superbook 键盘和触控板"></p>
<p>键盘上最上面一排开始就是 返回、主页及切换窗口按键，接着是常用的屏幕亮度和音量控制键等，最下面增加了搜索键和专门的 Sentio 按键（实现一些 Superbook 设备自身的功能）；支持多点触摸的触控板用起来手感也只能说是中规中矩。</p>
<h2 id="superbook-report">初步使用</h2>
<p>由于 2016 年我预订的时候用的还是华硕 Zenfone2 手机，选的配件还是官方的 USB Type-C 转 Micro-USB 线，还好现在换的 Nubia Z17 手机也是 USB OTG 功能的，只是需要自己购置 USB Type-C 转 Type-C 的线咯。</p>
<p>按照官方 <a href="http://sentio.wikia.com/" target="_blank">Sentio Wiki</a> 页面上的说明，连接 Android 手机之前，手机上需要安装 <a href="https://play.google.com/store/apps/details?id=com.displaylink.presenter" target="_blank">DisplayLink Presenter</a> 和 <a href="https://play.google.com/store/apps/details?id=com.sentio.desktop" target="_blank">Sentio Desktop</a> 这两个 App。</p>
<p>DisplayLink Presenter 相当于 Superbook 自带 DisplayLink USB 显卡的 Android 驱动程序（只负责镜像手机屏幕）；Sentio Desktop 就是一个应用启动器，运行之后会启动一个类似桌面环境，用户可以在 Sentio Desktop 中运行手机里的其它 App。</p>
<p>我的 Nubia Z17 上 DisplayLink Presenter 工作倒是没问题，但 Sentio Desktop 始终卡在要求 Android 多窗口支持这一步上，我的手机虽然运行的是 Android 7.1.1 系统，但是 Nubia 官方系统把这个重要特性给阉割了（有过 Nubia 手机使用经验的同学们估计也知道 Nubia 的系统有多坑）。</p>
<p>一番搜索之后，我在 Sentio Wiki 上的 <a href="http://sentio.wikia.com/wiki/Troubleshooting/Getting_Started" target="_blank">Troubleshooting/Getting Started</a> 页面上找到解决办法，通过 adb 运行下面两个命令并重启手机（第一条命令用于开启 Android 多窗口支持）：</p>
<pre class="brush: bash; title: ; notranslate">
settings put global enable_freeform_support 1
pm grant com.sentio.desktop android.permission.WRITE_SECURE_SETTINGS
</pre>
<p>这样 Sentio Desktop 程序好歹能在我的 Nubia Z17 手机上运行起来了：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442941/sentio-desktop.png" alt="Sentio Desktop"></p>
<p>Sentio Desktop 桌面环境看起来也是比较简洁的，左下角的启动图标可以弹出搜索运行 App，右下角通知区域则包含常用的功能开关，蓝牙、WLAN、音量都可以直接控制，设置图标弹出的 <strong>快速设定</strong> 界面略显简单。</p>
<p>手机屏幕实际投射到 Superbook 上我才发现 Nubia Z17 即使通过 adb 命令开启了多窗口支持，Sentio Desktop 桌面环境里还是只能同时显示一个 App，并不能实现自由调整窗口大小更别说多窗口运行 App 了。</p>
<p>Sentio Desktop 初步使用起来，手机上的 Chrome 浏览器、视频播放器等支持横屏的 App 经过放大投射到 Superbook 上显示效果还是不错的，只是播放高清网络视频和玩一些游戏的时候会略有些卡顿。Superbook 的键盘和触控板也能直接控制手机，Android 通知栏也能点击通知图标弹出来：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442941/sentio-desktop-chrome.png" alt="Sentio Desktop App 和通知栏"></p>
<p>不过对于不支持横屏显示的 App，例如 Nubia 自带相机这种投射到 Superbook 上效果就很一般了：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442941/sentio-desktop-app.jpg" alt="Superbook 竖屏显示"></p>
<p>这个问题还是多窗口支持被阉割了导致 App 无法以单独窗口形式运行导致的，暂时只能让 Nubia Z17 手机系统来背锅了，后续我可以换像一加这种使用类原生系统的手机来测试咯，毕竟这样会使 Sentio Desktop 桌面环境的使用体验大打折扣。</p>
<h2 id="superbook-issue">问题</h2>
<p>部分使用 USB Type-C 接口的手机例如我的 Nubia Z17 连接 Superbook 之后，Superbook 为手机充电的功能并不能工作，而且 USB 连接也不太稳定，需要通过 <kbd>Fn + P</kbd> 键关闭 Superbook USB 充电功能之后才能正常使用，不太确定是否与我购买的 USB Type-C 数据线有关。</p>
<p>另外我在测试 Android 电视棒的时候还是发现有些问题，我用的是之前买的 <a href="https://zohead.com/archives/mk809iv-1080p/">MK809IV</a> Android 电视棒，由于 Android 电视棒一般只支持通过自带的 HDMI 接口进行输出，我的住处也没有 HDMI 显示器或者电视，导致 Android 电视棒接上 Superbook 之后也没有任何反应无法使用。</p>
<p>即便对于我买的这种可以自由安装 App 的 Android 电视棒，也会因为电视棒 Android 4.4 版本太低而无法使用 Sentio Desktop App，更别说很多厂商提供的电视棒还无法自行安装卸载 App 那就更加不可行了。</p>
<p>因此 Sentio Superbook 的限制就是所连接的设备必须支持 DisplayLink USB 显卡，我曾经在项目众筹阶段向发起人提议做成像 Motorola Lapdock 那样，将屏幕的 HDMI 输入开放一个接口可以让外部设备连接，并增加硬件开关切换 HDMI 输入和显卡通过 USB Hub 显示，不过这样硬件做起来比较复杂也就没被采纳。</p>
<h2 id="summary">总结</h2>
<p>接着我还找了 Chromebook、Windows 10 笔记本等设备分别接到 Superbook 上，由于 Chrome OS 和 Windows 10 系统都自带了 DisplayLink USB 显卡驱动，接上之后都能自动识别并扩展屏幕到 Superbook，做为外接显示器来用体验还是比较满意的。</p>
<p>经过这段时间的使用，Superbook 还是能解决我的某些需求的，只是由于 Nubia Z17 手机的各种限制体验会受些影响。目前 Superbook 基本被我由于之前买的一个老款 Intel Computer Stick，这类 PC stick 设备升级到 Windows 10 系统之后接上 Superbook 就可以做主屏幕显示了，不用额外接显示器和键盘鼠标当成一台 Windows 备用机来用还是不错咯。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/sentio-superbook/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>入手华硕Zenfone 2旗舰版</title>
		<link>https://zohead.com/archives/zenfone2/</link>
		<comments>https://zohead.com/archives/zenfone2/#comments</comments>
		<pubDate>Fri, 22 Apr 2016 15:15:45 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[手机]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[PadFone]]></category>
		<category><![CDATA[Zenfone 2]]></category>
		<category><![CDATA[华硕]]></category>

		<guid isPermaLink="false">https://zohead.com/?p=1218</guid>
		<description><![CDATA[最近发现使用了两年多的华硕 New PadFone Infinity A86 手机在稍微多安装了一些国产 Android App 之后已经有点力不从心了，启动完成之后一般情况下可用运行内存在 400MB 左右，经常出现开了一个 Chrome 页面再退出之后启动器就要重新加载的情况，而且最多也只能保留两个后台应用，看来 2GB RAM 的 Android 手机已经跟不上这个手机 App 体积奋起直追桌面端程序的时代了。这两个月看到国内外好多厂商都发布了新机，果断准备挑选一款合适的手机升级。 目前我对手机的要求也算比较简单了： Android 手机，作为一个伪谷粉还是受不了水果机的诸多限制； 3G [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>最近发现使用了两年多的华硕 New PadFone Infinity A86 手机在稍微多安装了一些国产 Android App 之后已经有点力不从心了，启动完成之后一般情况下可用运行内存在 400MB 左右，经常出现开了一个 Chrome 页面再退出之后启动器就要重新加载的情况，而且最多也只能保留两个后台应用，看来 2GB RAM 的 Android 手机已经跟不上这个手机 App 体积奋起直追桌面端程序的时代了。这两个月看到国内外好多厂商都发布了新机，果断准备挑选一款合适的手机升级。</p>
<p>目前我对手机的要求也算比较简单了：</p>
<ul>
<li>Android 手机，作为一个伪谷粉还是受不了水果机的诸多限制；</li>
<li>3GB 或者更大的运行内存；</li>
<li>1080p 屏幕，对 2k 屏没有什么兴趣；</li>
<li>必须支持联通 4G，能顺带支持移动 4G 双网通更好；</li>
<li>屏幕最小 5 寸，表示小屏手机完全回不去了；</li>
<li>支持 NFC，指纹解锁倒不是特别在乎；</li>
<li>接近原生 Android 的体验，比较抵触国内各种修改版的广告机；</li>
<li>最好能支持外接存储卡；</li>
<li>能支持快充那是最好不过了；</li>
<li>root 方便，能自带或者很方便的安装 Google 套件；</li>
<li>bootloader 最好能够直接解锁。</li>
</ul>
<p>初步考虑的是华为 Nexus 6P 和一加 2 这两款手机，看到 Nexus 6P 的价格再想想海淘的路稍微有点犹豫。本来一直对海外销量挺好的一加手机感兴趣，但看了参数发现一加 2 直接没有 NFC 功能，后来看到其创始人谈到 NFC 功能被删除的原因只是觉得用的人少而且功能被夸大，只能说这种明明目光短视却死不承认的态度还真是有点小醉呢。</p>
<p>最后经过一番搜寻对比还是找到了基本都能满足我要求的华硕 Zenfone 2 手机（我还真的谈不上是华硕的粉丝哦 -_-#），刚好最近华硕的天猫官方店铺搞促销活动， 4GB RAM 64GB ROM 的 Zenfone 2 从 2399 元降到了 1599 元，而且还能领优惠券继续减价，这样就不用考虑什么了，直接下单购买。</p>
<p>从上海到南京快递走了一天之后手机到手发现华硕天猫店还是比较厚道的，在这种促销力度下还是送了不少赠品：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442992/zenfone2-packages.jpg" alt="Zenfone2 全套" title="Zenfone2 全套"></p>
<p>分别送了充电宝、原装耳机、自拍杆、贴膜、手机壳，而且没有像某些网友评价的那样国行版本默认不给快充充电器。</p>
<blockquote>
<p><strong>福利</strong></p>
<p>现在购买的华硕 Zenfone 2 手机在首次使用时会提示激活两年 100GB 的 Google Drive 奖励,我的 Google Drive 空间又成功扩容了，而且似乎用 Zenfone2 手机注册新的 ASUS WebStorage 云存储账户也是有空间奖励的。</p>
</blockquote>
<p>至于手机的外观实在没有什么好说的 — 因为看起来这款 Zenfone 2 就算和我之前用的 PadFone Infinity 相比也似乎没有什么太好的设计元素在里面。</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442986/zenfone2-front.jpg" alt="Zenfone2 正面" title="Zenfone2 正面"></p>
<p>Zenfone 2 是全塑料机身，正面还是延续了华硕之前众多老机型用的 3 个触控按键，除了最上面的电源键，手机正面以及左右两边就没有其它按键了，音量键被挪到了背面：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442982/zenfone2-back.jpg" alt="Zenfone2 背面" title="Zenfone2 背面"></p>
<p>背面上方还是有 ASUS 的 LOGO，下面的 intel inside 标志表示这是一款使用 Intel Atom 处理器的手机。初看起来是不是觉得这土豪金的配色应该质感还不错?背面倒是一直沿用了华硕之前一些手机的弧形后盖，而且表面还是华硕用了一万年的金属拉丝效果，但比较悲剧的是这用在纯塑料后盖上的结果就是手摸上去触感比较差（赶紧套上赠送的手机壳压压惊 ^_^）。</p>
<p>值得一提的是华硕把电源键放在最顶端似乎是考虑到 5.5 寸的尺寸下用户能更好的按到，但实际上不管是否套上手机壳，这个电源键的手感都是很差的，还好 Zenfone 2 支持 ZenMotion 双击亮屏和息屏一定程序上可以缓解这个问题。</p>
<blockquote>
<p><strong>提示</strong></p>
<p>华硕 ZenMotion 功能还可以支持在锁屏状态下以特定的触控手势启动指定的 App，例如我就设置了锁屏状态下在屏幕上划一个 <code>V</code> 字就启动微信，划一个 <code>Z</code> 字就启动支付宝。</p>
</blockquote>
<p>好吧，其实我写这篇博文最主要的关注点还是手机里附带的这颗 Intel Atom Z3580 处理器了，可以到 Intel 官网上看到其技术参数：</p>
<table>
<thead>
<tr>
<th>规格</th>
<th>参数</th>
</tr>
</thead>
<tbody>
<tr>
<td>发行日期</td>
<td>Q2’14</td>
</tr>
<tr>
<td>缓存</td>
<td>2 MB</td>
</tr>
<tr>
<td>指令集</td>
<td>64-bit</td>
</tr>
<tr>
<td>指令集扩展</td>
<td>SSE4.1/4.2, SSSE3, SSE3, SSE2, AES-NI</td>
</tr>
<tr>
<td>光刻</td>
<td>22 nm</td>
</tr>
<tr>
<td>内核数</td>
<td>4</td>
</tr>
<tr>
<td>线程数</td>
<td>4</td>
</tr>
<tr>
<td>脉冲频率</td>
<td>2.33 GHz</td>
</tr>
<tr>
<td>最大内存大小</td>
<td>4 GB</td>
</tr>
<tr>
<td>内存类型</td>
<td>LPDDR3 1600</td>
</tr>
<tr>
<td>最大内存通道数</td>
<td>2</td>
</tr>
<tr>
<td>最大内存带宽</td>
<td>12.8 GB/s</td>
</tr>
<tr>
<td>物理地址扩展</td>
<td>32-bit</td>
</tr>
<tr>
<td>显卡基本频率</td>
<td>457 MHz</td>
</tr>
<tr>
<td>色同步脉冲频率</td>
<td>533 MHz</td>
</tr>
<tr>
<td>英特尔® 无线显示技术</td>
<td>Yes</td>
</tr>
<tr>
<td>英特尔® 虚拟化技术</td>
<td>Yes</td>
</tr>
<tr>
<td>英特尔® 64</td>
<td>Yes</td>
</tr>
<tr>
<td>空闲状态</td>
<td>Yes</td>
</tr>
<tr>
<td>增强型英特尔 SpeedStep® 技术</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p>看起来处理器频率也够用了，我所关注的无线显示、虚拟化和 64 位都是支持的，虽然用雷兔兔之类的跑分可能和现在新出的高通 820 之类的 CPU 会有些差距，但日常使用肯定是没有太大问题的。</p>
<p>上手开机之后发现 Zenfone 2 国行版系统（CN 版本，现在仍然是 5.0 系统）里预装了好多个国产 App，例如手机百度、UC 浏览器之类的（当然 Google 套件是没有的）。正当我想直接下载一个 Google Apps 安装器来先试试的时候，我又发现国行 Android 系统的位置信息服务也是由百度提供的，这个就不好忍了，立马下载国际版 WW 版本固件并进行刷机。</p>
<p>得益于 4GB 的运行内存，Zenfone 2 实际运行起来还是非常流畅的，刚刷完机之后系统里看到的空闲内存有 2.8GB 左右，把我原来手机上安装的 100 多个 App 还原之后发现正常运行时 Android 系统的空闲内存也在 2GB 左右，这样必须能很欢畅的使用各种 App 后台了。</p>
<p>至于 Android x86 的兼容问题，由于前几年我也用过联想 K800、XOLO X900 这两款使用 Intel Atom Z2460 处理器的手机，知道这些使用 x86 CPU 的手机在某些 Android App 的兼容性上会有些坑。</p>
<p>华硕 Zenfone 2 这几天用下来发现应用的兼容性相比以前来说确实也有不小的提升了，可能由于我比较少装游戏 App 的关系，我在 Zenfone 2 上暂时还没遇到直接不兼容的程序（像 MX Player 之类的 App 是可以安装 x86 专用版本的）。另外我在开启 root 并安装 x86 版本的 xposed 框架之后再尝试之前用的一些 xposed App 看起来也是没有什么问题的。</p>
<p>说到 Zenfone 2 的续航表现，比较可惜的是华硕在这么硕大的机身里却只塞进去了一个 3000 mAh 的电池，看看我这两天使用下来的电池曲线：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442983/zenfone2-battery.jpg" alt="Zenfone2 续航" title="Zenfone2 续航"></p>
<p>一般正常使用的话 Zenfone 2 差不多能顶上一天多一点（我在住处和公司都是连接 WiFi，其它则是使用联通 4G 网络），比较轻度的使用可能才能接近两天，和百度里看到的其它网友写的续航表现基本相符，虽然我都已经完全习惯了 Android 手机的一天甚至半天一充，但由于这款手机的外形完全谈不上轻薄，所以我还是略有点失望的，还是希望华硕后续的 5.1 或者 6.0 系统版本升级能优化续航表现呢。</p>
<p>最后还是总结说下 Zenfone 2 作为一款拥有 4GB 大内存而且性价比挺高的手机，一般的用户使用起来应该还是非常顺手的，另外 x86 的 Android 手机现在其实可玩性也是很高的哦，祝大家玩的开心。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/zenfone2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DIY公交卡植入手机后盖</title>
		<link>https://zohead.com/archives/diy-phone-buscard/</link>
		<comments>https://zohead.com/archives/diy-phone-buscard/#comments</comments>
		<pubDate>Sat, 21 Dec 2013 10:25:10 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[公交卡]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[线圈]]></category>
		<category><![CDATA[芯片]]></category>
		<category><![CDATA[防磁贴]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=643</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/diy-phone-buscard/ 最近发现用了好多年的南京公交卡已经有报废的倾向，时常刷不上。移动也推出过自带公交卡功能的 SIM 卡，无奈本人还不想为这个就将 SIM 卡换成移动的。略加搜索之后，有想法把公交卡芯片放到手机后盖上以实现手机直接刷公交的目的。 网上有完全手工 DIY 出来的效果，自己用美工刀、自己做线圈之类的，可以参考这里： http://mobile.163.com/13/0726/10/94N2CERN0011179O_all.html 由于我暂时还没有这种条件，因此还是在淘宝上找 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/diy-phone-buscard/" target="_blank">https://zohead.com/archives/diy-phone-buscard/</a></p>
<p>最近发现用了好多年的南京公交卡已经有报废的倾向，时常刷不上。移动也推出过自带公交卡功能的 SIM 卡，无奈本人还不想为这个就将 SIM 卡换成移动的。略加搜索之后，有想法把公交卡芯片放到手机后盖上以实现手机直接刷公交的目的。</p>
<p>网上有完全手工 DIY 出来的效果，自己用美工刀、自己做线圈之类的，可以参考这里：</p>
<p><a href="http://mobile.163.com/13/0726/10/94N2CERN0011179O_all.html" target="_blank">http://mobile.163.com/13/0726/10/94N2CERN0011179O_all.html</a></p>
<p>由于我暂时还没有这种条件，因此还是在淘宝上找到了比较方便快捷的方法：用卖家自己做好的线圈，使用溶剂溶解公交卡芯片，最后加上防磁贴就可以了。为免广告之嫌，这里就不放出淘宝地址了，请自行搜索该店铺。</p>
<p>1、首先在暗光处用强光手电照射公交卡就可以看到芯片和线圈的位置：</p>
<p><a href="http://zohead.com/wp-content/uploads/buscard-struct.jpg" target="_blank"><img class="alignnone size-full wp-image-646" alt="公交卡构造" src="http://zohead.com/wp-content/uploads/buscard-struct.jpg" width="384" height="311" /></a></p>
<p>2、用笔将位置标记出来，然后从公交卡上剪下来那一小块放到专用溶剂中浸泡几个小时，不想用溶剂的话也可以用美工刀之类的自己弄出来（是个技术活）：</p>
<p><a href="http://zohead.com/wp-content/uploads/chip-solvent.jpg" target="_blank"><img class="alignnone size-full wp-image-647" alt="溶解提取公交卡芯片" src="http://zohead.com/wp-content/uploads/chip-solvent.jpg" width="184" height="165" /></a></p>
<p>卖家说的几个小时就可以取出芯片，但实际我泡了十几个小时还是需要自己取出来（不过还好外框已经泡软，已经比较方便取出来了）。取出来的芯片如下：</p>
<p><a href="http://zohead.com/wp-content/uploads/buscard-chip.jpg" target="_blank"><img class="alignnone size-full wp-image-648" alt="公交卡芯片" src="http://zohead.com/wp-content/uploads/buscard-chip.jpg" width="273" height="334" /></a></p>
<p>3、将芯片清洗干净并晾干，下面就是关键的做线圈了，你如果动手能力比较强可以参考网上的方法用铜线来做，我这里就偷懒点直接用淘宝卖家做好的线圈贴上芯片了：</p>
<p><a href="http://zohead.com/wp-content/uploads/buscard-coil.jpg" target="_blank"><img class="alignnone size-full wp-image-649" alt="公交卡芯片线圈" src="http://zohead.com/wp-content/uploads/buscard-coil.jpg" width="350" height="235" /></a></p>
<p>4、将线圈贴到手机后盖上，这样其实还是不能用的，因为手机射频信号和公交卡 RFID 会存在干扰情况，因此再弄一张防磁贴贴到线圈上，一起放到手机后盖里（还算比较薄的），这样就基本大功告成了：</p>
<p><a href="http://zohead.com/wp-content/uploads/phone-buscard.jpg" target="_blank"><img class="alignnone size-full wp-image-650" alt="手机后盖上的公交卡芯片" src="http://zohead.com/wp-content/uploads/phone-buscard.jpg" width="368" height="471" /></a></p>
<p>接下来就是直接拿手机刷公交试试了，我测试的还算顺利，虽然有一次没刷成功，如果为了更好的效果也可以把上面的线圈和防磁贴帖到手机保护套上。值得一提的是上面的线圈是可以放三个卡的芯片的，你可以把考勤卡、门禁卡之类的芯片也集成进来哦。玩的开心 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/diy-phone-buscard/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>在XOLO X900上实现Ubuntu for Android</title>
		<link>https://zohead.com/archives/ubuntu-for-xolo-x900/</link>
		<comments>https://zohead.com/archives/ubuntu-for-xolo-x900/#comments</comments>
		<pubDate>Sun, 06 Jan 2013 19:19:49 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[12.04]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[DisplayLink]]></category>
		<category><![CDATA[HDMI]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[LapDock]]></category>
		<category><![CDATA[Lava]]></category>
		<category><![CDATA[Motorola]]></category>
		<category><![CDATA[OTG]]></category>
		<category><![CDATA[Ubuntu for Android]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[USB]]></category>
		<category><![CDATA[X11]]></category>
		<category><![CDATA[x86]]></category>
		<category><![CDATA[X900]]></category>
		<category><![CDATA[XOLO]]></category>
		<category><![CDATA[Xorg]]></category>
		<category><![CDATA[显卡]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=378</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/ubuntu-for-xolo-x900/ 由于 Lava XOLO X900 使用的 Intel Atom Z2460 这一 x86 的 CPU，我们就可以做一些改动，让其实现初步的 Ubuntu for Android 效果，而且运行的是 x86 版本的 Ubuntu，相对于 ARM 版本（不能运行私有软件，没有源代码的话啥都干不了）来说实用性要好很多的。 先看看实际的效果图： 现在我在这个 Android 手机里的 Ubuntu 上已经开始正常运行 Skype、Ubuntu One、sopcast  [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/ubuntu-for-xolo-x900/" target="_blank">https://zohead.com/archives/ubuntu-for-xolo-x900/</a></p>
<p>由于 Lava XOLO X900 使用的 Intel Atom Z2460 这一 x86 的 CPU，我们就可以做一些改动，让其实现初步的 Ubuntu for Android 效果，而且运行的是 x86 版本的 Ubuntu，相对于 ARM 版本（不能运行私有软件，没有源代码的话啥都干不了）来说实用性要好很多的。</p>
<p>先看看实际的效果图：</p>
<p><a href="http://zohead.com/wp-content/uploads/ubuntu-android-x900.jpg" target="_blank"><img class="alignnone" title="Ubuntu for Android on XOLO X900" src="http://zohead.com/wp-content/uploads/ubuntu-android-x900.jpg" alt="Ubuntu for Android on XOLO X900" width="690" height="523" /></a></p>
<p>现在我在这个 Android 手机里的 Ubuntu 上已经开始正常运行 Skype、Ubuntu One、sopcast 等应用，而且 Ubuntu 和 Android 系统是共存同时运行的，Ubuntu 是运行在外部屏幕上的，对 Android 完全没有影响，不需要 VNC 登录之类的。</p>
<p>Canonical 公司提出的 Ubuntu for Android 请参考这里：</p>
<p><a href="http://www.ubuntu.com/devices/android" target="_blank">http://www.ubuntu.com/devices/android</a></p>
<p>这里提到的 Canonical 的 Ubuntu for Android 的要求有：</p>
<ul>
<li>双核手机，内存最少 512MB；</li>
<li>支持 secondary frame buffer；</li>
<li>支持 USB OTG</li>
</ul>
<p>对于 XOLO X900 来说，第二点要求 secondary frame buffer 暂时无法满足，因为官方的 kernel 只注册了 <strong>/dev/graphics/fb0</strong> 一个 frame buffer 设备。但由于支持 USB OTG，我们这里暂时用支持 Linux frame buffer 的外置 USB 显卡来实现。</p>
<p>需要的设备及配件：</p>
<ul>
<li>Motorola LapDock 100（做显示器及键盘鼠标输入，同时接 USB 外置显卡，你完全可以用自己的显示器）</li>
<li>DisplayLink USB 显卡</li>
<li>USB OTG 线</li>
<li>HDMI 线</li>
</ul>
<p><strong><span style="color: #0000ff;">1、准备 x86 Ubuntu 环境：</span></strong></p>
<p>由于 XOLO X900 只有 16GB 的 ROM 空间，为了速度和扩展考虑，最好可以将 Ubuntu 安装在隐藏未启用的 microSD 插槽上，最好使用 Class 10 的 microSD，这样不会对 Ubuntu 的性能造成影响。</p>
<p>你可以参考这个视频（只有 Youtube 哈）查看如果启用隐藏的 microSD 插槽：</p>
<p><a href="http://www.youtube.com/watch?v=6-FkK7Htohs" target="_blank">http://www.youtube.com/watch?v=6-FkK7Htohs</a></p>
<p>下面是找一个合适的 Ubuntu 系统，如果你有时间的话，完全可以用 VMware 安装一个虚拟机到 SD 卡上。如果你像我一样不想浪费时间安装，可以到网上下载现成的 VMware vmdk 映像并直接拷贝到 SD 卡上。</p>
<p>我选择的是下面这个 Lubuntu 12.04 系统，因为使用 LXDE 桌面，速度比较快，这个网站也有完整的 Unity 桌面环境的 Ubuntu 12.04 系统哦：</p>
<p><a href="http://www.trendsigma.net/vmware/lubuntu1204.html" target="_blank">http://www.trendsigma.net/vmware/lubuntu1204.html</a></p>
<p>你可能需要另一个 Linux 虚拟机来将 Lubuntu 映像里的所有文件拷贝到 SD 卡里（最好能对 SD 卡进行分区，我是建立了一个 ext4 的分区）。</p>
<p><strong><span style="color: #0000ff;">2、准备需要的 DisplayLink USB 显卡驱动：</span></strong></p>
<p>由于 XOLO X900 官方 kernel 对 frame buffer 支持并不完整（缺少 defio 等支持），官方 3.0.8 kernel 源代码里的 DisplayLink USB 显卡驱动 udlfb 无法正常编译。</p>
<p>我基于下面的 udlfb 项目的 0.4 版本修改了一个新的可直接用于 XOLO X900 官方 kernel 的 udlfb 驱动（默认代码加载之后无法正常显示图像）：</p>
<p><a href="http://git.plugable.com/gitphp/index.php?p=udlfb" target="_blank">http://git.plugable.com/gitphp/index.php?p=udlfb</a></p>
<p>我修改过的 udlfb 0.4 驱动的下载地址：</p>
<p><a href="http://miseal.googlecode.com/files/udlfb-v0.4.tar.bz2" target="_blank">http://miseal.googlecode.com/files/udlfb-v0.4.tar.bz2</a></p>
<p>相对默认 0.4 版本的主要改进为：</p>
<ul>
<li>解决在 Linux 3.0.8 中无法正常编译的问题；</li>
<li>解决 kzalloc 分配内存失败的问题，以 vmalloc 替代；</li>
<li>增加卸载驱动时的释放内存处理；</li>
<li>自动根据 EDID 判断显示器分辨率，默认使用 EDID 得到的分辨率；</li>
<li>如果 EDID 无法得到合适的分辨率，使用默认 1280x1024 分辨率；</li>
<li>增加模块参数，加载模块时可以指定初始分辨率</li>
</ul>
<p>编译方法请参考之前写的编译 XOLO X900 自定义 kernel 的文章：</p>
<p><a href="https://zohead.com/archives/xolo-x900-kernel/" target="_blank">https://zohead.com/archives/xolo-x900-kernel/</a></p>
<p>如果你想直接用我编译好的，请访问此链接下载：</p>
<p><a href="http://miseal.googlecode.com/files/x900-kernel-config-modules.7z" target="_blank">http://miseal.googlecode.com/files/x900-kernel-config-modules.7z</a></p>
<p>编译好的 <strong>udlfb.ko</strong> 在解压缩出来的 <strong>modules</strong> 目录中，建议将 <strong>modules</strong> 目录拷贝到 <strong>/system/lib</strong> 目录中。</p>
<p><strong><span style="color: #0000ff;">3、测试 udlfb 驱动是否可用：</span></strong></p>
<p>通过外置带电源的 USB HUB 接上 DisplayLink USB 显卡（Motorola Lapdock 就是一个带电源的 USB HUB 哈），并将显卡接到外置显示器上，root 过之后，在 shell 中运行 <strong>su</strong> 然后运行：</p>
<p><strong>insmod /system/lib/modules/udlfb.ko</strong></p>
<p>如果一切正常的话，驱动将自动判断你的显示器分辨率，并在显示器中显示绿屏。</p>
<p>然后运行下面的命令检查 frame buffer 设备是否正常，一般应有正常的设备节点信息输出：</p>
<p><strong>ls -l /dev/graphics/fb1</strong></p>
<p>如果你的显示器不支持 EDID 或者默认的 1280x1024 分辨率不支持，也可以加载驱动时手工指定分辨率，例如：</p>
<p><strong>insmod /system/lib/modules/udlfb.ko init_xres=1024 init_yres=768</strong></p>
<p>上面的命令即将初始分辨率设置为 1024x768。</p>
<p><strong><span style="color: #0000ff;">4、屏蔽 Android 本身对 USB 键盘鼠标的支持：</span></strong></p>
<p>由于 XOLO X900 默认支持 USB OTG，通过 OTG 接上 USB 键盘鼠标之后，可以直接对 Android 进行操作，而且任何对键盘和鼠标的操作都会解锁手机，这对于我们运行 Ubuntu for Android 是毫无益处的，而且会导致重复的 input event 发到 Android 界面上。因此我们需要屏蔽 Android 本身对 USB 输入设备的支持。</p>
<p>首先接上 USB 键盘和鼠标（通过 USB HUB），并确定是哪个 input 设备，同样在 root 中 su 运行：</p>
<p><strong>ls /dev/input/event*</strong></p>
<p>你会看到很多个 event 设备，一一用下面的命令（把 X 换为具体的设备名）确定到底哪个是你所插上的 USB 键盘和鼠标，cat 之后在键盘上敲键或者移动鼠标，正确的设备将会有输出：</p>
<p><strong>cat /dev/input/eventX</strong></p>
<p>假设确定好鼠标和键盘分别为：<strong>/dev/input/event10</strong> 和 <strong>/dev/input/event11</strong>。</p>
<p>然后运行 <strong>dmesg</strong> 确定 USB 键盘和鼠标的设备名，你可以看到类似这样的输出：</p>
<pre class="brush: bash; title: ; notranslate">
usb 1-1: new high speed USB device number 2 using penwell_otg
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 7 ports detected
usb 1-1.1: new full speed USB device number 3 using penwell_otg
input: Motorola Mobility Motorola HD Dock as /devices/pci0000:00/0000:00:02.3/usb1/1-1/1-1.1/1-1.1:1.0/input/input11
generic-usb 0003:22B8:0938.0003: input,hidraw0: USB HID v1.01 Keyboard [Motorola Mobility Motorola HD Dock] on usb-0000:00:02.3-1.1/input0
usb 1-1.3: new low speed USB device number 4 using penwell_otg
input: BTC USB Cordless Mouse as /devices/pci0000:00/0000:00:02.3/usb1/1-1/1-1.3/1-1.3:1.0/input/input12
generic-usb 0003:1241:0003.0004: input,hidraw1: USB HID v1.10 Keyboard [BTC USB Cordless Mouse] on usb-0000:00:02.3-1.3/input0
input: BTC USB Cordless Mouse as /devices/pci0000:00/0000:00:02.3/usb1/1-1/1-1.3/1-1.3:1.1/input/input13
generic-usb 0003:1241:0003.0005: input,hidraw2: USB HID v1.10 Mouse [BTC USB Cordless Mouse] on usb-0000:00:02.3-1.3/input1
usb 1-1.6: new high speed USB device number 5 using penwell_otg
</pre>
<p>上面的 <strong>Motorola Mobility Motorola HD Dock</strong> 和 <strong>BTC USB Cordless Mouse</strong> 即为 USB 键盘和鼠标设备的设备名，记下这些。</p>
<p>编译 <strong>/system/etc/excluded-input-devices.xml</strong> 配置文件，将上面的 USB 键盘和鼠标设备名加入进来，然后重启手机，在 USB 输入设备上的操作就不会影响 Android 系统。</p>
<p>例如我的配置文件内容如下：</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;devices&gt;
&lt;device name=&quot;Unipoint HID&quot;/&gt;
&lt;device name=&quot;RMI4 Unipoint&quot;/&gt;
&lt;device name=&quot;Motorola Mobility Motorola HD Dock&quot;/&gt;
&lt;device name=&quot;BTC USB Cordless Mouse&quot;/&gt;
&lt;/devices&gt;
</pre>
<p><strong><span style="color: #0000ff;">5、在 Android 中切换到 Ubuntu 环境：</span></strong></p>
<p>首先 su 运行 shell 创建一个目录作为 Ubuntu 分区的挂载点（这里假设为 /system/sd）：</p>
<p><strong>mount -o remount,rw /dev/block/mmcblk0p2 /system</strong><br />
<strong> busybox mkdir -m 777 /system/sd</strong><br />
<strong> mount -o remount,ro /dev/block/mmcblk0p2 /system</strong></p>
<p>你可以使用我写好的这个切换到 Ubuntu 的脚本 <strong>startubuntu</strong>（我这里是挂载了 SD 卡第一个 ext4 分区，请根据需要自行修改）：</p>
<p><a href="http://pastebin.com/raw.php?i=9r21dR7L" target="_blank">http://pastebin.com/raw.php?i=9r21dR7L</a></p>
<p>我在脚本中将 Android 中的 /mnt/sdcard 目录挂载到了 Ubuntu 里的 /sdcard 目录，Android 系统的 /system 目录挂载到了 /android/system 目录，这样可以很方便的在 Ubuntu 中访问 Android 系统中的数据。</p>
<p><strong><span style="color: #0000ff;">6、准备运行 X 的环境：</span></strong></p>
<p>假设你已经切换到 Ubuntu，首先安装 DisplayLink 的 X 驱动：</p>
<p><strong>apt-get install xserver-xorg-video-displaylink</strong></p>
<p>然后安装输入模块：</p>
<p><strong>apt-get install xserver-xorg-input-evdev</strong></p>
<p>安装成功之后，修改 <strong>/etc/X11/xorg.conf</strong> X11 配置文件（Ubuntu 12.04 中没有这个配置文件，需要在 <strong>/usr/share/X11/xorg.conf.d</strong> 目录中自己增加新的配置文件，我的为：<strong>52-displaylink.conf</strong>），内容为下面的链接：</p>
<p><a href="http://pastebin.com/raw.php?i=WjcfFWc2" target="_blank">http://pastebin.com/raw.php?i=WjcfFWc2</a></p>
<p>注意请将其中的 input 设备和分辨率改为自己需要的。</p>
<p><strong><span style="color: #0000ff;">7、运行 X - 最终的 Ubuntu for Android：</span></strong></p>
<p>产生 X 的初始配置文件 <strong>/root/.xinitrc</strong>：</p>
<p><strong>#!/bin/sh</strong><br />
<strong> xrandr -o 0</strong><br />
<strong> startlubuntu</strong></p>
<p>第二行的 <strong>xrandr</strong> 命令是专门为 DisplayLink udlfb 驱动修改的，没有这个的话可能会导致 X 环境中的菜单项不能正确显示。第三行的 <strong>startlubuntu</strong> 你可以替换成你需要的 X 命令（例如：xinit lxsession）。</p>
<p>然后运行 <strong>startx</strong> 就可以启动 X 桌面环境了。</p>
<p>某些情况下如果这样运行 startx 还是有问题，可以在 <strong>startx</strong> 时增加参数：</p>
<p><strong>startx -- :0 vt1</strong></p>
<p>如果这样可以的话表示 X 使用的 VT 不正确，这时你可能需要将 <strong>/etc/X11/xinit/xserverrc</strong> 改为下面这样以强制指定 X 使用的 VT：</p>
<p><strong>#!/bin/sh</strong><br />
<strong> exec /usr/bin/X -nolisten tcp vt1 "$@"</strong></p>
<p>8、总结：</p>
<p>这样实现的 Ubuntu for Android 实际还是有一些不足的：</p>
<ul>
<li>必须要有外置的 USB 显卡太不方便，而且热插拔 USB 显卡会导致 X server 直接挂掉，最好的解决方案是启用 HDMI frame buffer；</li>
<li>暂时没有声音输出，可能可以用 USB 声卡，或者将声音输出至手机（能想象的到的丑陋）；</li>
<li>不支持通过 USB HUB 进行充电，应该是要修改 kernel 才能支持</li>
</ul>
<p>本文的内容均为我根据实际使用所写，没有考虑到通用的情况，其中有任何问题欢迎提出指正哦 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/ubuntu-for-xolo-x900/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>构建Lava XOLO X900非官方kernel</title>
		<link>https://zohead.com/archives/xolo-x900-kernel/</link>
		<comments>https://zohead.com/archives/xolo-x900-kernel/#comments</comments>
		<pubDate>Thu, 20 Dec 2012 13:38:43 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[cifs]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[K800]]></category>
		<category><![CDATA[Lava]]></category>
		<category><![CDATA[OTG]]></category>
		<category><![CDATA[U盘]]></category>
		<category><![CDATA[x86]]></category>
		<category><![CDATA[X900]]></category>
		<category><![CDATA[XOLO]]></category>
		<category><![CDATA[Z2460]]></category>
		<category><![CDATA[印度]]></category>
		<category><![CDATA[模块]]></category>
		<category><![CDATA[联想]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=371</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/xolo-x900-kernel/ 本文目标为 Lava XOLO X900 这一印度咖喱味手机，同样 Intel Atom Z2460 的芯，移植 kernel 的方法和之前的联想 K800 手机基本一致，具体请移步下面的链接： https://zohead.com/archives/k800-kernel-otg-udisk/ 经过确认 XOLO X900 默认也是 Android 4.0.4 ROM，同样 3.0.8 kernel，当然硬件会有所不同，不过 OTG U盘所需要使用的 usb-stor [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/xolo-x900-kernel/" target="_blank">https://zohead.com/archives/xolo-x900-kernel/</a></p>
<p>本文目标为 Lava XOLO X900 这一印度咖喱味手机，同样 Intel Atom Z2460 的芯，移植 kernel 的方法和之前的联想 K800 手机基本一致，具体请移步下面的链接：</p>
<p><a href="https://zohead.com/archives/k800-kernel-otg-udisk/" target="_blank">https://zohead.com/archives/k800-kernel-otg-udisk/</a></p>
<p>经过确认 XOLO X900 默认也是 Android 4.0.4 ROM，同样 3.0.8 kernel，当然硬件会有所不同，不过 OTG U盘所需要使用的 usb-storage 模块也是和 K800 一样默认没有开启的。</p>
<p>基于基本相同的 kernel source，先使用 Medfield 默认的配置 i386_mfld_defconfig，发现与现有的 kernel 差距比较多，然后用 Moto 的 i386_mfld_moto_defconfig 编译出的模块加载依然 panic。没办法，硬着头皮与实际运行中 kernel 情况进行对比，发现基于默认配置 i386_mfld_defconfig 进行修改是比较好的方法，而且看得出 XOLO 相对联想还是做了一定的优化，去掉了像 CONFIG_DEBUG_KERNEL 之类的很多调试选项，默认允许了 tun 驱动等。另外声卡相关的配置不同的地方也比较多，经过最终改动和确认，编译之后，先已能成功加载并使用之前在 K800 上编译的那些模块。</p>
<p>XOLO X900 的内核模块和配置文件的下载地址：</p>
<p><a href="http://miseal.googlecode.com/files/x900-kernel-config-modules.7z" target="_blank">http://miseal.googlecode.com/files/x900-kernel-config-modules.7z</a></p>
<p>使用方法和 K800 的基本一致，只是 CIFS 文件系统的使用上有变动：</p>
<p>insmod des_generic.ko<br />
insmod md4.ko<br />
insmod cifs.ko</p>
<p>ASIX Electronics 的 USB 以太网卡的驱动 asix.ko 也已经更新到官方最新的版本（kernel 自带的版本无法使用）。</p>
<p>现已基本可以确认我改动之后的 kernel 和 X900 现有 kernel 的相似性已有 90% 或以上了，不过由于 X900 手机悲剧滴将 bootloader 给锁了，无法刷未签名的 kernel，暂时还没有太好的办法来直接替换 kernel 进行测试哦。</p>
<p>另外有一些需要说明的地方：</p>
<ol>
<li>XOLO X900 现有 kernel 中支持 Kineto GAN 虚拟网卡驱动（支持 VOIP 网络电话的），Moto Razr i 公开的 kernel source 中却并没有这个的支持，为此我手工增加了这个的驱动（上面下载的 kernel configuration 中也有的）；</li>
<li>目前还有 apwr3_0、pax、sep3_7 这三个非免费开源的内核模块没有源代码，暂时也没有办法在网上找到，不过从现在来看，似乎 X900 实际运行时也未使用这三个模块。</li>
</ol>
<p>同样我不对任何导致你的手机 panic 挂掉的后果承担责任，有任何问题欢迎提出指正哦 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/xolo-x900-kernel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android x86对native ARM的支持</title>
		<link>https://zohead.com/archives/android-x86-arm-binary/</link>
		<comments>https://zohead.com/archives/android-x86-arm-binary/#comments</comments>
		<pubDate>Wed, 05 Dec 2012 17:20:37 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[binary translator]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[K800]]></category>
		<category><![CDATA[Medfield]]></category>
		<category><![CDATA[x86]]></category>
		<category><![CDATA[动态库]]></category>
		<category><![CDATA[原生]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[联想]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=352</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/android-x86-arm-binary/ 之前入手联想 K800 这款使用 Intel x86 CPU 的手机时考虑过一个问题，就是 Android x86 对于已有的 Android 程序的兼容问题问题，特别是对于一些使用了 native ARM 代码的程序（以游戏居多），因为不可能原来所有的程序都可以及时更新来支持 x86 的 Android 手机（本来就很小众）。在我的想法中，Intel x86 环境下应该不可能直接运行 native 的 ARM 二进制代码（虚拟机那种不考虑），不过考虑到平时 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/android-x86-arm-binary/" target="_blank">https://zohead.com/archives/android-x86-arm-binary/</a></p>
<p>之前入手联想 K800 这款使用 Intel x86 CPU 的手机时考虑过一个问题，就是 Android x86 对于已有的 Android 程序的兼容问题问题，特别是对于一些使用了 native ARM 代码的程序（以游戏居多），因为不可能原来所有的程序都可以及时更新来支持 x86 的 Android 手机（本来就很小众）。在我的想法中，Intel x86 环境下应该不可能直接运行 native 的 ARM 二进制代码（虚拟机那种不考虑），不过考虑到平时玩使用 native ARM 代码的游戏也不多，就没有在意。</p>
<p>我们先来看一个典型的使用了 native ARM library 的 Android 程序：《Bejeweled 2》，也就是大家在电脑上很熟悉的《宝石迷阵2》游戏的 Android 版本，查看 apk 安装文件里的内容，可以明显发现其使用了 ARM EABI 的动态库：</p>
<p><a href="http://zohead.com/wp-content/uploads/apk-native-arm.jpg" target="_blank"><img class="alignnone" title="使用 native ARM 代码的 Android 程序" src="http://zohead.com/wp-content/uploads/apk-native-arm.jpg" alt="使用 native ARM 代码的 Android 程序" width="371" height="213" /></a></p>
<p>但我在 K800 上安装此游戏，完全可以正常运行并使用，只是似乎没有在 ARM Android 手机上运行的那么顺畅。</p>
<p>这就比较疑惑了，接下来那就进一步验证一下，将之前静态编译的一个 ARM 可执行程序拷到手机，在终端中运行，竟然也可以正常运行，我们看看这个 ARM 可执行程序的格式：</p>
<pre class="brush: bash; title: ARM 可执行程序的格式; notranslate">
[root@fedora ~]# file /mnt/iptables
/mnt/iptables: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, statically linked, for GNU/Linux 2.6.14, stripped
</pre>
<p>经过一番搜寻之后，发现原来 Android x86 4.0 版本之后已经开始支持对 native ARM 的仿真，这对于之前用处似乎一直不是很大的 Android x86 来说绝对可以算是相当大的进步。</p>
<p>联想 K800 使用的 CPU 是 Intel Atom Z2460，基于 Intel Medfield 平台，尽管 Z2460 是一款使用 x86 指令集的 CPU，但可以兼容运行大部分带有 native ARM 代码的应用，关键就是靠 Intel 并未公开发表的技术 ARM binary code translator，而且 binary translator 对于应用程序来说是透明的，一般不需要做任何特殊的改动。</p>
<p>在 Android x86 上 Google 修改了 dalvik 虚拟机的加载 native code 的函数（修改 libdvm，增加 libdvm_houdini.so），通过 Intel ARM to Atom binary translator 实现 JNI 调用。Android x86 中引入了 libhoudini.so 来做这件事情，通过查看 K800 的根文件系统，我们可以看到除了 /system/lib 下的标准的 x86 的动态库文件之外，新增了 /system/lib/libhoudini.so 库，另外 /system/lib/arm 目录下还有很多 ARM 版本的库文件。</p>
<p>下面是我在 K800 上运行一个 native ARM 程序时的进程输出：</p>
<pre class="brush: bash; title: ps; notranslate">
root      9754  1     79064  3888  c136b03f 40060345 S /system/bin/houdini
root      10365 8204  1468   496   00000000 b76dca06 R ps
</pre>
<p>上面看到的 /system/bin/houdini 进程即为在 Android x86 上运行的 native ARM 程序的表现形式。</p>
<p>从现在在 K800 手机上实际的测试情况来看，在 K800 上运行使用 native ARM 的 Android 似乎都还比较顺畅，像愤怒的小鸟就可以很顺畅的运行，这和现在 K800 用的 Android 4.0.4 ROM 也有关系，相对于不支持 native ARM 的 Android 2.3.7，游戏的兼容性是有相当大的改善的。另外很有可能 Intel Medfield 平台硬件上就有对 ARM binary translator 的加速功能。</p>
<p>当然这种二进制的转换必然会有性能上的损失，无法和 x86 原生程序相比，因此越来越多的 Android 程序也开始集成了 x86 版本的程序和库文件，来看看最新版本的水果忍者 apk 安装程序中的库文件列表，就可以看到 x86 版本：</p>
<p><a href="http://zohead.com/wp-content/uploads/apk-multi-libs.jpg" target="_blank"><img class="alignnone" title="原生支持 x86 库的 Android 程序" src="http://zohead.com/wp-content/uploads/apk-multi-libs.jpg" alt="原生支持 x86 库的 Android 程序" width="300" height="257" /></a></p>
<p>有关 Android x86 运行 native ARM 程序的介绍：</p>
<p><a href="http://www.anandtech.com/show/5770/lava-xolo-x900-review-the-first-intel-medfield-phone/3" target="_blank">http://www.anandtech.com/show/5770/lava-xolo-x900-review-the-first-intel-medfield-phone/3</a></p>
<p>Android x86 下运行环境的搭建：</p>
<p><a href="http://www.buildroid.org/blog/?p=198" target="_blank">http://www.buildroid.org/blog/?p=198</a></p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/android-x86-arm-binary/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>构建联想K800非官方kernel支持OTG U盘</title>
		<link>https://zohead.com/archives/k800-kernel-otg-udisk/</link>
		<comments>https://zohead.com/archives/k800-kernel-otg-udisk/#comments</comments>
		<pubDate>Tue, 27 Nov 2012 15:33:48 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[cifs]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[K800]]></category>
		<category><![CDATA[Motorola]]></category>
		<category><![CDATA[OTG]]></category>
		<category><![CDATA[RAZR i]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[U盘]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[模块]]></category>
		<category><![CDATA[源代码]]></category>
		<category><![CDATA[编译]]></category>
		<category><![CDATA[联想]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=348</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/k800-kernel-otg-udisk/ 这几天专门入了个二手的联想 K800 的 Android 手机，看中的就是它是 x86 的 CPU，其采用 Intel Medfield Atom 平台，具体处理器型号为 Intel Atom Z2460，用的 Android 4.0.4 系统，具体其它配置我就不多说的。 优点： 使用 Intel x86 CPU，方便程序的移植（相对 ARM 而言）； 4.5 寸的 1280 x 720 的 IPS 高清屏幕，主要分辨率够给力； 支持 USB OTG； 支持  [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/k800-kernel-otg-udisk/" target="_blank">https://zohead.com/archives/k800-kernel-otg-udisk/</a></p>
<p>这几天专门入了个二手的联想 K800 的 Android 手机，看中的就是它是 x86 的 CPU，其采用 Intel Medfield Atom 平台，具体处理器型号为 Intel Atom Z2460，用的 Android 4.0.4 系统，具体其它配置我就不多说的。</p>
<p>优点：</p>
<ul>
<li>使用 Intel x86 CPU，方便程序的移植（相对 ARM 而言）；</li>
<li>4.5 寸的 1280 x 720 的 IPS 高清屏幕，主要分辨率够给力；</li>
<li>支持 USB OTG；</li>
<li>支持 MHL 视频输出（缺点也在这，下面再说）；</li>
<li>耗电没想象中的那么严重；</li>
<li>使用的 Intel Atom Z2460 CPU 支持 EM64T 64 位指令；</li>
<li>使用的 Intel Atom Z2460 CPU 支持 Intel VT-x 虚拟化技术（不过这个好像在 Android 4.1 中用处才发挥出来，暂时也用不上）；</li>
<li>很便宜。</li>
</ul>
<p>缺点：</p>
<ul>
<li>没有单独的 HDMI 接口，视频输出需要占用 MicroUSB，OTG 与 MHL 无法同时使用；</li>
<li>OTG 不支持 U 盘（也是本文要解决的）；</li>
<li>恶心的乐 Phone，联想没有公开 kernel 源代码。</li>
</ul>
<p>上面说的缺点里，最后一条不公开 kernel source 是联想一贯悠久的恶劣传统，也是我最忍受不了的一条。</p>
<p>一番努力搜寻之后，我终于找到了曲线救国的神主：Motorola。对，就是他，虽然摩托似乎从来就没有开放的基因，但被 Google 收购之后，摩托在其推出的 Intel 手机 Moto RAZR i 上终于有良心了一把：公布了 Moto RAZR i 的 kernel source。由于 Moto RAZR i 与联想 K800 同样采用 Intel Medfield 平台，因此我就赌了一把其 kernel source 会有很大程度上的相似性，结果很幸运小成功了。</p>
<p><strong><span style="color: #ff0000;">1、获取源码：</span></strong></p>
<p>首先在 SourceForge 上抓取 Moto RAZR i 的 kernel source：</p>
<p><a href="http://sourceforge.net/projects/razr-i.motorola/files/" target="_blank">http://sourceforge.net/projects/razr-i.motorola/files/</a></p>
<p>一共 100 多MB，咱先解压，打开 Makefile，确定 kernel version 是 3.0.8 版本。</p>
<p>给联想 K800 root，装 adb 驱动，用 adb shell 连上看，运行 <strong>uname -a</strong> 查看 K800 手机的 kernel version 是 3.0.8-g37de913，啊哈，除了后缀版本一致。然后尝试读取 /proc/config.gz，无奈联想又是没有把 kernel configuration 给导出，找不到 /proc/config.gz 文件，没办法，只能自己根据当前手机 kernel 判断 K800 当前的 kernel configuration 了。</p>
<p>运行：<strong>egrep '(vmx|svm)' /proc/cpuinfo</strong>，确定 CPU 支持 Intel VT-x 虚拟化技术，有点小兴奋。</p>
<p><strong><span style="color: #ff0000;">2、准备编译环境：</span></strong></p>
<p>接着在手机上查看 <strong>/proc/version</strong>，确定联想 K800 kernel 使用的 gcc 版本为 4.3.3，刚好与 Moto 介绍的一致。然后使用 git clone 从下面的地址得到编译 kernel 的 android x86 toolchain：</p>
<p><a href="https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/x86/i686-android-linux-4.4.3/" target="_blank">https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/x86/i686-android-linux-4.4.3/</a></p>
<p>需要注意 git 得到的代码中默认已经把 gcc 4.3.3 给移除了，不过运行 git log 可以看到之前的提交日志里是有的，那好办，运行下面命令回滚到最新可用的版本：</p>
<p><strong>git checkout 286506f01f8ca64d6eb0e33bafb475a5cf10ff37</strong></p>
<p>终于有了编译 kernel 的正确环境了（不是完整开发环境哈）。</p>
<p><strong><span style="color: #ff0000;">3、编译 kernel：</span></strong></p>
<p>Moto 提供的 kernel source 中有几个适合 Intel Medfield 平台的 config 文件，SourceForge 网站上推荐使用 i386_mfld_moto_defconfig，编译时指定 CROSS_COMPILE，但我实际编译之后的模块加载会 kernel panic。好吧，我来尝试应该是 Intel 原始推荐的 i386_mfld_defconfig 默认配置，无法编译通过，排除原因，发现 i386_mfld_defconfig 中启用的几个选项在 K800 中并没有开启，遂决定去掉，同时去掉了 Moto 特有的加密模块。</p>
<p>修改配置之后，能编译了，但编译到 android USB gadget 代码时又有报错，查看代码，发现 Moto 对 android USB gadget 代码做了特殊改动，好吧，这我暂时不需要修改，根据 Moto 增加的 define 修改 drivers/usb/gadget/android.c，去掉 Moto 特有的改动，尽量使代码默认 Intel 原生（看来联想对 Intel 的代码改动很少，这是个好处，嘿嘿，下面也有悲催的地方），再次开始编译。</p>
<p>这次终于比较顺利了，能编译到链接 kernel image 的地方了，但又有报错，这时就不管了，因为我压根就不指望这个编译出来的 zImage 能直接用在联想 K800 手机上，而且联想也没开放制作其 boot image 的工具和方法，就算 zImage 有了也不知道怎么刷到手机上。</p>
<p>接下来编译 kernel modules，这步比较顺利，我把 CIFS、USB Mass Storage（包括 scsi disk 支持）、usbnet、usb serial converter、tun 等需要的模块都选中，都正确编译出来了。</p>
<p><strong><span style="color: #ff0000;">4、修改调试：</span></strong></p>
<p>拿到手机上加载 cifs.ko，正常，/proc/filesystems 中已经有了 cifs，但挂载文件系统时发现 dmesg 里有 out of memory 报错，一会就 kernel panic 了。</p>
<p>强制重启手机，这时才发现 cifs.ko 大小有 3MB 多，明显太大，查看 config 发现默认启用了 debug kernel，Moto 的默认配置中未启用，不得不说联想真是够懒的，这个影响性能的东西竟然木有去掉。</p>
<p>本来想禁用 CONFIG_DEBUG_KERNEL，但无意发现手机里有 /proc/sched_debug 调度器调试文件，这个是依赖 CONFIG_DEBUG_KERNEL 的，说明 debug kernel 必须启用了。最后发现 i386_mfld_defconfig 中默认的 SLUB debug 等几个选项在联想 K800 kernel 中是关闭的，保存 config 重新编译。由于启用了 debug kernel，编译出来的模块不可避免的都很大，不得不用 <strong>strip --strip-unneeded *.ko</strong> 来去除没用的东西。</p>
<p>再次拷贝到手机上，insmod cifs.ko，正常，mount 挂载 Windows 共享目录终于不 panic 了，但用户验证失败，看 dmesg 发现 kernel 缺少 md4 支持，将 md4 模块也编译拷到手机上开始测试：</p>
<p><strong>insmod md4.ko</strong><br />
<strong>insmod cifs.ko</strong><br />
<strong>mount -t cifs -o username=xxx,password=xxx //192.168.1.xxx/share /mnt</strong></p>
<p>挂载终于正常了。小激动人心，灰常不容易，总不辜负我 panic 了好几次的 K800 手机。话说每次 panic 都得强制抠电池再开机滴啊，555。</p>
<p>下面开始测试外接 U 盘（必须要有 USB OTG 线哦）：</p>
<p><strong>insmod scsi_mod.ko</strong><br />
<strong>insmod sd_mod.ko</strong><br />
<strong>insmod usb-storage.ko</strong></p>
<p>插上 U 盘，手机没任何反应，不过在 dmesg 里已经能看到上来的 sda 设备，运行 fdisk -l 命令可成功看到分区，看来只是手机系统没有做自动挂载外置 U 盘的处理（也正常，本来就不支持），自动挂载可以考虑装 StickMount 之类的软件哦。</p>
<p>使用 USB 转 串口（和实际芯片有关）：</p>
<p><strong>insmod usbserial.ko</strong><br />
<strong>insmod pl2303.ko</strong></p>
<p>使用 USB 有线网卡（和实际芯片有关）：</p>
<p><strong>insmod usbnet.ko</strong><br />
<strong>insmod asix.ko</strong></p>
<p><strong><span style="color: #ff0000;">5、总结：</span></strong></p>
<p>到这地步对我来说已经是颇有进展了，我暂时只看重 U 盘支持这个模块，嘿嘿。其它东西等有关时再来折腾了。</p>
<p>下面是我放出的压缩包下载链接：</p>
<p><a href="http://miseal.googlecode.com/files/k800-kernel-config-modules.7z" target="_blank">http://miseal.googlecode.com/files/k800-kernel-config-modules.7z</a></p>
<p>里面包含我现在编译 kernel 使用的 config 和编译出来的一些有用的 kernel modules，不想自己编译的哥们就自行使用，由于这根本不是官方 kernel，我不对任何导致你的 K800 手机 panic 挂掉的后果承担责任，哈哈。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/k800-kernel-otg-udisk/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
