PiKVM 扩展——通过 USB-TTL 串口适配器在 Web UI 中对目标电脑进行交互式命令行访问,无需 HDMI 显示器。
┌─────────────┐ USB-TTL ┌──────────────────┐
│ PiKVM │ │ 目标电脑 │
│ │◄════════════════►│ (e.g. Linux) │
│ Web UI │ Serial COM │ Serial Console │
│ xterm.js │ │ │
└─────────────┘ └──────────────────┘
- 在 PiKVM Web UI 中提供完整的 xterm.js 终端体验
- 支持 Canvas / DOM 双渲染模式
- 自动检测终端输出中的 URL 并使其可点击(WebLinks)
Ctrl+Shift+F终端内搜索(Search)- 浏览器刷新 10 秒内自动恢复连接
- 多客户端自动排队:先到先得,队首自动提升
- 关闭页面自动注销 getty 会话,下次打开显示完整 welcome banner
- 串口参数可配置(波特率、校验位等)
- 标准 PiKVM extra 部署:systemd 守护 + manifest 注册
- USB-TTL 串口适配器 — 任意芯片均可(CH340、CP210x、FTDI、PL2303 等)
- 目标电脑主板 COM 口排针
- 电平转换模块(如 MAX3232) — 必须配备
⚠️ 电压警告: 电脑 COM 口使用 RS-232 电平(±12V~±15V),而 USB-TTL 适配器工作在 TTL 电平(3.3V/5V)。**直接连接会烧毁适配器。**需通过电平转换模块连接两个电压域。
接线说明详见 docs/hardware/wiring.zh.md · English
-
BIOS 中开启 COM 口——通常在 "Super IO" 或 "Peripherals" 菜单下
-
配置串口 console:
# 编辑 /etc/default/grub GRUB_CMDLINE_LINUX="console=ttyS0,115200n8" # 更新并重启 update-grub rebootserial-getty@ttyS0在 systemd 发行版(Arch、Debian)下默认启用。 如未运行,执行systemctl enable --now serial-getty@ttyS0。 -
连接适配器:
在 PiKVM 上:
# 1. 克隆仓库
git clone https://github.com/pzehrel/kvmd-serial-term.git /opt/kvmd-serial-term
cd /opt/kvmd-serial-term
# 2. 执行一键部署
bash deploy.shdeploy.sh 会自动完成:Python 包安装、配置文件创建、systemd 服务注册、PiKVM extra 注册、Nginx 集成。
/etc/kvmd/serial-term.yaml:
查找串口设备: 插入 USB-TTL 适配器后,在 PiKVM 上执行
ls /dev/ttyUSB* /dev/ttyACM*或dmesg | grep tty。
serial:
device: /dev/ttyUSB0 # 串口设备路径
baudrate: 115200 # 波特率:300–921600
bytesize: 8 # 数据位:5, 6, 7, 8
parity: N # 校验:N, E, O, M, S
stopbits: 1 # 停止位:1, 1.5, 2
xonxoff: false # 软件流控
rtscts: false # 硬件流控
server:
unix_socket: /run/kvmd/serial-term.sock
web_dir: /usr/share/kvmd/web/serial-term所有串口字段均可选——默认值为 115200-8-N-1。
- 打开 PiKVM Web UI
- 在导航菜单中点击 Serial Terminal(排在内置 Terminal 前面)
- 终端窗口打开——输入用户名密码登录目标电脑
- 同一时间只有一个用户控制串口;其他用户看到全屏排队提示
- 关闭页面后自动注销 shell,下次打开显示完整 welcome banner
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -vGPL-3.0