無標題文檔

修复 Ruhoh 1.1 的 RSS 输出

正如各位所见,本博客改成了 Ruhoh 静态博客。有个问题就是 RSS 输出的时候会连页面元素等不必要的元素都一起输出,格式很混乱看着也不是很美观。

因此,就想更改下其中的代码,于是找到了 Ruhoh 脚本的安装路径,例如在我的 Mac 上面是如下路径(下面称这个目录为 $RUHOH_HOME )。

/usr/local/lib/ruby/gems/1.9.1/gems/ruhoh-1.1/lib/ruhoh

分析生成的 RSS 的脚本,文件在 $RUHOH_HOME/compilers/rss.rb ,其中有段语句是

xml.description_ (post['description'] ? post['description'] : page.render)

虽然不是很懂 Ruby,但是可以理解它是将页面渲染以后的代码都传了过去,那么再看看这个方法是怎么写的。找到了对应的文件在 $RUHOH_HOME/page.rb 下,里面的 render 方法:

def render
  self.ensure_id
  self.process_layouts
  @templater.render(self.expand_layouts, self.payload)
end

其中 self.expand_layouts 的方法就是或许当前的 layout 然后配合 Markdown 渲染出我们需要的 HTML,那么我考虑就不要模板,直接输出。

所以新增了个方法,simple_render ,代码如下:

def simple_render
  self.ensure_id
  self.process_layouts
  @templater.render("\{\{\{content\}\}\}", self.payload)
end

最后,修改 $RUHOH_HOME/compilers/rss.rb 文件对应的上述行:

xml.description_ (post['description'] ? post['description'] : page.simple_render)

这样就可以不用任何模板直接输出正文内容了,虽然看起来「不干净」但至少「It Works」。

顺便提供下修改以后的脚本文件,覆盖对应的文件即可,只针对 Ruhoh 1.1 版本,希望作者能够尽快修复这个问题吧。

--

2013-02-17 更新:

根据 Ruhoh2.0 alpha 版本的描述,已经修复了此问题 http://ruhoh.com/docs/2/

-- eof --

改造 Nokia e71 使用 USB 口充电

公司搬家的时候翻出个测试用的 Nokia e71,正好拿来当作备用机。经过几天的使用下来,
e71 待机方面的确是非常值得称道。

Nokia e71

然而万物并非都是完美, e71 对于我而言最郁闷的两个问题,一是无法使用 MicroUSB 接
口充电(据说可以使用 Nokia 原装线充?),二是竟然使用小口 2.5mm 的耳机孔。

毕竟用耳机插着手机听歌或者打电话的情况很少,而且 e71 是带了蓝牙的,所以这些问题
不大。而接口的充电问题是我没法容忍的,那 Nokia 细长奇葩的充电头看着很「弱不经风」。
同时目前手头都是标配 MicroUSB 数据线和 USB 充电头,实在是不想为这个「老古」的手机
特殊化。

考虑将 e71 的 MicroUSB 接口改造下,可以代替原本充电口的位置。用万用表了下 e71 充

电器的电压和电流差不多是 5V 500mA(详细),
这不正是 USB 的标准电压电流嘛?考虑用如果飞线将 e71 板子上的 MicroUSB 口子上的电引到充电口,
应该不用做任何的电压转换。

说干就干,MicroUSB 的接口定义和 MiniUSB 一样(详细)。
分别用漆包线在最两头引出 5v 正极以及负极即可。

漆包线飞线

我的飞线线路,记得针脚的正负极不要接反,否则会悲剧。话说用漆包线在 MicroUSB
上点焊需要点耐心。e71 的 MicroUSB 接脚刚好在电池舱旁边,因此飞线不可避免的会暴露在电池舱,
所以要同时考虑安装的厚度以及绝缘的问题。

注意绝缘和固定

焊接好了以后建议用胶带固定和绝缘,否则那脆弱纤细的漆包线指不定什么时候被电池给压断了。然后接上目前手机常见的
MicroUSB 数据线和 USB 充电头,插入 e71 的 MicroUSB 口子,如果一切都顺利的话 e71 就会提示充电了。

计算了下,5v/550mA 充满 e71 的话,估计要四五个小时。虽然比较慢,但现在总比满大街找 Nokia 充电器要好,对吧 :^)

-- EOF --

改造 TL-MR11U 3g 路由器 Part.2

接上文,这篇主要记录如何刷机。

概述

因为已经引出了 TTL 串口插针,所以这篇讲述的刷机方式是串口刷机,如果有更方便的方法,例如通过官方 Web 界面上传固件刷机,就不用这么麻烦了。

不过,对于我们这些非专业选手而言,TTL 刷机也是拯救路由器变砖前的最后一根稻草,所以还是要了解下如何通过串口刷机。

有关刷机原理方面,可以参考我画的示意图

刷机原理图

  1. 路由器通过串口和电脑相连(中间有个转接版),可以直接看到路由器启动等信息
  2. 路由器通过 LAN 端口直接和电脑相连,用于网络传输数据
  3. 上面是针对 MR11U 的刷机方式,不同的路由器有不同的刷机方式

软件和工具

我用的软件环境是 Mac,所以我主要记录下 Mac 下如何操作。Linux 或者其他的系统请自行搜索,网上都应该有原理方面其实都差不多。

Mac 下安装命令行工具,如果没有装开发工具(xcode)可能会没法进行。要下一步操作,就必须安装 xcode,同时找个软件包管理工具,例如我推荐 HomeBrew

接下来,下载必要的软件。

  1. Lion 似乎自带了 tftp 服务器,但用命令行启动它的确有些麻烦,这里有个免费的 gui 前端
  2. 官方的 OpenWrt for MR11U 固件,4m 版本其他容量的没测试过,如果您改了芯片,谨刷。
  3. minicom,这个是个命令行的串口调试软件。如果您已经安装了 HomeBrew,那么简单的 $brew install minicom 即可,如果是其他安装方式请自行搜索。

环境配置

市面上大多的 TTL2USB 板子都是基于 PL2303HX 芯片的这里有个文档看完以后就可以直接驱动设置转接版了。

PS,建议安装驱动的时候最好不要连接设备(转接版),同时重启计算机以后再连接使用。

接下来就可以插上 TTL2USB 的转接版到计算机上了,同时注意下 Mac 的「系统概述」中是否有这个板子的信息,如图

系统概述信息

如果一切 OK,系统会有个 /dev/cu.usbserial 文件,接下来我们就可以试试接口是否正常。


$ echo \"Hello, world!\" > /dev/cu.usbserial

如果没有错误信息,同时注意 TTL2USB 转接版的灯是否闪了下(如果没有闪,那么可能是 RX 和 TX 接反了),那么说明一切正常了。

接下来配置 minicom 如何链接路由器,路由器的速率一般是 115200 ,运行命令


$sudo minicom -s

minicom 配置

选择 Serial port setup ,然后配置如图,保存以后重启下 minicom 就可以使用了。

链接启动

环境配置好了以后,打开插上路由器电源,在 minicom 中应该就可以看到启动信息了。这时候,快速按下「tpl」顺序组合键,就可以停留在命令台。

串口启动显示信息

将路由器的网线端口和 Mac 的网线端口相连,在 minicom 中输入


printenv

查看环境变量,会看到如下字符串,注意此时 serverip 是 Mac 的 ip,ipaddr 是路由器的 ip 地址。

环境变量

设置 Mac 端的地址为 server ip 的地址,如图

设置 Mac 网络地址

然后打开 tftp Server 软件,选择下载保存固件的目录,然后启动 tftp Server (需要管理员权限)。

至此,和路由器的网络链接以及 Mac 端的 tftp 就配置好了,可以真正进行刷机了。

刷机

接下来就可以执行刷机操作了,在进行这个项目之前,请务必再检查:

  1. 电源是否稳定,避免刷机过程中掉电(MR11U 还带了快电池,这方面的风险少很多)
  2. 各接口板的连线是否正常,避免松动
  3. 网络链接是否正常

如果没有其他问题,就真正的开始了。这里再次声明下,由于刷机造成的后果本篇 Blog 不承担任何责任。

进行刷机操作

依次键入如下命令


tftpboot 0x81000000 openwrt-ar71xx-generic-tl-mr11u-v1-squashfs-factory.bin

从 tftp 服务器获得 openwrt-ar71xx-generic-tl-mr11u-v1-squashfs-factory.bin 固件内容,并写到从 0x81000000 开始的内存地址中


erase 0x9f020000 +0x3c0000

擦除从 0x9f020000 地址开始,偏移 +0x3c0000 地址的数据。注意,操作完此条命令以后,路由器的闪存已经就没有数据了。


cp.b 0x81000000 0x9f020000 0x3c0000

拷贝内存中的数据到闪存中,大小刚好是我们上条命令擦除的容量大小,这个操作需要点时间,例如 4m 大小的闪存大概需要几十秒。


bootm 9f020000

至此,路由器闪存中的数据已经是 openwrt-ar71xx-generic-tl-mr11u-v1-squashfs-factory.bin 中的内容,也就是已经成功将路由器刷成了 OpenWrt 。

然后从 9f020000 地址开始引导,如果能看到很多字符在跳动,同时过段时间按下回车能登录到控制台,那么恭喜你刷机成功了。

OpenWrt 成功启动

但此时还没法做任何事情,因为此时的 OpenWrt 固件是没有 Web 端界面、默认无线是关闭的,所以我们还是要留在 minicom 中继续操作。

参考:http://wiki.openwrt.org/toh/tp-link/tl-mr11u

未完,待续…

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章