# 原厂华为 HG255d 刷 PandoraBox


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

## 干掉原厂固件

网上有相当多的教你刷这个猫的教程，但突破原厂 u-boot 的关键道具：`ralink.bin`，却因年代久远失效了。我费了些功夫找到了它，现在传到网盘中，[链接为此](http://pan.baidu.com/s/1kT5kfCb)。

下面再简述一下流程：

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

- 断网前准备：
    - `ralink.bin`
    - Lintel 的[自制 u-boot](http://downloads.openwrt.org.cn/PandoraBox/HuaWei_HG255D/u-boot/) （挑一个最新的）
    - [PandoraBox 的固件](http://downloads.openwrt.org.cn/PandoraBox/HuaWei_HG255D/firmware/stable/) （挑一个最新的）
- 先将电脑插在路由器 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`，试试就有了

- 在左侧菜单找「系统命令」，键入

```bash
$ /hg255d/hg255d-flash-uboot.sh
$ ls -la
```

三秒钟就行，重启路由。

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

- 现在不用捅菊花，按住侧边的 `WLAN` 或 `WPS` 键也能进 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

- 参考教程，[配一个 Shadowsocks 透明代理](http://cokebar.info/archives/664)。

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

- 使用`aria2`、`amule`搭建自己的下载器。
- 使用 QoS 分配不同业务的带宽。
- 原装内存太小，跑一个 shadowsocks 流量一大就容易重启。为了让它经得起折腾，你要给它[换内存](http://forum.eepw.com.cn/thread/236267/1)。
- 这款 CPU 发热量太大。为了让它经得起折腾，你要给它贴散热片。

-----

## 常见疑问

#### 为什么要刷自制 u-boot？

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

> 如果你不愿意冒风险，也还是有一些[不用动 uboot 的解决方案](http://blog.oobeta.com/archives/2012/07/08/2416.html)的。

#### 我用上海电信光纤，需要做什么其它设置么？

需要的。

- 首先**在原厂固件里**[拿到路由器的配置备份文件并破解它](http://heerake.com/blog/archives/203)。这份文件会告诉你真实的 PPPoE 账号和密码，请妥善保存。
- 按上述流程刷 PandoraBox 成功后，手动将 `eth0.2` 和 `wan` 的 MAC [设置为路由器原来的 MAC](http://www.right.com.cn/forum/thread-120920-1-1.html)。
- 在 `网络` - `接口` - `WAN` 中设置 PPPoE。此时应该能正常拨号了。

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

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

```bash
$ 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 软件包时也要认准软件包名上要有`ramips`或 `ralink` 字样。

## 扩展阅读

- [HG255D 刷U-BOOT “ralink.bin”文件终于找到了！ - 技术交流 - OpenWrt中文网](http://www.openwrt.org.cn/bbs/thread-10534-1-1.html)

