OpenMoko Neo FreeRunner:内核开放
好吧,我承认。我对 Neo FreeRunner 有一种爱恨交织的关系。但请让我解释一下。
一个多月以来,我一直随身携带 FreeRunner。它真是一个很酷的小玩意,我喜欢它所代表的意义:一个完全开放的移动设备,包括硬件和所有。对于那些不熟悉它的人来说,Neo FreeRunner 是 OpenMoko 公司备受期待的手机。虽然他们之前的手机 Neo 1973 的目标用户是硬核开发者,但 FreeRunner “是一款基于 Linux 的触摸屏智能手机,最终目标是面向普通消费者以及 Linux 桌面用户和软件开发者”。
尽管最终目标是拥有一款通用的、用户友好的手机,但 FreeRunner 尚未完全准备好进入黄金时段的手机市场。OpenMoko 团队充分意识到了这一点,当他们得知 Linux Journal 想要撰写一篇评测时,他们感到有些不安。因此,本文的目的不是过多地谈论 FreeRunner 作为一款手机,而是将其作为一款面向开发者的手持 Linux 设备。
Linux 极客再也找不到比 FreeRunner 配置更好的设备了。它配备了 400MHz ARM 处理器、256MB 内部闪存存储、128MB RAM 和一个用于额外存储的 microSD 卡插槽。FreeRunner 的无线功能也令人印象深刻。它配备了三频 GSM(低端可以选择 850MHz 或 900MHz),以及 GPRS、蓝牙和 Wi-Fi(使用 Atheros AR6K 芯片组)。为了让事情更有趣,OpenMoko 团队还加入了两个加速度计和一个辅助 GPS 芯片。这款设备有点笨重,尺寸为 120.7x62x18.5 毫米,重量约为 180 克。FreeRunner 可在 openmoko.com 上在线购买,价格为 399 美元。如果您计划将其用于严肃的开发,您还可以考虑购买 99 美元的调试板,该调试板可用于访问串行控制台。
更令人兴奋的功能之一是 FreeRunner 可以从 microSD 卡启动。这意味着您可以通过将其他 Linux 发行版安装到 microSD 卡上来测试它们,而无需格式化安装在闪存中的主发行版。这种灵活性非常令人兴奋,它提供了一种在购买前试用的简单方法。
硬件绝对很吸引人,但 FreeRunner 最吸引人的地方是它被构建为运行 Linux。虽然 FreeRunner 的官方发行版是 OM 2008.8,但还有其他选择。Qt 的创建者 Trolltech 制作的 Qtopia 发行版在 FreeRunner 上运行良好。而且,如果您更喜欢不那么“简化”的发行版,您会很高兴得知 Debian 也几乎完整地可用。最近,已经开始将 Gentoo 移植到 FreeRunner 的工作,我相信其他发行版也会很快效仿。
正如我所说,我不打算花太多时间谈论 FreeRunner 作为一款手机。然而,任何对作为手机销售的设备的评测,如果不至少涵盖基本知识,都是不完整的。不幸的是,基本知识几乎就是全部。通话质量相当差,通话接收者报告说他们的那端有很多静电和爆裂声。此外,界面非常笨拙,尤其是对于诸如呼叫等待之类的高级功能。没有明显的音量调节方法,因为没有硬件音量控制按钮。短信发送非常繁琐,因为屏幕键盘小得令人难以置信。
手机软件还有很大的改进空间。在通话质量得到改善之前,我不会考虑将 FreeRunner 作为主要手机使用。
因为我决定不将 FreeRunner 用作手机,所以我认为安装一个功能齐全的 Linux 发行版可能会更有趣。我选择了 Debian,因为它很容易获得,软件包选择范围很广,而且是我经验最丰富的发行版。
安装 Debian 最简单的方法是运行 install.sh shell 脚本,该脚本可从 DebianOnFreeRunner wiki 页面获得。您需要在 FreeRunner 上安装一个已经可以工作的 Linux 安装,并且需要访问互联网。您可以使用您的桌面 Linux PC 或虚拟机(例如 Mac OS X 上的 VMware Fusion)中的 Linux 安装。
将流量从 FreeRunner 路由到 Linux PC 非常容易。每个可用的发行版都使用相同的默认网络配置,并为 FreeRunner 提供 192.168.0.202 的 IP。将 USB 电缆插入 FreeRunner 和您的 PC,并运行以下命令
# iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 # sysctl -w net.ipv4.ip_forward=1 # ifconfig usb0 192.168.0.200
如果您的网络已经在使用 192.168.0.0/24,您可能需要使用不同的子网掩码。一旦 USB 网络链接建立,您应该能够以 root 用户身份 SSH 进入 FreeRunner,密码为空
# ssh root@192.168.0.202
您可能会发现 DNS 无法从 FreeRunner 内部正确解析。要纠正此问题,只需将 OpenDNS 缓存地址添加到 FreeRunner 的 /etc/resolv.conf
# echo nameserver 208.67.222.222 >> /etc/resolv.conf # echo nameserver 208.67.220.220 >> /etc/resolv.conf
如果您的受支持 microSD 卡已放入 FreeRunner,您可以开始将 Debian 安装到其中
# wget http://pkg-fso.alioth.debian.org/freerunner/install.sh # DASH_BINSH=false SD_PART1_FS=vfat sh install.sh
在这里,我们将 DASH_BINSH 环境变量设置为 false,以便脚本安装 Bash shell 而不是 Dash。SD_PART1_FS 变量设置为 vfat,以便 SD 卡上的 /boot 分区将使用 vfat 而不是 ext2 进行格式化。某些版本的 FreeRunner 的引导加载程序 u-boot 不支持 ext2,尽管有很多方法可以解决这个问题,但使用 vfat 格式化的分区更简单。您应该在一个小时内安装好 Debian,具体取决于您的互联网连接速度。我必须说,自 Potato 时代以来,Debian 安装程序确实改进了很多。
您可能已经注意到我说的是“受支持的 microSD 卡”。根据 FreeRunner 的说法,所有 microSD 卡都是平等的,但有些 microSD 卡比其他卡更平等。OpenMoko wiki 有一个页面列出了所有已知可与 FreeRunner 一起使用的 microSD 卡。我查阅了此页面并购买了两张 Kingston SD-C02G 2GB microSD 卡。FreeRunner 识别出了这些卡,我能够对它们进行分区并将文件写入其中。但是,在安装过程中,我收到了显然与 SD 介质相关的错误。我用 FreeRunner 附带的 512MB SanDisk 卡替换了 2GB Kingston 卡,安装工作完美无缺。后来,我使用我的 Kubuntu 桌面 PC 将分区从 512MB 卡传输到 2GB 卡。
安装完成后,您将需要重启进入 Debian。首先,关闭 FreeRunner 的电源。一旦它安全关机,按住 AUX 按钮(设备左上方),然后按电源按钮,直到 u-boot 菜单出现。按 AUX 按钮直到选择“从 SD 启动”,然后再次按电源按钮。一两分钟后,zhone 界面应该会出现,您应该能够拨打和接听电话,前提是您使用的是受支持的 SIM 卡。
与 microSD 卡一样,FreeRunner 对其接受的 SIM 卡也相当挑剔。当我第一次开始测试 FreeRunner 时,我使用的是第一代 iPhone 作为我的主要手机。我 iPhone 中的 SIM 卡在 FreeRunner 中完美运行。几周后,我购买了一部 iPhone 3G 并收到了一张新的 SIM 卡,这张卡在 FreeRunner 上也运行良好。我最终退回了我的 3G iPhone,并从 AT&T 收到了另一张新的 SIM 卡。FreeRunner 无法通过新的 SIM 卡在 AT&T 网络上注册。我尝试了一张 T-Mobile SIM 卡以确保没有硬件问题,结果运行良好。在花费了许多许多小时与这个问题作斗争之后,我终于发现 FreeRunner 固件中存在一个漏洞,该漏洞会导致某些 SIM 卡出现问题(OpenMoko 错误 #666)。我之前的 SIM 卡的供应商和版本号为 4022;但是,我从 AT&T 收到的新 SIM 卡的供应商和版本号为 2022。不幸的是,2022 卡更新,并且与 FreeRunner 不兼容。事实证明,OpenMoko wiki 有一个页面列出了各种 SIM 卡的兼容性状态。好消息是,一旦我弄清楚了问题所在,我就能够访问当地的 AT&T 商店并索要一张新的 4022 SIM 卡,他们很高兴地给了我。
虽然我们大多数人都非常熟悉开源开发,但我们通常只在软件方面获得这种体验。JavaScript 错误存在于我们的 WordPress 博客中是一回事,因为这很容易被忽视,而且我们知道它可能会很快得到修复。然而,我发现处理开源硬件时有些不同。大多数移动设备都经过数月的测试和质量控制,因此通常可以用于现实世界中的日常使用。将开源思维应用于手机之类的东西实际上非常具有挑战性。虽然我可以原谅 WordPress 的 JavaScript 错误,但我完全期望我购买的手机可以使用任何和所有的 microSD 卡和 SIM 卡。但是,我想这就是自由、灵活性和开放性的代价。
虽然 FreeRunner 包含了开发有趣的东西所需的所有内部组件,但有些事情令人沮丧,并且可以改进。例如,没有硬件音量控制,也没有切换到振动模式的方法。现在,FreeRunner 有两个可以控制软件的按钮,因此这可能只是实现该功能的问题,但这应该是每部手机都具备的功能。手机上只有两个硬件按钮,这本身并没有什么不好。但是,这些按钮放置在手机侧面尴尬的位置。单手握住手机时很难按下任何一个按钮。启动设备可能相当棘手,因为您必须按住电源按钮恰到好处的时间才能使设备启动。即使研究了几分钟,我的女朋友也无法启动 FreeRunner。
手机通过 USB 端口充电,这非常方便,但不幸的是,端口的位置也很尴尬。当手机插上电源时很难打电话,因为端口位于手机的右侧,也就是您通常握住手机的位置。
此外,电池一定不能完全耗尽。根据 OpenMoko wiki,“这是一个问题,因为内部充电电路在 FreeRunner 启动之前无法打开,而仅通过 USB 电源启动是行不通的。”这就是细节之处。
这也是重要之处,比如 FreeRunner 附带的手写笔。每次我向人们展示 FreeRunner 时,当他们看到巨大的手写笔时,他们都会(大声)笑出来。除了作为手写笔之外,它还具有全尺寸笔、手电筒和激光笔的功能。更糟糕的是,它在笔尖的另一端包含四个小电池(为手电筒和激光笔供电),这些电池会增加重量,使其难以聚焦在屏幕上的小点上,例如键盘。“Matchbox”键盘比 OM 2008.8 和 Qtopia 使用的键盘略好,但两者都很难使用。
我还发现,我需要卸下外壳的背面、电池和 SIM 卡才能更换 microSD 卡,这很烦人。我真的很期待能够在测试期间启动多个发行版,但是不得不经历这些步骤使这项任务变得更加繁琐。
说到繁琐,我百思不得其解,为什么手机底部会有一个挂绳环。
哦,如果 FreeRunner 提供一个标准的耳机插孔而不是包含的 2.5 毫米插孔,那就太好了。
尽管存在这些问题,但我仍然认为 OpenMoko 团队正在做着巨大的工作,并且随着我深入研究该项目,我不断感到印象深刻。他们非常清楚 FreeRunner 只是社区赖以构建的画布,正如 OpenMoko 开发者 Sean Moss-Pultz 在这段引言中所说
将我们的产品视为博物馆。我们正在构建环境。每一个都与下一个不同。您将获得您可以想象到的所有免费艺术用品,因为我们希望您添加自己的意义。您选择:消费、创造或两者兼而有之。无论哪种方式,您都可以创造自己的意义。这与您有关。
我认为 OpenMoko 团队应该重新考虑最终生产一款消费者可用的手机的目标。已经有很多这样的手机了,而市场上几乎没有其他类似于 FreeRunner 的产品。就我个人而言,我喜欢我可以在手机上运行 Debian 的事实。话虽如此,我认为 OpenMoko 团队应该将精力集中在以下几个领域。
首先,手机堆栈真的需要改进。当我可以将 FreeRunner 用作手机时,它会成为一个更具吸引力的替代品。目前的通话质量非常差,以至于我不建议将其作为您的主要手机使用。我宁愿携带一个设备,而不是除了手机之外再携带一个 FreeRunner。
其次,文档一团糟。OpenMoko wiki 上有很多信息,但它组织混乱,写得很差,而且经常过时。许多页面似乎都包含您问题的答案,直到您意识到该页面是为 Neo 1973(FreeRunner 的前身)编写的。虽然 wiki 符合社区组织项目的精神,但我不确定这是呈现官方文档的最佳方式。我花了很多时间阅读 wiki,结果却变得更加困惑。
最后,OpenMoko 应该大力支持更多 microSD 和 SIM 卡。处理这两个问题可能是我在使用 FreeRunner 时最令人沮丧的事情。
哦,还有给 OpenMoko 营销部门的提示。现在购买 FreeRunner 的人这样做是因为他们真的想参与进来并玩这个尖端设备。这就是社区;这些是您的粉丝。他们会支持您并为您做宣传,那么为什么不在包装盒中放几张 OpenMoko 贴纸呢?
我期待看到围绕 OpenMoko 和 Neo FreeRunner 的发展。在它成为一款可用的手机之前还有很长的路要走,但作为一款极客小工具,FreeRunner 非常有趣。Linux 极客不介意弄脏他们的双手,因此拥有一个可以挑战我们的设备真是太好了。
资源
OpenMoko 网站:www.openmoko.com
OpenMoko 社区 Wiki:wiki.openmoko.org
Debian on the FreeRunner:wiki.debian.org/DebianOnFreeRunner
受支持的 microSD 卡:wiki.openmoko.org/wiki/Supported_microSD_cards
受支持的 SIM 卡:wiki.openmoko.org/wiki/Carriers/ATT
OpenMoko 的 Sean Moss-Pultz 谈设计:tinyurl.com/57r334
Cory Wright 自 1998 年以来一直使用 Linux,使用手机的时间更长。他是 natuba.com 的开发人员和系统管理员,在那里他喜欢在桌上足球和 Wii 网球中击败 Will Reese。他的网站是 dnsfool.com。