Featured image of post 京东云无线宝 AX6600 雅典娜刷 OpenWrt/LibWrt 记录

京东云无线宝 AX6600 雅典娜刷 OpenWrt/LibWrt 记录

将京东云无线宝 AX6600 雅典娜 RE-CS-02 1G+128G 刷成 OpenWrt/LibWrt,记录设备数据、备份、刷机和后续配置。

购买注意

  • 本次设备:京东云无线宝 AX6600 雅典娜,型号 RE-CS-02,配置 1G+128G
  • 购买渠道:京东。
  • 到手价:294 元。
  • 本文记录设备数据、开 SSH、刷 U-Boot、刷 GPT/ROM、首次进入 LibWrt、分区格式化和挂载过程。
  • 本文是公开博客草稿,SN、MAC、后台 token、宽带账号密码、私钥等真实信息一律不写入正文或截图。

设备型号数据

基本信息

项目记录
商品名京东云无线宝 AX6600 雅典娜
英文/社区名JDCloud AX6600 Athena
设备型号RE-CS-02
本机版本1G RAM + 128G eMMC
设备类型Wi-Fi 6 路由器
OpenWrt targetqualcommax/ipq60xx
OpenWrt device idjdcloud_re-cs-02
当前 OpenWrt 支持状态官方 Techdata 记录为 snapshot,正式 release 支持情况刷机前再查
BootloaderU-Boot
电源12V/3A 圆口电源

硬件参数

项目参数
SoCQualcomm IPQ6010
CPU4 核 A53,1.8GHz
RAM1024MB
存储eMMC,本机为 128GB
交换芯片Qualcomm Atheros QCA8075
2.5G PHYQualcomm QCA8081
网口4 个千兆口 + 1 个 2.5G 口
VLAN支持
无线芯片Qualcomm QCN5022 / QCN5052 / QCN9024
2.4GHzb/g/n/ax,2x2 MIMO
5GHza/n/ac/ax,一组 4x4 MIMO,一组 2x2 MIMO
USB1 个 USB 3.0
LED / 按键3 个 LED,3 个按键

待实机确认

  • 外壳标签、SN 开头、出厂日期。
  • 原厂 ROM 版本:1.5.50.r2204, 0251ebd85+r49254
  • 后台入口地址、默认 LAN 网段:192.168.68.1
  • 2.5G 口在原厂系统和 OpenWrt 中默认归属 WAN 还是 LAN。
  • cat /proc/cpuinfolsblkip link 的实际输出。
  • 本机能否免拆开 SSH;如果 ROM 版本太新,可能需要走不同路径。

刷机

参考

0. 开始前检查

  • 先拍外壳标签和后台版本页,打码后再放图。
  • 下载到本地的固件、U-Boot、GPT 或线刷包都要记录来源、文件名、大小和校验值。
  • 刷写 U-Boot、GPT、分区表前先备份,不能只靠网上的通用包。
  • /tmp 是内存盘,上传大文件和备份分区时注意空间。
  • 开箱第一次进入原厂后台时,先关闭自动更新,避免固件更新到不好开 SSH 或不好刷的版本。

1. 连接并进入 SSH

这一步参考 JDCloud AX6600(雅典娜) 刷机记录 的流程,目标是在原厂系统里启动 dropbear,先拿到 root shell。

  1. 用网线把雅典娜接到家里的路由器,保证操作电脑和雅典娜在同一个局域网下,并且雅典娜可以访问互联网。
  2. 操作电脑连接雅典娜自己的 Wi-Fi。
  3. 访问 jdcloudwifi.com,进入京东云无线宝后台,注册并登录。
  4. 确认后台 IP。本机默认后台地址是 192.168.68.1,后续命令都按这个地址写;如果实际后台 IP 不同,以浏览器地址栏为准。

登录后台后,按 F12 打开浏览器开发者工具,在 Application / 应用 里找到当前后台地址对应的 Cookies,复制 sessionid 的值。

在浏览器开发者工具中复制 sessionid

sessionid 填入本地脚本 open-ssh.py

1
2
url = "http://192.168.68.1/jdcapi"
sessionid = "这里填浏览器 Cookie 里的 sessionid"

脚本核心是通过 /jdcapi 调用 uci,把 dhcp.odhcpd.leasetrigger 设置为 /usr/sbin/dropbear,再提交 dhcp 配置:

1
2
uci set dhcp.odhcpd.leasetrigger=/usr/sbin/dropbear
uci commit dhcp

运行脚本:

1
python open-ssh.py

正常情况下应该返回两次成功结果,关键是里面有两个 0。这时配置已经写入,但还需要触发一次 IPv6 相关流程让 dropbear 启动。

进入后台的 路由设置 -> 上网设置,找到 IPV6网络设置

  • 打开 IPv6 开关。
  • 上网方式 选择 NAT6
  • 保存并重新应用更改。

开启 IPv6 NAT6

保存后路由器会重启。重启过程中电脑可能自动切到其他 Wi-Fi,导致后续连不上雅典娜;等路由器起来后,重新连接雅典娜 Wi-Fi。

随后在电脑命令行尝试 SSH:

1
ssh root@192.168.68.1

密码和京东云无线宝管理后台密码相同。

如果本机 SSH 客户端比较新,可能会遇到:

1
Unable to negotiate with 192.168.68.1 port 22: no matching host key type found. Their offer: ssh-rsa

这是因为原厂系统的 SSH 服务端只提供了旧的 ssh-rsa host key。临时兼容可以加参数:

1
ssh -oHostKeyAlgorithms=+ssh-rsa root@192.168.68.1

成功后会进入 JDBox Router 的 BusyBox shell。本机进入后显示原厂系统版本为 1.5.50.r2204uname -a 显示内核为 Linux JDBox_Athena 4.4.60 ... armv7l GNU/Linux

SSH 连接成功

2. 分区检查与备份计划

进入 SSH 后先检查系统版本和 eMMC 分区布局。

1
2
3
4
5
uname -a
blkid
cat /proc/partitions
mount
df -h

本机原厂系统信息:

1
2
3
4
BusyBox v1.30.1
JDBox Router
Firmware: 1.5.50.r2204, 0251ebd85+r49254
Kernel: Linux JDBox_Athena 4.4.60 SMP PREEMPT JDCloud Technologies armv7l GNU/Linux

blkid 显示整盘是 eMMC GPT:

1
/dev/mmcblk0: PTUUID="98101b32-bbe2-4bf2-a06e-2bb33d000c20" PTTYPE="gpt"

关键分区如下:

分区PARTLABEL大小作用
/dev/mmcblk0p10:SBL1768 KiB早期启动链
/dev/mmcblk0p20:BOOTCONFIG256 KiB启动配置
/dev/mmcblk0p30:BOOTCONFIG1256 KiB启动配置备份
/dev/mmcblk0p40:QSEE1792 KiBQualcomm secure environment
/dev/mmcblk0p50:QSEE_11792 KiBQSEE 备份
/dev/mmcblk0p100:CDT256 KiBhardware config / device tree 相关配置
/dev/mmcblk0p110:CDT_1256 KiBCDT 备份
/dev/mmcblk0p120:APPSBLENV256 KiBU-Boot 环境变量
/dev/mmcblk0p130:APPSBL640 KiBU-Boot 主分区
/dev/mmcblk0p140:APPSBL_1640 KiBU-Boot 备份分区
/dev/mmcblk0p150:ART512 KiB无线校准 / MAC 等设备校准数据,必须备份
/dev/mmcblk0p160:HLOS6144 KiBkernel slot
/dev/mmcblk0p170:HLOS_16144 KiBkernel backup slot
/dev/mmcblk0p18rootfs61440 KiB原厂 rootfs
/dev/mmcblk0p190:WIFIFW4096 KiBWi-Fi firmware
/dev/mmcblk0p20rootfs_161440 KiB备用 rootfs
/dev/mmcblk0p210:WIFIFW_14096 KiB备用 Wi-Fi firmware
/dev/mmcblk0p22rootfs_data20480 KiBoverlay
/dev/mmcblk0p230:ETHPHYFW512 KiBEthernet PHY firmware
/dev/mmcblk0p24plugin89344 KiB原厂插件区
/dev/mmcblk0p25log1048576 KiB日志区
/dev/mmcblk0p26swap524288 KiBswap
/dev/mmcblk0p27storage118996958 KiB大容量存储区

/dev/disk/by-partlabel 在原厂系统里没有输出,所以后续不要照抄依赖 PARTLABEL symlink 的命令;如果要按标签定位,需要用 blkid 或固定分区号反查。

当前挂载情况:

1
2
3
4
5
6
/dev/root on /rom type squashfs
/dev/mmcblk0p22 on /overlay type ext4
/dev/mmcblk0p19 on /lib/firmware/IPQ6018/WIFI_FW type squashfs
/dev/mmcblk0p25 on /opt type ext4
/dev/mmcblk0p24 on /log type ext4
/dev/mmcblk0p27 on /mnt/mmcblk0p27 type ext4

/tmp 只有约 410 MiB 可用,但 /mnt/mmcblk0p27 有约 110 GiB 可用。备份可先写到 /mnt/mmcblk0p27/backup-ax6600-athena/,再用 scp 拉回电脑保存。刷写分区表或完整镜像前,不能只把备份留在路由器本机。

3. 刷入 U-Boot

下载参考帖提供的 U-Boot:

1
curl -LO https://250.ac.cn/file/uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin

本地先校验文件。本文这次下载到的文件信息:

1
2
3
文件名: uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin
大小: 655360 bytes
sha256: d8b5e9d181500643bc17369f9c8d88a4c5cca51794ce1a9f322d97b2c2e0620c

上传到路由器 /root/。原厂系统的 SSH 比较老,新版 scp 直接传会遇到两个问题:

  • no matching host key type found. Their offer: ssh-rsa
  • ash: /usr/libexec/sftp-server: not found

第一个问题需要允许 ssh-rsa,第二个问题是新版 scp 默认走 SFTP,而原厂系统没有 sftp-server。因此要加 -O 强制使用旧版 SCP 协议:

1
2
3
scp -O -oHostKeyAlgorithms=+ssh-rsa \
  ./uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin \
  root@192.168.68.1:/root/

使用 scp -O 上传 U-Boot

进入路由器后再次检查文件完整性:

1
2
ls -lh /root/uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin
sha256sum /root/uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin

确认大小和 hash 无误后刷入 U-Boot。此步骤需要谨慎,刷错可能导致路由器无法启动;如果文件不完整也可能导致路由器无法启动。

1
2
dd if=/root/uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin of=$(blkid -t PARTLABEL=0:APPSBL -o device) conv=fsync
dd if=/root/uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin of=$(blkid -t PARTLABEL=0:APPSBL_1 -o device) conv=fsync

返回写入记录即为成功:

刷入 U-Boot

4. 进入 U-Boot Web

刷完 U-Boot 后拔掉电源下电。

找个牙签顶住 reset 按键,再插上电源。路由器启动时会从红灯闪烁变成持续蓝灯,等出现稳定不变的蓝灯后松开 reset

用网线连接电脑和雅典娜路由器,最好接 LAN 口。电脑网卡手动配置 IPv4:

1
2
3
4
IP:      192.168.1.2
Mask:    255.255.255.0
Gateway: 192.168.1.1
DNS:     8.8.8.8

手动配置电脑 IPv4

保存后用浏览器访问:

1
http://192.168.1.1

即可进入 U-Boot Web 刷机页面。这里建议使用无痕浏览器窗口,避免之前访问过其他 192.168.1.1 路由器留下缓存干扰。

5. 刷 GPT 分区和 ROM

这一步最容易传错入口,入口对应关系如下:

页面用途
http://192.168.1.1/刷 ROM / factory 固件
http://192.168.1.1/img.html刷 GPT 分区表或完整 eMMC 镜像
http://192.168.1.1/uboot.html刷 U-Boot
http://192.168.1.1/uimage.html启动 initramfs uImage

先刷 GPT 分区。注意必须打开:

1
http://192.168.1.1/img.html

然后上传:

1
gpt-JDC_AX6600_Athena_dual-boot_rootfs2048M_no-last-partition.bin

下载地址:

1
https://250.ac.cn/file/gpt-JDC_AX6600_Athena_dual-boot_rootfs2048M_no-last-partition.bin

我第一次把 GPT 文件错传到了 http://192.168.1.1/ 根路径。根路径是刷 ROM 的,不是刷 GPT 的;好在应该被 U-Boot 自动校验拦截失败了。遇到这种情况不要重复乱刷,等页面进度条消失,确认 http://192.168.1.1/http://192.168.1.1/img.html 都还能打开后,再回到正确的 /img.html 重新刷 GPT。

GPT 刷完后等两分钟。教程说此时路由器会长亮红灯。随后断电,按住 reset 再插电,看到红灯闪烁后变成蓝灯常亮再松开 reset,重新进入:

1
http://192.168.1.1

然后刷 ROM。本次使用的是 ZqinKing/wrt_release 里的 LibWrt/QWrt 固件,注意选择 jdcloud_re-cs-02 对应型号:

1
https://github.com/ZqinKing/wrt_release/releases/download/26.05.18_21.17.46_jdcloud_ipq60xx_libwrt/libwrt-qualcommax-ipq60xx-jdcloud_re-cs-02-squashfs-factory.bin

上传到 http://192.168.1.1/ 根路径刷入。刷完等待路由器亮绿灯。

6. 首次进入 LibWrt

路由器亮绿灯后,拔掉电脑和雅典娜之间的网线,把电脑网卡恢复为自动 DHCP。

连接雅典娜 Wi-Fi:

1
Wi-Fi 密码: 12345678

访问后台:

1
http://192.168.1.1

默认登录:

1
2
用户名: root
密码: 12345678

进入后可以看到 LibWrt 后台:

LibWrt 后台

由于 192.168.1.1 很容易和家里其他路由器冲突,建议第一时间把 LAN IP 改成不冲突的网段,例如 192.168.101.1

1
2
3
uci set network.lan.ipaddr='192.168.101.1'
uci commit network
/etc/init.d/network restart

网络重启后当前连接会断开,电脑重新获取 IP 后访问:

1
http://192.168.101.1

7. 分区格式化和挂载

前面刷入的 GPT 文件名里带 no-last-partition,意思是没有预先创建最后那个大容量数据分区。刷完 LibWrt 后,系统能正常运行,但大约 100GB+ 的 eMMC 空间还没有被使用。

先检查当前状态:

1
2
3
4
5
df -h
cat /proc/partitions
blkid
block info 2>/dev/null
ls /dev/mmcblk0p*

本机刷完后可以看到:

1
/dev/loop0  1.9G  98.0M  1.8G  5%  /overlay

说明系统当前 overlay 已经有约 1.9G,可以正常使用;但 /proc/partitions 里只有 mmcblk0p1mmcblk0p26,没有原厂系统里的大容量 mmcblk0p27

安装分区和文件系统工具:

1
2
opkg update
opkg install cfdisk e2fsprogs block-mount

进入分区工具:

1
cfdisk /dev/mmcblk0

只操作最下面的 Free space

1
2
3
4
5
New
大小使用默认值
Write
输入 yes
Quit

这一步不是重做整个盘的分区表,而是在最后未分配空间里新建一个数据分区。退出后先确认新增了 /dev/mmcblk0p27,不要急着格式化:

1
2
3
cat /proc/partitions
ls /dev/mmcblk0p*
blkid /dev/mmcblk0p27 2>/dev/null || echo "p27 has no filesystem yet"

确认分区号正确后,后续格式化和挂载直接用 LibWrt 后台 UI 做。

在后台磁盘页面拖动横向滚动条,找到新建分区对应行右侧的 编辑

磁盘页面找到编辑

进入编辑后选择格式化。

选择格式化

文件系统选择 ext4,确认后等待格式化完成。大分区格式化需要等一会儿,不要中途断电。

格式化为 ext4

挂载点这里有三个容易混淆的选项:

选项含义本次选择
根文件系统 /直接挂到系统根目录,会遮住当前系统目录不选
作为外部 overlay /overlay把大分区变成 OpenWrt 的系统可写层暂时不选
自定义自己指定挂载点,例如 /opt选择这个

本次最终选择自定义挂载到 /opt。这样系统原来的 /overlay 不动,大分区用于 Docker、iStore、下载、NAS、插件数据等应用场景,风险比直接迁移 /overlay 小。

进入挂载点页面,点击 添加

添加挂载点

挂载点选择 自定义,输入 /opt,也就是挂载到 /opt。然后保存并应用,最后重启路由器。

自定义挂载到 /opt

重启后检查:

1
2
3
4
5
6
df -h
mount | grep -E '(/opt|mmcblk0p27)'
blkid /dev/mmcblk0p27
cat /etc/config/fstab
block info | grep -E '(mmcblk0p27|/opt)'
ls -lah /opt

本机验证结果:

1
2
3
/dev/mmcblk0p27  109.2G  32.0K  103.6G  0%  /opt
/dev/mmcblk0p27 on /opt type ext4 (rw,relatime)
/dev/mmcblk0p27: UUID="4007a8a3-c2cf-48bc-b2be-2b79ff0fa7d4" BLOCK_SIZE="4096" TYPE="ext4"

/etc/config/fstab 里也有对应的自动挂载项:

1
2
3
4
config mount
        option enabled '1'
        option uuid '4007a8a3-c2cf-48bc-b2be-2b79ff0fa7d4'
        option target '/opt'

block info 显示:

1
/dev/mmcblk0p27: UUID="4007a8a3-c2cf-48bc-b2be-2b79ff0fa7d4" VERSION="1.0" MOUNT="/opt" TYPE="ext4"

说明重启后 /dev/mmcblk0p27 已经自动挂载到 /opt,大容量空间可用。

潇洒人间一键仙
使用 Hugo 构建
主题 StackJimmy 设计