上游 blackbearreloaded/ps5-homebrew-ui 与 ps5-opengl 已从 GitHub 删除, 导致 build workflow 在 clone 阶段就失败: - ps5-react/dependencies.lock.json 的 platform 地址指向 stevenjx/ps5-homebrew-ui (同一 revision 4bd9425,patches 不变) - workflow 从该仓库的 deps-1 release 下载 ps5-opengl-sdk-1.0.0.tar.gz (sha256 与原地址一致) - README 说明这两处替换
NASdrive
PS5 上的局域网游戏库。 配合 ps5-manager, 把 NAS 里存的 PS5 / PS4 游戏放上大屏:浏览、搜索、看简介与截图,一键装到主机上。
本项目基于 MyLuxy/overdrive 反编译重建的源代码二次开发, 已移除原作者的全部在线商店、下载源、CDN 与自动更新功能,只做局域网里的自家游戏库。
特性
- 只展示你真的有的游戏:清单来自 NAS,
ps5-manager里没有的、文件已经不在盘上的,一律不出现 - 商店式界面:精选 Spotlight、热门 / 新作 / 评分滑轨、类型专区、完整网格 + 筛选 + 排序
- 详情页:封面、Hero、透明 Logo、评分、开发商、类型、多段简介与截图画廊
- 跨区共用介绍:港版 / 欧版 / 美版 TitleID 不同,靠「标题 + 平台」自动落到同一份资料
- 一键安装:从 NAS 拉取 PKG(本体 → 补丁 → DLC),交给系统安装器,装完即删临时文件
- 自动发现 NAS:UDP 48620 广播;找不到时可手动填
IP:端口 - 收藏、搜索、安装队列、文件管理:手柄完成全部操作,无需键鼠
- 13 种语言:English、Deutsch、Español、Français、Português (Brasil)、Русский、 Bahasa Indonesia、日本語、简体中文、العربية、اردو、हिन्दी、বাংলা
- 手柄操作:L1 R1 切换分区,✕ 确认,○ 返回
工作原理
┌──────────────┐ UDP 48620 广播发现 ┌────────────────────┐
│ PS5 │ ───────────────────────▶ │ NAS │
│ NASdrive │ ◀─────────────────────── │ ps5-manager :8280 │
│ │ /api/overdrive/* │ │
└──────────────┘ └────────────────────┘
安装 PKG ◀──────── /download/{id}/{文件} ────────┘
| 接口 | 用途 |
|---|---|
GET /api/overdrive/ping |
确认对端是 ps5-manager,拿到服务名与游戏数 |
GET /api/overdrive/manifest |
全部游戏(卡片字段:封面、首段简介、类型、评分、容量) |
GET /api/overdrive/games/{title_id} |
详情:多段简介、截图、包清单 |
GET /api/overdrive/releases/{title_id} |
直装地址,顺序固定 本体 → 补丁 → DLC |
GET /api/overdrive/cover|icon|art/{id} |
封面 / 图标 / Hero / Logo / 截图的代理(NAS 缓存) |
- 素材全部走 NAS:主机只需要访问
ps5-manager一个地址,不依赖外网 CDN - 下载地址由 NAS 按自己实际被访问的地址生成,Docker 桥接、端口映射都不会指错
- 协议细节见 docs/PS5MANAGER.md
安装
需要:已破解的 PS5,并且开机时加载了
ShadowMount+(自动挂载 .exfat 镜像)
与 kstuff。
- 下载
NASdrive.exfat(GitHub Releases,或 Actions 里最近一次构建的产物) - 复制到 U 盘的
homebrew目录 - U 盘插上 PS5,ShadowMount+ 会自动挂载并安装
- 从主屏幕启动 NASdrive
首次启动会自动在局域网里广播寻找 ps5-manager。如果你的 NAS 用桥接网络跑 Docker(收不到广播),
进入「服务器」页手动填写 192.168.1.10:8280 即可。
从源码构建
依赖:LLVM 18、CMake、Ninja、NASM、Python 3.12+、Node.js、exfatprogs(打包镜像用)。
npm run setup # 首次:装齐编译与 Python 依赖(Linux 上会要 sudo)
npm run build # 构建 + 打包出 NASdrive.exfat
npm run build:app # 只构建,产物在 ps5-react/dist/PPSA99058
只想看看界面:
npm run preview # 桌面预览窗口,不需要 PS5 工具链
npm run dev # 改 app/ 下的文件自动重建
CI 见 .github/workflows/build.yml:
推送到 main 产出构建产物,手动触发会创建/更新一个草稿 Release。
上游
blackbearreloaded/ps5-homebrew-ui与ps5-opengl已从 GitHub 删除, 因此框架源码改从 stevenjx/ps5-homebrew-ui 获取(同一 revision4bd9425),OpenGL SDK 压缩包放在该仓库的deps-1release 里, sha256 与原地址一致。ps5-react/dependencies.lock.json只改了这一个 URL。
开发
| 目录 | 说明 |
|---|---|
app/ |
应用源码(React / JSX,运行在 ps5-react 的 QuickJS 上) |
app/nas/ |
与 NAS 的全部交互:发现、API、数据模型、详情、安装队列、服务器页 |
app/browse/、app/game/、app/downloads/ |
首页滑轨、详情页、安装页 |
app/data/pages/ |
离线游戏介绍(简介 + 截图),按 TitleID / 标题跨区匹配 |
ps5-react/ |
运行时与构建工具链(上游框架,未改动行为) |
packaging/ |
exFAT 镜像打包脚本 |
改完 app/data/pages/ 里的介绍后,重建一次索引:
python3 scripts/build-pages-index.py
提交前的最小校验:应用能打包。
./ps5-react/.deps/embeddedReact/bridges/quickjs/js/node_modules/.bin/esbuild \
app/index.jsx --bundle --format=esm \
--external:react --external:react/jsx-runtime --external:@ps5-react/core \
--loader:.ttf=file --loader:.png=file --loader:.wav=file --loader:.json=json \
--outdir=/tmp/nasdrive-check
更多见 docs/DEVELOPMENT.md。
常见问题
启动后一直显示「正在查找 NAS」
先确认 ps5-manager 在跑:浏览器打开 http://NAS_IP:8280/api/overdrive/ping 应返回 JSON。
Docker 用 network_mode: host 才能收到广播;桥接网络就手动填地址。
有游戏,但封面 / 截图是空白
NAS 第一次抓取素材需要能上外网。抓过一次后会按内容哈希缓存在 config/covers/art/,
之后主机访问的只是 NAS。
点安装没反应 / 立刻失败 多为磁盘空间不足(设置里可以换安装位置)或 PKG 已从 NAS 上删除。 安装进度与错误原因在「安装」页可查。
怎么更新 NASdrive
本项目没有自动更新:重新构建(或下载新的 NASdrive.exfat),关闭应用后覆盖 U 盘里的旧镜像,
重启主机即可。游戏与设置在 NAS 上,不受影响。
致谢
- MyLuxy:反编译并重建了 Overdrive 的完整源码,本项目的起点
- ps5-react:PS5 上的 React 运行时与构建工具链
- ShadowMount+:负责挂载
.exfat镜像 - ps5-manager:NAS 端的游戏库与全部接口
ps5-react/ 以 GPL-3.0-or-later 授权,自带 LICENSE、LICENSE-ATTRIBUTION 与 NOTICE;
依赖声明会随构建复制进 notices/,清单见 ps5-react/docs/DEPENDENCIES.md。
NASdrive 是非官方 homebrew 项目,与 Sony Interactive Entertainment 无关。 PlayStation、PS5 是 Sony Interactive Entertainment 的商标。