From d4cc791bbd89e0daff2d11bc8a3b4f916df4a680 Mon Sep 17 00:00:00 2001 From: Maxim Devaev Date: Sun, 22 Feb 2026 12:32:54 +0200 Subject: [PATCH] update --- docs/latency.md | 2 +- docs/latency/webrtc_latency.webp | Bin 11238 -> 11818 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/latency.md b/docs/latency.md index d6c8453a..bfe8ec42 100644 --- a/docs/latency.md +++ b/docs/latency.md @@ -136,6 +136,6 @@ To use this method, it is necessary that the clocks on PiKVM and the client comp Next, follow to PiKVM Web UI with Chrome or Chromium (other browsers can't handle RTP timings) and add a URL paramether `show_webrtc_latency=1` (like this: `https://pikvm/kvmd/?show_webrtc_latency=1`). Switch the video mode to WebRTC in the system menu if necessary. After establishing and stabilizing the connection, you will see the calculated delay in the stream window: -![Measured WebRTC Latency](latency/webrtc_latency.png){ width="250" } +![Measured WebRTC Latency](latency/webrtc_latency.webp) As already mentioned, the measured value does not include the rendering and display time on the physical display with the browser. For 60Hz it will be +17ms, for 144Hz it will be +6ms. In both cases, you get a latency **around or less than 50ms**. diff --git a/docs/latency/webrtc_latency.webp b/docs/latency/webrtc_latency.webp index 84733f4da1152b6b381cb6cae8c0cfe1956b5281..c14c4746bb5b8ec0f3f25f2491b400bc64d2de76 100644 GIT binary patch literal 11818 zcmV+_F4fUeNk&E@E&u>mMM6+kP&gnKE&u><&;XqQDjNgC06sAoibJ9yp%MADSRexg zv$uW#Y>Am8fhT#1Ufsv@;CH8lJ~ne(^*&nvP3w>Ko7=CLN9cd~|I5#iKB7Fre=7ea z`)}`4=`YX&_9Ly=&?EK((}(s);dl1K_8b4Fy9TNkod2Zuo&D4DOZwV|H=gkclqT< zJshNDJ1%Fh>1<3MRms0&9S9fi+Tjhx@*$sNA=z;A#f-vp_vgUgJmc+s3T$}bW%!>3xbvP>+lbw-Z z!>R$2_5NJXU(%pOcU9e5S$g*mLf>Y?IB^$4(!6**8)*`pzkooc6~ zfc*#Kxf1IHw8NUkF@b(7daU-5^R8*`5%WlVS=o~<$+q-WOM`&Av$;#!=66=G8s7ht zJowKtb~dN$J}hliqLT}_>LgNRa7aSeF*QF0*BZH~Gi0nXC%ZLojNLYMO`j}wzg(Ij zqjTs@so%2q3YksV5`AGb;|y6Ucc-D5=~LY^#2u2g_2VmZLUcDW?^=ok@*vw4U*|;0 z;P)0Fu%epB;<_`GYbzBM6g0osi37=>OEeE2)?Boj7$>UiA9NJmjN!@Lp`R=+h{a|I zsHfq1iri<1eU9E1I_-1H1zDzubPYEMoIZUQNy0N~vO^K^BQ1$}x}Q)M%N0dnV!SGR z9QV|_rFlmi6Dl1)sL}frj-gl3>^tpu6Rd0)gd^ZjD{SBWau5N*u3#Ghb*B<3>XQeUOdnfRGy%+e8pJsgH#5+g6tABNta!0PoAKJ&np7ce-KmM2Qj6>Dou9#iZ32 z7}geM#wO@Jxuua`+BKz`@Gh)F9zI z7|fce0fJBjSqpZyyP8rF1*DNgT0bC69~B$llBowccv9oWx0SS4&qR0GMxtx~N3Lf( zC;p+vaCt#hck9n2`uE@!GG|ol|ANTQhnA4#Kb{mP-gjmn1|J*%7LZ2N`Rco@G$?*} zD1D$gb2aWiE{7|S{T`5x7Jut8oc#}U5e~{Dvi^lv2;|AmhWcr+t;BFqI5_9C82zlDv4pi(^qA_P`D{!oE=}OsnZ_1tzV5Zf zJwY?~fb?m&gLZ#?)x7ZC42ue8b6KeiJ9g21N2LF)X zu%^989^yh#RN1NW*qA)4lQ~EqEfTJWCmE|gE!$cySEk-34=-ajD=V-;UT8;9Mw2oJ|!7EB&h$-iSE*>gRAOJQ&T{{NG>5truN08AOG zZ~y=R1^vVXVx>?a&BzkBA())#dC`8WJsYPJ(jx+H7)bkj|LTaZq)x@>&Q2fS(yO0Q zfG;$ttK)AFHDCa^#{A%VSriI4Hk}5)9X)8SCf{x+gx00xr85iyBjab!vV0%&dAssV zkNlIVldeB^r~)Ww*{UrW`<09X)row0&}Kf)uEe-AwO`SDIXJD^S!1$1kxhv)v5_9a z7j$yr+fQsIcVpflh<<4QPOh>TqV7lnTdbKmEy?)Sld5d8hQk4nd3R3qk%kZnGUBS8 zLU|P8i`s+hD=+zYy;UQzjCjX*Vv=2?-iIN;k-CIx?i29)N;_D3nEv0R3x(S2hW|g3 zl)?xA8SA&4Kh>xYdm(TBVdXl8pmTk#@J6GlCz*>42o`i6&U;qmG zxn#GWWh1#n_a}kK5DlzYXXbPV_H5t3Z;kpY>A;sOi!I)j5aqAH$`D_%@oaKfXykN+ zuRRT0LD_Kp{zYL=g(WodOe0Y@fZJ_FfvzQ$tVNQI3 z+V3I$kRB~bgpJM-R;2eaq+>?6o?*{ZuJ)5AE-6Rpji~Y|k`N9Phq{Kxz|6qO7mWg` zlDLXe~6VaSS;z3nv;iJ_z(Y=)P3y0P+A|GG*lWPkOyG19~~K1`Df|S|)im(qO2=BRpI7 z>JPi;E3x@5fPnDkdzhTPkuNm~`O?-?O*oDDGl|t58a=hta^axrWB}24i+J6m`=a_X z7;cU^#d>8(kK};*gYNm*s9vGKwdy_~WnLh`!VwDKOU_DpcvB}^#qA%pfgcs6@2sw` zzyC+fatwsH{W6gOFySpX(TJpXsV`xF{$OV+Zk}Ix57Kax2fX#bKVeu#GcwL7)_2|| zjowC)6A>auS(s$BZUrYe|7C{AvUD;0--sQ%$hbz(D@30l-(_CV)_He9A^m-la9~(Q z(YD}?UvdG~t8+b>Ly?2pjU1HM+|MII0C{V`LAA~#ZN%jJMO9~W3o)A5a|5)4vNv+P zuA$c_iYz?>@v@}$d@-Ub_d6Y!_Cp@dl+Ab_>#?-lPw0w2;d+o6{4IHE_G~8_D#vEKJ8(EMw`S zH|ZgBfS`}<0Hn)ru?eKqhZ^V*CmQ{DS%o=PVFMtEH{sUjpd#gjn)^J+)I@QXR*?2(K3^T z2=8Hf)Z9voCrhWB<@t&LH zzC#>@X1gvE^wypAg?u!&a*zN5QWZg*4D1EBD6eukzBO{@8%loCts2Yx^Co!^#Qjp$ z#eYBCRoO?qZZAG`U4cTA7xH`g&CDfch!2~QakElmHO!7FuY!i-C5{9f`Xt0DrP=}% zSa_(bna z^HtzPP9O4|HoStwmS*|=v^W6^dFA6GXh(-9S3K}>Dtvueu_-mm4PjU_(5W{!aMQ3{xhMa0LzHM-=cg?kzdL{F_^60|fxzF$rQ$$3J0k$62|i!^ZK8?SDJH zM~P>O`e%+S^x4Ff31o%j0A^$Z*;S;g+obTV(dzE>xJiMH29N%k(8poo&2w(x5yG^v z13bvDnxXB+2c|_=+uR<_3-+ta2TR1i(M^jWy=68U0V0tu9|GtCQM`Rl(JwdT6oRQ2 z(H^ckK!_4Fn6;Rx;*lVoSc5pbrog{9ssV~e_OBWT7#)}!g;HVf;k{ci64!@W2=zgo z<1`w(Nz0QDXJ?u18QoJyAdmm*L0-8_iHFOXe3Tq-Njn_K4R2t3U5#XnqF&P(DNlLc z1-&cz_4H#K{O62_-@zmoOh^+3>iElTmX|zqAo|pLrfkl z_#ahTq0z|dq_`=JUp}f0O{Un zi!y7thXn3>xqhH)k{ zKI<`(K7YI&IyELD30k+)4>l4sm%U|Fv*ZIuS&Va4TT01tDAo7xU(E4E#Q0GZzJ>M% zpH>se&Qf8aWsx+{L?s4ym{D-$3!_f-KVSY(($W#QpfJPa1Cjd`0QES@uc69#%&POl z+YMgDvJ<^5g(`;B9?kD4nZ0;(B;nxs0;USp^;|im5r{7yYJIf4P{t;&dmQSRY8B3k zbw2~qQ_1{bgxmlar!gVvqNNw0e|%T1g`HcjRJeZY)8NQ?)Hf$coTZOT>q9LgPQL_q zWu^x|h_+&)NjH6-M%G8`r>0(MO9$ae;C;VBiL{2Cse}?DnGq#-erz6|J7gg?i9gJ} z?wn9vZs=V%&P>@!r!vA(3{y+~Fd%k=%M%GYMViTir<}Z%$(oL@qah0)_}}Nhsvikk z;!#6yx@Cakfb3`3`-b3bc8}_z*e3eJoZ7pz9SS}u$XM!Qbx|5Vz%d41WC|NHkvgh5 zPX;yMRqMEJf#HXqjCv47K3Lb0ltKLfv=qEKwZikRr3m>j^7z02xqt)W?iej9qM9s~ zgky*IK}w7bKO%xe**$o(QR{liJDQ)we{stT!<(8kyt`XWO0Fj*Oq0E}(Tu2hNcq0i zS)hI71P_iCa`{7bsm1%at&4rmhZifDGTNiSnVZJI_^hYJ%J3$UN$kb?i5OK$Hc5eV z>3BoF`>$#n5A}lc!un`GB2}h&Y5wzl{59c=5DgBcQZ9fUPv5&=Z~kF*%#h8W1q|6N ziqG?&Ck2np|Ir-rb$`XdlNx3@D%y!mpE{{B#r5Aqb$3KdyALL z`Ol9T|MbanEe~ewcLJ&(Hg_w3JTzfG#0eY2`q-Qz<(JMIITKRYiXQOGc4w#8*ExMM4BfJT`N_5)dZ` z2k7gW#B2p95m8;&^E*%NlvpNd-f>tex_aM;SR9Q!EJ5e|Om3IesXv7lsD&R&2(&Tm zJj|3w+ap^i-yDC3X>~|{r{-bRy+QpE&nkUnvY4XG8n2zrbKJqSgMh_%$ul^%}9glwbIxoG0Of%PkW#1AA+2!VmthP39oYw z=_{V`Ndia2D!kBaV><%Wkcb(O(#t@BA+OVruJlO}2J+*~1dVL>ONaM)`e)3w*%>mK z{r;=CRZX6xn@}ae61^)u4TsNZRzfIv1i8f*WL4MjFC&C@hM5kf;G55 zsKsZ!8rV_*75uWc0L*l0Eye-Daw^XZDB8`BdEVM9T6T;02)!Z$xrV7|?E(YUItmp# zxQYw)H3qjI#d@BT8g zUr)8bf=+GJDX`}wpBM~8w&+F}LeRELuo@`?VpYxu6O#6L-?}->0&d!9GR5!Oe$%dC zY017Cf8AB%Lw5{nw76rixIfleUA_?uIJ1yIb8fqKLS|6)OB2j%B+In3({$&@AlEG3 zy4B__bH}9N44u%hDjg6qwmIAk3s?=0V$fi^gi8JHt)@WKLuej08 ztc@MNuZkMN*NFN4Vlt$jvCtt^IkG8%A3K4xqB%Tmd)d{i81}! z^3<)l^j%)YaQs=tN5!+C5S5-LlJ+qz0*6|+)&yT+(~wApK8;`i5rA^FRKE%92&SB2 zy`SSDoi6Xo%KzTR0=ukQEBhhuTqxrUBWR}bX2MVi`>^(q!A>jiru1FJ-n9& zL6uw_Zt$@ViWFErUy)t4U^65!-Az~A9MVv#e1Tujzy=HpbRg%USimGqMgJ+Gl6xdv z{X=+sQe*;= zgR8rZ=A?!?gvix2Yi|yOem27#?5s+$n-m>L=LEO=xCg&H6zj6j)W02k-ApoCP~RHl z1^tu(gWc*_sHFQRqzYzoL8_B&(TXg%ETH0W0xMlrIzP;K5O}S3B1_oeY6_NB03BjK zRz*9NF#+gIAr+f&InzwJH+)tAl9{lWC3Yf2qYUs=Nf+36Ti!{a@O2HmStB0y&FkPz zqy$#!!{PgjK(4`LcgH01wySB};fUnb>Lz*oeaxFn3i3j50tAUAa_>HLW&eiqA*&PE ztNyCq^TZ2o3OV;=u&&7(HZoA}vpTu^40JGw5wOHOq>M7D!;KHr4IaVrUhNR5aQmJg z-orN9XMb4GiHAI6-G`|PcqyJfP$OQTexvFEcgL@qY}!_`Jo=ap{WqF0#3i)z)^R_l z^l;7Kcguwk<66!CaQ#LG(63m}X1)qrVXt~B6Um%bS?#XDrh$_%tH@nqZ*lH=h7IB{ z`X5W;nL%xcMLN2eO*^axo@ZEOkRA{BHr(DMgoj}xN+f%)J5sk~ur|7!Rp#+z;1%^* zKcvfwkK2bc0E+N{YoeGDh>G(56CyTn?lx9{51pxaNr!j(ZU$0vhaW)I)5C6zZaNQR z%$S}b2iVw=PeK276CQI;YdF;hedO4R+4WMW5B;V3m54jDahE0{hPP@g zODL3p9M!rIp(hZnXW62JZya+T1P}1gJ9AjdhrRvZFgF-SliY&kl3` zEQ46Liy?%VEUx>PriPOnpguvGTuQoRl}#X;>B8Z(x%y|U9twA_@2V9Un-O_(aUMBS zKO;A5%f$uhF=9Atds>Vnt~;29DEa>seCz;L=tTNLroG)3;U5ndvCpcg%7MI4&tX#q zK`@lGdcd+yCQYt1^H+Nsb`E-BB1#wp8cN%Jjtj#4eY-09teICLV~xDr*~pJ! z?`Q0Q9ElgX^Bx(|GLkB4_klL4~+zt`F(>H~?drTB!(Zt>hT#P&=sci!%*dI-z?o>D*?_r(*MXra!gpxcZ9Ic#(D!HLoNPtb`KgxzH8ZzZy= zis#RY1r9b=Lq>fG{FAsM2Uj=&9M%@p%Ih5Cl)51C+6MA$z>>p_dZKzRLhb+*QcoO) zkOlaQIsWppZ`4&!$hB4ygU57^j7WMIy26&!uS`|UA^*PlI8y^X }QXHmxG0pobH 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 Qs+4ql`v3p{000000KX-uZ2$lO