<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Zlion</title><description>Stay Free</description><link>https://blog.zlion.top/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.16.5</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年8月28日 16:57:05</lastBuildDate><item><title>Z500/Z503/Z507升级小方糖公版系统</title><link>https://blog.zlion.top/posts/z503-to-public/</link><guid isPermaLink="true">https://blog.zlion.top/posts/z503-to-public/</guid><description>记录 Z503 通过 Telnet 扩容分区，升级为公版的过程.</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;说明&lt;a href=&quot;#说明&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;该教程由&lt;a href=&quot;https://www.right.com.cn/forum/?639610&quot; target=&quot;_blank&quot;&gt;@cnjn&lt;/a&gt;首发于恩山论坛：&lt;a href=&quot;https://www.right.com.cn/forum/thread-8480346-1-1.html&quot; target=&quot;_blank&quot;&gt;中兴小方糖 Z503 刷 Z506 固件&lt;/a&gt;，这里进行优化，适用于小白操作。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;准备工作&lt;a href=&quot;#准备工作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wwanu.lanzoue.com/ijPLK3vbfl1i&quot; target=&quot;_blank&quot;&gt;Z506官方固件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wwbnc.lanzoub.com/iuDNi451dula&quot; target=&quot;_blank&quot;&gt;一键开启Telnet脚本&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wwbnc.lanzoub.com/iP5mZ451e9hg&quot; target=&quot;_blank&quot;&gt;一键修改Tag脚本&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MobaXterm终端工具&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;操作步骤&lt;a href=&quot;#操作步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 开启Telnet&lt;a href=&quot;#1-开启telnet&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;从路由器网页管理后台导出配置文件&lt;code&gt;config.bin&lt;/code&gt;，与&lt;code&gt;一键开启Telnet脚本&lt;/code&gt;放在一起，双击脚本运行得到&lt;code&gt;config-telnet-enable.bin&lt;/code&gt;，将其再从管理后台还原回去，路由器会自动重启，Telnet就打开了，默认的账密为admin。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 扩容分区&lt;a href=&quot;#2-扩容分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;使用MobaXterm新建Telnet会话连接路由器，执行下面的命令，扩容 /var 目录。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mount&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-o&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remount,size=32M&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 修改设备型号&lt;a href=&quot;#3-修改设备型号&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;将设备型号Z500/Z503/Z507通通改为中兴的公版型号Z506。&lt;/p&gt;&lt;p&gt;设置MobaXterm的TFTP服务
&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;TFTP 目录配置参考&quot; loading=&quot;lazy&quot; width=&quot;1363&quot; height=&quot;1016&quot; src=&quot;/_astro/TFTP.Dore2Zdg_8bPMI.webp&quot; /&gt;&lt;figcaption&gt;TFTP 目录配置参考&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;命令中的 &lt;code&gt;192.168.5.7&lt;/code&gt;请替换为电脑当前的局域网 IP。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;3.1 提取Tag分区&lt;a href=&quot;#31-提取tag分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/mtdblock2&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tag.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;3.2 修改Tag分区&lt;a href=&quot;#32-修改tag分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;把提取出来的tag.bin与&lt;code&gt;一键修改Tag脚本&lt;/code&gt;放在一起双击脚本，得到&lt;code&gt;tag-Z506.bin&lt;/code&gt;文件，放到TFTP目录中。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;3.3 写入Tag分区&lt;a href=&quot;#33-写入tag分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tag-E2631.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/dev/mtdblock2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 上传公版固件&lt;a href=&quot;#4-上传公版固件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;进入路由器管理后台，找到系统更新固件上传&lt;code&gt;zxhnze50x_hv100_fv1002b28000_firmware-20230615093954.bin&lt;/code&gt; ,确认升级即可。重启完毕后就成功刷为公版系统了。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5. 重置&lt;a href=&quot;#5-重置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;升级完成后可以恢复出厂设置一次。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>设计遥控器：一款 Android TV 手机遥控 App 的设计实录</title><link>https://blog.zlion.top/posts/design-a-tv-remote-app/</link><guid isPermaLink="true">https://blog.zlion.top/posts/design-a-tv-remote-app/</guid><description>从设计目标、iOS 16 设计语言到触控板与浮动光标的交互方案，完整复盘一款手机遥控 Android TV App 的设计过程。</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;本文档面向想要设计「手机遥控电视」类 App 的产品与开发人员，涵盖设计目标、视觉语言、信息架构、核心交互与踩坑经验。
&lt;strong&gt;适用系统：&lt;/strong&gt; Android 8.0+（TV 端）/ Android 8.0+（手机端）
&lt;strong&gt;适用平台：&lt;/strong&gt; 智能电视 / 电视盒子 + 安卓手机
&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;手机遥控电视概念图&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; src=&quot;/_astro/hero.BpmyQNt-_1ck8NV.webp&quot; /&gt;&lt;figcaption&gt;手机遥控电视概念图&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;section&gt;&lt;h2&gt;1. 为什么要重新设计遥控器&lt;a href=&quot;#1-为什么要重新设计遥控器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;智能电视的遥控器越做越短：按键从三十多个砍到十几个，最后只剩一个十字键加几个功能键。但电视上的内容越来越复杂——应用商店、设置菜单、登录页面、验证码输入框，都在逼着用户在「十字键一格一格挪」里浪费时间。&lt;/p&gt;&lt;p&gt;实体遥控器的物理极限暴露无遗：&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;场景&lt;/th&gt;&lt;th&gt;实体遥控器&lt;/th&gt;&lt;th&gt;手机遥控&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;搜索片名&lt;/td&gt;&lt;td&gt;十字键逐字选择&lt;/td&gt;&lt;td&gt;直接打字&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;安装应用&lt;/td&gt;&lt;td&gt;逐格导航到安装按钮&lt;/td&gt;&lt;td&gt;手机上点一下推送&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;输入密码&lt;/td&gt;&lt;td&gt;虚拟键盘逐字符移动&lt;/td&gt;&lt;td&gt;手机键盘直接输入&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;精准点击小按钮&lt;/td&gt;&lt;td&gt;几乎不可能&lt;/td&gt;&lt;td&gt;触控板 + 光标&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;于是我们决定做一款手机遥控 Android TV 的 App，对标市面上的八爪鱼遥控：&lt;strong&gt;TV 端 + 手机端双端架构&lt;/strong&gt;，手机负责输入与展示，TV 端负责接收指令并注入系统事件。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;2. 设计目标与约束&lt;a href=&quot;#2-设计目标与约束&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;设计开始前，先把约束摆清楚。约束不是敌人，它决定了方案的下限。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;2.1 产品功能范围&lt;a href=&quot;#21-产品功能范围&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;六大核心功能一个都不能少：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;基础遥控（方向、确认、返回、主页、菜单、音量、电源）&lt;/li&gt;
&lt;li&gt;App 安装推送&lt;/li&gt;
&lt;li&gt;远程输入法（IME）&lt;/li&gt;
&lt;li&gt;电视清理 / 加速&lt;/li&gt;
&lt;li&gt;远程应用管理（启动 / 卸载）&lt;/li&gt;
&lt;li&gt;基于传感器的 TV 端浮动光标&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2.2 技术约束&lt;a href=&quot;#22-技术约束&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;重要&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;TV 端无法开启 Accessibility 服务（部分厂商环境限制），ADB 路线也被明确排除。输入注入必须依赖 AccessibilityService 或厂商私有插件，这直接决定了浮动光标必须做成「虚拟光标」而非系统鼠标。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;手机与电视在同一局域网，走 HTTP（TCP）+ UDP 自研协议&lt;/li&gt;
&lt;li&gt;TV 端覆盖层窗口必须由 AccessibilityService 上下文创建&lt;/li&gt;
&lt;li&gt;传感器数据驱动光标，位移采用 0..1000 归一化坐标，TV 端按分辨率缩放&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2.3 设计目标&lt;a href=&quot;#23-设计目标&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;一句话：&lt;strong&gt;让用户拿起手机的三秒内，就能完成一次电视操作。&lt;/strong&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;3. 设计语言：为什么选 iOS 16 风格&lt;a href=&quot;#3-设计语言为什么选-ios-16-风格&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;遥控器 App 是一个「工具」，工具的最高境界是被忽略——用户看的是电视，不是手机。因此视觉上追求极简、安静、零学习成本。&lt;/p&gt;&lt;p&gt;最终确定的设计规范：&lt;/p&gt;
































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;元素&lt;/th&gt;&lt;th&gt;规范&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;背景色&lt;/td&gt;&lt;td&gt;&lt;code&gt;#F2F2F7&lt;/code&gt;（iOS 分组式灰底）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;卡片圆角&lt;/td&gt;&lt;td&gt;14dp，白色卡片浮在灰底上&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;图标&lt;/td&gt;&lt;td&gt;线性图标（stroke 风格），不用填充图标&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;导航&lt;/td&gt;&lt;td&gt;底部 Tab Bar，四个入口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;特效&lt;/td&gt;&lt;td&gt;毛玻璃（半透明 + 模糊），仅用于顶栏与 Tab Bar&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;阴影&lt;/td&gt;&lt;td&gt;无阴影，靠灰底与白卡的对比分层&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;警告&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;明确禁用一切 Material Design 元素：FAB 悬浮按钮、ripple 水波纹、hamburger 抽屉菜单、投影卡片。这些元素一旦混入，整个界面会立刻「变味」，视觉一致性是这类工具 App 的生命线。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;设计语言统一的好处立竿见影：遥控页、应用页、工具页、我的页四个页面，用户在任何一页都能凭肌肉记忆找到返回方式与操作入口。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;遥控页 UI 设计稿&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1536&quot; src=&quot;/_astro/ui-mockup.DSU3kmhK_rvD5D.webp&quot; /&gt;&lt;figcaption&gt;遥控页 UI 设计稿&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;4. 信息架构：四个底部 Tab&lt;a href=&quot;#4-信息架构四个底部-tab&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;信息架构遵循「高频前置、低频收敛」原则：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;遥控 App&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;遥控 Tab&lt;br /&gt;&lt;br /&gt;方向键 / 触控板 / 音量&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;应用 Tab&lt;br /&gt;&lt;br /&gt;安装推送 / 启动卸载&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;工具 Tab&lt;br /&gt;&lt;br /&gt;清理加速 / 输入法&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;我的 Tab&lt;br /&gt;&lt;br /&gt;设备管理 / 设置&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;遥控 App&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;遥控 Tab&lt;br /&gt;&lt;br /&gt;方向键 / 触控板 / 音量&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;应用 Tab&lt;br /&gt;&lt;br /&gt;安装推送 / 启动卸载&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;工具 Tab&lt;br /&gt;&lt;br /&gt;清理加速 / 输入法&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;我的 Tab&lt;br /&gt;&lt;br /&gt;设备管理 / 设置&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;遥控 Tab&lt;/strong&gt;：默认首屏，打开 App 即用，承载 80% 的高频操作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应用 Tab&lt;/strong&gt;：TV 端应用列表镜像，支持远程启动、卸载、推送安装&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具 Tab&lt;/strong&gt;：清理加速、远程输入法等中低频功能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;我的 Tab&lt;/strong&gt;：设备连接状态、版本信息、设置项&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;底部 Tab Bar 采用毛玻璃效果，内容滚动时图标下若隐若现，既保持层次又不喧宾夺主。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;5. 遥控页：一块屏幕装下整个遥控器&lt;a href=&quot;#5-遥控页一块屏幕装下整个遥控器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;遥控页是整个 App 的核心，布局从上到下分为四层：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;设备状态条&lt;/strong&gt;：当前连接的电视名称与信号状态，一眼确认「我连的是哪台电视」&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;触控板区&lt;/strong&gt;：大面积手势区域，滑动即移动 TV 端光标，点按即确认&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;十字键区&lt;/strong&gt;：圆形 D-pad，中心 OK 键，四向箭头线性图标&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;功能键排&lt;/strong&gt;：返回、主页、菜单、音量加减、电源，一行排列&lt;/li&gt;
&lt;/ol&gt;&lt;section&gt;&lt;h3&gt;5.1 按键布局的取舍&lt;a href=&quot;#51-按键布局的取舍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;实体遥控器按 键隔离 布局，手机屏幕按 使用频率 布局：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;方向与确认是最高频操作，占据视觉中心&lt;/li&gt;
&lt;li&gt;音量键做成横向长条，天然对应「左右/上下滑动调音量」的心智模型&lt;/li&gt;
&lt;li&gt;电源键放在角落，防止误触——误触电源把电视关了，是这类 App 差评的重灾区&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;建议&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;所有按键的点击热区不小于 48dp，宁可视觉留白多一点，也不要让用户在大屏手机上出现「按不中」的情况。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5.2 按键到协议的映射&lt;a href=&quot;#52-按键到协议的映射&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;每个按键最终都会转成一条 HTTP 指令发往 TV 端：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;type&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;key&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;action&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;down_up&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;keycode&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;常用键值映射：&lt;/p&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;手机按键&lt;/th&gt;&lt;th&gt;keycode&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;返回&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;KEYCODE_BACK&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;主页&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;KEYCODE_HOME&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;菜单&lt;/td&gt;&lt;td&gt;82&lt;/td&gt;&lt;td&gt;KEYCODE_MENU&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;音量加&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;KEYCODE_VOLUME_UP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;音量减&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;td&gt;KEYCODE_VOLUME_DOWN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;电源&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;KEYCODE_POWER&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;6. 触控板：从绝对坐标到相对位移&lt;a href=&quot;#6-触控板从绝对坐标到相对位移&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;触控板是设计迭代中最典型的一次「推倒重来」。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;6.1 第一版：绝对坐标（失败）&lt;a href=&quot;#61-第一版绝对坐标失败&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;最初的设计是把手指位置直接映射到 TV 屏幕坐标：手指按在触控板左上角，TV 端光标就出现在屏幕左上角。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;手指按下 x,y&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;归一化 0..1000&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;HTTP POST /api/cursor&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;TV 端光标跳到绝对位置&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;手指按下 x,y&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;归一化 0..1000&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;HTTP POST /api/cursor&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;TV 端光标跳到绝对位置&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;真机测试发现致命问题：&lt;strong&gt;触控板面积只有巴掌大，映射到 55 寸电视上，精度完全不够&lt;/strong&gt;——想点一个设置按钮，手指 1mm 的抖动在电视上就是几十像素的偏移，根本点不中。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;6.2 第二版：相对位移 + 虚拟鼠标（成功）&lt;a href=&quot;#62-第二版相对位移--虚拟鼠标成功&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;改为笔记本电脑触控板的心智模型：&lt;strong&gt;TV 端自己维护一个光标位置，手机只上报位移量&lt;/strong&gt;。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;手指滑动 delta&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;POST /api/mouse dx,dy&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;TV 端光标位置 + delta&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;滑一次 光标动一点 位置保持&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;手指滑动 delta&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;POST /api/mouse dx,dy&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;TV 端光标位置 + delta&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;滑一次 光标动一点 位置保持&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;对比项&lt;/th&gt;&lt;th&gt;绝对坐标&lt;/th&gt;&lt;th&gt;相对位移&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;精度&lt;/td&gt;&lt;td&gt;手指抖动被放大&lt;/td&gt;&lt;td&gt;多滑几次即可微调&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;心智模型&lt;/td&gt;&lt;td&gt;直接点屏幕&lt;/td&gt;&lt;td&gt;笔记本触控板&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;抬手后光标&lt;/td&gt;&lt;td&gt;跟随消失&lt;/td&gt;&lt;td&gt;保持原位&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;实现复杂度&lt;/td&gt;&lt;td&gt;低&lt;/td&gt;&lt;td&gt;中（TV 端维护光标）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;协议设计：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;dx&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;dy&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;-45&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;show&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dx&lt;/code&gt; / &lt;code&gt;dy&lt;/code&gt;：0..1000 归一化相对位移，TV 端按屏幕分辨率缩放为像素&lt;/li&gt;
&lt;li&gt;&lt;code&gt;show&lt;/code&gt;：&lt;code&gt;true&lt;/code&gt; 显示光标，&lt;code&gt;false&lt;/code&gt; 隐藏，缺省保持当前状态&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;抬手后光标保持原位这一点尤为关键——用户可以分多次滑动，把光标「挪」到目标上再点按确认，这正是触控板体验的精髓。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;7. 浮动光标：倾斜手机即可移动光标&lt;a href=&quot;#7-浮动光标倾斜手机即可移动光标&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;触控板解决了「精准」，但还有更极致的输入方式：&lt;strong&gt;手机拿起来，往哪边倾，光标往哪边走&lt;/strong&gt;。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;7.1 传感器选型&lt;a href=&quot;#71-传感器选型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;手机竖直持握时，加速度计三个轴的物理含义：&lt;/p&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;轴&lt;/th&gt;&lt;th&gt;竖直持握时含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;X 轴 (ax)&lt;/td&gt;&lt;td&gt;左右倾斜量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Y 轴 (ay)&lt;/td&gt;&lt;td&gt;重力（约 9.8 m/s²）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Z 轴 (az)&lt;/td&gt;&lt;td&gt;前后倾斜量&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;光标速度映射：&lt;/p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;dx=(ax−ax0)⋅k,dy=(az−az0)⋅kdx = (a_x - a_{x0}) \cdot k, \quad dy = (a_z - a_{z0}) \cdot k&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;⋅&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;k&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;y&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;⋅&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;其中 &lt;span&gt;&lt;span&gt;ax0a_{x0}&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;、&lt;span&gt;&lt;span&gt;az0a_{z0}&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 是校准基准（开始控制时记录），&lt;span&gt;&lt;span&gt;kk&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 是灵敏度系数。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;提示&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;不用陀螺仪（TYPE_ROTATION_VECTOR）而用加速度计（TYPE_ACCELEROMETER），是因为倾斜角度比角速度更直观：手机保持某个倾斜角，光标就持续匀速移动，松回水平则停止，符合「指哪打哪」的直觉。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;7.2 防抖设计&lt;a href=&quot;#72-防抖设计&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;手持必然有抖动，两个参数直接决定手感：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;死区&lt;/strong&gt;：倾斜量小于 0.6 m/s² 时视为静止，过滤手部微抖&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;灵敏度系数&lt;/strong&gt;：倾斜 1 m/s² 对应光标移动速度，当前取值 4 倍基准灵敏度&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;完整控制流程：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;是&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;否&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;进入浮动光标页&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;记录校准基准 ax0, az0&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;显示 TV 端光标&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;倾斜量超过死区?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;按倾斜方向持续发送位移&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;停止移动 光标保持&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;点按屏幕 = 点击确认&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;双击或按钮 = 长按&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;是&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;否&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;进入浮动光标页&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;记录校准基准 ax0, az0&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;显示 TV 端光标&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;倾斜量超过死区?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;按倾斜方向持续发送位移&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;停止移动 光标保持&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;点按屏幕 = 点击确认&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;双击或按钮 = 长按&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;7.3 TV 端光标渲染&lt;a href=&quot;#73-tv-端光标渲染&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;TV 端用 &lt;code&gt;TYPE_ACCESSIBILITY_OVERLAY&lt;/code&gt; 窗口绘制光标：白色圆形主体 + 深色描边 + 中心蓝点 + 柔和光晕，直径 40px，在深浅背景上都能看清。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;注意&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;code&gt;TYPE_ACCESSIBILITY_OVERLAY&lt;/code&gt; 窗口必须用 AccessibilityService 的上下文创建，用 Application Context 创建的窗口不会显示，且不会抛异常——这是最难排查的一类「静默失败」。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;8. 设计规范落地清单&lt;a href=&quot;#8-设计规范落地清单&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;为保证四个页面视觉一致，落地时逐条对照检查：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt; 全局背景 &lt;code&gt;#F2F2F7&lt;/code&gt;，卡片白色、圆角 14dp&lt;/li&gt;
&lt;li&gt; 图标全部线性风格，笔画粗细统一&lt;/li&gt;
&lt;li&gt; 底部 Tab Bar 毛玻璃，四个入口图标 + 文字&lt;/li&gt;
&lt;li&gt; 无 FAB、无 ripple、无 hamburger、无投影&lt;/li&gt;
&lt;li&gt; 按键热区 ≥ 48dp&lt;/li&gt;
&lt;li&gt; 电源等危险操作与常规操作区隔开&lt;/li&gt;
&lt;li&gt; 页面标题与状态栏留出安全距离，不与系统状态栏重叠&lt;/li&gt;
&lt;li&gt; 顶栏显示连接状态，任何页面都能确认连接是否正常&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;9. 踩坑与经验&lt;a href=&quot;#9-踩坑与经验&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;警告&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;以下是真机调试中付出过代价的经验，做同类 App 时可以直接绕开。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;光标窗口「静默失败」&lt;/strong&gt;：Application Context 创建 overlay 窗口不报错但不显示，必须用 Service Context；&lt;code&gt;WindowManager.addView&lt;/code&gt; 还必须在主线程执行，HTTP 工作线程直接调用会偶发崩溃。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;重装 APK 后无障碍服务被重置&lt;/strong&gt;：TV 端重装后服务进入 Crashed 状态，需要完整重置序列——移除服务 → 禁用 accessibility → force-stop → 重新添加 → 启用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;菜单键无焦点可回退&lt;/strong&gt;：部分界面没有焦点节点，菜单指令应回退为在屏幕中心派发长按手势，否则用户会觉得「菜单键坏了」。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;状态栏与标题重叠&lt;/strong&gt;：未处理 insets 时页面顶部内容会钻到系统状态栏底下，需统一处理状态栏安全距离。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;触控板精度&lt;/strong&gt;：任何把「手指位置」直接映射到「大屏坐标」的方案都会死于精度不足，相对位移是唯一出路。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;10. 总结&lt;a href=&quot;#10-总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;设计一款遥控器 App，表面上是画界面，本质上是回答三个问题：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用户在什么姿势下用它&lt;/strong&gt;——决定了按键布局与热区大小&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;电视端能做到什么&lt;/strong&gt;——决定了交互方案的技术边界（虚拟光标 vs 系统鼠标）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;什么样的光标移动符合直觉&lt;/strong&gt;——决定了相对位移、死区、倾斜控制这些细节&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;iOS 16 风格解决的是「看起来对」，相对位移触控板和倾斜光标解决的是「用起来对」。工具类 App 的设计没有炫技空间，把每一次点击、每一次滑动做到符合直觉，就是最好的设计。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>TCL 固件冻结 Google 相关进程的分析记录</title><link>https://blog.zlion.top/posts/tcl-freeze-google/</link><guid isPermaLink="true">https://blog.zlion.top/posts/tcl-freeze-google/</guid><description>记录 TCL Android TV 对 Google 相关进程的冻结行为、确认结果以及已尝试但未成功的处理方式。</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;本文档只记录 TCL 电视冻结 Google 相关进程的发现、确认结果和失败尝试，不提供完整的 Google 三件套安装教程。&lt;br /&gt;
&lt;strong&gt;适用设备：&lt;/strong&gt; TCL &lt;code&gt;tcl_mt5879_cn&lt;/code&gt;
&lt;strong&gt;适用系统：&lt;/strong&gt; Android 11 / API 30，固件 V729
&lt;strong&gt;连接方式：&lt;/strong&gt; ADB &lt;code&gt;192.168.5.2:5555&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;结论&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Google 三件套 APK 可以被系统识别并安装，但无法正常运行。临时停用 &lt;code&gt;com.tcl.guard&lt;/code&gt; 也不能解决问题。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;section&gt;&lt;h2&gt;1. 发现&lt;a href=&quot;#1-发现&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;通过 ADB 检查 TCL 电视运行状态、系统组件和固件内容时，发现 TCL 系统存在针对 Google 进程的冻结逻辑。&lt;/p&gt;&lt;p&gt;相关逻辑位于：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;system_ext/apex/com.tcl.tcore.apex&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;其中可以看到 &lt;code&gt;FreezeManager&lt;/code&gt;、&lt;code&gt;TGuard&lt;/code&gt;、冻结白名单以及 Google Play 相关字符串。TCL 系统还提供了配置入口：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;content://com.tcl.providers.config/freeze&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;2. 确认结果&lt;a href=&quot;#2-确认结果&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;确认 &lt;code&gt;freeze&lt;/code&gt; 配置中包含以下 Google 相关进程：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;com.google.android.gms&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;com.android.vending:download_service&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;com.android.vending:instant_app_installer&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这些进程分别涉及 Google Play services、Play Store 下载服务和即时应用安装服务。&lt;/p&gt;&lt;p&gt;同时确认：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;TCL 使用 &lt;code&gt;FreezeManager&lt;/code&gt; 管理相关进程。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;com.tcl.guard&lt;/code&gt; 是 TCL 的守护组件，会参与进程管理。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;com.tcl.providers.config&lt;/code&gt; 是 TCL 配置提供者，不应当作为普通应用随意停用。&lt;/li&gt;
&lt;li&gt;Play Store 被拉回 TCL 主界面或无法继续运行时，原因更接近 TCL 系统限制，而不是单纯 APK 文件损坏。&lt;/li&gt;
&lt;li&gt;Google 三件套包可以被 &lt;code&gt;pm path&lt;/code&gt; 识别，说明 APK 安装本身成功。&lt;/li&gt;
&lt;li&gt;安装成功不代表获得系统签名、特权权限或 Google 认证状态。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;3. 已进行的尝试&lt;a href=&quot;#3-已进行的尝试&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;3.1 临时停用 &lt;code&gt;com.tcl.guard&lt;/code&gt;&lt;a href=&quot;#31-临时停用-comtclguard&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;执行过以下操作：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;adb -s 192.168.5.2:5555 shell pm disable-user --user &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; com.tcl.guard&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;结果：&lt;code&gt;com.tcl.guard&lt;/code&gt; 可以进入 &lt;code&gt;disabled-user&lt;/code&gt; 状态，但 Google 三件套仍不能正常运行。之后已恢复：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;adb -s 192.168.5.2:5555 shell pm enable --user &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; com.tcl.guard&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.2 安装 Google 三件套&lt;a href=&quot;#32-安装-google-三件套&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;针对设备的 Android 11、32 位 &lt;code&gt;armeabi-v7a&lt;/code&gt; 和 Android TV 环境，尝试安装：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;com.google.android.gsf&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;com.google.android.gms 26.24.34&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;com.android.vending 52.0.20&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;结果：三个 APK 均可被系统识别，但 Play Store 无法正常进入，Google 相关进程也不能稳定运行。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.3 修改 &lt;code&gt;freeze&lt;/code&gt; 配置&lt;a href=&quot;#33-修改-freeze-配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;尝试通过 TCL &lt;code&gt;content&lt;/code&gt; 接口修改冻结配置，目标是从 &lt;code&gt;freezeProcessList&lt;/code&gt; 中移除 Google 相关进程。&lt;/p&gt;&lt;p&gt;结果：普通 ADB shell 下的 JSON 写入没有成功，原始配置保持不变。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.4 查询或调用 TCL 特殊接口&lt;a href=&quot;#34-查询或调用-tcl-特殊接口&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;尝试使用 &lt;code&gt;cmd feature&lt;/code&gt; 等接口进一步查询或修改 TCL 配置。&lt;/p&gt;&lt;p&gt;结果：相关功能需要更高权限或 debug 模式，普通 ADB shell 无法完成写入。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.5 修改系统组件或刷写固件&lt;a href=&quot;#35-修改系统组件或刷写固件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;未执行以下高风险操作：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;修改 &lt;code&gt;com.tcl.tcore.apex&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;修改 &lt;code&gt;FreezeManager&lt;/code&gt; 或 &lt;code&gt;freezeProcessList&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;修改 &lt;code&gt;boot&lt;/code&gt;、&lt;code&gt;system&lt;/code&gt;、&lt;code&gt;vendor&lt;/code&gt;、&lt;code&gt;product&lt;/code&gt;、&lt;code&gt;system_ext&lt;/code&gt; 分区。&lt;/li&gt;
&lt;li&gt;刷入其他版本 TCL 固件。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;原因：这些操作涉及系统签名、分区校验和变砖风险，且没有证据表明仅修改其中一处就能恢复 Google 三件套运行。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;4. 最终结论&lt;a href=&quot;#4-最终结论&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;TCL 固件确实存在冻结 Google 相关进程的机制。&lt;/li&gt;
&lt;li&gt;已确认冻结对象包括 &lt;code&gt;com.google.android.gms&lt;/code&gt;、&lt;code&gt;com.android.vending:download_service&lt;/code&gt; 和 &lt;code&gt;com.android.vending:instant_app_installer&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;com.tcl.guard&lt;/code&gt; 只是相关守护组件之一，临时停用它不能绕过完整的 TCL 系统限制。&lt;/li&gt;
&lt;li&gt;Google 三件套 APK 安装成功，但无法正常运行。&lt;/li&gt;
&lt;li&gt;直接修改 &lt;code&gt;freeze&lt;/code&gt; 配置、调用特殊接口等尝试均未成功。&lt;/li&gt;
&lt;li&gt;当前结果只能确认 TCL 的冻结机制和失败原因，不能确认已经实现 Google 三件套可用。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;文档版本：&lt;/strong&gt; 2026-08-22
&lt;strong&gt;记录状态：&lt;/strong&gt; 已确认冻结机制，处理尝试均未成功&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;</content:encoded></item><item><title>E2633转正官方版分析（Telnet篇）</title><link>https://blog.zlion.top/posts/e2631-research-telnet/</link><guid isPermaLink="true">https://blog.zlion.top/posts/e2631-research-telnet/</guid><description>E2633刷入官方公版后的config.bin解密、本机信息优化、本地Web上传固件和官方系统升级研究部分。</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;免责声明与使用约定&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;禁止以任何形式出售、打包收费、付费分发、引流获利，或将本教程及随附工具用于其他商业获利行为。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;对教程、文档或工具进行二次修改、转载和再分发时，必须保留原作者 &lt;code&gt;zlion&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;固件刷写、Telnet和 MTD 操作均可能造成数据丢失、设备变砖或其他不可预期后果。&lt;strong&gt;操作者应对自己的设备和全部操作结果负责并自行承担风险。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;如本文内容存在侵权、错误引用或其他权益问题，请联系作者核实；确认后将及时删除或修正相关内容。&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;section&gt;&lt;h2&gt;1. Config.bin的加解密与Telnet开启&lt;a href=&quot;#1-configbin的加解密与telnet开启&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1.1 Config.bin的加解密&lt;a href=&quot;#11-configbin的加解密&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;config.bin&lt;/code&gt; 不是明文 XML，而是 ZTE 的 Type-4 外层容器。E2631 中使用的是 AES-256-CBC。
中兴巡天及其套娃机的值有多组，这里仅展示一组：&lt;/p&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数&lt;/th&gt;&lt;th&gt;值&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;keySeed&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;E2631Key13515211&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ivSeed&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;E2631Iv13515211&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;key&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;SHA256(keySeed)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;iv&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;SHA256(ivSeed)&lt;/code&gt; 取前 16 字节&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;填充&lt;/td&gt;&lt;td&gt;关闭，尾部补零到 AES 块边界&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;解包流程如下：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;config.bin Type-4 外层容器&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;AES-256-CBC 解密&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;Type-0 内层容器&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;zlib 解压&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;最终 XML&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;config.bin Type-4 外层容器&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;AES-256-CBC 解密&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;Type-0 内层容器&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;zlib 解压&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;最终 XML&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;回写流程如下：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;修改后的 XML&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;zlib 压缩&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;封装 Type-0 内层容器&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;AES-256-CBC 加密&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;写回 config.bin&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;修改后的 XML&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;zlib 压缩&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;封装 Type-0 内层容器&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;AES-256-CBC 加密&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p&gt;写回 config.bin&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;1.2 修改Config.bin开启Telnet&lt;a href=&quot;#12-修改configbin开启telnet&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这里提供一个一键开启Telnet脚本&lt;a href=&quot;https://wwbnc.lanzoub.com/iC10a40v5r6j&quot; target=&quot;_blank&quot;&gt;config-telnet-enable.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;PortControl&lt;/code&gt; 中 TELNET 行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;DM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;ServName&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;TELNET&quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;DM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;PortEnable&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;1&quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;TelnetCfg&lt;/code&gt; 中启用 LAN、关闭 WAN：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Tbl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;TelnetCfg&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;RowCount&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;1&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Row&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;No&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;0&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;DM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;TS_Enable&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;1&quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;DM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;Wan_Enable&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;0&quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;DM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;Lan_Enable&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;1&quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;DM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;TS_Port&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;23&quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;DM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;TS_UName&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;admin&quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;DM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;TS_UPwd&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;admin&quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Row&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Tbl&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;注意&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;本工具由 zlion 原创，首发于 zlion.top
禁止倒卖、打包收费或用于任何商业盈利行为，转载须保留完整出处及作者署名。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;使用说明&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;
&lt;li&gt;将 config-telnet-enable.bat、zte_config_telnet_enable.js 和 config.bin 放在同一个目录。&lt;/li&gt;
&lt;li&gt;双击 config-telnet-enable.bat。&lt;/li&gt;
&lt;li&gt;成功后，同目录会生成 config-telnet-enable.bin。&lt;/li&gt;
&lt;li&gt;Telnet 端口为 23，账号和密码均为 admin。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;运行环境：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;完整工具包已经附带 node.exe，无需安装 Node.js 或 Python。&lt;/li&gt;
&lt;li&gt;请勿单独移动 BAT；config-telnet-enable.bat、zte_config_telnet_enable.js 和 node.exe 必须放在一起。&lt;/li&gt;
&lt;li&gt;不支持的配置会显示“config文件暂不适配”，且不会保留输出文件&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;2. 本机信息优化&lt;a href=&quot;#2-本机信息优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;本节提醒&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;
&lt;li&gt;适用于保留自己设备的 Tag、Wi-Fi 等身份和无线数据分区&lt;/li&gt;
&lt;li&gt;适用于刷了三方固件无法绑定APP（未验证APP端是否只检测设备型号，仅猜测）&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;2.1 Tag 、Wifi 分区读取&lt;a href=&quot;#21-tag-wifi-分区读取&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在路由器 Telnet 终端执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/proc/mtd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;可以看到：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mtd2: 00100000 00020000 &quot;tag&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mtd3: 00100000 00020000 &quot;wifi&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;两者大小均为 &lt;code&gt;0x100000&lt;/code&gt;，即 &lt;code&gt;1048576&lt;/code&gt; 字节。&lt;/p&gt;&lt;p&gt;读取 Tag 分区：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/mtd2&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/tmp/tag-backup.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;读取 Wi-Fi 分区：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/mtd3&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/tmp/wifi-backup.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;确认电脑的 TFTP 服务已启动，根目录允许写入。&lt;/p&gt;&lt;p&gt;上传 Tag 备份：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag-backup.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tag-backup.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;上传 Wi-Fi 备份：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/wifi-backup.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;wifi-backup.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;192.168.5.7&lt;/code&gt;请替换为电脑当前的局域网 IP。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2.2 修改Tag分区信息&lt;a href=&quot;#22-修改tag分区信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这里只需要修改型号就可以了，使用脚本&lt;a href=&quot;https://wwbnc.lanzoub.com/iLgJ840kyibi&quot; target=&quot;_blank&quot;&gt;改型号为E2631&lt;/a&gt;
把&lt;code&gt;tag-backup.bin&lt;/code&gt;重命名为&lt;code&gt;tag.bin&lt;/code&gt;，跟脚本放在同一级目录下，双击脚本即可得到&lt;code&gt;tag-E2631.bin&lt;/code&gt;。这样其他信息都还是自己贴纸上的
提醒一下tag分区是有校验的，Tag 中同时存在主 MAC、第二 MAC、MAC 前缀、D-SN、S/N、型号和 Wi-Fi 信息。&lt;code&gt;F87***&lt;/code&gt; 只是 MAC 前三字节，不是完整 MAC；&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Tag分区信息&quot; loading=&quot;lazy&quot; width=&quot;478&quot; height=&quot;554&quot; src=&quot;/_astro/tag.CdknOFPz_DHBD.webp&quot; /&gt;&lt;figcaption&gt;Tag分区信息&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Tag结构：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;0x00  33 33 33 33&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;0x04  payload size，小端&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;0x08  CRC32，小端&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;0x0c  记录区&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;尾部  ff 填充&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;CRC32 计算范围从 &lt;code&gt;0x0c&lt;/code&gt; 开始，长度由 payload size 决定。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2.3 使用 TFTP 将 Tag 和 Wi-Fi 分区传输到路由器中去&lt;a href=&quot;#23-使用-tftp-将-tag-和-wi-fi-分区传输到路由器中去&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;本节先把待写入的 &lt;code&gt;tag-E2631.bin&lt;/code&gt;、&lt;code&gt;wifi.bin&lt;/code&gt; 以及方案二使用的 &lt;a href=&quot;https://wwbnc.lanzoub.com/iW88t40izsne&quot; target=&quot;_blank&quot;&gt;mtd_write_tag_armv7&lt;/a&gt;传入路由器。以下示例中 &lt;code&gt;192.168.5.7&lt;/code&gt; 是电脑的 TFTP 地址，请按实际网络修改。&lt;/p&gt;&lt;p&gt;电脑端 TFTP 根目录至少放置：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tag-E2631.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wifi.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mtd_write_tag_armv7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;路由器 Telnet 端执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ping&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/wifi.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/mtd_write_tag&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tag-E2631.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/wifi.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;wifi.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/mtd_write_tag&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;mtd_write_tag_armv7&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2.3.1 写入分区：方案一，使用 cat 命令&lt;a href=&quot;#231-写入分区方案一使用-cat-命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;方案一只适用于已经确认驱动允许通过字符设备写入的设备。先写入 Tag，再写入 Wi-Fi：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/dev/mtd2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sync&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/wifi.bin&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/dev/mtd3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sync&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;写入后立即在路由器端读回并校验：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag-readback.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/wifi-readback.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/mtd2&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/tmp/tag-readback.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/mtd3&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/tmp/wifi-readback.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;md5sum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag-readback.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;md5sum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/wifi.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/wifi-readback.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;两个输入文件与读回文件的 MD5 必须分别一致。Tag 分区如果出现以下任一情况，应停止操作并改用方案二：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;出现 &lt;code&gt;can not create /dev/mtdblock2: Success&lt;/code&gt; 或类似写入错误；&lt;/li&gt;
&lt;li&gt;命令返回但读回 MD5 不一致；&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;cat&lt;/code&gt; 对 NAND 的写入可能绕过必要的擦除、坏块和 ECC 处理；因此命令“没有明显报错”不等于写入成功。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2.3.2 写入分区：方案二，使用 MTD 写入工具&lt;a href=&quot;#232-写入分区方案二使用-mtd-写入工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;方案二使用已经我自己编译好的 ARMv7 程序 &lt;code&gt;mtd_write_tag_armv7&lt;/code&gt;。先确认程序架构和用法：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+x&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/mtd_write_tag&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/tmp/mtd_write_tag&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;应能看到类似用法：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Usage: /tmp/mtd_write_tag --yes /dev/mtdN file.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Example: /tmp/mtd_write_tag --yes /dev/mtd2 /tmp/tag.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;确认输入文件为目标 Tag 分区大小后执行写入：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/sys/class/mtd/mtd2/name&lt;/span&gt;&lt;span&gt; 2&amp;gt;&lt;/span&gt;&lt;span&gt;/dev/null&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/sys/class/mtd/mtd2/size&lt;/span&gt;&lt;span&gt; 2&amp;gt;&lt;/span&gt;&lt;span&gt;/dev/null&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/tmp/mtd_write_tag&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--yes&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/mtd2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sync&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;程序会按 MTD 的擦除块、写入页和坏块规则执行。出现 &lt;code&gt;MEMUNLOCK warning: Operation not supported&lt;/code&gt; 或 &lt;code&gt;fsync: Invalid argument&lt;/code&gt; 时，不要只根据警告判断成功或失败，必须继续做读回校验。&lt;/p&gt;&lt;p&gt;这里只在路由器端比较写入前后的 MD5：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;md5sum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag-readback.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/mtd2&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/tmp/tag-readback.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;md5sum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag-readback.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;两次 MD5 一致，且程序没有报告擦除、写入或读回错误，才可认为 Tag 写入成功。若不一致，保留终端输出，不要重启设备，也不要继续写 Bootloader 或整片 NAND。该工具只针对 Tag 的 MTD 写入流程，不能未经验证地用于 Wi-Fi、Bootloader 或其他分区。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;3. Web 本地上传分析研究(失败)&lt;a href=&quot;#3-web-本地上传分析研究失败&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;3.1 接口和表单&lt;a href=&quot;#31-接口和表单&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;抓到的 Web 流程：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GET  /?_type=vueData&amp;amp;_tag=vue_nowversion_lua&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;POST /?_type=vueData&amp;amp;_tag=prepare_firmware_upgrade&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;POST /?_type=vueData&amp;amp;_tag=do_firmware_upgrade&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;multipart 字段名：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VersionUpload&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;核心表单头：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Content-Type: multipart/form-data; boundary=...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Content-Disposition: form-data; name=&quot;VersionUpload&quot;; filename=&quot;firmware.bin&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Content-Type: application/octet-stream&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.2 SessionTimeout 的定位&lt;a href=&quot;#32-sessiontimeout-的定位&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;页面返回过 &lt;code&gt;logintoken&lt;/code&gt;，响应头也返回过 &lt;code&gt;X_XSRF_TOKEN&lt;/code&gt;。曾出现：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;HTTP 200&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;IF_ERRORSTR = SessionTimeout&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;以及多种 token 组合均失败：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;prepare same token  =&amp;gt; SessionTimeout&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;prepare sessOnly    =&amp;gt; SessionTimeout&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;prepare sessionOnly =&amp;gt; SessionTimeout&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;后续在同一登录 Session 内获取页面 token、Cookie 和 XSRF token，并先调用 &lt;code&gt;vue_loadprevent_data&lt;/code&gt;，曾得到：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;prepare same:&amp;lt;page token&amp;gt; =&amp;gt; SUCC&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这只说明准备阶段通过，不说明上传和刷写一定成功。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.3 升级管理器调试&lt;a href=&quot;#33-升级管理器调试&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Telnet 下可以打开升级管理器日志并查看状态：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sendcmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cspd.cspd.upgrade_mgr&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;setDebug&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sendcmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cspd.cspd.upgrade_mgr&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;show&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sendcmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cspd.cspd.upgrade_mgr&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sendcmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cspd.cspd.upgrade_mgr&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;show&lt;/code&gt; 中的 &lt;code&gt;State&lt;/code&gt;、&lt;code&gt;Location&lt;/code&gt;、&lt;code&gt;TempDirName&lt;/code&gt;、&lt;code&gt;FlashingPid&lt;/code&gt; 和 &lt;code&gt;MediaPid&lt;/code&gt; 可帮助判断升级是否真正进入后端。研究中 Web 失败后常见：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;State       :0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Location    :&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;TempDirName :&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;MediaPid    :&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;同时没有 &lt;code&gt;/var/tmp/fw.bin&lt;/code&gt;，这更像请求未进入后端刷写，而不是固件已经写入。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.4 请求体上限实验&lt;a href=&quot;#34-请求体上限实验&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;测试文件&lt;/th&gt;&lt;th&gt;现象&lt;/th&gt;&lt;th&gt;判断&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;约 300 KiB&lt;/td&gt;&lt;td&gt;100% 后 HTTP 200，&lt;code&gt;SessionTimeout&lt;/code&gt;&lt;/td&gt;&lt;td&gt;能传完整请求，会话仍有问题，不进入后续校验升级流程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;约 320 KiB&lt;/td&gt;&lt;td&gt;100% 后连接重置&lt;/td&gt;&lt;td&gt;接近/超过请求体限制&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;约 330 KiB&lt;/td&gt;&lt;td&gt;约 97% 后重置&lt;/td&gt;&lt;td&gt;multipart 边界也占空间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;约 512 KiB&lt;/td&gt;&lt;td&gt;约 62% 后重置&lt;/td&gt;&lt;td&gt;设备端提前关闭连接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;22,413,844 bytes 官方包&lt;/td&gt;&lt;td&gt;无法稳定上传&lt;/td&gt;&lt;td&gt;不适合该页面&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;300Kib测试&quot; loading=&quot;lazy&quot; width=&quot;2559&quot; height=&quot;1580&quot; src=&quot;/_astro/300.DP0opm6j_Cy0q6.webp&quot; /&gt;&lt;figcaption&gt;300Kib测试&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img alt=&quot;320Kib测试&quot; loading=&quot;lazy&quot; width=&quot;2559&quot; height=&quot;1477&quot; src=&quot;/_astro/330.CYCiqjT3_Z18SAKS.webp&quot; /&gt;&lt;figcaption&gt;320Kib测试&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;/bin/httpd&lt;/code&gt; 中发现：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;content length is beyond limit.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Http request body read fail.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Upload file fail for not enough space, g_nContentLength(%d) &amp;gt;= g_nAllowedSpace(%d)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fwrite fail when upload.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VersionUpload&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/var/tmp/fw.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;do_firmware_upgrade&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;my_upload_file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这证明有 body length、临时空间和写文件分支；字符串本身不能证明唯一的上限数值。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.5 &lt;code&gt;/tmp&lt;/code&gt; 空间与 Web 限制&lt;a href=&quot;#35-tmp-空间与-web-限制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;当时读取到：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/var/tmp 约 40960 KiB，可用约 40736 KiB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/tmp     约 20480 KiB，可用约 19456 KiB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;官方包约 21.38 MiB，在 &lt;code&gt;/var/tmp&lt;/code&gt; 理论上放得下，但仍被 HTTP 处理路径重置。磁盘空间够，不等于请求体限制够，也不等于升级进程会接受该文件。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.6 Wireshark 过滤器&lt;a href=&quot;#36-wireshark-过滤器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;只看 HTTP 上传：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip.addr == 192.168.5.1 &amp;amp;&amp;amp; ip.addr == 192.168.5.7 &amp;amp;&amp;amp; tcp.port == 80&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;只看电脑到路由器：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip.src == 192.168.5.7 &amp;amp;&amp;amp; ip.dst == 192.168.5.1 &amp;amp;&amp;amp; tcp.dstport == 80&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;只看重置/重传：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tcp.flags.reset == 1 || tcp.analysis.retransmission&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;早期过滤 &lt;code&gt;udp&lt;/code&gt; 只能看到 DNS、多播或调试包，不能证明 HTTP 升级。抓包中由 &lt;code&gt;192.168.5.1:80&lt;/code&gt; 返回 &lt;code&gt;RST, ACK&lt;/code&gt;，与设备端连接关闭相符。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.7 Web 结论&lt;a href=&quot;#37-web-结论&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;进度 100% 只表示浏览器发完请求，不表示设备已经校验或写入。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SessionTimeout&lt;/code&gt; 和 &lt;code&gt;ERR_CONNECTION_RESET&lt;/code&gt; 必须分层排查。&lt;/li&gt;
&lt;li&gt;大于几百 KiB 的正式升级包应走 Telnet + TFTP + 本地 &lt;code&gt;fw_flashing&lt;/code&gt;，不应继续反复提交 Web 请求。&lt;/li&gt;
&lt;li&gt;隐藏页面是真实刷写路径，不是安全测试页面。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;4. fw-flashing 与双槽启动&lt;a href=&quot;#4-fw-flashing-与双槽启动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;4.1 参数和最小失败测试&lt;a href=&quot;#41-参数和最小失败测试&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/fw_flashing&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/fw_flashing&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-h&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;输出包含：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fw_flashing:no parameter&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;d:r:p:f:m:v:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;确认 &lt;code&gt;-f&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/var/tmp/fw-test.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/fw_flashing&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/tmp/fw-test.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;输出：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fw_flashing name=/var/tmp/fw-test.bin,states.st_size =5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;read magic failed!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GetVersionInfo error==========fw_flashing error==========&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;说明 &lt;code&gt;-f&lt;/code&gt; 确实接受路径，并要求带固件 Magic/版本头。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4.2 官方包成功刷写&lt;a href=&quot;#42-官方包成功刷写&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;电脑端确认：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dir&lt;/span&gt;&lt;span&gt; fw.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;certutil&lt;/span&gt;&lt;span&gt; -hashfile fw.bin MD5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;路由器获取并校验：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/tmp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/tmp/fw.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/tmp/fw.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fw.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/tmp/fw.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;md5sum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/tmp/fw.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;本次包 MD5：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;de682a3dce2b128cf7edeb8ac5f958a1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/fw_flashing&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/tmp/fw.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;关键输出：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;RunningVerStartAddr:700000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;RunningHeadHighAddr:2300000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;g_ver_towrite=2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;g_upgrade_startaddr=0x2300000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;g_upgrade_endaddr=0x3f00000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;firmware_size=22413312&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;firmware_offset=0x214&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sect_size=0x20000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;WriteVersion head success!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;==========fw_flashing success==================&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;说明程序选择备用高槽、擦除并写入了包体，同时更新了版本头。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4.3 确认当前槽&lt;a href=&quot;#43-确认当前槽&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/proc/cmdline&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/proc/zte/verinfo/versionstates&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/proc/zte/verinfo/softVersion&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/proc/zte/verinfo/othersoftVersion&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;槽位关键字段：&lt;/p&gt;
































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;字段&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;currentverphyaddr&lt;/code&gt;&lt;/td&gt;&lt;td&gt;当前运行物理起始地址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;backverphyaddr&lt;/code&gt;&lt;/td&gt;&lt;td&gt;备用槽物理起始地址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;curverIsBad&lt;/code&gt;&lt;/td&gt;&lt;td&gt;当前槽是否标坏&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;backverIsBad&lt;/code&gt;&lt;/td&gt;&lt;td&gt;备用槽是否标坏&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;curverSerialNumber&lt;/code&gt;&lt;/td&gt;&lt;td&gt;当前记录序号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;othersoftVersion&lt;/code&gt;&lt;/td&gt;&lt;td&gt;备用槽版本记录&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;本次低槽运行时确认：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;currentverphyaddr: 0x00700000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;backverphyaddr:    0x02300000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;另一次从高槽启动时，&lt;code&gt;/proc/cmdline&lt;/code&gt; 尾部出现 &lt;code&gt;0x2300000&lt;/code&gt;。两者一致时，才是较强的槽位证据；不能只看 &lt;code&gt;root=/dev/mtdblock8&lt;/code&gt;。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4.4 已确认的检查方向&lt;a href=&quot;#44-已确认的检查方向&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;从 &lt;code&gt;/bin/fw_flashing&lt;/code&gt; 字符串、符号和运行输出来看，存在：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;read magic failed!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GetVersionInfo&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;check_ver_board&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;invalid vid version!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CheckBootFile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CheckFile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Checkheader&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CspUserMtdRead / Write / Erase&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;flash addr overflow&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uImage&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CRC&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CspSwitchVersion&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;合理的校验链：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;文件大小和可读性。&lt;/li&gt;
&lt;li&gt;Magic、版本和升级头。&lt;/li&gt;
&lt;li&gt;板型、VID、版本关系。&lt;/li&gt;
&lt;li&gt;长度和目标槽范围。&lt;/li&gt;
&lt;li&gt;uImage 头部/数据 CRC，具体分支由版本决定。&lt;/li&gt;
&lt;li&gt;擦除、写入和写后读回。&lt;/li&gt;
&lt;li&gt;写版本头、切换或等待下一次启动选择。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;未找到明确 RSA 公钥验证调用。RSA 可能在 &lt;code&gt;cspd&lt;/code&gt;、Web、BootROM 或其他库中，不能仅凭 &lt;code&gt;fw_flashing&lt;/code&gt; 字符串判断。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;5. 试错部分&lt;a href=&quot;#5-试错部分&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;5.1 Tag 直接写失败&lt;a href=&quot;#51-tag-直接写失败&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;尝试 &lt;code&gt;cat&lt;/code&gt;、&lt;code&gt;mknod&lt;/code&gt;、&lt;code&gt;chmod&lt;/code&gt; 后仍 MD5 不一致。设备没有 &lt;code&gt;mtd_debug&lt;/code&gt;、&lt;code&gt;flash_erase&lt;/code&gt;、&lt;code&gt;nandwrite&lt;/code&gt;，只有 &lt;code&gt;boot_flashing&lt;/code&gt;、&lt;code&gt;fw_flashing&lt;/code&gt;、&lt;code&gt;upgradetest&lt;/code&gt; 等程序；这些程序没有暴露 Tag 写入接口。&lt;/p&gt;&lt;p&gt;最终只能自己编译使用 MTD ioctl 工具（&lt;code&gt;mtd_write_tag&lt;/code&gt;）成功。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5.2 Web 反复失败&lt;a href=&quot;#52-web-反复失败&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;升级准备失败：SessionTimeout&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;上传连接失败&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;net::ERR_CONNECTION_RESET&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;进度 31%、62%、97%、100% 后都见过失败。用小文件先拆分问题，确认大文件主要被 HTTP 路径限制后，停止继续提交 22 MiB 包，转为本地 &lt;code&gt;fw_flashing&lt;/code&gt;。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5.3 &lt;code&gt;boot_flashing&lt;/code&gt; 误用风险&lt;a href=&quot;#53-boot_flashing-误用风险&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/boot_flashing&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/boot_flashing&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-h&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;它要求特定带头的 Boot 文件，并直接涉及 &lt;code&gt;/dev/mtd1&lt;/code&gt;。从 &lt;code&gt;/dev/mtd1&lt;/code&gt; 读出的裸 1 MiB 备份不能直接作为其输入。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5.4 未验证自动回退&lt;a href=&quot;#54-未验证自动回退&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;已确认 &lt;code&gt;currentverphyaddr&lt;/code&gt;、&lt;code&gt;backverphyaddr&lt;/code&gt;、两个 &lt;code&gt;IsBad&lt;/code&gt; 字段，但没有故意刷坏包测试回退。不要为了得到一个“确定答案”而破坏当前可启动槽。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;6. 通用脚本（自行研究使用）&lt;a href=&quot;#6-通用脚本自行研究使用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;6.1 目录&lt;a href=&quot;#61-目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;common-tools/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;README.md&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;zte_type4_config_tool.js&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;enable_telnet_admin.bat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;zte_firmware_analyzer.js&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;fw_slot_status.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;mtd_write_tag_armv7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;https://wwbnc.lanzoub.com/i5JFl40o809g&quot; target=&quot;_blank&quot;&gt;点此下载&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;6.2 Type-4 配置工具&lt;a href=&quot;#62-type-4-配置工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;common-tools/zte_type4_config_tool.js&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;inspect&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;common-tools/zte_type4_config_tool.js&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;decrypt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config.xml&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--profile&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e2631&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;common-tools/zte_type4_config_tool.js&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;encrypt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config.xml&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config-new.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--profile&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e2631&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;common-tools/zte_type4_config_tool.js&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable-telnet&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config-telnet.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--profile&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e2631&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--user&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;admin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--password&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;admin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;其他机型必须显式提供已验证种子：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;common-tools/zte_type4_config_tool.js&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;decrypt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config.xml&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--key-seed&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MODELKeyXXXXXXXX&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--iv-seed&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MODELIvXXXXXXXX&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;6.3 固件分析工具&lt;a href=&quot;#63-固件分析工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;common-tools/zte_firmware_analyzer.js&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firmware.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;common-tools/zte_firmware_analyzer.js&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firmware.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--signature-offset&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0x37fdcc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--signature-size&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;564&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;输出哈希、可打印头部、型号标记、uImage CRC 和指定签名区零字节数。签名区非零不等于签名有效。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;6.4 写 Tag 最小清单&lt;a href=&quot;#64-写-tag-最小清单&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/sys/class/mtd/mtd2/name&lt;/span&gt;&lt;span&gt; 2&amp;gt;&lt;/span&gt;&lt;span&gt;/dev/null&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/sys/class/mtd/mtd2/size&lt;/span&gt;&lt;span&gt; 2&amp;gt;&lt;/span&gt;&lt;span&gt;/dev/null&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/mtd_write_tag&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;mtd_write_tag_armv7&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tag.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.5.7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+x&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/mtd_write_tag&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/tmp/mtd_write_tag&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--yes&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/mtd2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/mtd2&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;/tmp/tag_readback.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;md5sum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag.bin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/tag_readback.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;只有工具报告成功且输入/读回 MD5 一致才继续。任何不一致都应停止并保存日志，不要马上重启；Tag 写入优先使用 2.3.2 的 MTD 工具方案。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>创维盒子ADB动态密码在线计算器</title><link>https://blog.zlion.top/posts/skyworth-adb-web/</link><guid isPermaLink="true">https://blog.zlion.top/posts/skyworth-adb-web/</guid><description>介绍创维盒子ADB动态密码的生成算法，和一个在线计算网页。</description><pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;免责说明&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;本工具及算法仅供技术学习与合法设备调试使用。请勿用于非法破解或侵犯他人设备隐私，使用者需自行承担相关法律责任。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;section&gt;&lt;h2&gt;说明&lt;a href=&quot;#说明&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;创维盒子开启ADB调试时，部分型号会要求输入&lt;strong&gt;动态密码&lt;/strong&gt;，该密码由MAC地址和屏幕显示的随机码共同计算得出。&lt;/li&gt;
&lt;li&gt;本文公开的算法来源于开源项目，并搭建了在线计算页面，方便快速得到结果。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;在线工具地址&lt;a href=&quot;#在线工具地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;🔗 &lt;strong&gt;在线计算页面&lt;/strong&gt;： &lt;a href=&quot;https://skyworth-adb.zlion.top/&quot; target=&quot;_blank&quot;&gt;https://skyworth-adb.zlion.top/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;网页UI借助AI工具生成，算法核心来自开源项目 &lt;a href=&quot;https://github.com/wiver53/skyworth-ADB-&quot; target=&quot;_blank&quot;&gt;wiver53/skyworth-ADB&lt;/a&gt;。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;动态密码算法详解&lt;a href=&quot;#动态密码算法详解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;动态密码的生成共分三步，下文以具体示例说明。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;第一步：拼接原始字符串&lt;a href=&quot;#第一步拼接原始字符串&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;格式：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;JSCMCC_SKYWORTH + [MAC 地址] + [随机码] + tianhuaxin@skyworth.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;假设设备信息如下：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;MAC 地址：&lt;code&gt;A1:B2:C3:D4:E5:F6&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;随机码：&lt;code&gt;123456&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;拼接后的原始字符串为：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;JSCMCC_SKYWORTHA1:B2:C3:D4:E5:F6123456tianhuaxin@skyworth.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;第二步：计算 MD5 哈希&lt;a href=&quot;#第二步计算-md5-哈希&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;对上述完整字符串进行 MD5 运算，得到 32 位十六进制摘要。&lt;/p&gt;&lt;p&gt;例如上一步字符串的 MD5 结果：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;e10adc3949ba59abbe56e057f20f883e&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;以上结果仅为示例，非真实计算结果。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;第三步：计算最终动态密码&lt;a href=&quot;#第三步计算最终动态密码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;将 32 位 MD5 字符串从中间一分为二，分别求和后相乘。&lt;/p&gt;&lt;p&gt;前半段：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;e10adc3949ba59ab&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;后半段：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;be56e057f20f883e&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;将每段中的十六进制字符转换为十进制数字后求和：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;字符 &lt;code&gt;3&lt;/code&gt; → &lt;code&gt;3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;字符 &lt;code&gt;a&lt;/code&gt; → &lt;code&gt;10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;字符 &lt;code&gt;f&lt;/code&gt; → &lt;code&gt;15&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;得到两个总和后，将两者相乘，乘积即为最终的动态密码。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;本地计算&lt;a href=&quot;#本地计算&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;如果不想使用在线页面，也可以通过命令行计算。以下示例适用于 Linux/macOS：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 1. 拼接字符串，请替换为实际的 MAC 地址和随机码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;STR&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;JSCMCC_SKYWORTHA1:B2:C3:D4:E5:F6123456tianhuaxin@skyworth.com&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 2. 计算 MD5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;MD5&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;$(&lt;/span&gt;&lt;/span&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-n&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$STR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;md5sum&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;cut&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt;&apos; &apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-f1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 3. 分割并求和相乘&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;python3&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;md5=&apos;&lt;/span&gt;&lt;span&gt;$MD5&lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;half=len(md5)//2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;s1=sum(int(c,16) for c in md5[:half])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;s2=sum(int(c,16) for c in md5[half:])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;print(s1*s2)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;常见问题&lt;a href=&quot;#常见问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;Q：为什么我的盒子输入密码后提示错误？&lt;a href=&quot;#q为什么我的盒子输入密码后提示错误&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;请检查 MAC 地址和随机码是否与屏幕显示完全一致，尤其注意：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;MAC 地址的大小写&lt;/li&gt;
&lt;li&gt;MAC 地址中的冒号格式&lt;/li&gt;
&lt;li&gt;随机码是否为最新显示的 6 位数字&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Q：所有创维盒子都适用吗？&lt;a href=&quot;#q所有创维盒子都适用吗&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;该算法主要适用于国内运营商定制版，例如江苏移动创维盒子。其他型号可能存在差异，请以实际测试结果为准。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>E2633刷入中兴官方AX3000 版本（TTL篇）</title><link>https://blog.zlion.top/posts/e2633-research-ttl/</link><guid isPermaLink="true">https://blog.zlion.top/posts/e2633-research-ttl/</guid><description>记录 E2633通过 TTL 进入 U-Boot 后，使用 Nand Write 官方巡天 AX3000 版本固件的流程。</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;免责声明与使用约定&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;
&lt;li&gt;固件刷写、分区读写、Telnet、TTL、U-Boot 和 MTD 操作均可能造成数据丢失、设备变砖、网络中断、保修失效或其他不可预期后果。&lt;strong&gt;请对自己的设备和全部操作结果负责并自行承担风险。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;教程中涉及的固件、商标、产品名称及第三方程序，其权利归各自权利人所有。如本文内容存在侵权、错误引用或其他权益问题，请联系作者核实；确认后将及时删除或修正相关内容。&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;
&lt;section&gt;&lt;h2&gt;说明&lt;a href=&quot;#说明&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;由于是全分区整片写入，刷完后默认 WiFi 名称会变为 &lt;code&gt;ZTE-Q2QHKu&lt;/code&gt;，密码为 &lt;code&gt;bhdh3954&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;所有内容仅适用于 256 MB RAM ➕ 128 MB ROM 版本。&lt;/li&gt;
&lt;li&gt;本教程会覆盖你的所有分区，无法找回，若想保留，请先参考&lt;a href=&quot;https://zlion.top/posts/e2631-research-telnet/#2-%E6%9C%AC%E6%9C%BA%E4%BF%A1%E6%81%AF%E4%BC%98%E5%8C%96&quot; target=&quot;_blank&quot;&gt;Telnet篇&lt;/a&gt;备份两个关键分区：tag、wifi。通过Telnet还原这两个分区后再重置一遍，所有信息就变成贴纸上的了，并且默认无密码。&lt;/li&gt;
&lt;li&gt;若在TFTP传输中失败，可能是传输速度太慢，超出了MobaXterm未注册版本的开启时长限制，此问题自行解决。&lt;/li&gt;
&lt;li&gt;鉴于部分设备有坏块的情况，会在写入128MB镜像时报错导致变砖，现在更新一下镜像，原128MB的镜像中末尾有大约13MB都是无效数据（FF），我裁切了10MB，现在镜像只有118MB了，最多容许你的设备有80个坏块（已经非常多了，正常机子几乎不可能有这么多坏块，可以在u-boot中输入nand bad 查看）&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;准备工作&lt;a href=&quot;#准备工作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;5元的USB 转 TTL 模块 CH340G 一个，最好带杜邦线，方便连接。&lt;/li&gt;
&lt;li&gt;由编程器固件去掉 OOB 、并裁切10MB空间预留给坏块写入跳过的 &lt;a href=&quot;https://wwbnc.lanzoub.com/iBlN541u3rxe&quot; target=&quot;_blank&quot;&gt;118 MB 镜像&lt;/a&gt;。编程器固件来自 &lt;a href=&quot;https://www.right.com.cn/forum/thread-8472425-1-1.html&quot; target=&quot;_blank&quot;&gt;hzw521&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;MobaXterm 等串口连接工具。&lt;/li&gt;
&lt;li&gt;TFTP 服务工具（MobaXterm自带）。&lt;/li&gt;
&lt;li&gt;网线一根。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;操作步骤&lt;a href=&quot;#操作步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 拆机&lt;a href=&quot;#1-拆机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 连接 TTL 和网线&lt;a href=&quot;#2-连接-ttl-和网线&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;使用网线连接电脑和路由器，参考下图连接 TTL：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;TTL 接线参考&quot; loading=&quot;lazy&quot; width=&quot;1095&quot; height=&quot;571&quot; src=&quot;/_astro/TTL.DCdDpJwJ_dKU7D.webp&quot; /&gt;&lt;figcaption&gt;TTL 接线参考&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 进入 U-Boot&lt;a href=&quot;#3-进入-u-boot&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;连接好后，使用 MobaXterm 软件进行串口连接，波特率设置为 &lt;code&gt;115200&lt;/code&gt;：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;设置配置参考&quot; loading=&quot;lazy&quot; width=&quot;1433&quot; height=&quot;365&quot; src=&quot;/_astro/MXSetting.Ci8N9ptO_Z2m5lXJ.webp&quot; /&gt;&lt;figcaption&gt;设置配置参考&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;路由器上电后马上按 &lt;code&gt;1&lt;/code&gt; 中断系统启动，输入密码进入 U-Boot（密码来源见&lt;a href=&quot;https://voz.vn/t/unlock-mesh-zte-e1600-2603-2615-thanh-phien-ban-quoc-te.903294/&quot; target=&quot;_blank&quot;&gt;论坛&lt;/a&gt;）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;5cE080@fyBD&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 配置电脑网络和 TFTP&lt;a href=&quot;#4-配置电脑网络和-tftp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;关闭防火墙，将电脑 IPv4 改为手动配置：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;IP 地址：&lt;code&gt;192.168.10.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;子网掩码：&lt;code&gt;255.255.255.0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;设置固件存放目录。此时先不要开启 TFTP 服务。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;TFTP 目录配置参考&quot; loading=&quot;lazy&quot; width=&quot;1363&quot; height=&quot;1016&quot; src=&quot;/_astro/TFTP.Dore2Zdg_8bPMI.webp&quot; /&gt;&lt;figcaption&gt;TFTP 目录配置参考&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5. 在串口终端设置 IP&lt;a href=&quot;#5-在串口终端设置-ip&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 u-boot 串口终端中输入：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;setenv&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ipaddr&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.10.2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;setenv&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;serverip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.10.1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ping&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.10.1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;看到类似下面的提示即表示通信正常：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;host 192.168.10.1 is alive&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;此时再启动前面配置好的 TFTP 服务。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;6. 通过 TFTP 传输并刷写固件&lt;a href=&quot;#6-通过-tftp-传输并刷写固件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在串口终端中通过 TFTP 将固件传到 RAM：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0x43000000&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e2631_no_oob_trim_tail_ff_10MiB.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;传输完成后，确认下载大小必须为：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Bytes transferred = 123731968 (7600000 hex)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;确认无误后，擦除整片 NAND：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nand&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;erase&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0x0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0x8000000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;应当看到以下输出&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;NAND erase: device 0 whole chip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Erasing at 0x7fe0000 -- 100% complete.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;OK&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然后一次性写入：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nand&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;write&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0x43000000&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0x0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0x7600000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;应当看到以下输出&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;NAND write: device 0 offset 0x0, size 0x7600000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;123731968 bytes written: OK&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;7. 重启&lt;a href=&quot;#7-重启&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;刷写完成后执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;reset&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;此时还可以在串口终端中看到系统启动的日志：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Boot SPI NAND&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;start read bootheader&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;start read secondboot&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;non secure boot&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jump&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;enter bootloader...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;crpm init enter&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;crpm init done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ddr init enter, rate is 1333 Mbps&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;5ddr init done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;serial init start&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;serial init done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SPI NAND&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;non secure uboot&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;backup header!!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jump&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.............&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;最后停在&lt;code&gt;Starting kernel ...&lt;/code&gt;代表系统已经成功启动。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>联想小新 Pro16 2021 AMD 黑苹果安装教程</title><link>https://blog.zlion.top/posts/lenovo-pro16-2021-amd-hackintosh/</link><guid isPermaLink="true">https://blog.zlion.top/posts/lenovo-pro16-2021-amd-hackintosh/</guid><description>面向联想小新 Pro16 2021 AMD 版的黑苹果安装、EFI 调整和 OpenCore 启动项配置教程。</description><pubDate>Fri, 02 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;本文档面向联想小新 Pro16 2021 AMD 版用户，整理黑苹果安装、EFI 调整与 OpenCore 启动项配置流程。
&lt;strong&gt;适用机型：&lt;/strong&gt; 联想小新 Pro16 2021 AMD（5600H / 5800H）
&lt;strong&gt;适用系统：&lt;/strong&gt; macOS Big Sur / Monterey / Ventura 13.x（取决于镜像与 EFI 支持）&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;section&gt;&lt;h2&gt;1. 准备工作&lt;a href=&quot;#1-准备工作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;重要&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;开始前请先确认硬盘型号不在不兼容列表内，并备份 Windows 与重要数据。调整 ESP 分区和抹盘都有数据风险。&lt;/p&gt;&lt;p&gt;硬盘兼容列表参考：&lt;a href=&quot;https://macoshome.com/hackintosh/hcourse/2476.html&quot; target=&quot;_blank&quot;&gt;https://macoshome.com/hackintosh/hcourse/2476.html&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;1.1 下载所需文件&lt;a href=&quot;#11-下载所需文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;文件&lt;/th&gt;&lt;th&gt;地址&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;EFI&lt;/td&gt;&lt;td&gt;&lt;code&gt;https://wwbnc.lanzoub.com/b007up95be&lt;/code&gt;，密码：&lt;code&gt;zlion&lt;/code&gt;&lt;/td&gt;&lt;td&gt;5600H 与 5800H 使用不同 EFI，请按机型替换&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;macOS 镜像&lt;/td&gt;&lt;td&gt;&lt;code&gt;https://cloud.189.cn/t/BbyEFnE7FBJb&lt;/code&gt;，访问码：&lt;code&gt;uzx8&lt;/code&gt;&lt;/td&gt;&lt;td&gt;安装版本取决于镜像&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DiskGenius&lt;/td&gt;&lt;td&gt;&lt;code&gt;https://www.diskgenius.cn/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;用于检查硬盘、调整 ESP 分区、复制 EFI&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;1.2 检查 BIOS&lt;a href=&quot;#12-检查-bios&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;开机按 &lt;code&gt;F2&lt;/code&gt; 进入 BIOS。&lt;/li&gt;
&lt;li&gt;关闭「快速启动」和「安全启动」。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;1.3 调整 ESP 与 macOS 分区&lt;a href=&quot;#13-调整-esp-与-macos-分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;建议&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Windows 默认 ESP 分区通常只有 100 MB。如果无法直接扩容，可进入微 PE 后使用 DiskGenius 调整分区。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;如果 ESP 小于 200 MB，可从 C 盘左侧腾出约 100 MB，再合并到 ESP 分区。&lt;/li&gt;
&lt;li&gt;单独划分一个用于安装 macOS 的分区，建议 &lt;code&gt;60 GB&lt;/code&gt; 以上；示例环境分配约 &lt;code&gt;160 GB&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;图 2：ESP调整&quot; loading=&quot;lazy&quot; width=&quot;1270&quot; height=&quot;897&quot; src=&quot;/_astro/lenovo-pro16-2021-amd-hackintosh-figure-02.iTp5Z0i2_Z14COP0.webp&quot; /&gt;&lt;figcaption&gt;图 2：ESP调整&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;2. 制作启动 U 盘&lt;a href=&quot;#2-制作启动-u-盘&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;2.1 写入镜像&lt;a href=&quot;#21-写入镜像&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;准备一个大于 &lt;code&gt;16 GB&lt;/code&gt; 的 U 盘，使用 balenaEtcher 写入 macOS 镜像。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;打开 balenaEtcher。&lt;/li&gt;
&lt;li&gt;选择下载好的 macOS 镜像。&lt;/li&gt;
&lt;li&gt;选择目标 U 盘。&lt;/li&gt;
&lt;li&gt;点击 &lt;code&gt;Flash&lt;/code&gt;，等待出现 &lt;code&gt;Complete&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2.2 处理 EFI 文件&lt;a href=&quot;#22-处理-efi-文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;使用 OCAT 打开 &lt;code&gt;EFI/OC/config.plist&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;取消勾选 &lt;code&gt;Nootedred.kext&lt;/code&gt;，保存配置。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;图 3：取消勾选 Nootedred.kext&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;642&quot; src=&quot;/_astro/lenovo-pro16-2021-amd-hackintosh-figure-03.vrx575vJ_ZGH9uS.webp&quot; /&gt;&lt;figcaption&gt;图 3：取消勾选 Nootedred.kext&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;打开 DiskGenius，选中 U 盘的 EFI 分区。&lt;/li&gt;
&lt;li&gt;将调整后的 EFI 文件夹完整复制进去，最终路径应类似：&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;EFI(X:)/EFI/OC&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;3. 开始安装 macOS&lt;a href=&quot;#3-开始安装-macos&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;警告&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;抹掉分区会清空目标分区数据。请确认选择的是为 macOS 单独划出的分区，不要误选 Windows 分区。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;插入启动 U 盘，开机按 &lt;code&gt;F12&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;选择 USB 启动项。&lt;/li&gt;
&lt;li&gt;在 OpenCore 菜单中选择 &lt;code&gt;Install macOS Big Sur&lt;/code&gt; 并按 &lt;code&gt;Enter&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;等待代码加载完成，进入 macOS 实用工具界面。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;图 4：OpenCore 启动菜单&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;684&quot; src=&quot;/_astro/lenovo-pro16-2021-amd-hackintosh-figure-04.Bud3wrYV_Z1JBJoc.webp&quot; /&gt;&lt;figcaption&gt;图 4：OpenCore 启动菜单&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;图 5：代码加载界面&quot; loading=&quot;lazy&quot; width=&quot;1270&quot; height=&quot;951&quot; src=&quot;/_astro/lenovo-pro16-2021-amd-hackintosh-figure-05.C7MThSAB_Al6oL.webp&quot; /&gt;&lt;figcaption&gt;图 5：代码加载界面&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;打开「磁盘工具」。&lt;/li&gt;
&lt;li&gt;选中之前划出的 macOS 分区，点击「抹掉」。&lt;/li&gt;
&lt;li&gt;格式选择 &lt;code&gt;APFS&lt;/code&gt;，完成后返回实用工具界面。&lt;/li&gt;
&lt;li&gt;选择「安装 macOS」，按提示继续安装。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;图 6：macOS 实用工具&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;884&quot; src=&quot;/_astro/lenovo-pro16-2021-amd-hackintosh-figure-06.ChEifH-g_VNxKc.webp&quot; /&gt;&lt;figcaption&gt;图 6：macOS 实用工具&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;提示&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;安装过程中可能会重启 1 到 2 次。如果重启后回到 Windows，请再次按 &lt;code&gt;F12&lt;/code&gt; 进入 U 盘启动项，并选择 &lt;code&gt;Installer&lt;/code&gt; 继续安装。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;4. 调整 EFI 文件&lt;a href=&quot;#4-调整-efi-文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;完成安装后，需要调整 EFI，避免每次启动都显示冗长代码，并为本机生成独立序列号。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;打开最初未修改的 EFI 文件。&lt;/li&gt;
&lt;li&gt;使用 OCAT 打开本机适配 EFI：&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;联想小新 Pro16 2021 5600H/EFI/OC/config.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;找到 &lt;code&gt;NVRAM&lt;/code&gt; 第三行，双击编辑并删除对应启动参数-v。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;去掉启动界面跑码参数&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1513&quot; src=&quot;/_astro/lenovo-pro16-2021-amd-hackintosh-figure-11.DKd-EKlB_Z2wmGup.webp&quot; /&gt;&lt;figcaption&gt;去掉启动界面跑码参数&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;图 7：正常开机无跑码&quot; loading=&quot;lazy&quot; width=&quot;1270&quot; height=&quot;951&quot; src=&quot;/_astro/lenovo-pro16-2021-amd-hackintosh-figure-07.BKeZVjFF_Z245Qgi.webp&quot; /&gt;&lt;figcaption&gt;图 7：正常开机无跑码&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;生成并写入本机专属序列号，避免多人共用同一套序列号。&lt;/li&gt;
&lt;li&gt;保存修改后的最终 EFI。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;图 8：OCAT 调整 序列号&quot; loading=&quot;lazy&quot; width=&quot;1266&quot; height=&quot;750&quot; src=&quot;/_astro/lenovo-pro16-2021-amd-hackintosh-figure-08.BanbKPJd_ZLkK8Q.webp&quot; /&gt;&lt;figcaption&gt;图 8：OCAT 调整 序列号&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;5. 设置 OpenCore 启动项&lt;a href=&quot;#5-设置-opencore-启动项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;设置完成后，就不需要每次插 U 盘进入 macOS。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;回到 Windows。&lt;/li&gt;
&lt;li&gt;使用 DiskGenius 打开硬盘 ESP 分区。&lt;/li&gt;
&lt;li&gt;将最终 EFI 中的 &lt;code&gt;OC&lt;/code&gt; 文件夹完整复制到：&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ESP/EFI/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;复制后，&lt;code&gt;OC&lt;/code&gt; 应与原本的 &lt;code&gt;Microsoft&lt;/code&gt;、&lt;code&gt;Boot&lt;/code&gt; 文件夹并列。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;图 9：硬盘 ESP 中的 OC 文件夹&quot; loading=&quot;lazy&quot; width=&quot;1266&quot; height=&quot;893&quot; src=&quot;/_astro/lenovo-pro16-2021-amd-hackintosh-figure-09.Sfb2YCzo_Z1rBuDy.webp&quot; /&gt;&lt;figcaption&gt;图 9：硬盘 ESP 中的 OC 文件夹&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;在 DiskGenius 工具栏选择「设置 UEFI BIOS 启动项」。&lt;/li&gt;
&lt;li&gt;点击「添加」，按以下路径选中 &lt;code&gt;OpenCore.efi&lt;/code&gt;：&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ESP/EFI/OC/OpenCore.efi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;保存启动项。&lt;/li&gt;
&lt;li&gt;将新增的 OpenCore 启动项移动到最上方，作为默认启动项。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;图 10：添加 OpenCore UEFI 启动项&quot; loading=&quot;lazy&quot; width=&quot;1268&quot; height=&quot;905&quot; src=&quot;/_astro/lenovo-pro16-2021-amd-hackintosh-figure-10.BGRVjO78_1KauBF.webp&quot; /&gt;&lt;figcaption&gt;图 10：添加 OpenCore UEFI 启动项&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;建议&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;日常默认进入 macOS；需要进入 Windows 时，开机按 &lt;code&gt;F12&lt;/code&gt; 手动选择 Windows 启动项。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;6. 补充注意事项&lt;a href=&quot;#6-补充注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;2021 款小新 Pro16 存在网卡限制：自带有线网卡无法驱动，不能直插网线。&lt;/li&gt;
&lt;li&gt;可通过 USB 网卡或手机 USB 网络共享上网，iPhone 通常无需额外驱动。&lt;/li&gt;
&lt;li&gt;不要在 macOS 内直接在线更新系统大版本，否则可能导致无法开机或引导失效。&lt;/li&gt;
&lt;li&gt;如需交流，可加入 QQ 群：&lt;a href=&quot;https://qm.qq.com/q/y1tjknEfcG&quot; target=&quot;_blank&quot;&gt;https://qm.qq.com/q/y1tjknEfcG&lt;/a&gt;。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;7. 故障排查&lt;a href=&quot;#7-故障排查&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;问题&lt;/th&gt;&lt;th&gt;处理方式&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;OpenCore 菜单一闪进入 Windows&lt;/td&gt;&lt;td&gt;开机后尽快用方向键选择 macOS 安装项，或重新检查 U 盘启动顺序&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;安装中途重启回 Windows&lt;/td&gt;&lt;td&gt;再次按 &lt;code&gt;F12&lt;/code&gt; 进入 U 盘，选择 &lt;code&gt;Installer&lt;/code&gt; 继续安装&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;找不到 OpenCore 启动项&lt;/td&gt;&lt;td&gt;检查 &lt;code&gt;ESP/EFI/OC/OpenCore.efi&lt;/code&gt; 是否存在，并重新添加 UEFI 启动项&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;macOS 无法联网&lt;/td&gt;&lt;td&gt;使用 USB 网卡或手机 USB 网络共享&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;更新后无法启动&lt;/td&gt;&lt;td&gt;不建议在线升级大版本；恢复原 EFI 或重新制作安装 U 盘排查&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;8. 视频演示&lt;a href=&quot;#8-视频演示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;hr /&gt;&lt;/section&gt;</content:encoded></item></channel></rss>