原厂华为 HG255d 刷 PandoraBox 及其后续工作

忙里偷闲搜了下电信送我的这个 HG255d 猫,发现居然是个神器,可玩性相当高。于是找个周六把它刷了个底朝天。

干掉原厂固件

网上有相当多的教你刷这个猫的教程,但突破原厂 u-boot 的关键道具:ralink.bin,却因年代久远失效了。我费了些功夫找到了它,现在传到网盘中,链接为此

下面再简述一下流程:

上海电信用户请先跳到下面看「常见疑问」。

  • 断网前准备:
  • 先将电脑插在路由器 LAN 口(比如,LAN4)上,把 IP 设成固定 IP 192.168.1.100,子网掩码255.255.255.0

其实就下一步而言 192.168.1.0/24 网段的都行,设成100是为了方便之后的操作。

  • 打开一个浏览器,事先在地址栏输好 http://192.168.1.1/upload.html,准备按回车
  • 路由关机。捅住 RESET 菊花的同时开机。捅住,不要松。
  • 当看到路由器 LAN 灯亮起后立刻按回车,看到一个用蹩脚的英文写的固件上传页面。选择刚才下载的 ralink.bin,点「上传」。

你很有可能在点了「上传」后看不到什么反应,或者浏览器报远程连接无响应,或者路由器继续正常开机了。那是因为原厂 uboot 模式是限时的。可以这么做:捅两次菊花,第一次打开upload.html页面并选好固件,第二次直接按「上传」,这样成功率较高。

  • 上传完后就可以松掉菊花了。过个三到五分钟左右路由器会自动重启。待重启结束后使用 admin/admin 登录 http://192.168.1.1

这里我记不清用户名和密码究竟是什么了,反正不是 root 就是 admin,试试就有了

  • 在左侧菜单找「系统命令」,键入
$ /hg255d/hg255d-flash-uboot.sh
$ ls -la 

三秒钟就行,重启路由。

做到这一步时,你的 u-boot 就万能了。自制 u-boot 模式中能刷 u-boot、firmware 和 EEPROM。

  • 现在不用捅菊花,按住侧边的 WLANWPS 键也能进 uboot 了。进 uboot 后在本机开启一个 tftp 服务,把你下载的自制 u-boot 给 put 上去。路由会自动重启。

这一步请确保自己的 IP 是 192.168.1.100,我不确定这一版 u-boot 认不认别的 IP。

  • 路由重启后再让它进 u-boot 模式,这时在浏览器中输入 http://192.168.1.1,能看到一个比较亲切的固件上传页面了。此时再把你刚才下载的 firmware 给扔进去。耐心等五分钟。
  • 最后一次自动重启后,你就能用 root : admin 登录 http://192.168.1.1了。

至此,大功告成。

What’s next

教程中提到的两个关键道具虽然在本 PandoraBox 固件中都自带了,但 ss 不是 spec 版,ChinaDNS 版本也略老。建议自己重装,不麻烦。

  • 使用aria2amule搭建自己的下载器。
  • 使用 QoS 分配不同业务的带宽。
  • 原装内存太小,跑一个 shadowsocks 流量一大就容易重启。为了让它经得起折腾,你要给它换内存
  • 这款 CPU 发热量太大。为了让它经得起折腾,你要给它贴散热片。

常见疑问

为什么要刷自制 u-boot?

Lintel 大神说是因为电信原厂的 u-boot 限制太多了。

如果你不愿意冒风险,也还是有一些不用动 uboot 的解决方案的。

我用上海电信光纤,需要做什么其它设置么?

需要的。

如果你决定换一个路由,也需要把新路由的 MAC 克隆成这个华为的。上海电信居然给账号绑定 MAC,简直无聊。

我能用什么 opkg 的源?我该怎么安装应用?

$ cat /etc/opkg.conf

dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
src/gz 14.09_base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/packages/base
#src/gz 14.09_base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/packages/luci
#src/gz 14.09_base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/packages/management
#src/gz 14.09_base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/packages/packages
#src/gz 14.09_base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/packages/routing
#src/gz 14.09_base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/packages/telephony

arch all 100
arch ramips 200
arch ramips_24kec 300
arch ralink 400

似乎opkg一次只能使用一个软件源,而且每次断电后需要重新 opkg update(因为缓存在/tmp里了)。注意软件源的种类不一样,base是基础依赖,packages是软件包。

栗子,我想装aria2,把软件源切到packages上后,opkg update && opkg install aria2

但我发现它需要 libstdcpp 依赖,则我要把软件源切到 base 上再安装依赖,命令类似。

注意最后的几行 arch,HG255d 使用的是 Ralink 的 MIPS 解决方案(RT3052),你在外面找 openwrt 软件包时也要认准软件包名上要有ramipsralink 字样。

扩展阅读