Skip to content

Guillain-RDCDE/HAP-Revival

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

78 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

HAP Revival β€” keeping the Sony HAP-Z1ES & HAP-S1 alive

🎡 HAP-Revival

The DACs still sing. The software died in January 2021. HAP-Revival is the second half of the story Sony stopped telling.

status devices license code license docs

Keeping the Sony HAP-Z1ES and HAP-S1 alive β€” for the music, not the plumbing.

The hardware is a 2014 audiophile masterpiece that still measures and sounds superb. The software rotted: Sony shipped one last firmware, walked away, and never looked back. HAP-Revival rebuilds the parts it abandoned β€” one piece you can use today β€” and reverse-engineers the rest toward a modern, open OS.

🟒 New here, or not a programmer? β†’ Start Here β€” the 5-minute friendly guide What this machine is, what you can do today, and how deep you want to go. No jargon. The rest of this page is the technical side.


⬇️ What you can use today

Tool What it does Platform
🎡 HAP Sync Copy music to the HAP in one click β€” auto-finds the device, remembers your folders, skips what the HAP can't play Windows β€” download .exe
🌐 Web UI Browser remote: now-playing, play / pause / seek, sound settings, cover art Any browser
πŸ“± Control app The web UI installed to your phone's home screen β€” own icon, full-screen, no App Store iOS Β· iPadOS Β· Android β€” guide
πŸ“š Library browser & audit Browse and health-check the on-disk catalog offline (formats, hi-res mix, duplicates, missing art) Any OS
πŸ“Ÿ Python client / CLI Scriptable control of every mapped API method, stdlib-only Any OS

Every interface ships in 6 languages (EN Β· FR Β· JA Β· DE Β· ES Β· IT) and switches live. Planned: custom firmware with hi-res streaming (Tidal Β· Qobuz Β· Roon Β· AirPlay) and a native iOS app β€” see the roadmap.

🎡 HAP Sync β€” getting music onto the HAP, finally painless

HAP Sync: the HAP auto-detected, two PC folders mapped to the internal and external shares, scanning a library before transfer

Sony's only supported transfer path is an SMBv1 share that modern Windows and macOS fight you over. HAP Sync does it properly β€” one self-contained .exe, no install:

  • Auto-detects the HAP on your network β€” no IP to hunt down.
  • Speaks SMB1 directly (via pysmb) β€” you never enable Windows' insecure SMB1 client.
  • Two folders β†’ both shares (internal disk + USB), folders remembered between runs.
  • Skips the junk (Thumbs.db, .DS_Store, .ffs_tmp, AppleDouble) that becomes ghost tracks, and formats the HAP can't play.
  • Incremental & fast β€” only changed files, remote index cached, WoL to wake a sleeping HAP, auto-reindex after.
  • Fix Windows access button repairs the exact settings Windows updates keep breaking, in one click.
# Run from source (Python 3.10+)         |  # …or build the standalone .exe (no Python to run it)
pip install pysmb                        |  powershell -ExecutionPolicy Bypass -File tools/build_gui.ps1
python tools/hap_gui.py                  |

Prefer scripting it? The same engine ships as a CLI β€” see tools/hap_sync.py and the music-sync guide. Β· First .exe launch: SmartScreen β†’ More info β†’ Run anyway (not code-signed yet). Background on the SMB mess: docs/04-smb.md.


▢️ Try it in 5 minutes β€” zero risk

You need a HAP-Z1ES or HAP-S1 on your LAN and Python 3.10+. No HAP? Use the built-in mock device.

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 <hap-ip>           # web UI β†’ http://localhost:8080
python tools/hap_client.py <hap-ip> now-playing   # or the CLI

python tools/webui.py --demo             # no hardware: drive the web UI off a fake HAP

Nothing in this UI can damage the device. Reads are pure, playback is bounded, standby confirms before sending. The whole client is one stdlib-only file β€” readable in an afternoon.


🎼 Why we're doing this

Put a 24/96 FLAC on a HAP-Z1ES, sit down, and the room changes. There's a stillness around the instruments; cellos have weight, voices have a body, you can hear the space the recording was made in. This is what audiophile source hardware is supposed to do β€” and what most modern streamers, however clever, still don't.

The HAP-Z1ES (2014) does it with a chain Sony's "ES" engineers built to last: dual Burr-Brown PCM1795 DACs, an Analog Devices ADSP-21488 SHARC DSP, a custom Sony FPGA on the clock domain, an isolated linear PSU, a 14 kg chassis. A decade on, it still measures and sounds outstanding. What didn't last is the software:

  • still SMBv1 for transfers (broken on modern macOS, off by default on Windows),
  • Spotify only in standard resolution β€” on a deck designed for hi-res,
  • no Tidal, Qobuz, Roon, or AirPlay 2 β€” nothing added since 2016,
  • an iOS remote untouched since 2022 that may vanish from the App Store any day,
  • a Linux 3.0.35 kernel with OpenWrt-era userland.

The hardware deserves better. This is the open project to give it better.

I bought a HAP-Z1ES years ago because it sounded right, and it still does. Watching Sony abandon software this good felt like watching a beautiful instrument get locked in a cupboard. This repo is the lockpick. β€” Guillain


πŸ“ Where we are

Pre-alpha β€” research & reverse-engineering, and unapologetically a music project pretending to be a software project. Everything in this repo is network-passive and read-only; nothing here will brick your device.

  • βœ… Mapped the network API (ScalarWebAPI on port 60200) and live-validated ~30 methods.
  • βœ… Decompiled Sony's HDDAudioRemote Android app β€” the first public decompile of this client.
  • βœ… Read the internal disk: it holds no OS β€” just a SQLite catalog + your music. Full schema in hand.
  • βœ… Shipped the usable tools above (Web UI, CLI, HAP Sync, library browser/audit, demo mode).
  • ⏳ Heading for the UART console (i.MX6 UART1, ttymxc0 @ 115200) for a root shell + NAND dump β€” firmware 19404R is OTA-only, so the OS must be dumped from the device, not downloaded.

πŸ—Ί Roadmap

Phase Goal Device risk
1 β€” Reverse engineering (current) Decompile, read the disk, read Sony's GPL kernel sources, locate UART None
2 β€” Control app Modern web / iOS app over the existing API, no firmware change None
3 β€” Root shell UART console β†’ shell β†’ dd the NAND as a recovery snapshot Low (case open)
4 β€” Custom userland Keep Sony's kernel + audio driver, swap the playback daemon for MPD + streaming bridges Gated behind a tested recovery path
5 β€” Modern OS Mainline where feasible, new control plane, our own API Opt-in only

The analog chain (FPGA β†’ SHARC β†’ PCM1795) is the whole point of this hardware. We preserve it, period β€” every phase keeps it untouched.


πŸŽ› Supported devices

Device Role Notes
Sony HAP-Z1ES Primary Pure source player, clean analog out, no internal amp
Sony HAP-S1 Secondary Same SoC and stack, adds an integrated amp

Same i.MX6 SoC, same firmware images, same protocols β€” work on one transfers to the other.


πŸ“– Documentation

The full research lives in docs/. Start with Overview for the project in one page, or Start Here if you're new.

Full doc index (hardware, API, disk, firmware, UART, audio path…)
Hardware Software stack Network API SMB share
Diag modes HDD swap Firmware Prior art
Disk layout UART console Audio path Music sync
Control app NAND extraction Forza ioctl ref

Active reconnaissance: research/ Β· Tools: tools/ Β· API spec: api-spec/.


🀝 Contributing

Found a Japanese teardown blog from 2015? Captured iOS traffic in Wireshark? Scanned a service manual? You have something to contribute. Run python tools/discover.py (read-only β€” it just probes your LAN and dumps the device description for triage), then read CONTRIBUTING and open an issue. We read all of them.

βš–οΈ License & disclaimer

Code (tools/, future daemon): MIT. Β· Docs (everything else): CC-BY-SA 4.0. The split keeps code reusable while keeping the painstakingly-collected research open and credited.

The HAP-Z1ES is out of warranty in 2026 regardless. Opening the case, probing UART, or flashing custom firmware can damage your device. Everything here is as-is, no warranty β€” you are responsible for your own hardware.

πŸ™ Acknowledgements

danielrweber/HAPxFer (SMB reference) Β· frazei's gist (first public API docs) Β· rytilahti/python-songpal (protocol cousin) Β· the Japanese audiophile community (emuzu, briareos, saionjihouse, the kakaku.com regulars) for a decade of HDD-swap documentation nobody else matched β€” ζœ¬ε½“γ«γ‚γ‚ŠγŒγ¨γ†γ”γ–γ„γΎγ™ Β· Sony Engineering for outstanding 2014 hardware and publishing the GPL bundle that makes this possible. Β· And you, if you contribute β€” especially if you actually listen on one of these.

About

Modernizing the Sony HAP-Z1ES and HAP-S1 audiophile HDD players. Sony stopped in 2021. We're picking it up.

Topics

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE-docs

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors