设置内核配置
这个接口是「整体覆盖」,不是「只改你传的字段」
内核收到请求后是整份替换当前配置,没传的字段会被重置成默认值并写入配置文件。
所以不能只传想改的那一个字段:
# ❌ 错误用法:投屏名、语言、端口、fps 等全部会被清成默认值
{"fun":"/config/imserver/set","data":{"phone_mode":3}}
正确用法是先读全量、改完再整份写回:
- 调
/config/imserver/get拿到当前完整配置 - 在这份数据上修改要改的字段
- 把完整的一份POST 给
/config/imserver/set
⚠️ 尤其注意 mouse_mode:它的值只要与当前不同,内核就会重启所有 USB 硬件。
漏传这个字段(布尔值缺省为 false)等于让现场所有设备集体重启。
phone_mode 切到触控模式(2/3)当前版本不开放(2026-08-28 起)
触控模式是 5.0 硬件的新能力,尚未正式发布,当前版本的内核不允许切过去。
⚠️ 与别的受限接口不同,这里不会整条请求失败:其余字段照常生效,
只有 phone_mode 这一项被忽略、保持原值。
为什么这么处理:这个接口是「整体覆盖」语义,一条请求裹着二十几个字段。 为了其中一项把整条拒掉,会让你连投屏名、fps 都改不了。
正式发布后无需任何额外操作即可使用;如需提前试用,请联系官方。
调用说明
- 请求参数
| 参数 | 类型 | 说明 | 备注 |
|---|---|---|---|
| fun | 字符串 | /config/imserver/set | 请求功能名 |
| air_play_name | 字符串 | 投屏显示名字 | - |
| lang | 字符串 | 控制台语言 | - |
| mdns_type | 整数 | 投屏发现规则 | 0允许所有,1指定ip,2已在列表的ip |
| connect_failed_retry | 整数 | 连接失败重试次数 | 0无限重试 |
| air_play_ratio | 整数 | 投屏分辨率 | 0自适应,720,1080,1400,1920,2650 |
| opencv_num | 整数 | 找图插件实例数 | - |
| ocr_num | 整数 | ocr文字识别插件实例数 | 只有gpu版本才生效 |
| allow_ip_list | 字符串数组 | 允许的ip列表 | 只有发现规则是1的时候才生效 |
| air_play_fps | 整数 | 投屏fps | 最大30,最小1 |
| air_play_img_fps | 整数 | 投屏图像fps | 最大30,最小1 |
| air_play_refresh_rate | 整数 | 投屏刷新率 | 最大60,最小1 |
| air_play_port | 整数 | 投屏通讯端口 | 默认17000 |
| air_play_audio | 布尔值 | 投屏声音 | true开启,false关闭 |
| auto_connect | 布尔值 | 自动连接投屏 | - |
| auto_updata | 布尔值 | 自动升级 | - |
| thread_mode | 布尔值 | 使用线程模式批量操作硬件 | - |
| mouse_mode | 布尔值 | 采用快准狠鼠标移动 | - |
| flip_right | 布尔值 | 横屏向右反转的模式 | - |
| enable_hardware_acceleration | 布尔值 | 开启硬件解码 | - |
| force_vertical | 布尔值 | 强制竖屏 | 开启后横屏画面按竖屏尺寸上报(宽高对调) |
| phone_mode | 整数 | 手机端模式 | 1鼠标,2触控,3多点触摸。只有 5.0 硬件有效;切换是重启级操作,设备会重新枚举 |
| restart_name | 字符串 | 重启按钮的文字 | 重启手机时用它去屏幕上找那个按钮,默认「重新启动」。手机系统语言不是中文要改成对应文字 |
| cast_mode | 整数 | 投屏模式(全局) | 0 AirPlay,1 iMouse投屏。不传按 0。2026-09-08 新增,只影响自动投屏的做法,不用重启内核 |
只有设置[控制台语言,投屏发现规则,连接失败重试次数,允许的ip列表,自动连接投屏,自动升级,使用线程模式批量操作硬件,采用快准狠鼠标移动,横屏向右反转的模式,投屏模式]不用重启内核,其它必须重启内核生效
- httpGet请求示例
curl --request GET \
--url 'http://192.168.9.9:9911/api/config/imserver/set?air_play_name=iMouseXP-D2B6&lang=%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87&mdns_type=0&connect_failed_retry=2&air_play_ratio=1080&opencv_num=1&ocr_num=1&allow_ip_list=[]&air_play_fps=30&air_play_img_fps=30&air_play_refresh_rate=60&air_play_port=17000&air_play_audio=true&auto_connect=true&auto_updata=true&thread_mode=true&flip_right=true&auto_updata=true&mouse_mode=true'
- httpPost请求示例
curl --request POST \
--url http://192.168.9.9:9911/api \
--header 'content-type: multipart/form-data' \
--form fun=/config/imserver/set \
--form air_play_name=iMouseXP-D2B6 \
--form lang=%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87 \
--form mdns_type=0 \
--form connect_failed_retry=1 \
--form air_play_ratio=0 \
--form opencv_num=1 \
--form ocr_num=1 \
--form air_play_fps=30 \
--form air_play_img_fps=30 \
--form air_play_refresh_rate=60 \
--form air_play_port=17000 \
--form air_play_audio=true \
--form auto_connect=true \
--form auto_updata=true \
--form mouse_mode=true \
--form thread_mode=true \
--form flip_right=true
- httpPost json请求示例【websocket也可发送同样json请求】
curl --request POST \
--url http://192.168.9.9:9911/api \
--header 'Content-Type: application/json' \
--data '{
"fun": "/config/imserver/set",
"data": {
"air_play_name": "iMouseXP-D2B6",
"lang": "简体中文",
"mdns_type": 0,
"connect_failed_retry": 3,
"air_play_ratio": 0,
"opencv_num": 1,
"ocr_num": 1,
"allow_ip_list": [],
"air_play_fps": 30,
"air_play_img_fps": 0,
"air_play_refresh_rate": 60,
"air_play_port": 17000,
"air_play_audio": true,
"auto_connect": false,
"auto_updata": false,
"thread_mode": false,
"mouse_mode": true,
"flip_right": true
}
}'
响应结果
{
"data": {
"air_play_name": "iMouseXP-D2B6",
"lang": "简体中文",
"mdns_type": 0,
"connect_failed_retry": 3,
"air_play_ratio": 0,
"opencv_num": 1,
"ocr_num": 1,
"allow_ip_list": [],
"air_play_fps": 30,
"air_play_img_fps": 0,
"air_play_refresh_rate": 60,
"air_play_port": 17000,
"air_play_audio": true,
"auto_connect": false,
"auto_updata": false,
"thread_mode": false,
"mouse_mode": true,
"flip_right": true,
"enable_hardware_acceleration": false,
"force_vertical": false,
"restart_name": "重新启动",
"cast_mode": 0,
"lang_list": ["简体中文", "English", "Русский", "한국어", "繁體中文", "Español", "Deutsch"],
"code": 0,
"id": "",
"message": "成功"
},
"status": 200,
"message": "成功",
"msgid": 0,
"fun": "/config/imserver/set"
}
- 响应data数据字段说明
| 字段 | 说明 | 备注 |
|---|---|---|
| air_play_name | 投屏显示名字 | - |
| lang | 控制台语言 | - |
| mdns_type | 投屏发现规则 | 0允许所有,1指定ip,2已在列表的ip |
| connect_failed_retry | 连接失败重试次数 | 0无限重试 |
| air_play_ratio | 投屏分辨率 | 0自适应,720,1080,1400,1920,2650 |
| opencv_num | 找图插件实例数 | - |
| ocr_num | ocr文字识别插件实例数 | 只有gpu版本才生效 |
| allow_ip_list | 允许的ip列表 | 只有发现规则是1的时候才生效 |
| air_play_fps | 投屏fps | 最大30,最小1 |
| air_play_img_fps | 投屏图像fps | 最大30,最小1 |
| air_play_refresh_rate | 投屏刷新率 | 最大60,最小1 |
| air_play_port | 投屏通讯端口 | 默认17000 |
| air_play_audio | 投屏声音 | true开启,false关闭 |
| auto_connect | 自动连接投屏 | - |
| auto_updata | 自动升级 | - |
| thread_mode | 使用线程模式批量操作硬件 | - |
| mouse_mode | 采用快准狠鼠标移动 | - |
| flip_right | 横屏向右反转的模式 | - |
| enable_hardware_acceleration | 开启硬件解码 | - |
危险
响应里的 lang_list 自 2026-09-06 起取值有变化(3 门 → 7 门),
详见 获取内核配置 中同名字段的说明。