WIFI远程无线中继之K2P刷机Padavan无线桥接功能

WI-FI无线中继, 无线桥接, 扩大WIFI信号覆盖范围/面积

有什么用/怎么用

本文仅围绕着有限的硬件投入情况下, 如何扩大WIFI信号覆盖范围/面积. 抛砖引玉, 如果您有更好的方案, 请大方地留言告诉我, 提前感谢

需求:

当无法使用网线将室外或远程的AP连接起来时, 假如没有无线网桥的硬件环境下,

这时可以使用多个K2P将型号从上游K2P中继到远端的K2P, 这样可以轻松实现(仅需电源)WIFI信号的拓展覆盖(增加WIFI信号的覆盖面积)

应用场景, 比如: 需要将WIFI信号覆盖到楼下的区域, 不管是小区还是自建楼, 在没有提前布线预留的情况下, 将可上网的WIFI覆盖到楼下更广阔的区域. 这样方便了在WIFI覆盖范围内无缝地使用上游路由器网络内的全部应用.

记录一下, 方面下一次排查潜在的故障

硬件:

需要多个K2P路由器

软件:

将每个K2P都刷机成为这个系统: © 2011-2022 版权属于 Padavan & N56U project community

比如我使用的固件版本:

固件版本: 3.4.3.9-099_22-07-1
这台是室外的K2P, 作为将WIFI信号扩大
固件版本: 4.4.198.9-100_20231021
这台是室内, 连接外网ADSL宽带光猫或主路由器

相关内容

实现方法

上游K2P

image-20240908102910241

手动指定: 无线信道

室外中继使用的K2P

作为扩大WIFI信号使用的AP, 在室外负责增加WIFI区域/面积

  1. 设置路由器模式为

    image-20240908103039409

  2. 设置2.4G的WIFI作为中继用的频道

设置要中继的上游AP的具体信息: SSID, 信道, 加密方式, WIFI密码

故障及解决方案

故障点: 室外K2P
故障详情: 可以连接WIFI, 但是无法获取IP地址

修复过程:
连接室外的WIFI, 然后需要手动修改本机IP地址为192.168.123.110网段,
然后就可以打开网页配置: http://192.168.123.1:8080/
发现是: 中继的2.4G信号OpenWrt的信道变了, 从原来的9信道变到10信道.
这样就需要重新配置室外K2P的‘无线中继’.
设置好, 连接上上级的路由器WIFI以后, 可以正常获取IP地址, 可以上网.

20240928 最新更新如下:

通过在K2P的Lan口设置(手动设置) 192.168.6.112

然后把DHCP手动开启, 设置IP段: 192.168.6.200 - 192.168.6.244

管理地址变更为: http://192.168.6.112:8080/Advanced_APLAN_Content.asp


故障点: 主路由盘的室内上游K2P

故障详情: 连续运行几天, 就会导致室内的上游K2P断网

进一步解决:

手动指定上游路由器到 2.4GWIFI 信道9, 拓展信道13
5GWIFI 信道153

中继K2P的 中继点是2.4G的WIFI, 这回指定了信道9, 理论上不会改变了.
这样在一天以后, 看看还不会不会导致上游路由器断开了外网连接.

一周后(20240913)验证结果: 不是由于这个信道的变化引起的上游K2P断网

断网当时, WIFI连接但无法上网(或网速很慢),

偶然想到, 并查看到Multi stream daemon lite有两个客户端

也就是说: 这种断网极有可能是msd_lite占用了什么带宽导致的.

当即修改了msd_lite的服务端口, 上网速度瞬间恢复; WIFI连接也正常了

相关联的话题/文章: 电视节目资源 - 实测联通移动IPTV组播转单播方案

又一周后(20240926), 仍然出现偶发性断流(断开外网, AP无法上网); 需要手动断电重启才会恢复. 怀疑是硬件的问题(已下单采购新的路由器AC86U)

今天了解到: msd_lite原来可以安装到docker中! 这样它耗路由器硬件性能的问题就解决了.

关键字:

群晖docker安装udpxy或msd_lite

RouterOS中如何安装与使用udpxy(更推荐使用msd_lite组件, 因为msd_lite占用CPU资源更少)

华硕RT-AC86U

刷入 最新官改测试..
路由器管理的IP: 192.168.50.1
admin:00000

4:14pm 
1. 设置pC机 ip到手动 192.168.1.100
2. 设置Mac ip到192.168.1.11; 用于远程协助PC机的连接
3. 操作PC机的华硕固件刷新Exe应用程序

ASUS 救援模式版本 2.1.0.3
    版本 2.1.0.3
    1.25 MB
    2021/10/27
    支援操作系统: Windows XP/7/8/8.1/10/11
来源官网下载 https://www.asus.com.cn/supportonly/rt-ac86u/helpdesk_download?model2Name=RT-AC86U

救援模式实测https://52asus.com/thread-34-1-1.html

4:41pm 直接在WEB界面刷

doc: https://www.koolcenter.com/article/firmware/6_download/official_mod/40_rt-ac86u_official_mod/

[20240927测试中 RT-AC86U_386.10_0]
1. https://fw.koolcenter.com/KoolCenter_Merlin_New_Gen_386/RT-AC86U/
    RT-AC86U_386.10_0_cferom_ubi_koolcenter.w	81.9 MiB	2023-05-03 20:47
    官改


2. https://www.koolcenter.com/fw/device/rt-ac86u/merlin
RT-AC86U_386.9_0_cferom_ubi_koolcenter.w 81.8 MiB 2023-05-03 20:47
梅林改

www.speedtest.cn(连接大连联通节点)

测速发现上传又明细提升(达到93+速度), 下载不变稳定在260左右

AP模式 获取到的WAN口IP为: http://192.168.6.115/Main_Login.asp

重新设置:

  1. TP1Z按重置按钮10s, 重新设置网络; 重新输入WIFI密码 和 设备的安全密码
    1. 由于摄像头都重新设置了, 重新推流启动: supervisorctl restart ffmpeg
  2. 中继的K2P
    1. 必须要关闭新的AC86U热点OpenWrt, 手动设置的192.168.123.12改网段才会工作
    2. 重新配置中继(无线桥接)http://192.168.123.1:8080/Advanced_WMode2g_Content.asp
    3. 正常中继了, 锁定了使用相同的WIFI 2.4G信道: 11信道
  3. 所有的远程WIFI插座都自动识别, 自动跳跃到新的路由器AC86U

下一步:

  1. 设置AC86U打开SSH http://192.168.6.115/Advanced_System_Content.asp

    1. 无法正常登陆
  2. 软件中心-插件离线安装

    · 通过本页,你可以上传插件的离线安装包来安装插件;

    · 离线安装会自动解压tar.gz后缀的压缩包,识别压缩包一级目录下的install.sh文件并执行。

AC86U打开SSH

1
2
3
4
5
6
7
8
9
10
ssh admin@192.168.6.115                                                       
admin@192.168.6.115's password:
Connection closed by 192.168.6.115 port 22

#第二天尝试 - 正常了
ssh admin@192.168.6.115
admin@192.168.6.115's password:

ASUSWRT-Merlin RT-AC86U 386.10_0 Tue May 2 16:39:01 UTC 2023
admin@RT-AC86U-A4C8:/tmp/home/root#

如果你的华硕路由器安装了第三方固件,并在固件安装了软件中心,通过离线安装的方式安装某软件时收到提示 “离线安装包名有非法关键词”,那可以通过上面的步骤登录路由器系统,然后输入以下命令:

sed -i ‘s/\tdetect_package/\t# detect_package/g’ /koolshare/scripts/ks_tar_install.sh

插入一个64G的SD卡到AC86U的USB3.0口(由于读卡器是2.0, 被识别成2.0)

image-20240928081950327

创建USB上的虚拟内存文件

image-20240928083339577

1
2
3
4
5
6
7
8
9
10
umount /dev/sda1                                                         
umount: can't unmount /tmp/mnt/AC86U: Device or resource busy

#AC86U路由器有一个坏块
admin@RT-AC86U-A4C8:/tmp/home/root# dmesg|grep "bad block"
nand_read_bbt: bad block at 0x0000001a0000

# 这将umount所有的文件系统, 需要重启路由器
umount -a -r -l -f /dev/sda1

![image-20240928085408054](/Users/carlzeng/Library/Application Support/typora-user-images/image-20240928085408054.png)

添加USB2JFFS(USB2JFFS - 用U盘来挂载jffs), 让安装软件跑到U盘上面去

具体的使用说明文档

image-20240928083542208

开启的话需要在软件中心, 打开USB2JFFS, 然后 选择挂载路径(默认): /tmp/mnt/AC86U

image-20240928195238006

msd_lite设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
admin@RT-AC86U-A4C8:/tmp/home/root# opkg install msd                                                         
Installing msd (3.01.0-1) to root...
Downloading https://bin.entware.net/aarch64-k3.10/msd_3.01.0-1_aarch64-3.10.ipk
Configuring msd.

#目前在386.10版本上,路由器开启ssh,进入后
1. amtm >
2. ep >
3. opkg install msd
4. service msd即可运行; 我用的是: msd -c msd.conf
5. 查看日志: cd /opt/var/log; 会有msd.log文件

admin@RT-AC86U-A4C8:/tmp/mnt/AC86U/entware/etc# msd
Multi stream daemon 3.01.0 -- (c) Rozhuk Ivan <rozhuk.im@gmail.com>
BSD licence. Website: https://github.com/rozhuk-im/msd
Build: Jul 23 2024 11:34:57, Release
usage: [-d] [-v] [-c file]
[-p PID file] [-u uid|usr -g gid|grp]
-h usage (this screen)
-d become daemon
-c file config file
-p PID file file name to store PID
-u uid|user change uid
-g gid|group change gid
-v verbose

下一步: 设置MSD; 我的有组播的网线口是插在了: LAN1

默认生成的msd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
<?xml version="1.0" encoding="UTF-8"?>
<!--
Sizes in kb, time in seconds
-->
<!--
<skt> <rcvLoWatermark>XXXX</rcvLoWatermark> - DOES NOT WORK on Linux!
man socket(7):
...
The select(2) and poll(2) system calls currently do not respect the SO_RCVLOWAT
setting on Linux, and mark a socket readable when even a single byte of data is
available.
...
-->
<!--
XML validators:
- http://www.xmlvalidation.com/
- xmllint - -noout msd.conf
"- -": remove space before arg.
install: /usr/ports/textproc/libxml2
-->
<msd>
<log>
<file>/opt/var/log/msd.log</file>
</log>
<threadPool>
<threadsCountMax>3</threadsCountMax>
<!-- 0 = auto -->
<fBindToCPU>yes</fBindToCPU>
<!-- Bind threads to CPUs. -->
<fCacheGetTimeSyscall>yes</fCacheGetTimeSyscall>
<!-- Cache gettime() syscalls.. -->
<timerGranularity>100</timerGranularity>
<!-- 1/1000 sec -->
</threadPool>
<systemResourceLimits>
<!-- "unlimited" - value valid only in this section! -->
<maxOpenFiles>8192</maxOpenFiles>
<!-- Numbers only! -->
<maxCoreFileSize>unlimited</maxCoreFileSize>
<maxMemLock>unlimited</maxMemLock>
<processPriority>-10</processPriority>
<!-- Program scheduling priority. setpriority(). Hi: -20, Low: 20, Default: 0 -->
</systemResourceLimits>
<!-- HTTP server -->
<!-- Sizes in kb, time in seconds -->
<HTTP>
<!-- HTTP server settings. -->
<skt>
<!-- Defaults for all bindings. -->
<backlog>-1</backlog>
<rcvBuf>0</rcvBuf>
<sndBuf>0</sndBuf>
<rcvTimeout>30</rcvTimeout>
<sndTimeout>30</sndTimeout>
<fKeepAlive>no</fKeepAlive>
<keepAliveIDLEtime>0</keepAliveIDLEtime>
<keepAliveProbesInterval>0</keepAliveProbesInterval>
<keepAliveNumberOfProbes>0</keepAliveNumberOfProbes>
<congestionControl />
<!-- TCP_CONGESTION: replace congestion control from OS default -->
</skt>
<ioBufInitSize>4</ioBufInitSize>
<!-- HTTP request receive buf initial size. -->
<ioBufMaxSize>4</ioBufMaxSize>
<!-- HTTP request receive max buf size. -->
<bindList>
<bind>
<!-- All possible bind settings example. -->
<backlog>1024</backlog>
<rcvBuf>4</rcvBuf>
<sndBuf>256</sndBuf>
<rcvTimeout>30</rcvTimeout>
<sndTimeout>30</sndTimeout>
<fKeepAlive>yes</fKeepAlive>
<keepAliveIDLEtime>600</keepAliveIDLEtime>
<keepAliveProbesInterval>8</keepAliveProbesInterval>
<keepAliveNumberOfProbes>4</keepAliveNumberOfProbes>
<congestionControl>htcp</congestionControl>
<!-- TCP_CONGESTION: replace congestion control from OS default -->
<address>192.168.1.1:7088</address>
<ifName>vlan777</ifName>
<!-- Get IP address and replace in 'address' before bind. -->
<hostnameList>
<!-- Host names for this bind. -->
<hostname>megahost.sample</hostname>
</hostnameList>
</bind>
<bind>
<address>0.0.0.0:7088</address>
</bind>
<bind>
<address>0.0.0.0:40788</address>
</bind>
<bind>
<address>[::]:7088</address>
</bind>
<bind>
<address>[::1]:7088</address>
<hostnameList>
<!-- Host names for this bind. -->
<hostname>localhost</hostname>
</hostnameList>
</bind>
<bind>
<address>127.0.0.1:7088</address>
<hostnameList>
<!-- Host names for this bind. -->
<hostname>localhost</hostname>
</hostnameList>
</bind>
</bindList>
<hostnameList>
<!-- Host names for all bindings. -->
<hostname>*</hostname>
<hostname>netlab.linkpc.net</hostname>
<hostname>www.netlab.linkpc.net</hostname>
<hostname>netlab.dhis.org</hostname>
<hostname>net-lab.slyip.net</hostname>
</hostnameList>
</HTTP>
<limits>
<!-- Client params limits (from http request args). -->
<precacheMin>0</precacheMin>
<!-- No less than StreamHUB/skt/rcvLoWatermark, def: 0 -->
<precacheMax>8192</precacheMax>
<!-- max/def: StreamHUB/ringBufSize -->
<sndBlockSizeMin>32</sndBlockSizeMin>
<!-- Min send block size. -->
<sndBlockSizeMax>512</sndBlockSizeMax>
<!-- Max send block size. -->
</limits>
<hubProfileList>
<!-- Stream hub profiles templates. -->
<hubProfile>
<name>default</name>
<fPrecacheWait>no</fPrecacheWait>
<!-- For new clients: wait untill data in ring buf less than client want to receive in first time. -->
<fDropSlowClients>yes</fDropSlowClients>
<!-- Disconnect slow clients. -->
<fUsePollingForSend>yes</fUsePollingForSend>
<!-- Add lagged client socket descriptor to OS io polling (kqueue/epoll). -->
<fZeroCopyOnSend>no</fZeroCopyOnSend>
<!-- Enable Zero Copy on send to clients. -->
<fZeroSrcBitratePersistent>no</fZeroSrcBitratePersistent>
<!-- Do not destroy hub if no data received from all sources. -->
<fZeroCliPersistent>no</fZeroCliPersistent>
<!-- Do not destroy hub if no connected clients, othertwice self destroy after zeroCliTimeout seconds. -->
<zeroCliTimeout>60</zeroCliTimeout>
<!-- Time to destroy hub if no connected clients. Ignored if fZeroCliPersistent set. -->
<skt>
<!-- Client socket tunings. -->
<sndBuf>1024</sndBuf>
<!-- Max send block size, apply to clients sockets only, must be > rcvLoWatermark. -->
<sndLoWatermark>64</sndLoWatermark>
<!-- Default send block size. Can be overwritten by arg from user request. -->
<sndTimeout>30</sndTimeout>
<!-- Send data to client timeout. -->
<fHalfClosedRcv>no</fHalfClosedRcv>
<!-- Enable shutdown(SHUT_RD) for clients. -->
<fTCPNoDelay>no</fTCPNoDelay>
<!-- Enable TCP_NODELAY for clients. -->
<fTCPNoPush>no</fTCPNoPush>
<!-- Enable TCP_NOPUSH / TCP_CORK for clients. -->
<congestionControl>htcp</congestionControl>
<!-- TCP_CONGESTION: this value replace/overwrite(!) all others cc settings: cc from http req args, http server settings, OS default -->
</skt>
<precache>4096</precache>
<!-- Default pre cache size. Can be overwritten by arg from user request. -->
<headersList>
<!-- Custom HTTP headers (sended before stream). -->
<header>Pragma: no-cache</header>
<header>Content-Type: video/mpeg</header>
<header>ContentFeatures.DLNA.ORG: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000</header>
<header>TransferMode.DLNA.ORG: Streaming</header>
</headersList>
<HLS>
<!-- HLS settings. Require fMPEG2TSAnalyzing on sources. -->
<fEnable>yes</fEnable>
<targetDuration>5</targetDuration>
<!-- EXT-X-TARGETDURATION. -->
</HLS>
<sourceProfile>
<!-- Defaults for all sources. -->
<MPEG2TS>
<!-- Overwrite hub param same name flag if set. -->
<fEnable>yes</fEnable>
<!-- Enable MPEG2-TS analyzer. Overwrite hub param same name flag if set. -->
<filterPIDList>
<PID>reset</PID>
<!-- Clear PIDs filtering list. -->
<PID>16</PID>
<!-- Drop NIT PID. -->
<PID>17</PID>
<!-- Drop SDT PID. -->
<PID>18</PID>
<!-- Drop EIT PID. -->
<PID>null</PID>
<!-- = 8191 Drop NULL PID. -->
<PID>unknown</PID>
<!-- Drop all unknown PIDs. -->
</filterPIDList>
</MPEG2TS>
<ringBufSize>65536</ringBufSize>
<!-- Stream receive ring buffer size. -->
<ringBufStorePath>shm</ringBufStorePath>
<!-- Only if fZeroCopyOnSend set. Path to store file with ring buf. "shm" = use posix shared memory. -->
<errorRateInterval>60</errorRateInterval>
<!-- Error rate calculation interval. Work only if fMPEG2TSAnalyzing set. -->
<errorRateMax>10</errorRateMax>
<!-- Error rate max value before change source status to: STREAM_ERRORS. Work only if fMPEG2TSAnalyzing set. overwrite all sources same name value if set to nonzero. -->
<skt>
<rcvBuf>1024</rcvBuf>
<!-- Socket recv buf size. -->
<rcvLoWatermark>48</rcvLoWatermark>
<!-- Actual cli_snd_block_min if polling is off. -->
<rcvTimeout>10</rcvTimeout>
<!-- STATUS, recv timeout. -->
<fHalfClosedSnd>no</fHalfClosedSnd>
<!-- Enable shutdown(SHUT_WR) for clients. -->
</skt>
</sourceProfile>
</hubProfile>
<hubProfile>
<name>default-HD</name>
<fPrecacheWait>no</fPrecacheWait>
<!-- For new clients: wait untill data in ring buf less than client want to receive in first time. -->
<fDropSlowClients>yes</fDropSlowClients>
<!-- Disconnect slow clients. -->
<fUsePollingForSend>yes</fUsePollingForSend>
<!-- Add lagged client socket descriptor to OS io polling (kqueue/epoll). -->
<fZeroCopyOnSend>no</fZeroCopyOnSend>
<!-- Enable Zero Copy on send to clients. -->
<fZeroSrcBitratePersistent>no</fZeroSrcBitratePersistent>
<!-- Do not destroy hub if no data received from all sources. -->
<fZeroCliPersistent>no</fZeroCliPersistent>
<!-- Do not destroy hub if no connected clients, othertwice self destroy after zeroCliTimeout seconds. -->
<zeroCliTimeout>60</zeroCliTimeout>
<!-- Time to destroy hub if no connected clients. Ignored if fZeroCliPersistent set. -->
<skt>
<!-- Client socket tunings. -->
<sndBuf>1024</sndBuf>
<!-- Max send block size, apply to clients sockets only, must be > rcvLoWatermark. -->
<sndLoWatermark>64</sndLoWatermark>
<!-- Default send block size. Can be overwritten by arg from user request. -->
<sndTimeout>30</sndTimeout>
<!-- Send data to client timeout. -->
<fHalfClosedRcv>no</fHalfClosedRcv>
<!-- Enable shutdown(SHUT_RD) for clients. -->
<fTCPNoDelay>no</fTCPNoDelay>
<!-- Enable TCP_NODELAY for clients. -->
<fTCPNoPush>no</fTCPNoPush>
<!-- Enable TCP_NOPUSH / TCP_CORK for clients. -->
<congestionControl>htcp</congestionControl>
<!-- TCP_CONGESTION: this value replace/overwrite(!) all others cc settings: cc from http req args, http server settings, OS default -->
</skt>
<precache>8192</precache>
<!-- Default pre cache size. Can be overwritten by arg from user request. -->
<headersList>
<!-- Custom HTTP headers (sended before stream). -->
<header>Pragma: no-cache</header>
<header>Content-Type: video/mpeg</header>
<header>ContentFeatures.DLNA.ORG: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000</header>
<header>TransferMode.DLNA.ORG: Streaming</header>
</headersList>
<sourceProfile>
<!-- Defaults for all sources. -->
<MPEG2TS>
<!-- Overwrite hub param same name flag if set. -->
<fEnable>yes</fEnable>
<!-- Enable MPEG2-TS analyzer. Overwrite hub param same name flag if set. -->
<filterPIDList>
<PID>reset</PID>
<!-- Clear PIDs filtering list. -->
<PID>16</PID>
<!-- Drop NIT PID. -->
<PID>17</PID>
<!-- Drop SDT PID. -->
<PID>18</PID>
<!-- Drop EIT PID. -->
<PID>null</PID>
<!-- = 8191 Drop NULL PID. -->
<PID>unknown</PID>
<!-- Drop all unknown PIDs. -->
</filterPIDList>
</MPEG2TS>
<ringBufSize>131072</ringBufSize>
<!-- Stream receive ring buffer size. -->
<ringBufStorePath>shm</ringBufStorePath>
<!-- Only if fZeroCopyOnSend set. Path to store file with ring buf. "shm" = use posix shared memory. -->
<errorRateInterval>60</errorRateInterval>
<!-- Error rate calculation interval. Work only if fMPEG2TSAnalyzing set. -->
<errorRateMax>10</errorRateMax>
<!-- Error rate max value before change source status to: STREAM_ERRORS. Work only if fMPEG2TSAnalyzing set. overwrite all sources same name value if set to nonzero. -->
<skt>
<rcvBuf>1024</rcvBuf>
<!-- Socket recv buf size. -->
<rcvLoWatermark>48</rcvLoWatermark>
<!-- Actual cli_snd_block_min if polling is off. -->
<rcvTimeout>10</rcvTimeout>
<!-- STATUS, recv timeout. -->
<fHalfClosedSnd>no</fHalfClosedSnd>
<!-- Enable shutdown(SHUT_WR) for clients. -->
</skt>
</sourceProfile>
</hubProfile>
</hubProfileList>
<sourceProfileList>
<!-- Stream source profiles templates. -->
<sourceProfile>
<name>multicast-udp-default</name>
<MPEG2TS>
<!-- Overwrite hub param same name flag if set. -->
<fEnable>yes</fEnable>
<!-- Enable MPEG2-TS analyzer. Overwrite hub param same name flag if set. -->
<filterPIDList>
<PID>reset</PID>
<!-- Clear PIDs filtering list. -->
<PID>16</PID>
<!-- Drop NIT PID. -->
<PID>17</PID>
<!-- Drop SDT PID. -->
<PID>18</PID>
<!-- Drop EIT PID. -->
<PID>null</PID>
<!-- = 8191 Drop NULL PID. -->
<PID>unknown</PID>
<!-- Drop all unknown PIDs. -->
</filterPIDList>
</MPEG2TS>
<ringBufSize>32768</ringBufSize>
<!-- Stream receive ring buffer size. Overwrite hub params same name value if set. -->
<ringBufStorePath>shm</ringBufStorePath>
<!-- Only if fZeroCopyOnSend set. Path to store file with ring buf. "shm" = use posix shared memory. Overwrite hub params same name value if set. -->
<errorRateInterval>60</errorRateInterval>
<!-- Error rate calculation interval. Work only if fMPEG2TSAnalyzing set. Overwrite hub params same name value if set o. -->
<errorRateMax>10</errorRateMax>
<!-- Error rate max value before change source status to: STREAM_ERRORS. Work only if fMPEG2TSAnalyzing set. Overwrite hub params same name value if set. -->
<skt>
<rcvBuf>1024</rcvBuf>
<!-- Socket recv buf size. -->
<rcvLoWatermark>48</rcvLoWatermark>
<!-- Actual cli_snd_block_min if polling is off. -->
<rcvTimeout>10</rcvTimeout>
<!-- STATUS, recv timeout. -->
<fHalfClosedSnd>no</fHalfClosedSnd>
<!-- Enable shutdown(SHUT_WR) for clients. -->
</skt>
<!-- Source connection specific info. -->
<udp>
<!-- For: udp, udp-rtp, multicast-udp and multicast-udp-rtp. -->
<address>239.0.0.22:1234</address>
</udp>
<multicast>
<!-- For: multicast-udp and multicast-udp-rtp. -->
<ifName>lan0</ifName>
<!-- For multicast receive. -->
</multicast>
</sourceProfile>
<sourceProfile>
<name>tcp-http-default</name>
<MPEG2TS>
<!-- Overwrite hub param same name flag if set. -->
<fEnable>yes</fEnable>
<!-- Enable MPEG2-TS analyzer. Overwrite hub param same name flag if set. -->
<filterPIDList>
<PID>reset</PID>
<!-- Clear PIDs filtering list. -->
<PID>16</PID>
<!-- Drop NIT PID. -->
<PID>17</PID>
<!-- Drop SDT PID. -->
<PID>18</PID>
<!-- Drop EIT PID. -->
<PID>null</PID>
<!-- = 8191 Drop NULL PID. -->
<PID>unknown</PID>
<!-- Drop all unknown PIDs. -->
</filterPIDList>
</MPEG2TS>
<ringBufSize>32768</ringBufSize>
<!-- Stream receive ring buffer size. Overwrite hub params same name value if set. -->
<ringBufStorePath>shm</ringBufStorePath>
<!-- Only if fZeroCopyOnSend set. Path to store file with ring buf. "shm" = use posix shared memory. Overwrite hub params same name value if set. -->
<errorRateInterval>60</errorRateInterval>
<!-- Error rate calculation interval. Work only if fMPEG2TSAnalyzing set. Overwrite hub params same name value if set o. -->
<errorRateMax>10</errorRateMax>
<!-- Error rate max value before change source status to: STREAM_ERRORS. Work only if fMPEG2TSAnalyzing set. Overwrite hub params same name value if set. -->
<skt>
<rcvBuf>1024</rcvBuf>
<!-- Socket recv buf size. -->
<rcvLoWatermark>48</rcvLoWatermark>
<!-- Actual cli_snd_block_min if polling is off. -->
<rcvTimeout>30</rcvTimeout>
<!-- STATUS, recv timeout. -->
<fHalfClosedSnd>no</fHalfClosedSnd>
<!-- Enable shutdown(SHUT_WR) for clients. -->
</skt>
<!-- Source connection specific info. -->
<tcp>
<!-- For: tcp- and tcp-http. -->
<remonteHostname>93.95.99.231:9500</remonteHostname>
<connectTimeout>5</connectTimeout>
<!-- Connect timeout. -->
<reconnectInterval>5</reconnectInterval>
<!-- Retry connect delay. -->
<reconnectCount>4294967295</reconnectCount>
<!-- Retry count. -->
</tcp>
<http>
<urlPath>http/93.95.99.231:9500/udp/234.1.1.26:10000</urlPath>
<headersList>
<!-- Custom HTTP headers for request. -->
<header>Accept: */*</header>
<header>User-Agent: NSPlayer/7.10.0.3059</header>
<header>getcontentFeatures.dlna.org: 1</header>
</headersList>
</http>
</sourceProfile>
</sourceProfileList>
<streamProxy>
<!-- Auto generated stream hubs from user request. -->
<multicast>
<fEnable>yes</fEnable>
<hubProfileName>default</hubProfileName>
<!-- Profile template. -->
<sourceProfileName>multicast-udp-default</sourceProfileName>
<!-- Profile template. -->
</multicast>
<http>
<fEnable>yes</fEnable>
<hubProfileName>default</hubProfileName>
<!-- Profile template. -->
<sourceProfileName>tcp-http-default</sourceProfileName>
<!-- Profile template. -->
</http>
<transparent>
<!-- Like HTTP, but 'host' header point to other host. -->
<fEnable>yes</fEnable>
<hubProfileName>default</hubProfileName>
<!-- Profile template. -->
<sourceProfileName>tcp-http-default</sourceProfileName>
<!-- Profile template. -->
</transparent>
</streamProxy>
<channelList>
<includeFile>/home/rim/docs/Progs/msd/msd/conf/msd_channels.conf</includeFile>
<c-hannel>
<name>Test1.ts</name>
<!-- Channel name, used in request: /channel/... . -->
<hubProfileName>default</hubProfileName>
<!-- Profile template. -->
<precache>8192</precache>
<skt>
<sndBuf>1024</sndBuf>
<!-- Max send block size, apply to clients sockets only, must be > rcvLoWatermark. -->
</skt>
<sourceList>
<source>
<type>multicast-udp</type>
<sourceProfileName>multicast-udp-default</sourceProfileName>
<!-- Profile template name. -->
<udp>
<address>239.0.0.2:1234</address>
</udp>
<multicast>
<ifName>vlan777</ifName>
</multicast>
</source>
<source>
<type>multicast-udp</type>
<sourceProfileName>multicast-udp-default</sourceProfileName>
<!-- Profile template name. -->
<udp>
<address>239.0.0.3:1234</address>
</udp>
<multicast>
<ifName>vlan777</ifName>
</multicast>
</source>
<source>
<type>tcp-http</type>
<sourceProfileName>tcp-http-default</sourceProfileName>
<!-- Profile template. -->
<tcp>
<!-- For: tcp- and tcp-http. -->
<remonteHostname>93.95.99.231:9500</remonteHostname>
</tcp>
<http>
<urlPath>udp/234.1.1.26:10000</urlPath>
</http>
</source>
</sourceList>
</c-hannel>
</channelList>
</msd>

我设置修改的部分为(bro0.41 和 IP地址):

1
2
3

<address>192.168.6.115:7088</address>
<ifName>bro0.41</ifName> <!-- Get IP address and replace in 'address' before bind. -->

运行: msd -c ./msd.conf

1
admin@RT-AC86U-A4C8:/tmp/mnt/AC86U/entware/etc# msd -d -c ./msd.conf 

运行日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
admin@RT-AC86U-A4C8:/tmp/mnt/AC86U/entware/etc# cd /opt/var/log                                              
admin@RT-AC86U-A4C8:/tmp/mnt/AC86U/entware/var/log# ls
msd.log
admin@RT-AC86U-A4C8:/tmp/mnt/AC86U/entware/var/log# cat msd.log




[2024-09-28 13:48:57]: msd 3.01.0: started
[2024-09-28 13:48:57]: Build: Jul 23 2024 11:34:57, Release
[2024-09-28 13:48:57]: CPU count: 2
[2024-09-28 13:48:57]: descriptor table size: 1024 (max files)
[2024-09-28 13:48:57]: Thread 1 started...
[2024-09-28 13:48:57]: Bind thread 1 to CPU 1
[2024-09-28 13:48:57]: Thread 2 started...
[2024-09-28 13:48:57]: hostname: *
[2024-09-28 13:48:57]: hostname: netlab.linkpc.net
[2024-09-28 13:48:57]: hostname: www.netlab.linkpc.net
[2024-09-28 13:48:57]: hostname: netlab.dhis.org
[2024-09-28 13:48:57]: hostname: net-lab.slyip.net
[2024-09-28 13:48:57]: Bind thread 2 to CPU 0
[2024-09-28 13:48:57] http_srv_xml_load_bind, line 292: HTTP server: cant get addr for: bro0.41 - error 29: b
.slyip.net
et

[2024-09-28 13:48:57] http_srv_xml_load_start, line 348: http_srv_xml_load_bind() - error 29: h�_�
[2024-09-28 13:48:57]: bind 0.0.0.0:7088, backlog = -1, tcp_cc =
[2024-09-28 13:48:57]: bind 0.0.0.0:40788, backlog = -1, tcp_cc =
[2024-09-28 13:48:57]: bind [:]:7088, backlog = -1, tcp_cc =
[2024-09-28 13:48:57]: hostname: localhost
[2024-09-28 13:48:57] http_srv_bind_add, line 629: err_out - error 99: ��<�U
[2024-09-28 13:48:57] http_srv_xml_load_start, line 361: http_srv_bind_add(): [::]:7088, backlog = -1, tcp_cc
= - error 99: ȇ��גӛ��_�
[2024-09-28 13:48:57]: hostname: localhost
[2024-09-28 13:48:57]: bind 127.0.0.1:7088, backlog = -1, tcp_cc =
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 17, mem=0, count=0
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 17, mem=55c23ce6e0, count=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 18, mem=55c23ce6e0, coun
t=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 18, mem=55c23ce6e0, count=2
[2024-09-28 13:48:57] mpeg2_ts_settings_copy, line 231: mem=55c23ce6e0, count=2
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 17, mem=55c23ceb30, coun
t=0
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 17, mem=55c23ceb30, count=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 18, mem=55c23ceb30, coun
t=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 18, mem=55c23ceb30, count=2
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 17, mem=0, count=0
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 17, mem=55c23cec20, count=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 18, mem=55c23cec20, coun
t=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 18, mem=55c23cec20, count=2
[2024-09-28 13:48:57] mpeg2_ts_settings_copy, line 231: mem=55c23cec20, count=2
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 17, mem=55c23cec40, coun
t=0
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 17, mem=55c23cec40, count=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 18, mem=55c23cec40, coun
t=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 18, mem=55c23cec40, count=2
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 17, mem=0, count=0
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 17, mem=55c23ced90, count=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 18, mem=55c23ced90, coun
t=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 18, mem=55c23ced90, count=2
[2024-09-28 13:48:57] mpeg2_ts_settings_copy, line 231: mem=55c23ced90, count=2
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 17, mem=55c23cedb0, coun
t=0
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 17, mem=55c23cedb0, count=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 198: Try to add filtering PID 18, mem=55c23cedb0, coun
t=1
[2024-09-28 13:48:57] mpeg2_ts_xml_load_settings, line 209: Added filtering PID 18, mem=55c23cedb0, count=2
[2024-09-28 13:48:57]: Thread 0 started...
[2024-09-28 13:48:57]: Bind thread 0 to CPU 0
[2024-09-28 13:48:57]: Load channels: from main config.
[2024-09-28 13:48:57]: Load channels: from included configs.
[2024-09-28 13:48:57]: Load channels: from "/home/rim/docs/Progs/msd/msd/conf/msd_channels.conf"
[2024-09-28 13:48:57] msd_load_timer_cb, line 475: Load channels: FAIL from "/home/rim/docs/Progs/msd/msd/con
f/msd_channels.conf" - error 2: ȇ��גӛ��_�
[2024-09-28 13:49:24]: error: no http header, client ip: 192.168.6.221:53758
[2024-09-28 13:50:38] mpeg2_ts_settings_copy, line 231: mem=55c23ceb30, count=2
[2024-09-28 13:50:38]: /udp/239.3.1.241:8000@: Created.
[2024-09-28 13:50:38] mpeg2_ts_settings_copy, line 231: mem=55c23ce6e0, count=2
[2024-09-28 13:50:38] mpeg2_ts_settings_copy, line 231: mem=7fa4001ad0, count=2
[2024-09-28 13:50:38] mpeg2_ts_settings_copy, line 231: mem=7fac001ab0, count=2
[2024-09-28 13:50:38]: /udp/239.3.1.241:8000@ - 0/0: waiting for data [0: OK ]...
[2024-09-28 13:50:38]: /udp/239.3.1.241:8000@ - 192.168.6.221:53843: attached, cli_count = 1
[2024-09-28 13:50:38]: /udp/239.3.1.241:8000@ - 1/1: running [0: OK ]...
[2024-09-28 13:51:04]: Thread 1 exited...
[2024-09-28 13:51:04]: Thread 0 exited...
[2024-09-28 13:51:04]: /udp/239.3.1.241:8000@ - 192.168.6.221:53843: deattached, cli_count = 0
[2024-09-28 13:51:04]: /udp/239.3.1.241:8000@: Destroyed.
[2024-09-28 13:51:04]: exiting.

本章节鸣谢: 梅林固件下使用msdlite求助

中继K2P

中继成功, 但无DHCP功能, 导致客户端无法自动获取IP地址

frpc 内网穿透管理AC86U

修改了frpc在群晖中的设置, 从原来的源头192.168.6.243 到现在的 192.168.6.115; 需要进群晖管理界面, 呼叫出:任务管理器, 然后看到之前的 frpc进程, 然后先kill掉, 重新在运行起来:

1
nohup /usr/local/frp/frpc -c /usr/local/frp/frpc.ini >/dev/null 2>&1 &

http://127.0.0.1:22224/Main_Login.asp

admin:00000

AC86U做AP不定时失效

失效原因未知; 当前的WIFI用户不受影响, 但是新的手机等无法连接到这个AP的WIFI点.

解决办法: AP 每天重启 AC86U

同时设置了NAS中定时任务, 重启 supervisorctl restart ffmpeg

个性化需求沟通 扫客服加V加群: