Core Features:
- Web server based on Mongoose framework listening on port 82
- WebSocket support for real-time mouse and keyboard control
- Serial communication via /dev/ttyS5 (115200 baud rate)
- GPIO-based hardware control (GPIO 34/35 for shutdown/reboot, GPIO 139 for reset)
- User authentication and management system
- Network configuration management with dynamic updates
- MJPG-streamer integration for video streaming (port 8080, 1920x1080)
- File upload support with chunked transfer capability
- Hardware reset functionality via GPIO button
Technical Implementation:
- Mouse protocol conversion to serial data format {0x57, 0xAB, ...}
- Keyboard input handling with proper HID report generation
- Real-time configuration updates without service restart
- Thread-based GPIO monitoring for hardware events
- Authentication integration with MJPG-streamer
- Default configuration restoration on hardware reset
Configuration Files:
- /mnt/user.txt - User credentials storage
- /etc/init.d/xnet.conf - Network configuration
- /www/webcam - Web interface files
Documentation:
- Complete functional specification in Chinese (功能说明.md)
- Detailed WebSocket message protocol documentation
- GPIO mapping and hardware control specifications
This is a complete standalone IP-KVM server that enables remote
keyboard, video, and mouse control over IP networks.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2.9 KiB
2.9 KiB
xtell_server 功能说明
概述
xtell_server 是一个基于 Mongoose 库的嵌入式 Web 服务器,用于 IP-KVM (Keyboard-Video-Mouse over IP) 远程控制系统。
主要功能
1. Web 服务器功能
- 监听端口 82,提供 HTTP 服务
- 支持 WebSocket 连接和文件上传
- 使用 Mongoose 库处理 HTTP 请求
2. 远程控制功能
- 鼠标控制: 接收 WebSocket 鼠标指令,转换为串口协议数据
- 数据格式:
{0x57, 0xAB, 0x00, 0x04, 0x07, 0x02, ..., checksum} - 通过
/dev/ttyS5串口通信 (波特率 115200)
- 数据格式:
- 键盘控制: 接收 WebSocket 键盘指令,转换为串口协议数据
- 数据格式:
{0x57,0xAB,0x00,0x02,0x08,0x00, ..., checksum}
- 数据格式:
3. 用户管理系统
- 用户名密码修改功能
- 认证信息存储在
/mnt/user.txt - 支持 MJPG-streamer 认证配置
- 默认配置检测和创建
4. 网络配置管理
- IP 地址、子网掩码、网关、DNS 配置
- 配置文件存储在
/etc/init.d/xnet.conf - 支持网络配置动态更新
- 默认 IP: 192.168.6.100, 端口: 8700
5. 系统控制功能
- 关机控制: 通过 GPIO 35 控制系统关机
- 重启控制: 通过 GPIO 34 控制系统重启
- 支持远程关机和重启操作
6. 视频流管理
- 启动和管理 MJPG-streamer 服务
- 支持认证的视频流传输 (端口 8080)
- 分辨率: 1920x1080
- 动态用户认证配置
7. GPIO 按键处理
- GPIO 139 按键检测线程
- 按键触发时恢复默认网络配置
- 硬件重置功能
- 自动重启 MJPG-streamer 服务
8. 文件上传功能
- 支持分块文件上传
- 上传端点:
/upload - 上传路径:
/mnt/UDISK/gcode.nc - 支持大文件分块传输
技术架构
核心依赖
- Mongoose: 嵌入式 Web 服务器框架
- MJPG-streamer: 视频流服务
- Linux GPIO: 硬件控制接口
- 串口通信:
/dev/ttyS5
配置文件
/mnt/user.txt: 用户认证信息/etc/init.d/xnet.conf: 网络配置/www/webcam: Web 界面文件
GPIO 映射
- GPIO 34: 系统重启控制
- GPIO 35: 系统关机控制
- GPIO 139: 硬件重置按键
WebSocket 消息协议
鼠标控制
mouse,x1,y1,x2,y2,buttons,scroll
键盘控制
keyboard,key_code,modifier
用户管理
newuser,oldUser,oldPass,newUser,newPass
网络配置
newip,ip,mask,gw,dns1,dns2
系统控制
control,shutdown|reboot
运行流程
-
初始化阶段:
- 读取用户配置
- 启动 MJPG-streamer
- 配置 GPIO
- 初始化串口
- 启动 GPIO 监控线程
-
服务阶段:
- 监听 HTTP/WebSocket 连接
- 处理客户端指令
- 转发键鼠数据到串口
- 管理系统配置
-
硬件重置:
- GPIO 139 按键触发
- 恢复默认网络配置
- 重启相关服务
独立性
xtell_server 是一个完整的独立应用程序,不需要其他组件配合即可正常运行所有功能。