From 6773bbd49c1d617aea940a28292ef846a0776fbf Mon Sep 17 00:00:00 2001 From: taorye Date: Wed, 18 Dec 2024 15:43:36 +0800 Subject: [PATCH 1/2] feat: up to 2560x1440 and all resulotions will be enabled default --- .../overlay/etc/init.d/uvc-gadget-server.elf | Bin 33456 -> 26712 bytes .../etc/init.d/uvc-gadget-server.tar.xz | Bin 11160 -> 11148 bytes .../SG200X/overlay/etc/init.d/uvc_tool.sh | 22 ++++++++---------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/buildroot/board/cvitek/SG200X/overlay/etc/init.d/uvc-gadget-server.elf b/buildroot/board/cvitek/SG200X/overlay/etc/init.d/uvc-gadget-server.elf index 6e399827968025df424aea12d6c9d596d9a555a8..b08f776fa7b766ad42e0110def6e7c39358e6be0 100755 GIT binary patch delta 2902 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 diff --git a/buildroot/board/cvitek/SG200X/overlay/etc/init.d/uvc-gadget-server.tar.xz b/buildroot/board/cvitek/SG200X/overlay/etc/init.d/uvc-gadget-server.tar.xz index 45bed6ca21fa46940fde5494f68e0f04e735e7f0..41ef4d4212f83dd8bbf29738b3f703b3cb9e075c 100644 GIT binary patch literal 11148 zcmV;7D|6KSH+ooF000E$*0e?f03iVu0001VFXf})<^L;5T>v_rh=uZmB4B(}+R7OI zATImBh77*pM|qS==@9LoaRQCIkR+J-uYIW>Z0%$Jl;@^R+c6G&t$DZObLY$d-q)Hr zeXKoBueDw-NW$2;Oxs-Te@`=#m@s@5uP$1;i%t<{*(kEkAvR;ANOJ`1iQ?sI#YByc z>iHv2^WH;%DPvyfC}$Di-?ClePtPz}?0OB{Y6@plBD1mu??vu=I51ESbXbnJPc`S9 z!C!oDR3ku9;1%-@Ov>0c&e4zxFcI0t^l*eHHoRTBzj_ctt7ySNmI!^qg?}2ZKR2V@ zW76}=4sXomQotzdyBtgb_?8-hG8b(c28gCBRmbKnbduP$sN7Mz6WX7GdF3zY5Zp#w zkzx6FIM>O(8m_r@7EQ{B9P&wrKPz?-KJ&fIqb~HSDJw^Fi);32dh~{WsgkVX@+xdC zSK`MwG{kQXL4Yb!S>|6VhV~U*bt02Er$^|Ds<8tbT#wuXw>SBz%2cEqNC&izqmC+y z0}cCwG&Vo>bxLH_iI_cZ-a3cr-crTUwa z+L3qyO#u30KXs!V3Xlu5r(M{Kg-Mw0rZ-R&U3H{LzuQKO(ZJ(d25JUg(`_2*!jl;# zXE!eb+)2_a+xbP5$LQmb87d5YMRq}~RiCN$wB^71DJPFTMlOA{SxBVjvjDpLgLu;n zE;M879ezTd>6u>c|Mk&Py=#<$_K=7mhAIV{ zCO7LDbz=F}PFiG`$PhvsgJmt@cbBJG|JxU&{#7Z@+Fa~e({XMo2VCnG^4d& z5(1QkrQaODQeGUv<3Dc*E&;kx%|Dq!mQT@`H?sWD4WaojY`!KvnyC{jqcf~@Zd+ZZ z+U9Gj7iaGP9kS0+B4v7+6^c>`Rfrn4KX(7&LAqjcrfR@TAO94>Z5Cgj9O2W!!Mu7Z@zNe_NDeHlzrs)P{VMW|ME4yMl>oe8^B^9 z903RZDUz(>t(&`83NRcx>@^;$z9gkFka`5PV6y|iZAPt9KQBmP(b!Wz9?q;a0pdR6 zxfFq1RbcLz{tRtWTwkKK2_~V%H?d~j2vWe6+AuM6Ay$xK}ndWNb)3;huwEo(BDfVF@JMH-Z3E*HH?P1^YRdeL7-*5 z2)R_@)?^SOwg-bRJ2(XVstF-_ zSAFx$$3-m6P_-JJWhApGYh-)JHe;mW(fI%ph@66%8Ty zhkb3zE%$16t)HQu+tAh3+na)q26p6lz>0d}|5OCgax4O<9?>9xJbm$qWOaJ%eJ%Ka zWA>Px(J!N8}3@~|1H*S zCEH25rew~2Nq=~nMWBYzRw8{lc#RJ#TxWI7jDlhUsk-R-?Osfn7}0g|HGGwoq{lOd z^T_hQoxe-&I_Z=?lYb+PjI!bnyyFc}!qW!dn9-B+PpQQ;D52=XwkuOwBZ5ne&mt}q zreA5VJl4PLi{pJgYD;c+1t6{(MdZcE3Ho6qK1c-(h{GrKx;mrxs`Pt|QK!Swt;UHK z7+CCxa8lT;tsQP+M=#XU(X6VCe zb(tKKi)=qoz?1X?(q@S_MIwNxCi#i>%)fYk0?;#N`J%p*7I@^+TSFI>C174$0q*S} z;ps{gN*a66=1=#q91i>CRoJ?it5LKwoy<<1TOtnD&i3FAVQvaJ^!oG7i-bZL8h&V_;q<4F|A>n!| z&+=6KDCOLjaY#Bn)&~tjtV^1U*wNA?rE)Yp*3~4B&81&zYTqhPy8>8{T1t{31QW&x zT4VRm3CuLeac0ZW=wF-a>p)?kmDEmbi36&T>D-$t1%GP9P&vrr6feT_vGHY!Y5)L~ z(Wc%$mgE%t?RmArf7yEZRYJ;Ass9}uq+4RRMqQuwYi5(zeUJi#5#CMu&-e6@bxXXw z2j>s0nii%2Z@i~Tv7esKRpcG|R_fXni7;bym;MmL)}DPfD3)nUlaUc(5IoRj;yv&n z@j7g)fu*_Fx?GrW^Imq$^Ec89`8<_!moF+@>5TxH3#j2L5D%tQfH2B)mqv1|kf#B9vxh&1@k^U6LK52 zZOD3LD?jlw8e;{#@C!;48K|a437Cm@uhSG&x;lqpQt{lwJQJ5_Nwk-W85xQl(^@bAhfe8}pZkNKqh2$NZ**;VGp*R5~PWo*1H z>Nm~C@{dk8lgqv0=e}*(h~+WwSZ=Pfo13eu28l{{*x!5}z-D{w+VeBu#G{0x!TSWJ zGlW$~f4M^;&$<3K#4zht&rm0SUHhqaNzyF2my@n9PI0CfHnN zai8hv_Y7!0q)v8)w$tNrKarGfEQ-`Yy2ZvS$EnaMKbx*7zKF4GEL|!AGaTT zg<@p%fn|>1dKXQpgeAflQ2&9=AgZac``$4rLNY?0Gy?VfPp>HM$5XOFe+B_BkU!zF zIeXguuVAk-`E@H9xF!LzLV~Ee$*)|Bc+BT=3S+l?)ckaD-D;J<5?s@{pQnr$t{IM_ zn2V#SmZ9fKnR7z$lIMgps;6U7fRfE~{@wQYz1%s|(SHI*UWbyama$m!T@#>3;E1(& z_5Vwv)3HF9zC;%HSUPomMH**QWWG-jj0Gez`uDvcBaBF{GWa*SNEaQt^<)Cnz=~&H z^n^v}Z6SAn-Z9W$oX8@j)Nr_8Z(wAZD&h4Mw`gt~nmo9b0j{p})pub_80_6xnew>; z!_?96Q*YQLB}R))lxH<`%u)Xm=ZvyVhT!H!T$nmH|I8L_bcnJMEY9ob;L1oDap3t& zw13~dUSkI<+{+NumtB!JJ#kzXqa;555|g#JichsDPpmy`(MT58Y9ZYUN0QoZ>t26h z7QVVMQOc9S#+0QCv=jP9arQvxugA4)M8DF1f{+iBHMi)Z!V-QOF)7LnRngXz6@mzA z2j??5I~ng9kW^oKwG2Wl!pyV0I)sB#RV2(vD9LxKfoad zl09K;LsGq#BI%Xj4pd|4(9K7Ni^MT;1Efh%&0t%ogc4OCZy=lob25}Ev8F%wE*N0Jl)oAZN4I$icO*KBQg*RMmee!EG$v)|=~ zW!|;Vo18sp@xb%Bf~jU?kBG|@Y|`7jE>8!s9)wxXL3~*q4WOnEyl6y-sQd25- z_HE)UO!4{RP<8CpHy>Y>V*a?rn12puLOj76(_O3Cju;rEFdQ9sO=NVAYL2o_h}&uv ze<(|2bYy+;@U|AjMvPoy=R$_EMPYBo=*2`&mT*aa(_yMo%pz}1|B$Dvh~C1e?ov$V z38}FagORlueg=uXWPta1YO0y0Estij?TiYY*xaWu$E!d%zCk)K)Aa-HCp#X+e*!5~ zgdrnVA9I91>RgSmYd*FBG9t zh2I3w^2rBqFil#o>m`364M+xd9jrSSE7FZaEsZrIahitAV&EmM)sWSCyw?{%U@EG> z&s&i?wQ6x+hohxt@%cr%E!tdp4m|DKMh|IyrKH&di+i_v0dD=ZJ*+%g4v{|}8QHvB zVn}d1#CN7#Wx++94J*912(tFv<+Xw=J1QNLEcgJTmGHhz=EJI;>tNMFW)5!KU)@f*v<`6Rix!Nr1!w7#=(oZx!9 zf2ewDsBN9Kl+W}_P5hgS1&m+Ev-+wwgV{doqYpUPLSL|n^r!Jz=Xz~Rr%R8hK`Yj) zT8jwID(upPW;n!)J0aiCe~(TNsICGcb`%&ioyd;x2+$`7@LF63^7DQ)GwNkB~9h((nMNIc3#p>P*`=uRYv9b2_^YC`IwFDsA$c*O(GL?L~f6Hagt z0k!Feb2PI_C!(=g=RU`LBD7RbPvwpyn+Uxh7bwY62w)M+;@jJVRv_MK_Av@NI`JaS zN|=}n8s5wzob(Xm7MGrqvMBHWdX^YAl*}XnEMP#nW0r)jldgEHzOMHA#HKzUoINN9 zz8E2Y9)RO8@Ai-|+uwH9uR4Jz{}~8tNtVGeOC*2cy51ysp7XL&Hr!gaxFgKHTX(oJ z7x8WN3_Nb`NSKuiLFQ6Me_|X6x#)dcE}5Ih>QWjsgtFton_Kd_RK7F(-!BIq9?U&i6g z$g=Wh$K8K5QUm~hDy zQP~oYd6~DP>ca~D{N0UU5|rT;ujV%-YtrA#sMmmtzp!`eZj!L~gaX|}tU>|dsTR{( z0Q0)B^^Eo=Apx-f0sXd>qE&njq0VX{;Nfv}Ng3XSF{J8Qn8c`MdiC%?a1GAwi0u8D z%9E=`!^|W1(ZqRyvi8hX)$+Jp+T4NKyW|#_X*_ylNA77!0d` zry8wUe=s}%-ahxSkWEg01KQm-w?}jZ;t*H~aGWzCvt#qnxz?WQ!kD6m=_}FG8lId! zeh*{Da6_jF-YN;M&YD>Qm{V8$R!B0^4eP4`k0n@yr-yt1x7o;B&iT9G)X9MiCDb9b zVAjD8Ig9FpMFB5YqI#^g(hA$stx3wQu9qk8*k+(4`7qHj>kPfwNp+*|hF&)S%5+Nk;_c9B+h)q3!+9W1G&WYHmG`qJ+iX*_!8+(%5axIL z`YUh0Nwvip5Lx0NlwZ^QU^j~>c$FME z@SRbO+y=t&<7xMNu~3v3zP}r#koKEk8$YFhJhKghn8w**@>lh0pcy$|+Cv0h)|`D0 zL1r4!?wckwggDoRM@C3Sf6~%v(DRPzST`}Gd@|%(ygaEKPt(}-cr?yaKU4f%d@y3w zKDxm(d?L{JM37%!az~ilt>=`l{TOMmh!0J;h(W~0G%eT58x2lsz1j6z2&GAoKBIT@ zD`pwecM(_I7&Y*j0dSWF_#^f7Sr|hkN9SvB`6#7jarDTTrbIi#T!)$uosOGWMB{Jb zGXwHH|Gj8H?1B$l#DuNLvuf=Af^Lv$C+gDML$?K82-Er%>|`3VgR<+C&e;1XFS&T> zJ_>Lfwqq0>DrM}vF33gH0nO1Gtz$~s*b1G6f<8?;PEu){$U-}y$&3!9E9zK!zxW-H*>Akn13(r(&7*5H!@n9 zG3nYB7csq*D;~~yHTSsQ$oc>p=b}sHK612q?Ix!J*-=D2u#C(3+qI|ikbDGva&C>Z znl>w}nipuQN$2eF{(O41mi>9i32PAR?l#;ieQ?sz87$0$CI=}cZ{)=Z3JPCe_Cn+Z z3Q8H>0qNn=m2D^noENb2Z0PaU68qo`$nQ6`Kn6ME3gGDQ;LRraJy&`6w8ysxx>uNW z9sO;5^{2LlJxK#Wh~o?TVwz>+u>Sp_V(L_Iy`Fsg-CghzFin}i|E2X_5oIerq;EX+ zN)7WX1ynn0(d%LQy0b424wp*^`wF9P=@dhhb!Se7;22DM&C0Q#ZE#{DjM-ooAp}NR zEw_#5plL=BtP7>vCXzW3&E-gJKDj#!lOH0SY{B|5)XyMAR!*wn=TjFZ6v8qq(H0>! zHr8My_cKT%7wnyql72kHjY&FO`?6+t{M5u+)-?`>^na=^8J1>)+~Uk}6qOFc!S&~} zD(Aqgu$s!H^yv?zji=oA$^uQ~BqbZv+td%tE6sRE%i3dJJvUsM>mqc#WH1MYfkzN9 zLeC;=w}F`hQ@W~^-c%~7OoX7T9rqTvq+`Hs>GW%upCWNk`v@jgL*FHZWoqy9Yo2_^ zmCPUwS56G!sPn@l@_mfYS}a$yq|JA4v{o@nh-|~czhshY!vV`+Dj>_n+~QO4&-rY| zu#Za00g?aqB_Lk>vOn($VZOOD*Rduy03nC;30tFsx!NB^`*Q|wuXJI`;!%+H(!4;= zPIV8&kNuC_jIYpe#b}}aa$VBdm!siU%r2|~z2bN6mzEpx^N5=*Zk=G!V2jOrZn z*8@rcu#|xFmM+)}u8r_A1GWtmrjclS8kB6A!;3Bh2qVM1@R86&zc9B(4dyx?jH2-! z`4=*T%U5HSLZ_EWg)s?`ly9pqWkJ`>@@G_Un2nu=5x<*$gP9rg2i|>z>Hj5|12<5e1ot2o^g-e3K1K@^q#yZx2KP3f3{%FqBmS+97YQ9jABs^&v2 zx_Y82-M=TJ7t4s+1= z$;mE0O=rE)FD`=5)G!#i(4J&5)rDR@Bs!zwrEN55g`*zUBb`PT=zeC+Sl81>IW`T( zkUj8#K2Hj}gG=ax87;?omXiijCNQZVXwtvrY0u_p-Y;)AFDdnp;1Au3k|T@VaYLOW zYe@q4^5o2iC5dw3&>8@4FVu*>x2`R|3e(WP&xF1>D8~Y3_qKtEH+yWKJ1<9`m~fsG zZ2K25(`J$r==;4j)hAQK!~ULK#*YD;2o_l z_a${_Y1CWB2vGMgfPOECJ>Po96eI+7(XA#@5k?@B`o)Z3#gNiZmtBW~F1|>UuYrVb z6YDtF#hD>p!20zPQ?!rGs2!ILIYuW$*3iVL{SmgHP6vl367HK(&;bST zjxQ%amL>#TCKlOdz(kLl0))l9!3Mg)%z7pFe&0r9`2~nHQG*D6l*^d$F!IQD^lhK? zvrOf9h~-dzp@I0yjQn$GMZ!8!M*aF$q>Dg;++?^$L@sX0%-V!>7+38?K1++|z^W&J zkANLzu&HL8=S<1!$Pn~5W)&f zSs^B6V`q;tGXBeLC=@5qS&w1QC8I8a3mk&vz&8j8T?N}u&oM3k{g1fjloo4!;^}%)yx`Na5*`6259GO& zlrMPv^8MKXvcOKh#w=pibHn=|KE{Km(%#*!_+=PES&F1!B5)0i2&|^Ei~s-B{ys^F z5;Vzz!(+BE5)`mYrx*`|2<*GUa2$kLRprP_;PlF<6F;w$Vv}I1_^Yn9vSRQa>4IYT-|P4R~j_Hmr%-oT;hOd*V55eZQ)(@YR^bqqRta@znCClT?lT;`H13( zEHZJ%NwG*#%{h-Mzkup9QePBXg;LskIJBvq@^MQ7y5qf)*>SA>TpfE~;80swlX;lH z^OA1)?U0J{_jjjrhZ2BUETv+>XFhr3DViN>0o|{%Wv{e_*4!zns60IEh8~3{3*;U{-)yeVe}&c%!L<<$Xw^+s6tKWfB>jZFv<_`6En z)hpGLj_*#$MlIpT`2$zExN=jvSn(ZYYkZ!qS>(QCjxYgrQ{*0zZm<^g`+R}Wx+n%) z@)o8BzYO`uz(Jz4Sx;%%4I3dQQy?$T(z*LUf{1udK}wvLdY@&90EGQ5Q2u37R*pOa zR(I;yR*WRDP6wk->vGvIb|FNA0eXC0w$$$4@`-f@w1W{;-wBe{&DA44n+QAOP)&d* z>WBj|qY8floA4OJ+pFltGY(-}H_b9g$(uPqxxLB;;K{<_7q zr&CMinxT&`Ee@Ut38$?`b>s|M%qi0ni1C3rY|XTi7Cs?B3X3sETx1Be!k3&6*$Fzs z+uNl36YdzgKe+j$=eTQI+W621gJTwQTyb%Hk4-EF67<~a=iFO(CEyBzZ7%Hw#4dZ# zAeHVrOz@v_5F!^KY^1R^v}0aqQ~$xaW7Ky(OKNtR0~J9Ql$NI#wwrzLMR+yk^S3M5 z-7WCCt4XNgY(r|>Am{ZZdz=SyBdc{=()V}d(N6oW{f6Sn`elNa!Yk?qsUoDHfkOcc z+4eqAdA6iU#r`VY2gSDWe7QQyOK0QuvH-&aMX$1TH+`4@wcf>#uB5(j5~vQKo$?RG zkQ8`)X>}PN8v2Vqgs!G5@GA>7$gPhKHM?c~8M?(_y)phU}n3InKu zVJa-a(Vzz>V4U@K1yAkV*L8Gor3o!7%pBD4u_o)Qapz1UO~DUh`eGg37elbigUHtK zC-jM0wcH`YM^mpd3As8dj6;45Id}@+X_UdUW-3&Ft|!}agfEi5>BSE3a*}^Sd^=Ek zPEJW7`TC*_lyRtdIYjL7IIA}wR!p%zm=$KqpvyGWG`sefY)AW~CKv6v$p62LH56-n z%(Hk=h(Hoo#{-uOG&GlH@-~eQ9>U7q7?Y5bOS%6(Tz>DfX`I3jNNgJr4*sbDLS_bd zK)Frf2&sS0Lhag4tcpeTj|XIsF#ey0#4y?I)qQN9fJkA;BF-|+dSqt^#}LIrY}fa1 z#*=^-IC3P>IOP{|tk~OIAs)>}XxlD8Z9#4DxMXI>R2-;Y4BWnkG-Bhh7mF;tj}L4b zr|(-K);1HRl|uh~HYc&~QLQJW%g=mO!AwXUqT*e~oc`ue{5}3SSM)}STvASLhkPv3 zF1Ls@OH^Q}J$Kq4>PTkO#2%6h>Te=&&e{g!>&*U*{>DAQDm{tBhyeE`s4PRhGp;U^Lli&Khi~kl*YhDNnGV*O6E+Ap8S*$0mwEeDp zli<0dpD}wmNdL%G_ZEStbS?hGehhaIL*TZ57yTrwA8*d%J5f<0&w_|^Wg=uTzsQfc zbhG8uxJ~?tn|Q7b;qH>mPBTU+@RAq{qryd=uQH|; zCGJZ9P`L+w(tLrYiEG5ZxWM*P$9ttn6Fj=#B2B0{S zFDCp2Z!$Xdzt@;)jj|T&$RvQpo1?J<@@Dlbi#O%c@P zc9cVXU9kXXv+l7&9C&5j$cX<|U|NE^_edzdpaY=AY(rIsY$tEs{$%9d~@U zYqxsKyJ0?qyW{xE_B#T1j%&6BIRe>C-VZK?bXZ1MzQyO=Y}b$^BeO;Pe0yuJc#{hl zq>u=uK-cBM+91=83g7+ppT$Umb-Slx!7CC~Ya3DfEmVyn!3a!jkEHZRE4V-GPvo>Q z!RADvM}hLmAOdoe^8U@ayD3WHlbI_JV|2S_JjwMrMLNg(kM}f7&#zXbS7(g*ipi%|v?|O-y&udcB?4($iV1?Lz>oE_RQ87+I20k{xW!p7ziIf!lhJr>7GBr_u z{`q{CQ*MQ-;?@s9g!Z0)Z7iGGjJ`4+ItV*C3E*SL^5VGuA0c)#3TR)M&mOEPU%W2n zB0--N<7C;ayFO_!J{*odX&POzI}e@-5(Nd=*~tLY94pOxp#6d*uT&WXF?wmbR`!#k z6L$w6|6=Gya5?>Z6;pXZA_X;U6=aed9Q@lN2M+}+Fk7xNje$;a)yq%hIW%=@$ zCTB=CjE2o##*;cX=kG_<;D?WlB4OpmecU*f=oxz%L}!dr7*2?oYGT#Fk;82ny75e= zK_1PSzJ>wS-PA_7MqS28QVLWc6ndc&5F`#(_UyfvD$4g)Sb)}uJEnuWk98xD3AWy= zE)BqB#bFS$sBGBbe&y=<^(bxTl0{bRc-y-p z8SVT%9P}L7FSkf8QsSbqyQUon)qX6MU+GbUhTyn)j_LLyIO)aT~QV!M` zw|m>(>*Vbgs=ihrTM!aOWK}Dl95wc{3Q`C1(N9(cgXFIW`&fOCE23QUrArRhRkG=Q za5H#gXo8>-LNC&G`HfGgdy1Uo}0Vpg#-F8{`Y8A5_vo=iB03vb5Qq4uu?;SY$dUG1XdzVM3eWxa+ZII-Hm;1aLZ zmiS|BlI8Z^`pqhLLc3Tb%1JJ*gE0xOX6}gpm|-F)S5^YK#q|LUk9dek&c|o^nDL9n z<4O+!Y!;Lf&Jtv_rh=uZm zB4B(}+R7OIATImBh77*pM|qS==@9LoaRQCIkR+J-uYIbrY3F*(L0wOJ-__KPRzQZx zNPFH&Y>Aw*MD>Yo{XjFGV0#vUKVxVMWc~z(V@`bopkqNHs})_ROr6f;aU5LWT+lGi zMPs3aGR=1V8U%7U_BAp{$D-i<((IIFY6nYBxb;mr>@JpS6&tPOtxr*;Z90};9bAB3 zb3(`-Lb4ZuNfv~w-=%?=n2U;tI?5u@(BL<*k4*Q7EA(aWKMOzkwp==kU_QB;G(Yj98bbBcb)18|;;s0vdf2@&eT|f}325 z9U__|H6U2oI>t^qz2a#ihaRu@5_Q<*QifvJALAI!tdzW; zdZ==$X6Lj5YA=juJk7K`u!!ORPP4O=HKpW~v4IA!=j}I-mLhE0A-YFRLa)4CJN!PA z5GN(c|L-cu*3FDB{Z2xjKjZRH3HWD(0%NcqB0BfPkqo;Ehi1}=c~H@;wWuHjlCD{L z0}oO-4)|5spyaKmS%VD{-@RqTW)I$YUA*>9nbKb_Cn3zj25W|yuzQ@*|4NRWF^A`u zN~E2Gd0wftl|z@zP@fS{(H^y@)#tE1VHa)}KXW+H3=~yzL<-Eq%`lkUuMG;r(%Bi4 zhA8bQ@H$-BNBdB|fnDZ;LsOZl7EDf38psVhVwV|P#y;qi*J>~gOTT*GLT9MFdVJM1 zkeQU%ds|2MCqt}!23hm?jB3>sDfH2+9MHzUIV|qtLF$l)1^#Zd7BiH^aEmaEopk7G6v_HuDtwqh;Q( z|0^CYOV=^dslr+OJNgWzLa7DC_bwuKIc%P@-NAw^{X40a*d{(Xbph_N>V2xR%QKN6 zLwF-)rR8IGtXpD#C@6X@fpKKUFx=t08Dmo{6Dpww6;&*o;lZPUH@ET+{>1Mn3(Ayya61jz)gl*;LEEo=aS4(>i#siLGP& z0oyoY+#K>tldr4e{}AdWaKR%0Tu5XSaJlq@(ZgKU_y?{erUCG2$8UE+{F26|tADV( zlrkpX?%zrLZZFf*8}n%4pWwAyR5d%C&ttIVVY2UF!&SyNLQrZg3jIA9j=(;a#J9P$ zM5=RTUE@SJYKiGM2}_QL7wKE}tH6fLf&5b=oZ#?mvu&+@`|&Uqr?KW)?ecn$a()@cnA%7lF#>);+_mJ z1Baq-|A{?SzMvW!OzJkopi+j*xP_GQ7SxKwIvvggK|N*pzS^Vn$g13Tqns>Qm+EOd zBE`%X_xRye7o1JA77-i}rKJ1WvAlF-dHl#bU(U@ql9YLAe;`tK~sT`Deur;EzZ z>w7TpvceG|hXYSmS~7^Sb6(?@)ocd_rto$fC(gwJy1Di95KE_k&4bi&t&_)kV)`+x zxD{t&fNGZHJq7!{plq!hvYdR10go;>jvf39=0#ZcUAAgM}!sAGNqDGVFn!>j*-dCE+OZ1tFOu;VCSz z0!+>hOJEE_gc?m5V9C}=EYGf@-PSbgjC8NC4${l1xa6|w&Rjb&(u3()BRXNsVE=t* zMgKfNi<;oyxo_u{S(CgOP`IlqL$$5hv=SJusX>^JUZ33qx~I;g6wSae*xOVR$Zt9~ z)PGR}6mf~$T%wgqnu1e)I`Zck%>0r~Ud}@EDlDNuN;;o5)5ewwSVb^$!rPsf>hFb{ zM*6^6U>mR25~)u1jtmk(8Jln1pxYaF7Ph#zPUs1;2kQL6gzx%#ql;BjDqE<@4HqB- zH0F^I@khf6D5n$D8%Q(46cSqxY&53F^v|5C=>1nA5?`Q9eHRn%q>x0-b!n*VnYMud z2%T|3<{x_Eqf)=hz;imMJhh*@RFw77httF8LKBa@>%J+LUbhFZ1dd zRbbKAGaO`5nWxWzR;r<)T_0QxcB@zQTh0fFakv)ibEy31UADm7IY?Oa-9nKMu?gCVITmZ#ls~ExoT_+6ngRd6&VWN?{I2E4RV-b3}>QKbPhqF_jBH;$) z05Y-+o3b*EYw!89lJc*ph?p#tt9l?UwMtKAfoeK6#7kj^^Xhj4P1!0I;f<=?%y_l? zGfyudkUi{qO$!$!uS;i9J1)~HKkv!DotTFwR&vM&8DbKHo!9fH`aV2ex_su#Lab5NXv5@qqXcF#7WOgD`KP>q&m43VaiwcI!vAKK14Le7veBO5M{ts)?9e|jn^kkU-DIN&^n7gAK98n&2cy+ z2@GQAYWefI%8-2agwEXs65JPYP3OF@n}jm(F5DwcuV>zSty2OrGZ-@d3D%UtbDmid zN6yb@Hd`hRGShM(ps)*PsJ4@a8l2$c9*Ht5(}7J>O3}P%G}KsSBd&Uk#kvA^ulB%M zS-bSw@!wv-QjtItS@Z3Wwmm8Unn2ARE|h?uDU33tx;WzhF{1Kzzdq%L{n?5QAGb{; zVtyJo7xs8UU}~hK_1Wi0@WD!jN%5ky>SrDQ-^NQ3H-FpDk%&2~DSf>>Xer>H8*e6z0fG+eDLw zlUTNj&ShzkbsX*>rK(Q~pUrX(gwrX%pAPTa)FHtNP!%GXA zgT&1zGr+uMc`ft=taCYh=XrO;DAURAz_$(+um({QDa8|`6N7O%fh+PNoxD!HsBLx`0pn4Le(i6D3AC78bs+Uq@TR z={_ZXb$qNYwUSMlM)tNW-YfRYkOVs@Q0GjG`>#nsaGdUMR2ZI7$H|cLx?Dcj@~hOd z@^+&DBDAbY-`^sd=^Bc9@f{Zgn5FNMPCATsdBPbei2v)9rIrE0qcoWe^1M~pkl&#B za6TkeW>lV>XlHS#!G*)D-A%w8m9WLJwRBZe>XL7Q+rp)jojyJDy>gj`~=p-jvaxT5*EaiIVUEEjb zmrV(6s;mo7?owWSBJFU=N1{HCmDkU`-POII!>IB!GB4p<8GoYaM*b^995;efy~hbD zNAb2fWk5jE*zT!nY8-UI=qa9bywuF0`PGBU@eP(zV-f2 zBsL7>$#7b!9}UKBO`Xa%o=9-x-aTf8|3kzD1vCkR6b`rKhwW`r+Pto2cKSj1vUvVuL^xi-1tR%IeujxF-E2!p5GM5)7nM< z8b!+goKGm(y%Vcd;x|8vwO;65$egO8(I-|s6hRNPXpHAX=r>t)+Vuem#7%%uNL$NyXB#@tnKeo3Vp=c#~bJ+Jp~OHmMpa z$mP{w(E|8AZUQplwSpT)n(!QuI%3A!SaCzbg|be#+-wYU{j#VLvO^`iRcH_X8L8Wj zAf#h2;lEo}>VBA#Jbjh|)l{||PQF68FKpq0dtn7hJ+qSWv+lp=s@AGC)McY%M64hP%>*njPM4!AbCy|q?3vy(Ay6oTNnQ${nu0TD7v8!cbi+r8P` zd8rvh@1ci}|A`t@Ba8C~xj~+pI#shrR?rnO)tJc4iE;f~&|xCHT3j{5(i#JVboo7p zau>^@Q?_;x%I$bh+#=Rg3~^erL)?lQB>;`j8_5p7l?=-x?fU9^F>5yp)zq|N`GP=I z4L4E64XM?uq1&_(n1>8BIXD~*h7QgKyMrB5;!J*251yBO5Mp~Va(zLU2+LC^Mlq^Q zE{Dq@)u^81m*3(qtndLqH@%GX40tC`i^VuB9^Ej)DzhM;w`r|r3txkHmYf7dvSUyq zrR>E0Y~a}s0PS}Z5SE#qCfir=s|MMR+d~pQvHB$c$HdK9Ja=VP4m!4_Djzia>;Yr(NYjRQjLqHw=W3QLn!Iif3VbQaUo!nT zRNk}B)P)?uJ8Euv(qPIN9~^xC9XfoY(57aI*}+SL0{%|0H15o>BV!+d^&ysa1Cm30 z>TK_~wK%Q06@B;{iY#dwL~Q(`D9r&71qzYIjX39WsaJQTmevJ7fHj^3_9B#R=-M8P>YaDO1j-F5)OHkplGpvFeYJM3hyte@q3Q$!BH(W>u zUto`LoE45QPv^5%k}ni?wWgf$|4|eHdO#Ew1jwZt9@~ewNV-gGr1~g|z<_+^qOr%%;6W_eXlrc}Z7;ru7sr6TnTj zQoS~`7#%~Gov-T6X7OC^oTs)~Q_J&m3@ttrFlv^fZWqOwnG>8(iz!UBXEB-qdrny2IHCM4JRp?alM#6vwlF#{>oFvYY=5v`5(e`jv_)@+1i!& zeM47()WkkcER!h5tcOlvii7J3NjcUI zfleeU=CI6p25O*{bi!=JjaW9J&9nHev*khbX)^wIYPsf0AkXx=)gME0Bxjq~+ z@iX5`ysrWj2S*XrGdJyeH>Ku_fvcrgVw`iRf57;t3pel%FR zGU!zIsC;focb~{4!j9j))G;iuIwj*dp7Z2%^f0s+INT~Z{N}98T+nsb*?p=`KoDMA zRxI-Wx{A9W?I1?MwMF5M`GI97RLf&BB)~+dcK{Q;u9KXekb%x`(0>%k=$S&7_y}*W zRBdH*0D5Ni{JaOZhh&JdrmIAjANB{>ZLsm>h{-k@Qjg*j%N6Vj=JQZ{EkPQ+`&Ddc zA5$=z!z|bU7PAbSA;mOY+!!$}UD_|e3`6JU3j!NE=4EYON~q*)BlH2Bc11rXPyMsl znXiXEEn#|);&#vv_|T<(CV);jLpz06dcYLMni~MPgo^L;i>IWJz*0(5rqctf&iS&}V7v$Bt+He{FWu=$ zzKz=k9uA-vC`Dn+iNQZ;auX+x8&=FPns;xpcKmNqbzvGo*BqpbEp{az)WJNhlwy?W zcMRE_m|p+n`s|?<7hDDv@E+>^D_vuuBE(SY>il7;-l5fXN7VIwT`AuWIn7XZyL2pJ z3zpt@HqCU5*Qj;9GstnM_8m7Mv&d}Ob-W*X5R~5qI|){oBl`v;xQkM&(giUjZ#p2`}U42wjA_k$Naa9W^R|Z z9L#cMW6RJHKZpAe=YI=b&_M$WU5=aFy^))iDCCY%Kv+@E6FXnn#0uh&+@nxO#Z&X*b{mrScU9-+UjF@ z-aK~&C#{fA<4sNj*M}CtfxZkRZXg30wr}GL@86;l0iNw54~Zov#j-Lh)9K~b&l+;>S`_XoqRFQ ziHMk8phmE4z@s zayO%P56oYQFWScN-OGr9p-jr)J6~SKugMef7T`k6$V{ygMVf}|?+=du^ihnZ=(gg; zkiCj%Kxkl)E{FQdi_t2vgbz&P)pLfCD4w8Ztpi6_oFOq&&7BKS7o@7jwkkeE>J^67 zA{vE^>cOR>tJYRb_9LXsa=;YB^5$4kconF0i>d(SIS(%s5Bbv2d%nliKtl^$PtT(O zJHHbd*R_4WaEEpgZDhcXsYT^2uA+K$_*YXkTR&tOpu+dbNSkUx6-T4W9l`K9!CX$M zpA&{O+s+IIq2Z;R9kLZ*C914|dZurEtf(Y87Y_O0FtM$DA{*g?%%+~Zha?`HW$uQE zO5zoPXQEM{c%`2vXohj$uWan@H17g&b!vJm-KO*Gw>Z3SinQ7%oMg0yHHrs5B+@#{ z?2pjvhzV7flxfH%n|ln4_=!2O1~|*+i6p^DD_Op;&+lM2iCZ_?!+oFC%rCv0J!Pte zngO&F4#26$S?vVj?SP(;E@BJjpEbe)qJFhUGP_|od#IGowIGhW%NNq&D1i2>aQ30M%^ef(5sh&Zxp4nbgPvFnK|%W@*xrn1Avg z`~NrRy$5fIvf;}LrLs&>+$!%G+>gKxS(YX@&AF_2WRKek43)oyS?0~?&BO4ugNSV>) znWrc%{_q+;ir*)zLtKUq{2%wn zX`m){CPFe$q=xnRo=9#!iA7RW*1*E+kl~h>8tGJ$pZwEm^%JwuClD#}*s>3%&*K8} zIt=e9Xv3*xxT_Ch<_Uj7J3%**74!)r+=;WaFwK8tz6&KOlv|3jv&?Be6!itgk%?NG zjYJoIR99bNX<3|;TW0IkBT)Y{D-aF81W%zbEf>JlFgo-K5pH)|CosP;NTSbn*SYq~ z#MBm`Vby5l$|ozw2-9TYyPlsB$X>EEDL={wF+A%rxHI0 zm+S&69TN{@T*4jXIF|PlMwEmkGlTrXMvTiKRDA8GRp$V=8BHCQA=-7%poU-48t*wY zkKY3(0RR?`$k!ynoqW2v^+4rs3{V&OmJ#kIRb1=T%Ug*eVG@S6 z{a>Bt^3yxz=>_qtIj`B!%3FhTjlep9KUN=WZ$)v-&!vRL;DTaRh%CH)2*W7>_J{1= z9{{Lp6*xW0%j*W9tTOkl@$l4s8sjQ?U%w$iPkd>Ba%EW5&=bPRXVU)WbPr^IN?j;0 z5*x)zcFH#YeBs5(typ)DC{>Qf>gsccs{*JP8#|^BHfEOqC>NeJ0fsMneTX-1tBZ!p z#mH7H7w#turxOL$kTvs)1|GM96U$oM^MYDR#xp_e!3N2mItZIXdfwAki~bLz=l-MEkxc&qIv~tMIbOOMN=vc9j zuU#FR4>&p{>r7FcCvtPLso@7W!s7-^ z=WGTJTy6(507--(sXlF-k2DQmk*-EL;YOb#WkqlC+0U!MCpw(%6Awy&!}nXK*)NQt zS)FGKpQ6b(>c)JyXZ9jehhOPXGdDlbO)E8FL|JORvKBu3Zr^XkG_Tto9S&V@Plu{6 zdl;dP%LazWfEtHp3E36NdtJ732T)nks~IF85TheG{LOP4fyh&P5g4wJl>}jC%Pys~ z2e0{EiR<5To39rNDVpntrCRN0XyFrtP$l%GFg5bENF6@k)B6HnD{r@^IHUb<&RbEB zau48N0EaSP&~8vc-;Idjy`%HvqD+G{j#`dPsjQ&kgIGC~*3-O~<*DCe(QiQ=>!bwd z$mM$(i;;M!BI!@wHY9Ra7CB(?5#FlTaZpaMWBP;fua-U?VRembkYvXH{S75101M0I zLM4D1CVE7rhKT0Ml7+Do(gP>Mv}@q{ErCO?hqI=vCBLx(ByE&n@Dw5R*|z0EslEK$ zF6ISg`wKCx;y}Seqv%s*KUY=gJZ!4Mr7){?>&~iGefFcx=F6`Y6V?9M=_yoAKthi3 zq2mMhpiLYN83}Y$t&OjWDlKZ5=G2b>Y{Tf=H_cTIQ8tB^A z1wgP@)*@HD$}uJEGjP@D?QY%shDhZ|e6eO33<|GK85--z*+8XUSm9Q@VNL=eswjr( zqh}nGd(ZpQ`u>CmFnUqYxXO1}%eArWcmL}9=9gT603mQk`7eVhyTK28Hu&6abrZuu z29GDSbp+Kfy59D#B|l5p*Y{!17?!iBTx%`*7@-t{zf%PyB$t8g0t{j8zgIGP3=4ES zy%jx+MwDJlq~Y9_-GUC*+>uRpl^02P1ny(N7Pj_&=F;cgtk;lueEdj%%1lcQ5yRrP z&T9m47y3p&;m?Mp#a{ml-NcW>ycq=c86`ckEx#DNif+C?scgYSo97x#Q>66iu3#p9 z%Ev7Lmw+H&6P^ntjIOJY1krEwY6i(j?u7q+4A8FBce=q8;Yu1P=lWfS?*E*n5`s=Yr zpGgT;bAz*sNAutqDOLJz6Rx#dw!x9c+oITS^obI=eK*o>GR{h`r0t%( zfLeo6{Y1dh;42lAV0S!NyQa))4kat6Q{!$>@A<^xmAiUds6AF#KKG{+=cXr&y2WH3 znLcsddOd~#x_ba!?qxO-6jHhRefw_wZDr?dG+CvEh_=%`_XE!p2zDd*Fh>z-!o%kf4>Nl*AHRmNY zix>YxRxxkvj)#OcDf!edINYzdyJcOzhPE=NxCoz3nJ_CtAEqI*VcB?@*OmfhYIu}8 zmD2@ceo%=rRxPd&^9^Xv2m@;~>hF~#gasKUHP?m_1a!#jZuj6#DX--l zKeZYJ--p=qLY<$n_GtgZv+HB$GNqu;pe74-pucSq;Wt20|7U(31xyG!=M#=Uecx+n1H#-#3HAM~8HH&w z`V(jPSdXO}Ia|EQS`Uk=P4bHhlSjtx1`}1s-gR5$^hu5`#E8FQd9AC?dh;~RBhEc@ z3@_>UP!fEl2iXwRQq5FV&8oHrBjv4k=swutb?*o z1Ls4aAP1Ki7-ePXJ2x4tno^PA_H_3=#DhlK-6KYNf!V{w0i)n9@lWEUoL9p_3pfcg zC3m4Z-2?Fs0l#Zoi|yJ(PP$pV3`xH0<3*nE!SNprzL*GY1LqUu*A>Crl?dtfe}liI zbT#8xKGddy#v3^#(C=>=ngZ(cqZqa4NvrUV42B!j)JXlV-ZXOg7=(X_znrasH5E)> zPV4UJaoM}-T4C7Nv@&tEq1QuPpr5-L#davsm?@!S((Bi}9JW&=6Ilks(XlW`xCc!E z`_5x+->5W7k?&i#6scrb1mKrKo~e$0#eptKn)=TpLFIa;xR5l^4J3Fki6a6Q0fZ_3N^Sv3?#0sPeKTu;I zw1NK`eTA+xMFW5y6pnL-8N%yjUD?;W(N?FJKY6&9jh^16xl#_F-%qYR0d#+EXaN^~y{C8d8rxLphMIq296&MZ;Ul z`;ck4Es*$+OERPH5ZJ_cl~p!nCT9bsL(wf92Q>f3=C2G(x*xXhH6%E}ul6AS;* z@hopn(8GLt4JPX-$v*2wv|4IyWY<&A@}*@I4#}r~UDw?yp&WfKtF<&`;H<0t0%6r( z>V!%g{~SBv)!3L7{W=X89SKoiE1z&!a$AX-a&aPj%*uAlFmqJO!9o!(d43Zf#Yh+qpUXv`HH`}=e)Rl%n=K5{NQGLzrmpy~O#AkGO^W9QKXw|?4oQlcZW z0(&(}Qzs{fn=*WAqBJ8oXaVo-tah=pogAb?@1Po5R3j-zB$=*Q3+O$XBaYxp3`p+S zt(R&2ULZoC5kW5fYR=Hk04`EMQ;zgE6}tB^1)^?r*OpuV5a0c|z@tYC{Wq;;k{p;Z8Ms+u{bdyWFjGu9Fc8(u*^%s>zhEmu%l z&0E9v=d)A~INTYev}ow5Tpcmht46bQOLoF63tWWu&nO#1n;R*Q|xH48XBR}tmVM&h4{n__bc$e18E zOj2!2M363_8XZe{aLU!~TLXhVx7mlFU|(=T#VN;#XCs0zfDl8nXt3$a)4 zLg$zF8A|TZCfl&2b&alM#ijsyAdrM=U=q)sB4XnNB&7n%vtE) zSy|Q28tVe8Crq2J78a^}gfp*k7z}Ce2$HQR{Iom{C9OcBjSu+vJn&OF)qJF5 zqW0Vlv#-0`f6SKw*E>L%RPIvQJc#6DPSgxh0%V#M5X#avG{9XB%C;GN>`vR))qq|O zz`8;hB}1Qgq7K!{C-nKEDN;H*IKWrW1g%{^{X)bQ(jvEhHH$4-;o)|DQ!lM&H{8{^ z^@WEcNrY<>7k$ZhQa2cx{23O9v;uMERk-8CM-@I3QtC*L%Dl10A&jXnF}lDT1v;>7E|v>09>u~gQHyG0^xY$H-9e364ZSJPm3V`vKighaE| zs4nJVCwRM=MwxUiP0cocR_@Spp1ujFvKTn^dF6Q;$yIfQMo1-=j-t)_K-JAoI+yYi}l_Gp$}v^TS2It+8M4cq+w1 zE39a%KT5gBCUNFf&t!$7orO`QkVexlC{VFq3#qIbZ zUuLDL_*0@n&2 # 输出到标准错误 / Output to stderr - parsed_data="mjpg 640 360"$'\n'"yuyv 640 360" - fi - # 确保至少包含 'mjpg' 和 'yuyv' 格式 / Ensure at least one 'mjpg' and 'yuyv' format exists has_mjpg=$(echo "$parsed_data" | grep -w "mjpg") has_yuyv=$(echo "$parsed_data" | grep -w "yuyv") if [ -z "$has_mjpg" ]; then - echo "Warn: No 'mjpg' config found, adding default 'mjpg 640 360'." 1>&2 - parsed_data="$parsed_data"$'\n'"mjpg 640 360" + default_mjpg=$'\nmjpg 480x320\nmjpg 640x360\nmjpg 640x480\nmjpg 1280x720\nmjpg 1920x1080\nmjpg 2560x1440\n' + echo "Warn: No 'mjpg' config found, adding default: $default_mjpg" 1>&2 + parsed_data="$parsed_data""$(echo "$default_mjpg" | sed 's/x/ /g')" fi if [ -z "$has_yuyv" ]; then - echo "Warn: No 'yuyv' config found, adding default 'yuyv 640 360'." 1>&2 - parsed_data="$parsed_data"$'\n'"yuyv 640 360" + default_yuyv=$'\nyuyv 480x320\nyuyv 640x360\nyuyv 640x480\nyuyv 1280x720\nyuyv 1920x1080\nyuyv 2560x1440\n' + echo "Warn: No 'yuyv' config found, adding default: $default_yuyv" 1>&2 + parsed_data="$parsed_data""$(echo "$default_yuyv" | sed 's/x/ /g')" fi + parsed_data=$(echo "$parsed_data" | sed '/^$/d') # 删除空行 + echo "$parsed_data" # 返回解析的数据 / Return the parsed data } @@ -250,7 +248,7 @@ case "$1" in echo -n "." sleep 1 done - sleep 2 # necessary delay time + sleep 3 # necessary delay time echo -e "\nServer is starting..." # 输出选择了 server 模式 / Output that the server mode is selected echo -e "===============================\n\n\n" # 在这里添加你希望在 server 模式下执行的其他操作 / Add other operations you want to perform in server mode here From b2af9afb7b916d57b5ad12d052295d0d4265affc Mon Sep 17 00:00:00 2001 From: taorye Date: Wed, 18 Dec 2024 16:00:48 +0800 Subject: [PATCH 2/2] fix: implement stop_server and restrict the server to run only in standalone mode. --- .../SG200X/overlay/etc/init.d/uvc_tool.sh | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/buildroot/board/cvitek/SG200X/overlay/etc/init.d/uvc_tool.sh b/buildroot/board/cvitek/SG200X/overlay/etc/init.d/uvc_tool.sh index 4f2975024..63fe20350 100755 --- a/buildroot/board/cvitek/SG200X/overlay/etc/init.d/uvc_tool.sh +++ b/buildroot/board/cvitek/SG200X/overlay/etc/init.d/uvc_tool.sh @@ -242,21 +242,31 @@ case "$1" in unmount_uvc_configfs ;; "server") - ( - echo "Waiting for UDC start..." - while [ -z "$(cat /sys/kernel/config/usb_gadget/g0/UDC)" ]; do - echo -n "." - sleep 1 - done - sleep 3 # necessary delay time - echo -e "\nServer is starting..." # 输出选择了 server 模式 / Output that the server mode is selected - echo -e "===============================\n\n\n" - # 在这里添加你希望在 server 模式下执行的其他操作 / Add other operations you want to perform in server mode here - /etc/init.d/uvc-gadget-server.elf -u /dev/$(basename /sys/class/udc/*/device/gadget/video4linux/video*) -d -i /bin/cat_224.jpg - ) >/tmp/uvc-gadget.log 2>&1 & + if [ -z "$(fuser /etc/init.d/uvc-gadget-server.elf)" ]; then + ( + echo "Waiting for UDC start..." + while [ -z "$(cat /sys/kernel/config/usb_gadget/g0/UDC)" ]; do + echo -n "." + sleep 1 + done + sleep 3 # necessary delay time + if [ -z "$(fuser /etc/init.d/uvc-gadget-server.elf)" ]; then + echo -e "\nServer is starting..." # 输出选择了 server 模式 / Output that the server mode is selected + echo -e "===============================\n\n\n" + # 在这里添加你希望在 server 模式下执行的其他操作 / Add other operations you want to perform in server mode here + /etc/init.d/uvc-gadget-server.elf -u /dev/$(basename /sys/class/udc/*/device/gadget/video4linux/video*) -d -i /bin/cat_224.jpg + else + echo -e "\nServer has started..." + echo -e "===============================\n\n\n" + fi + ) >/tmp/uvc-gadget.log 2>&1 & + fi + ;; + "stop_server") + fuser -k /etc/init.d/uvc-gadget-server.elf ;; *) - echo "Usage: $0 {mount |unmount|server}" # 提示正确的使用方式 / Prompt the correct usage + echo "Usage: $0 {mount |unmount|server|stop_server}" # 提示正确的使用方式 / Prompt the correct usage ;; esac