Skip to content
LinuxMint-UserPublic

About

A Localsend compatible client for PS Vita.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Latest commit

 

History

194 Commits

Folders and files

Repository files navigation

PSVSend

XERJ Corpus Hub contributor

简体中文 | English

面向 PS Vita 的 LocalSend 协议兼容客户端,可在同一局域网内与其他 LocalSend 设备(手机、PC)互相传输文件。

本项目是独立开发的自制软件,仅兼容 LocalSend 的开放协议(v2),与 LocalSend 品牌及其项目无任何关联。

本项目与索尼(Sony)及 PlayStation 无任何关联或背书;需在自制系统(如 HENkaku / 变革)上运行,请自行了解并遵守所在地法律法规与平台条款,风险自负,仅建议用于个人合法用途。

当前版本 v2.7.0(LocalSend 协议 v2,适配官方客户端 v1.15+);设置页顶部「关于」行可查看版本(含构建号)与适配信息。正式版 VPK 由 GitHub Actions 自动构建并发布到 Releases。

项目状态:核心功能已完成,项目进入稳定维护阶段——后续以修复问题和跟进 LocalSend 兼容性为主,暂不规划新功能。

功能特性

  • 双向收发:与手机 / 电脑 / 平板上的官方 LocalSend 客户端(v1.15+)自动互相发现,互发文件。
  • 加密传输:HTTP 明文与 HTTPS(mTLS 设备证书)双支持;接收端同一端口同时服务两者;接收 5.21 / 发送 4.66 MiB/s,已到 Vita 网卡上限。
  • 设备发现:UDP announce + 对方 HTTP register;Vita 收不了组播,设备栏按 △ 主动扫描 /24 补全,并优先探测历史设备。
  • 设备身份验证:发送等待页 / 接收确认页的「验证」按钮,128 hex 文本 + 4×4 图标双表示,仅加密连接出现。
  • 接收体验:确认页可勾选文件、逐文件改名、临时改保存目录;同名默认加 (k),顶层平铺文件冲突时可选择覆盖;单文件失败不影响同批其余文件。
  • 剪贴板文字:对方把复制的文字直接发来(官方客户端当作一条文本文件发送)时自动识别,接收完成即打开只读预览;默认不落盘,点「保存」或按 □ 才存成 clipboard-<时间>.txt,直接返回即丢弃。
  • 文件夹接收:对方发来带相对路径的清单时按原目录结构还原;同名目录默认合并,可重命名 / 跳过,嵌套冲突可改名顶层;每个顶层目录先写暂存根,收完统一改名 / 合并,取消或强杀后自动清扫。
  • 校验与并发:发送前 / 接收时可选 sha256;发送侧支持 1–6 路并发上传,单文件失败隔离。
  • 传输不熄屏:发送 / 接收 / 网页下载进行中,只续期系统的「熄屏」与「自动待机」计时器——屏幕照常变暗省电,但不会关闭或待机,长传输不会被系统掐断;空闲时恢复系统默认。
  • 网页共享:PSV 上开 HTTP 页,浏览器输 4 位 PIN 下载本次已选文件或上传到 PSV(文件 / 文件夹可混合选择);共享页二维码可直接带 PIN 打开,最多显示 4 台来源。
  • 扫码取景:主页肩键 L / 页头扫码按钮进入,按住 R 扫描对方分享二维码;多码冻结后按位置选择,识别后复用接收确认页。
  • 界面与操作:6 种语言、Yaru / OLED / 自定义主题 × 深浅色、两栏主页、触摸 + 肩键;按住 R 展开页头 / 页脚提示,空闲轮播操作 tips;内置单色 emoji 字体,文件名 / 剪贴板文字里的 emoji 也能显示。
  • 更新与恢复:应用内检查更新(手动 / 每天 / 每周 / 每月);启动字体走内存,待机 / 断网后自动恢复发现。

详细的功能落地记录(含构建号与实现要点)见 docs/changelog.md。

安装

开发与真机测试环境:变革(HENkaku)3.65 自制系统。其余固件 / 破解环境(3.60、3.68、3.73 等)未逐一验证,如遇问题欢迎提 issue 反馈(附固件与破解版本信息)。

  1. 将 psvsend.vpk 拷贝到已破解 PS Vita 的 ux0:data/
  2. 使用 VitaShell 打开并安装
  3. 桌面出现 PSVSend 气泡

使用

触摸操作以物理按键为主路径、触摸为辅助:主页右上角是「扫码 / 网页共享 / 扫描 / 设置」四个按钮,设置 / 色盘 / 接收设置 / 目录选择四页右上角是「返回」按钮;文件与目录两个列表的首行固定 ..(回上一级);浏览页 / 目录选择页 / 色盘页右下角分别是「完成 / 存到此处 / 保存」按钮,剪贴板预览页右下角是「保存」按钮。列表行与按钮点按即操作,语义与按键路径一致。

发送

  1. 打开 PSVSend,等待 Wi-Fi 联网(设备列表页不再显示未联网提示即已就绪,无独立状态灯)。对方在收到我们的 UDP announce 后会自动发 HTTP register,设备随即出现在列表;若对方没出现,按 △ 手动扫描整个网段补全
  2. 主页为两栏(设备栏 + 已选文件栏,左右位置可在设置页「布局」互换):按 □ 进文件浏览(ux0 目录树,可多选,选完再按 □ 回到主页),然后在设备栏选中目标、按确认键发送(文件栏的 △ 是「清空全部」,需长按约 700ms——按住时图标外画进度环——才生效,免得与设备栏的短按扫描混淆)
  3. 发送后先进入等待页(显示目标设备与文件数 / 总大小),等对方接受;对方开始接收即自动切到传输页显示逐文件进度,可随时取消。被拒或连不上会就地显示原因(不会跳到传输页)。若设置页「发送前校验」开着(默认),等待页会先显示 sha256 预扫进度(进度条按文件个数均分、右侧 x/N),大文件约 12 秒 / 100MB;若对端开了接收 PIN,会自动弹出系统键盘,输入后继续发送(最多 3 次,错了提示「PIN 错误」)
  4. 多文件默认并发 3 路上传(设置页「并发上传数」可调 1-6,1 = 退回逐个发送)。每个文件独立成败:个别文件失败只标红那一行、其余照传(终态显示「已完成,N 个失败」、总进度条转警示色);而对端整个不在(连不上 / 握手失败 / 中途断流)会立即整体收尾,不会让界面干等

接收

  1. 对方(LocalSend App / 桌面客户端)向我们发送文件时,PSV 自动弹出接收确认页,显示来者、平台、文件清单与总大小
  2. 焦点默认在 Accept:确认后对方即可开传;Setup 进入接收设置,可逐文件取消勾选(未勾选的跳过,不出现在接受回执里);Reject 拒绝(对方收到 403)
  3. 与保存目录里已有内容冲突时,会先问怎么处理:顶层目录默认合并,可改重命名或跳过;顶层文件可覆盖 / 重命名 / 跳过(覆盖默认不选中,收完且校验通过后才替换旧文件);嵌套目录被同名文件挡住时默认重命名顶层,也可跳过或返回
  4. 确认后进入接收进度页,显示逐文件进度与总进度,可随时取消;收完后短暂显示「正在整理…」,此时不可取消
  5. 收到的文件默认存入 ux0:data/psvsend/downloads/(设置页“保存目录”可改默认值;接收 Setup 可临时改本次目录),边收边写临时文件,收完改正式名。文件夹会先写 <名>.psvsend-part/ 暂存根,再整体改名或与已有目录合并;同名文件默认在扩展名前加 (k) 序号,顶层平铺文件冲突时可选覆盖(校验通过后才替换旧文件)。中途断流/校验失败会删除残留临时文件,下次启动也会清扫上次异常遗留的暂存根。对方提供 sha256 时默认校验(设置页「接收时校验」可关),校验与收体写盘并行,不影响速度
  6. 对方发的是剪贴板文字时(官方客户端把复制的内容当作一条文本文件发送),接收完成会自动打开只读预览页(方向键 / 拖动滚动)。文字默认不落盘:点右下角「保存」或按 □ 才存成 clipboard-YYYYMMDD-HHMMSS.txt;直接返回则丢弃。同一批里若同时有普通文件,则不识别为剪贴板文字、按普通文件收

网页共享(浏览器收发)

  1. 三个入口任选:主页 START(已选文件 >0 时直接开分享)、主页页头地球按钮、设置 › 操作 › 网页共享。运行页会显示网关地址、4 位 PIN 与二维码(手机扫码可直接带 PIN 打开)
  2. 同一 Wi-Fi 下的电脑 / 手机浏览器打开 http://<PSV IP>:<端口> 的网址,输入 PIN 进入。分享文件模式下列表就是本次已选文件,点即下载;接收文件模式分「选择文件」「选择文件夹」两个入口,可混合追加到同一份清单,文件夹会按相对路径还原目录(单次合计最多 2048 个文件,页面上限文案跟随设置);已选项列在下方,可逐项移除或全部清除,全部成功后自动清空、可继续传下一批;PSV 若还停在上一批的完成页,会自动退出并弹出新请求的确认页。PSV 会弹接收确认页(浏览器的任务会一直等到你接受或拒绝)
  3. 停止共享:按住运行页的圆形按钮或返回键约 0.7 秒(短按无效,防误触)。停共享后 PIN 作废、会话清空,正在下载 / 待确认的上传会被作废(下载器显示失败,不会存成截断文件)
  4. 浏览器刷新后要重新输 PIN(下载页在同一标签页内可凭 sessionId 免 PIN);同一 IP 错 3 次会冷却 30 秒,到点自动恢复

扫码接收分享

  1. 主页两个入口任选:肩键 L 或页头右上角扫码按钮(按住 R 可展开按钮文字;入口可在 设置 › 操作 › 扫码 关掉)
  2. 把摄像头对准对方网页共享页上的分享链接二维码(http://<IP>:<端口>/?pin=NNNN),按住 R 对焦并扫描;取景横幅只提示对准,距离自己找
  3. 同时框到多个码时画面冻结,用方向键按位置四向选择;确认后查看链接详情
  4. 详情页「打开」= 后台 prepare-download?pin= 取回文件清单,随后弹出与普通接收相同的接收确认页:可勾选文件、逐文件改名、选择本次保存目录;接受后进入进度页,逐文件 GET download 流式写入保存目录,可随时取消

HTTPS / mTLS 说明

发送端按对方 announce 的 protocol 自动选择明文 HTTP 或 HTTPS;2026 版官方 LocalSend(Rust 内核)对无浏览器会话的发送方强制要求客户端证书(mTLS),PSVSend 随固件内置一张设备身份证书并自动出示,同时按对方 announce 的指纹(证书 SHA-256)锁定服务端证书,不依赖 CA 链。

接收端同一端口同时服务 HTTPS 与明文 HTTP(连接首字节 0x16 判 TLS)。当前信任模型是 trust-first:加密防被动嗅探,不防主动 MITM;身份验证是人工核对手段,不改变信任决策。TLS 锁 1.2,密码套件优先 ChaCha20-Poly1305,再回退 AES-GCM。细节与后续路线见 docs/design.md §9。

已知限制

  • 网络:仅 IPv4 / 协议 v2;Vita 收不了 UDP 组播,主动扫描只覆盖 /24,非常规子网(/16、/23)扫不全。
  • 会话与容量:同一时刻仅一个接收会话;单会话 ≤2048 个文件、prepare 清单 ≤4MB(设置页「接收文件上限」6 档,超出设置值时本次临时提升);发送只能浏览 ux0:/,单文件 ≤4GB-1。
  • 文件夹:只做「其他端 → PSV」的接收,PSV 自己发文件夹不支持;空目录不会还原(协议没有目录条目)。
  • 剪贴板文字:仅在「单条 text/* 且 preview 全文长度等于 size」时识别(强判定);同批混有普通文件时不识别,按普通文件收。文本 ≤256KB,超出按普通文件处理。
  • emoji:内置 Noto Emoji 为单色(libvita2d 的文字后端只支持单色字形,彩色 emoji 字体无法使用);ZWJ 组合序列(如 👨‍👩‍👧)会拆成多个 emoji 并排显示,BMP 区的符号字符仍走 CJK 字体。
  • 信任模型:trust-first,加密防被动嗅探、不防主动 MITM;身份验证需人工核对;指纹白名单 / 接收端 PIN 未做。
  • 网页共享:只共享本次已选文件,单段 Range,不提供目录浏览 / 多段 Range / 打包下载;最多显示 4 台来源。
  • 扫码:只认标准黑白二维码与 http://host[:port]/?pin=NNNN;重叠 / 低亮度码识别率低。

完整边界与已知问题见 docs/limitations.md。

构建

构建需要 VitaSDK 交叉编译工具链(安装到项目根目录 vitasdk/,env.sh 会自动定位)以及 mbedTLS / libvita2d / freetype / bzip2 / libpng / libjpeg-turbo / zlib;quirc 已随仓库入库。

./build.sh          # 配置 + 编译 + 打包;产物 build/psvsend.vpk

完整步骤(SDK 安装、vdpm 依赖、CI 说明)见 docs/building.md。

目录结构

路径 说明
src/ 源码(app / core / net / proto / ui)
sce_sys/ LiveArea 素材(图标 / 背景 / 启动图)
fonts/ 内嵌 Noto Sans 与 CJK 地区字体、单色 Noto Emoji
docs/ 设计、构建、限制、开发记录与协议副本
.github/workflows/ CI 构建与 Release 草稿发布

完整目录树与逐文件说明见 docs/design.md §5.6。

文档

许可

Apache License 2.0

图标为原创设计,与 LocalSend 品牌无关联。

About

A Localsend compatible client for PS Vita.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages