标签归档:OpenWrt

京东云亚瑟路由器TTL刷u-boot升级iStoreOS固件

不知道是否为了区分高低端,现在带 USB 口的路由器几乎没有低于 ¥500 的。考虑到以后可以折腾一下把路由器当 NAS,入了京东云的亚瑟。入了后才知道这东西专为 PCDN 而生,想当个正经的路由器用小问题不少。

因为家里有小朋友,定时断网是必须功能,不想这货居然没有。好在我的这个路由器版本比较老,轻松开启 SSH,经过一整折腾后搞定了定时断网。不想好景不长,路由器在关闭自动升级的情况下给升级到了最新固件。路由器上自己加的东西全部丢失,并且 SSH 后门方法失效。这个路由器要想继续折腾只剩下 TTL 刷机一条路。好在这台路由器的 TTL 刷机方案比较成熟,网上也能找到对应的固件。

刷机过程整体比较简单,但由于缺乏经验,中间走了不少弯路折腾了几天才搞定。下面是一个简单的记录,希望对同样的刷机小白有些帮助。

拆机

  1. 撕开路由器底部胶垫,露出底部的5颗螺丝。用螺丝刀全部拧开。
  2. 路由器顶盖使用卡扣固定。敲开后可以看到顶部还有两个固定螺丝,拧开。注:网上很多拆机教程里没有提到这两颗螺丝,导致折腾很久都没能弄开。
  3. 用力挤压路由器筒壁,使网口缩进外壳。抽出路由器本体完成拆机。

搞定TTL接口

  1. 可以看到主板上4个并排的孔V R T G就是TTL接口。
  2. 去淘宝搜 TTL 探针,用的时候直接插到孔上。
    • 焊接的针脚会抵住外壳导致无法塞回去,到时候还要去掉。
  3. 到网上买个 CH340 的 USB 转串口的转接卡。
  4. 我的转接卡上有 3v 和 5v 的跳线,短接 3v 。
  5. 转接卡和路由器接线时注意:G-G,R-T,T-R 这样接。V不用接。
    • G:接地
    • R:接收
    • T:发送
  6. windows系统没有自带 CH340 的驱动,要去网上找个驱动安上。

刷入 u-boot

  1. 串口转接卡一头连好路由器,另一头插入电脑。
  2. 用网线连接路由器和电脑,并将电脑的 IP 设置为 192.168.10.1
  3. 在电脑的设备管理器中查看转接卡对应的串口名。
  4. putty 连接串口,波特用 15200
  5. 路由器开机,按回车进入 6018# 模式。此时已经可以使用 boot loader 的命令了。
  6. 将 u-boot.mbn 复制到 Tftpd64 同一目录。启动 Tftpd64 。
  7. 中 putty 里敲入如下命令完成刷机
    • tftpboot u-boot.mbn && flash 0:APPSBL && flash 0:APPSBL_1
  8. 看到命令输出里有几个 `OK` 就完成 u-boot 刷机了。

准备 iStoreOS 固件

iStoreOS 是基于 OpenWRT 的一个路由器固件。固件可以从 https://fw.koolcenter.com/Lean/JDC_AX1800_Pro/ 下载到。我们需要下载其中的 *-kernel-rootfs.rar 固件。解压后会有两个 bin 文件。需要使用使用工具将两个文件合并成一个 bin 文件后一起刷入。合并工具可以使用 UBin 。由于没有找到软件的官网,大家还是自行搜索下载吧。

刷入 iStoreOS 固件

  1. 将电脑 IP 设置为 192.168.1.2
  2. 重启路由器并用 putty 重新连接路由器进入 6018# 模式。
  3. 输入命令 httpd 192.168.1.1 启动刷机的 web 服务。
    • 看网上的教程,我以为 u-boot 启动的时候会自动启动刷机的 web 服务。在 u-boot 的 help 里看到 httpd 才知道刷机服务要手动启动。
  4. 使用浏览器打开网页 http://192.168.1.1 进入刷机的 web 界面。
  5. 上传固件开始刷机。刷机成功后会路由器会自动重启。路由器启动后路由器灯为绿色。
  6. 用浏览器重新打开 http://192.168.1.1 ,此时已经可以看到 iStoreOS 的登录界面了。
    • 默认用户名为 root ,密码 password

安装Docker

我使用的 iStoreOS 固件并未集成 Docker 。尝试使用 is-opkg install docker dockerd docker-compose 安装 Docer 套件,提示空间不足,无法安装。查看磁盘信息, Overlay 分区只有几M,几乎无法安装任何东西。查看分区信息, mmcblk0p25 分区有 300M 空间。将 mmcblk0p25 分区里的数据删除,并将 /overlay 数据复制过来。在 iStoreOS 的 挂载点 中将 mmcblk0p25 挂载到 /overlay 。应用并重启路由器后可以看到 /overlay 的空间已经变成 300M 里。

安装好 Docker 后,/overlay 还能剩下大概 27M 的空间,几乎没有空间安装其他软件。考虑到其他软件都会使用 Docker 安装,因此暂不打算对 /overlay 做扩容了。

京东云无线宝(OpenWrt)控制终端定时断网

最近将家里的路由器从 小米 换成了 京东云无线宝 。换完后发现新路由器不支持设备的定时断网了。对于有小朋友的家庭,定时断网可以很好的帮助小朋友控制上网时间。好在新入的这款路由器基于 OpenWrt 开发,经过几天的研究,顺利的搞定了定时断网功能。

开启路由器的SSH

注:2023-10 近期路由器被自动升级了。网上的开门方法全部失效,只能尝试TTL开门了。

开始折腾的第一步是搞定路由器的SSH。SSH登录到路由器后就可以随意折腾了。

由于京东云官方的封堵,不同版本固件的SSH开启方式有所不同。

  1. 1.5.40r2181<= 郑羊羊咩的窝-京东云
  2. r2262< 京东云无线宝r2262之前固件版本开SSH
  3. r2279< 京东云无线宝升级r2262固件后打开SSH

我拿到的这台路由器的固件版本很老,直接采用第一个方法开启SSH。具体方法如下:

登录京东云,打开f12控制台,将下面的代码贴入浏览器控制台并运行。

$.ajax({
    url: "/jdcapi",
    async: false,
    data: JSON.stringify({
        jsonrpc: "2.0",
        id: 1,
        method: "call",
        params: [
            $.cookie("sessionid"),
            "service",
            "set",
            {
                "name": "dropbear",
                "instances": {"instance1": {"command": ["/usr/sbin/dropbear"]}}
            }
        ]
    }),
    dataType: "json",
    type: "POST"
})

设备定时断网方案

OpenWrt系统通常自带 web 管理界面 LuCI ,即使没带也可自行安装。如果有 LuCI ,通过 LuCI 丰富的插件系统,可以轻松的实现上网时间的管控。

京东的这款路由器毕竟不是完整的OpenWrt系统,无法直接安装 LuCI 。为了设备的稳定性,保险起见没有继续折腾 LuCI 。研究后发现京东云路由器的自带的黑明单功能是通过修改设备 /etc/config/wireless 配置文件实现,于是有了下面的方案。

  1. 使用 uci 命令修改 wireless 配置文件,将需要管控的设备加入/移出 Wi-Fi 黑明单。
  2. 使用 crontab 创建定时任务,实现定时控制。
  3. 在路由器的黑明单中无法查看到通过修改 wireless 加入黑明单的设备。但可以通过将设备加入黑名单再移除的方式对设备进行临时解禁。

具体操作步骤

登录路由器

开始路由器的 SSH 登录功能,使用 SSH 客户端登录路由器。用户名为 root ,密码为路由器的管理密码。

ssh root@jdcloudwifi.com

创建将设备加入黑明单的相关脚本

1. 创建目录 /scripts 。我们自己的脚本都将放到该目录。

mkdir -p /scripts 
cd /scripts

2. 将下列脚本复制到 /scripts 目录,并使用命令 chmod +x /scripts/*.sh 为脚本添加可执行权限。

disable-wifi.sh

#!/bin/sh
# 禁止设备连接 Wi-Fi
# 使用 `cat /etc/config/wireless` 查看无线配置。通过 `option ssid` 找到对应的 Wi-Fi 配置项名称。注: 2.4G 和 5G 两个热点都需要配置。 
uci add_list wireless.ath0.maclist="$1"
uci add_list wireless.ath1.maclist="$1"
uci commit wireless
wifi reload

enable-wifi.sh

#!/bin/sh
# 允许设备连接 Wi-Fi
uci del_list wireless.ath0.maclist="$1"
uci del_list wireless.ath1.maclist="$1"
uci commit wireless
wifi reload

disable-tv.sh

#!/bin/sh
# 将 dd:dd:dd:dd:dd:dd 换成需要加入黑名单的设备的 MAC 地址
/scripts/disable-wifi.sh dd:dd:dd:dd:dd:dd

enable-tv.sh

#!/bin/sh
/scripts/enable-wifi.sh dd:dd:dd:dd:dd:dd

3. 执行 crontab -e 编辑系统定时任务。

# 周一到周五,8点关闭电视网络
0 8 * * 1-5 /scripts/disable-tv.sh
# 周一到周五,18点开启电视网络
0 18 * * 1-5 /scripts/enable-tv.sh