Skip to content

krismint/Pi-Phone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pi Phone

运行在 Raspberry Pi 5 上的本地电话应用,搭配 Waveshare SIM7600CE-T 4G HAT 实现拨号、短信、通话音频。触控优化的 800x480 界面,无需 pip 安装任何包,仅依赖系统预装的 Python 环境。

Pi Phone Dashboard

功能

  • 拨号、通话记录、短信会话、联系人管理
  • ModemManager D-Bus 实时来电/短信事件
  • 浏览器 WebSocket 通话音频(桥接 SIM7600 USB PCM)
  • 双线通话(来电等待、保持、拒接)
  • 来电/短信桌面通知(mako)
  • 系统托盘常驻,后台运行
  • 800x480 DSI 触摸屏优化
  • 主题切换(多套配色预设)
  • 内嵌终端,设备端调试
  • 无需 pip,仅依赖系统预装 Python 包(PyGObject、pyserial 可选)

硬件

组件 型号
主板 Raspberry Pi 5 (4GB/8GB)
模块 Waveshare SIM7600CE-T 4G HAT (USB)
屏幕 800x480 DSI 触摸屏
系统 Raspberry Pi OS (Bookworm, 64-bit)
合成器 labwc (Wayland/wlroots)

快速开始

# 克隆
git clone https://github.com/krismint/Pi-Phone.git
cd Pi-Phone

# 直接运行
python3 backend/server.py --port 8765

# 或使用桌面启动器(后端 + 全屏 Chromium + 托盘图标)
./start.sh

浏览器打开 http://127.0.0.1:8765,或让 start.sh 自动处理。

桌面集成

在 Raspberry Pi OS + labwc 环境下,Pi Phone 以原生应用形态运行:

  • 一键启动:双击桌面图标或运行 start.sh
  • 系统托盘:关闭浏览器窗口后后端继续运行
  • 桌面通知:来电和短信通过 mako 弹出原生通知
  • 全屏 Chromium:无地址栏、无浏览器边框

详见 docs/ARCHITECTURE.md

项目结构

backend/
  server.py              HTTP API、SSE、ModemManager 集成、通话状态
  db.py                  SQLite 数据层
  modem_events.py        D-Bus 通话事件监听
  modem_sms_events.py    D-Bus 短信事件监听
  audio_bridge.py        WebSocket <-> SIM7600 USB PCM 音频桥

frontend/
  index.html             前端入口
  app.js                 UI 逻辑、SSE 客户端、音频 WebSocket 客户端
  styles.css             触控优化样式 (800x480)
  assets/icons/          图标资源

start.sh                 一键启动脚本(后端 + Chromium + 托盘)
tray.py                  系统托盘图标(AyatanaAppIndicator3)
notify-click.sh          通知点击回调
deployment/              桌面启动器、udev 规则
docs/                    架构、硬件、Bug 修复手册

架构

┌─────────────────────────────────────────────────┐
│  Frontend (Chromium app mode)                   │
│  ┌──────────┐  ┌──────────┐  ┌──────────────┐   │
│  │ REST API │  │    SSE   │  │   Audio WS   │   │
│  └────┬─────┘  └─────┬────┘  └───────┬──────┘   │
└───────┼──────────────┼───────────────┼──────────┘
        │              │               │
┌───────┼──────────────┼───────────────┼──────────┐
│  Backend (Python stdlib)                        │
│  ┌────┴─────┐  ┌────┴─────┐  ┌──────┴───────┐   │
│  │ HTTP API │  │ SSE push │  │ audio bridge │   │
│  └──────────┘  └──────────┘  └──────────────┘   │
│       │              │               │          │
│  ┌────┴──────────────┴───────────────┴───────┐  │
│  │       ModemManager (D-Bus + mmcli)        │  │
│  └────────────────────┬──────────────────────┘  │
│                       │                         │
│  ┌────────────────────┴──────────────────────┐  │
│  │            SQLite (phone.db)              │  │
│  └───────────────────────────────────────────┘  │
└─────────────────────────────────────────────────┘
        │
┌───────┴─────────────────────────────────────────┐
│    SIM7600CE-T USB (AT commands + PCM audio)    │
└─────────────────────────────────────────────────┘

文档

  • docs/ARCHITECTURE.md — 后端/前端架构、D-Bus、SSE、WebSocket 音频、轮询策略
  • docs/HARDWARE.md — 硬件接线、SIM7600 USB 接入、ModemManager 权限、音频桥
  • docs/BUG_FIXES.md — Bug 修复手册,按症状索引(音频音调、双线切换、通知)

环境要求

  • Raspberry Pi OS Bookworm (64-bit) + labwc
  • Python 3.11+(无需 pip 安装任何包)
  • ModemManager + libqmi
  • SIM7600CE-T 通过 USB 连接
  • 桌面集成需要:mako-notifiergir1.2-ayatanaappindicator3-0.1

许可证

个人项目,许可证待定。

About

Raspberry Pi 5 local phone console for SIM7600CE-T with dialing, SMS, call audio, and touch UI

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors