Guillain-RDCDE/HAP-Revival
GitHub: Guillain-RDCDE/HAP-Revival
为已停产的 Sony HAP-Z1ES / HAP-S1 高保真音频播放器提供现代替代软件工具并逆向重建其操作系统生态的开源项目。
Stars: 0 | Forks: 0
# 🎵 HAP-Revival
[](#-我们目前的进展)
[](#-支持的设备)
[](LICENSE)
[](LICENSE-docs)
**让 Sony HAP-Z1ES 和 HAP-S1 焕发新生 —— 一切为了音乐,而非折腾底层设施。**
这台硬件是 2014 年发烧友级的杰作,其测量指标和音质至今依然出色。然而
软件却荒废了:Sony 发布了最后一个固件后便撒手不管,再也没有回过头。HAP-Revival
重建了它被遗弃的部分 —— 提供你今天就能使用的组件 —— 并对其他部分进行逆向工程,
旨在为其打造一个现代化、开放的 OS。
## ⬇️ 你现在就能使用的功能
| 工具 | 功能 | 平台 |
|---|---|---|
| **🎵 HAP Sync** | 一键将音乐复制到 HAP —— 自动查找设备,记住你的文件夹,跳过 HAP 无法播放的文件 | Windows —— [**下载 `.exe`**](https://github.com/Guillain-RDCDE/HAP-Revival/releases/latest/download/HapSync.exe) |
| **🌐 Web UI** | 浏览器遥控器:正在播放、播放/暂停/快进、声音设置、封面艺术 | 任意浏览器 |
| **📱 控制应用** | 将 Web UI 安装到手机主屏幕 —— 独立图标、全屏、无需 App Store | iOS · iPadOS · Android —— [指南](docs/13-control-app.md) |
| **📚 媒体库浏览与审计** | 离线浏览并健康检查磁盘上的目录(格式、Hi-Res 混合、重复项、缺失封面等) | 任意 OS |
| **📟 Python 客户端 / CLI** | 可脚本化控制每一个映射的 API 方法,仅需标准库 | 任意 OS |
每个界面均支持 **6 种语言** (EN · FR · JA · DE · ES · IT) 且可实时切换。
*计划中:* 带有 Hi-Res 流媒体播放 (Tidal · Qobuz · Roon · AirPlay) 的自定义固件以及原生 iOS 应用 —— 详见[路线图](#-roadmap)。
### 🎵 HAP Sync —— 终于让音乐传输到 HAP 变得轻松无比

Sony 唯一支持的传输途径是一个 **SMBv1** 共享,而现代 Windows 和 macOS 会对此进行阻挠。
HAP Sync 完美解决了这个问题 —— 单个独立的 `.exe`,无需安装:
- **在网络上自动检测 HAP** —— 无需费力寻找 IP。
- **直接使用 SMB1 通信** (通过 `pysmb`) —— 你永远无需开启 Windows 不安全的 SMB1 客户端。
- **两个文件夹 → 双共享** (内部磁盘 + USB),文件夹设置在不同运行间会被记住。
- **跳过垃圾文件** (`Thumbs.db`, `.DS_Store`, `.ffs_tmp`, AppleDouble) 避免其成为幽灵音轨,并跳过 HAP 无法播放的格式。
- **增量且快速** —— 仅复制更改过的文件,远程索引已缓存,支持 WoL 唤醒休眠的 HAP,并在传输后自动重建索引。
- **修复 Windows 访问** 按钮可一键修复那些总是被 Windows 更新破坏的具体设置。
```
# 从源码运行 (Python 3.10+) | # …或者构建独立的 .exe (无需 Python 即可运行)
pip install pysmb | powershell -ExecutionPolicy Bypass -File tools/build_gui.ps1
python tools/hap_gui.py |
```
更喜欢使用脚本?同一引擎也作为 CLI 提供 —— 见 [`tools/hap_sync.py`](tools/hap_sync.py) 和[音乐同步指南](docs/12-music-sync.md)。 · 首次启动 `.exe` 时:SmartScreen → *更多信息 → 仍要运行* (尚未进行代码签名)。关于 SMB 混乱问题的背景:[docs/04-smb.md](docs/04-smb.md)。
## ▶️ 5 分钟试用 —— 零风险
你需要局域网内有一台 HAP-Z1ES 或 HAP-S1 以及 Python 3.10+。 **没有 HAP 设备?请使用内置的模拟设备。**
```
git clone https://github.com/Guillain-RDCDE/HAP-Revival.git && cd HAP-Revival
python tools/discover.py # find your HAP automatically (SSDP)
python tools/webui.py
# web UI → http://localhost:8080
python tools/hap_client.py now-playing # or the CLI
python tools/webui.py --demo # no hardware: drive the web UI off a fake HAP
```
**此 UI 中的任何操作都不会损坏设备。** 读取是安全的,播放有界限限制,进入待机前会进行确认。整个客户端是一个仅依赖标准库的单一文件 —— 一个下午就能读懂。
## 🎼 我们的初衷
把一份 24/96 FLAC 放进 HAP-Z1ES,坐下来,整个房间的氛围都会改变。乐器周围有一种静谧感;大提琴有重量感,人声有血有肉,你能听到录音所在的空间感。这正是发烧级音源硬件 *应该* 做到的 —— 而这也是大多数现代流媒体播放器,无论多么智能,依然做不到的。
HAP-Z1ES (2014) 通过 Sony 的 "ES" 工程师打造的一套经久耐用的组件实现了这一点:双
Burr-Brown **PCM1795** DAC,Analog Devices **ADSP-21488 SHARC** DSP,时钟域内的定制 Sony **FPGA**,隔离的线性电源,以及 14 公斤的机箱。十年过去了,它的测量指标和
音质依然出类拔萃。 **未能经得起时间考验的是软件:**
- 传输依然依赖 **SMBv1** (在现代 macOS 上已损坏,Windows 中默认关闭),
- Spotify **仅支持标准分辨率** —— 在专为 Hi-Res 设计的设备上,
- **没有 Tidal、Qobuz、Roon 或 AirPlay 2** —— 自 2016 年以来再无新增,
- 自 2022 年以来未再更新的 iOS 遥控应用,可能随时从 App Store 消失,
- **Linux 3.0.35** 内核以及 OpenWrt 时代的 userland。
这台硬件值得更好的对待。这就是为其提供支持的开放项目。
## 📍 我们目前的进展
**准 Alpha 阶段 —— 专注于研究与逆向工程,并且坦白说,这是一个披着软件项目外衣的音乐项目。** 本仓库中的所有内容都是网络被动且只读的;**这里没有任何东西会使你的设备变砖。**
- ✅ 映射了网络 API (端口 60200 上的 ScalarWebAPI) 并实时验证了约 30 个方法。
- ✅ 反编译了 Sony 的 `HDDAudioRemote` Android 应用 —— 这是该客户端的首次公开反编译。
- ✅ 读取了内部磁盘:它上面 **没有 OS** —— 只有一个 SQLite 目录库 + 你的音乐。完整 schema 已掌握。
- ✅ 发布了上述可用的工具 (Web UI, CLI, HAP Sync, 媒体库浏览/审计, 演示模式)。
- ⏳ 正在攻克 **UART console** (i.MX6 UART1, `ttymxc0 @ 115200`) 以获取 root shell + NAND 转储 —— 固件 19404R 仅限 OTA,因此 OS 必须从设备中转储,而无法下载。
### 🗺 路线图
| 阶段 | 目标 | 设备风险 |
|---|---|---|
| **1 — 逆向工程** *(当前)* | 反编译,读取磁盘,阅读 Sony 的 GPL 内核源码,定位 UART | 无 |
| **2 — 控制应用** | 基于现有 API 的现代 Web / iOS 应用,无需更改固件 | 无 |
| **3 — Root shell** | UART console → shell → 使用 `dd` 转储 NAND 作为恢复快照 | 低 (需打开机箱) |
| **4 — 自定义 userland** | 保留 Sony 的内核 + 音频驱动,将播放 daemon 替换为 MPD + 流媒体桥接 | 需在经过测试的恢复路径下进行 |
| **5 — 现代 OS** | 尽可能采用主线内核,全新的控制平面,我们自己的 API | 仅限自愿参与 |
模拟音频链路 (FPGA → SHARC → PCM1795) 是这套硬件的核心。**我们将毫不动摇地保留它** —— 每一个阶段都会让其保持原样。
## 🎛 支持的设备
| 设备 | 角色 | 备注 |
|---|---|---|
| Sony **HAP-Z1ES** | 主要 | 纯音源播放器,纯净的模拟输出,无内置放大器 |
| Sony **HAP-S1** | 次要 | 相同的 SoC 和软件栈,增加了集成放大器 |
相同的 i.MX6 SoC,相同的固件镜像,相同的协议 —— 在一台设备上的工作成果可以直接转移到另一台上。
## 📖 文档
完整的研究资料位于 [`docs/`](docs/)。首先阅读 **[概述](docs/00-overview.md)** 以一页内容了解项目,或者如果你是新手,请阅读 [**从这里开始**](docs/START-HERE.md)。
完整文档索引(硬件、API、磁盘、固件、UART、音频路径……)
| | | | |
|---|---|---|---|
| [硬件](docs/01-hardware.md) | [软件栈](docs/02-software-stack.md) | [网络 API](docs/03-network-api.md) | [SMB 共享](docs/04-smb.md) |
| [诊断模式](docs/05-diag-modes.md) | [HDD 更换](docs/06-hdd-swap.md) | [固件](docs/07-firmware.md) | [前人工作](docs/08-prior-art.md) |
| [磁盘布局](docs/09-disk-layout.md) | [UART console](docs/10-uart-console.md) | [音频路径](docs/11-audio-path.md) | [音乐同步](docs/12-music-sync.md) |
| [控制应用](docs/13-control-app.md) | [NAND 提取](docs/14-nand-extract.md) | [Forza ioctl 参考](docs/15-forza-ioctl.md) | |
主动侦察:[`research/`](research/) · 工具:[`tools/`](tools/) · API 规范:[`api-spec/`](api-spec/)。
## ⚖️ 许可证与免责声明
**代码** ([`tools/`](tools/), 未来的 daemon): [MIT](LICENSE). · **文档** (其他所有内容): [CC-BY-SA 4.0](LICENSE-docs). 这种拆分既保证了代码的可重用性,又保持了辛辛苦苦收集的研究资料的开放和署名。
无论如何,HAP-Z1ES 在 2026 年都将过保修期。打开机箱、探测 UART 或刷入自定义固件 *可能* 会损坏你的设备。这里的一切都是原样提供的,没有任何担保 —— **你需要对自己的硬件负责。**
## 🙏 致谢
[danielrweber/HAPxFer](https://github.com/danielrweber/HAPxFer) (SMB 参考) · [frazei's gist](https://gist.github.com/frazei/09d69242a8beed0cf0a1c193a45a650a) (首个公开的 API 文档) · [rytilahti/python-songpal](https://github.com/rytilahti/python-songpal) (协议表亲) · **日本发烧友社区** (emuzu, briareos, saionjihouse,以及 kakaku.com 的常客) 感谢他们十年来提供的无人能及的 HDD 更换文档 —— 本当にありがとうございます · **Sony 工程团队** 感谢他们出色的 2014 年硬件 *以及* 发布 GPL 代码包使这一切成为可能。 · 还有 **你**,如果你做出了贡献 —— 尤其是如果你真的在用其中一台设备 *聆听* 音乐。
标签:Python, TCP SYN 扫描, Web UI, 云资产清单, 同步工具, 无后门, 跨平台, 逆向工具, 逆向工程, 音频硬件