Skip to content

JohnnyDagger/quaderno-nas-sync

Repository files navigation

Quaderno Gen 3C ⇄ Synology NAS 双向同步

简体中文 · English

通过 Wi-Fi(设备无需插线)让群晖 NAS 与富士通 QUADERNO Gen 3C(型号 FMVDP43C) 双向同步 PDF。基于 dpt-rp1-py(MIT)。

⚠️ 凭证安全:creds/(deviceid.dat / privatekey.dat / device_ca.pem) 是你设备的私钥,已被 .gitignore 排除,切勿提交或分享。clone 本仓库后, 自己跑一次 register_final.py 生成属于你自己的凭证即可。

⚠️ 非官方:本项目与富士通/QUADERNO 无关,纯属个人逆向使用,不保证后续固件 仍可用,请自担风险。

✅ 本方案的每一步都已在真机实测验证:注册、认证、设备→NAS 下载、NAS→设备 上传、Zeroconf 自动发现、设备离线优雅跳过。

背景:为什么能用(以及网上为什么说不能用)

Gen 3C 的注册握手在 /register/hash 这一步会间歇性返回 40301 "Bad parameters"(和 Quaderno Gen 2 同源的老问题)。这不是硬性不兼容——每次 重试用全新的 Diffie-Hellman 密钥,成功是概率性的,重试几次必过。register_final.py 就是自动重试直到突破。一旦注册成功,后续所有通信(列表/上传/下载/双向 sync) 都正常。

文件

文件 作用
sync_quaderno.py 核心:Zeroconf 发现设备 → 认证 → 跑双向 sync;离线则优雅跳过
register_final.py 一次性:自动重试完成设备注册,生成凭据
deviceid.dat / privatekey.dat 设备凭据(已生成,保密,部署到 NAS)
device_ca.pem 设备 CA 证书(备份用)
Dockerfile / entrypoint.sh / docker-compose.yml 群晖 Docker 部署

一、凭据(已完成)

凭据已生成好(deviceid.dat + privatekey.dat),直接进入第二步即可。

若日后需要重新注册(换设备/凭据丢失):

python3 -m venv .dptenv && . .dptenv/bin/activate && pip install dpt-rp1-py
# 设备连到同一 Wi-Fi。把 QUADERNO_ADDR 设成设备 IP(凭证会写入 ./creds/)
mkfifo /tmp/dpt_pin_fifo
QUADERNO_ADDR=192.168.0.46 python register_final.py &   # 自动重试,突破时打印 >>>PIN_NEEDED<<<
# 看设备屏幕上的 PIN,然后:
printf '设备屏幕上的PIN\n' > /tmp/dpt_pin_fifo

二、部署到群晖(Container Manager / Docker)

  1. 建文件夹

    • 同步文件夹(放你的 PDF):如 /volume1/quaderno
    • 凭据文件夹:如 /volume1/docker/quaderno/creds,把 deviceid.datprivatekey.dat 拷进去。
  2. 拷贝项目文件到 NAS,如 /volume1/docker/quaderno/(含 Dockerfileentrypoint.shsync_quaderno.pydocker-compose.yml)。

  3. 按需改 docker-compose.yml:

    • volumes 里的 /volume1/quaderno 改成你的同步文件夹;
    • SYNC_INTERVAL:同步间隔秒数(默认 10800=3 小时,3600=每小时);
    • network_mode: host 必须保留(Zeroconf 自动发现要靠它穿透网络)。
  4. 启动(SSH 到 NAS,或用 Container Manager 的"项目"导入 compose):

    cd /volume1/docker/quaderno
    sudo docker compose up -d --build
    sudo docker logs -f quaderno-sync     # 看同步日志

容器会每隔 SYNC_INTERVAL 自动同步一次,开机自启(restart: unless-stopped)。

三、运行须知(诚实的约束)

  • ⚠️ 电子纸会休眠断 Wi-Fi:只有设备醒着且联网时才同步得上。睡死时这一轮 会被优雅跳过,下一轮再试——不会报错,但那段时间不会同步。
  • ⚠️ DHCP:脚本靠 Zeroconf(_dp_fujitsu)自动发现 IP,不怕 IP 变;但要求 NAS 和设备在同一网段/同一 Wi-Fi。若日后发现不稳,可在路由器给设备绑固定 IP,并在 compose 里设 QUADERNO_ADDR 跳过发现。
  • ⚠️ 冲突:.sync 检查点能识别两边的增改,"较新覆盖较旧";避免两边同时编辑 同一文件。
  • 仅同步 PDF(设备本身只认 PDF)。

环境变量速查(sync_quaderno.py)

变量 默认 说明
QUADERNO_LOCAL /data NAS 侧同步文件夹(容器内路径)
QUADERNO_REMOTE Document 设备侧文件夹
QUADERNO_CREDS /creds 凭据目录
QUADERNO_ADDR (空=自动发现) 写死设备 IP,跳过 Zeroconf
QUADERNO_DISCOVER_TIMEOUT 15 发现设备的等待秒数
SYNC_INTERVAL 10800 两次同步间隔秒数

About

Wireless two-way PDF sync between a Fujitsu QUADERNO Gen 3C e-ink tablet and a Synology NAS, plus a Docker deploy. Built on dpt-rp1-py.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors