From 6a4d330a265f7dbfa87c64a73ce6b6efaa9b8c6b Mon Sep 17 00:00:00 2001 From: MeowOS Date: Tue, 1 Sep 2026 16:08:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(audio):=20CS43198=20=E9=9F=B3=E9=87=8F?= =?UTF-8?q?=E6=8C=89=20DS1039=20=E6=95=B0=E6=8D=AE=E6=89=8B=E5=86=8C?= =?UTF-8?q?=E5=AE=9A=E6=A1=A3=20=E2=80=94=20=E6=84=9F=E7=9F=A5=E5=B9=B3?= =?UTF-8?q?=E6=96=B9=E9=94=A5=E5=BA=A6=E6=98=A0=E5=B0=84(dB=E8=A1=B0?= =?UTF-8?q?=E5=87=8F=3D(1-pct)=C2=B2=C3=9796dB,=20pct=3D0=E2=86=92?= =?UTF-8?q?=E7=9C=9F=E9=9D=99=E9=9F=B3255)=E5=9B=9B=E8=B7=AF=E7=BB=9F?= =?UTF-8?q?=E4=B8=80;=20SPEC=5FREF=20=E8=A1=A5=E6=95=B0=E6=8D=AE=E6=89=8B?= =?UTF-8?q?=E5=86=8C=E4=BA=8B=E5=AE=9E(PCM=5FVOLUME=5FA/B=3D0x0B/0x0C,DSD?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B=E9=9F=B3=E9=87=8F);=20DSD=20=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E8=AE=B0=E5=85=A5=20AUDIOD=5FDESIGN=20=C2=A713=20?= =?UTF-8?q?=E5=90=8E=E6=9C=9F=E8=A7=84=E5=88=92=E3=80=82audiod=2047/47=20P?= =?UTF-8?q?ASS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/MEOWOS_SPEC_REF.md | 2 +- patch_v2/files_app/files | Bin 327116 -> 327116 bytes patch_v2/hello_app/hello | Bin 331196 -> 331196 bytes patch_v2/meow_audiod/meow_audiod | Bin 153324 -> 153324 bytes patch_v2/meow_audiod/meow_audiod.c | 7 ++++--- patch_v2/meow_launcherd/audio.c | 7 ++++--- patch_v2/meow_launcherd/meow_launcherd | Bin 590156 -> 590156 bytes patch_v2/meow_watchdog/meow_watchdog | Bin 85580 -> 85580 bytes patch_v2/meow_watchdog/meow_watchdog.c | 7 ++++--- patch_v2/ncm_app/ncm | Bin 1059308 -> 1059308 bytes patch_v2/sdk/meow_ui_vol.c | 7 ++++--- scripts/build/fw_content.conf | 6 +++--- 12 files changed, 20 insertions(+), 16 deletions(-) diff --git a/docs/MEOWOS_SPEC_REF.md b/docs/MEOWOS_SPEC_REF.md index 2063ff0..b1fcb22 100644 --- a/docs/MEOWOS_SPEC_REF.md +++ b/docs/MEOWOS_SPEC_REF.md @@ -151,7 +151,7 @@ - **mDNS 应答器 = `meow_mdns`(自研,已拍板替代完整 mdnsd)**:`mips-repo/bins/meow_mdns/`,**IPv4-only**(内核无 IPv6,完整 mDNSResponder/SAResponder 均 `socket(AF_INET6)` 失败),mipsel 静态 ~79KB(md5 b23de7ce)。**进固件 `/usr/bin/meow_mdns`**(不入卡),由 meow_svcd 托管(板载 `/usr/data/meow/services.d/mdnsd.conf`,`trigger=boot`、root 即可绑 5353/组播,`cap=` 空)。功能:join `224.0.0.251:5353`,应答 `.local` A(wlan0 IPv4)/`_ssh._tcp` PTR/SRV/TXT/`_services._dns-sd` PTR;支持 `MEOW_MDNS_HOST`/`_ADDR`/`_PORT`/`_TTL`/`_CF`/`_QD`/`_MCAST`/`_MIF`/`_DBG`。⚠️ **手机热点隔离**:设备→主机组播被热点丢弃,avahi 只收组播应答 → 该热点下 `avahi-resolve .local` 超时(网络层限制,非应答器缺陷),主机需 DNS 兜底 `[mips-repo/bins/meow_mdns/manifest.md][meow_svcd.md]`。 - `meow_settings_*`(设置后端,已定)/`meowcli`/`meow_sys_devattr`/`meow_devattr_set` `[MEOWOS_API]` - **独占音频守护 `meow_audiod`(M2.90 已落地,规范 `devdocs/plan/AUDIOD_DESIGN.md`)**:板载 `/usr/bin/meow_audiod`,svcd 托管(板载 `services.d/audiod.conf`,trigger=manual;launcher 确认 MeowOS 模式后拉起;**启动门控:mode≠meow → exit(0),HibyOS 下不存在**)。IPC `/usr/data/meow_audio.sock`(帧层复用 meow_ipc.h,号段 0x00C0-0x00CA:OPEN/OPEN_ACK/WRITE/PAUSE/RESUME/STOP/PREEMPTED/QUERY/STATE/ROUTE/VOLUME)。**独占+抢占**(后开赢,旧流收 PREEMPTED;socket EOF=回收;软混音已否决,留接口位)。**DAC 原生率跟随不做 SRC**;格式归一 S16 直通/S32 升位/mono 复制;切率 mute-重配-恢复。**meow_route 已并入为路由线程并退役独立服务**(⚠️ 退役服务要清板载+TF 双源 conf,否则旧 conf 会双写路由)。**CLI `meow_audio`**(root 免鉴权):`status`/`tone [freq] [ms] [rate]`(正弦测试音,排查无声不开 App)/`route <0|2|3>`/`vol [0-100]`。SDK 客户端 `meow_audio_open/write/pause/close/query/on_preempt`(`meow_ui_audio.c`,懒连接+EPIPE 标死;无 audiod → -ENOENT 不隐式直开,`MEOW_AUDIO_DIRECT=1` 仅调试)。**M2.91-97 加固批**:①**开机武装 hbc3000 FPGA**(M2.91:路由线程启动无条件写 Output Port Switch 4.4→3/3.5→2/无→4,同值先写 5 强制重烧——根治「未烧 FPGA 时 PCM 第二次 `hbc3000_start` 内核硬挂死」,调查底稿 `devdocs/plan/AUDIO_HANG_INVESTIGATION.md`)②**长流护栏**(M2.93:ring 有界等待/cond timedwait/popen 有界收割/O_NONBLOCK+poll 写/wedge 自救/心跳 watchdog)+**几何收窄 period=1024×4**(M2.94:驱动默认巨 buffer 致桥周期中断稀缺 wedge、播 ~12s 停摆;tonepcm2 矩阵 60s 零 stall 实证)③**音量反转**(M2.95:CS43198 音量寄存器=衰减量,四路统一 `dac=255-pct*255/100`)④**炸耳安全**(M2.96:`dac_vol_mute` 写 255 真静音,旧写 0=最大响度)⑤**电平监控**(261,待 M2.97 固件化:播放线程 ~100ms 窗口整数 RMS/peak dBFS(deci-dB,逐帧判边界,-990=-inf)、`MSG_AUDIO_STATE` 追加 `rms=/peak=/lvlseq=`(ABI 兼容)、流活跃时 1s 节拍写 TF `MeowOS/logs/audio_monitor_.log`、CLI `meow_audio monitor [秒]` 文本电平条)。`[patch_v2/meow_audiod/]` -- **音频硬件事实(sndprobe/tonepcm2 真机实测,2026-08-31)**:播放 PCM = `/dev/snd/pcmC0D0p`(`cs43198-hifi-0`);`pcmC0D1p`=snd-soc-dummy(勿用)。能力:S16_LE/S24_LE、1-2ch、8k-768k、buffer 2048-1048576 帧、period 512-262144。⚠️ **ALSA UAPI 两坑**(ncm 无声根因,勿再踩):①hw_params 必须「全放行」初始化(mask 全 1、interval [0,UINT_MAX],params_any 语义)再收窄——memset 0 的 interval=「只能取 0」求交必空 → HW_PARAMS 恒 EINVAL;②access/format/subformat mask 必须**先清零再单点**——留全 1 会被内核 choose 成 MMAP_INTERLEAVED,ch>1 时 write 恒 EINVAL。**混音器 L/R Playback Volume 读回恒 0 是死镜像**(官方播放器走 sa_hgl_dma 硬直通不经此控制,HibyOS 对照实测同读 0),勿据此判音量。**音量寄存器=衰减量(0=最响 255=静音,M2.95 真机实测方向)**:四路(launcher/audio.c+audiod+watchdog+SDK vol)统一 `dac=255-pct*255/100`;mute 必须写 255 真静音(M2.96 炸耳修复)。混音器清单:numid=1/2 L/R Vol、3 Mute Output、4 Digital Filter、5 Soft Mute、6 NOS_EN、7 DRE_EN、8 Balance Lineout En、9 Output Port Switch(0 空闲/1 lineout/2 3.5/3 4.4/4 SPDIF;0 危险勿写;**5 = audiod 内部「强制重烧 FPGA」约定值**(M2.91 开机武装同值改写路径),非常规路由值,App/面板勿写)、10 DOP_EN。`[patch_v2/tools/sndprobe.c][tonepcm2.c][APPS §3.7]` +- **音频硬件事实(sndprobe/tonepcm2 真机实测,2026-08-31)**:播放 PCM = `/dev/snd/pcmC0D0p`(`cs43198-hifi-0`);`pcmC0D1p`=snd-soc-dummy(勿用)。能力:S16_LE/S24_LE、1-2ch、8k-768k、buffer 2048-1048576 帧、period 512-262144。⚠️ **ALSA UAPI 两坑**(ncm 无声根因,勿再踩):①hw_params 必须「全放行」初始化(mask 全 1、interval [0,UINT_MAX],params_any 语义)再收窄——memset 0 的 interval=「只能取 0」求交必空 → HW_PARAMS 恒 EINVAL;②access/format/subformat mask 必须**先清零再单点**——留全 1 会被内核 choose 成 MMAP_INTERLEAVED,ch>1 时 write 恒 EINVAL。**CS43198 音量寄存器=衰减量(官方数据手册 DS1039 实证,用户供)**:PCM_VOLUME_A/B(0x0B/0x0C),0=0dB 满幅最大声、255=-127.5dB≈静音(0.5dB/步;DSD 通道独立 DSD_VOLUME_A/B)。**混音器 L/R Playback Volume 读回恒 0 是死镜像**(官方播放器走 sa_hgl_dma 硬直通不经此控制,HibyOS 对照实测同读 0),勿据此判音量。**音量寄存器=衰减量(0=最响 255=静音,M2.95 真机实测方向)**:四路(launcher/audio.c+audiod+watchdog+SDK vol)统一 `dac=255-pct*255/100`;mute 必须写 255 真静音(M2.96 炸耳修复)。混音器清单:numid=1/2 L/R Vol、3 Mute Output、4 Digital Filter、5 Soft Mute、6 NOS_EN、7 DRE_EN、8 Balance Lineout En、9 Output Port Switch(0 空闲/1 lineout/2 3.5/3 4.4/4 SPDIF;0 危险勿写;**5 = audiod 内部「强制重烧 FPGA」约定值**(M2.91 开机武装同值改写路径),非常规路由值,App/面板勿写)、10 DOP_EN。`[patch_v2/tools/sndprobe.c][tonepcm2.c][APPS §3.7]` - 后台权限:`MSG_HELLO/MSG_REGISTER.flags` 扩展 `MF_BACKGROUND`/`MF_PLAYBACK`;`PERF_BACKGROUND`/`PERF_AUDIO_BACKGROUND`(规划)`[FRAMEWORK_DESIGN 附录 A]` --- diff --git a/patch_v2/files_app/files b/patch_v2/files_app/files index 1fad387a27fe3aff4d76a5a875ca4f54b1b663c3..588842cc7104232718e7461014e7a1123c1392ed 100755 GIT binary patch delta 137 zcmX@}Tlmax;SCv|*%}ytpk{O4=c?^7{~6d-co-Ta{xdMCq%bh5D08SVFmWgrGzc;> z9N=VRP~=cz*nW}8CQ{tVM3O;?L4bpS!AY2r!Qua2^*s#x*Y9B1u>L=TqYk%)BZC0L n^7V`ij5c5F)l?)HHmFZ`Sk0)@Ua*=Gh?#(xd3(WXmY5&_AFe4# delta 133 zcmX@}Tlmax;SCv|*=iVoz-4pZ=c?@y4*&P6?_t=#eh0&b^$c7r49XlT3?l28Y#vrQ znMg1wF$i!lFdPzRWN_wWWKiT#Vqj!oviV}~rXs+Dgq44*H3p@&8X9!vzifznShvid(LW>gdhMOs3+V2 diff --git a/patch_v2/hello_app/hello b/patch_v2/hello_app/hello index 681ce29662702ba2925956e760f3ad1d3478964a..95cf81013608af2d77925a830c3df87ac0137010 100755 GIT binary patch delta 136 zcmdlpTV&5{kp${Z>TBI}rJ9#%P- zNH8cd2yiek91>?_aOPxWP~=czU}RvjsdsWykzm-M&iJ26h3UVt2A6;`!(o0V1{I+E ge+G3G0fy!4r%&0ysMEe@10xVK0WtIPJsVhJ0r)m1vH$=8 diff --git a/patch_v2/meow_audiod/meow_audiod b/patch_v2/meow_audiod/meow_audiod index 3f0eea51cb585f6da63fd3a689b001d7b35d7b65..3cb7d08d3f1bbac5d2df381eb7b1e1d7f07b4443 100755 GIT binary patch delta 10772 zcma(%3s_WDw|ku#m^li`1c)Qz%s4X)g#2J=fa1>}8k&+Cl9HJal6gr1%?uxb85+KT zcDCVH15{L$r;|;ZCZ-mardB>EpZUU+lCspw%U%1N8JHgTyO-}fXYciX?6n_f54UQ? zTeV`t%YE`%4+zBPlRrPV5B?ecE1kn<_Q^aiqP!LR9CkjO&T+1Cn+^$NAo9M9&+#t( zd88Q$obe4u%lq7cXOZ!2i$M0^a~z)rd}?+Hq!rsc_$>TZAmp4tUOkI6eAM_%KzI{A zSFnE%+h?&oi0v)p4Z?ml_K#ryZS0p~t3PL(9q=XO^}iyJk!=ETZF%1bbDHxpwRZKL zIA{A${H{3HzEcLE(IkhwQm#r z8~%`fOgWSY#R}33!8<@mDUA#DhkJBNs0H-20N<^&HqD=+&3VkOv*afiAoX7-x?}|)^*)$+3%+pdsJj_v6 z)Cn=OY0BR)YoaX3xi=~d-)&JL_|``A_lW3Nd>2HofH_n%*xPf?X4Dfz1c4|`bLfD< zM#Lu%4)e5EBVKPM<~Ob630g8Z6RkfOZ1I)t62T4aUOa6wiQs06qtQb?H!nQQC5XVE zJnRE;GjXml$W_E?Xk|VPj`7!)A0-}ys7wM<-%ATLy$G8u1i8!Ulo&rKx6O@Npa6@l zJvK~0tA=4Ze8&y*hB#aDusNU^S-}le2-ymog+Nu&NLx$15x9TDC&PA{G9m(Q(p4i? zKpfRRo(E6Uvd8CO-!owdzDFf&!3f(EEO3WvN6x|bs*z#v1l>C_6E4x*(S{Bg~~$ ziLsDOuO>#oB%AihsRGp5a>uO|;FQfbDFiUaxCurvVjJ-gQ1Mbab3z0}(8>uGNTr7- z_`?&ns}nv16smkW0dr@&F)^N}Ff^s!F~m)Z{C9|&d*cC{i!8J~Wf{_QpV4VzFvKA`arG(yd(d5~{oN% zc6i1{_{)goX8v`Isxw1ik?myWUBJ8_ojE;V(MCD%0*QNM8qs?J84>uOwM1<$t{};D z{H#dKaN(>Z6goFcfv(d_S>7;-{*q;bKw6z`)C6KFrn#F;1IdPZAaPNz+0JFJ1y7FV znd^@k3ZwIxi;W_mJrjtew?{zRyv)$_w(4{e#B z2QSc+1rffk6{#dXSn5`+%E|>{nAH;tB1KI(Q5#B=FoT+f-V(%fkxWAu#zGjKxo|2> zr$-m+u-~>Y9iFA*7cIebo?Ns7PSLd2zJf1pgYxD9CZ#qXlWw7ni*2x;X1snK&d|gq zQw{AEa$T0LjIX(leIV(kvz5dnh-|W~#EfsX9bMuNu$kU?Bg=Ce4uz7KObRTOw`oSf zM0k|$E%1jGw55PSg)L`k5(Kz!AZlY&8gVC94fj<^KKJFVnpCcGrN4 z`MT*7kPjEX6(-Xrw95H%>43s{@CvOiOowdhx!j`7##w95&nL5`*-OZPTAA}5nz-B# z*ZPd*^B{wsTb?9lU=8xQzMDp`*e*d_<8IovB20p~z1`HjG97l)!j(D~j>eUK19o$d zyo`ivk>n8Ot%BrBE6L^_0@e$W=-+oJO}pv+m3e46cU2hHcJ-;vsm_xYH2$wrH1uBU-P)*zeow&P*8;-b<97h)y88Nw4Mav+7 zHWqtRYw<`Ny~1J(VjGLI(5j(iG``y#ylH+(jH7qF1n!ujlb3j{k46b{<6k6=v1?uASLk% zyw{=W$&=*d%snF0hO{acmKMFT(uePfrKwo5iSJAnH#w-&XyZE}d9k>Yaaoa6NIE{P zax9Xh;$eIKM_o<^=9QTt~;wz}XJjV-6lCtRh5`<^EvtnNI$N&hdPbVf&EO znTig2VYN@AGgy+yT{^qcWYW+>EVC1uMx#qDo{2mZ+>m+2o}x2Lb())!GQGfca7qSU zUmA~Ty;M2`--Z%z8eaAW_V_3@mko#CY@YuK0rBh2a-84NxV1}=d}wWEnylO^DL=b1 z!o+iI)~6z@H1P$dn47@$$((N`+(}N8&02+^EwVo6F4_|pGeY8OIKHF9OO~f4>k=HU z-FopnAAsL%TTz5(0i04AXXkfi=VyiLpKl=V7zi7s02CyvBziU(Lm*RPL-jr835 zbWxVk3*~gwyZ+)bIA*Jytz|TzG6W{mQI(Mx<>Ja%NTd5Jhu{wT0Pz_#c*79$ z>8%(yZXDf-)rUvN4-L*`V5_7@FeTdxH+%&KV>MSR)cti3#>sfoIJ#(4mU-L`11_IJ zO#dCjuvNsM?m82JI(1{3NsldGTAQh+$_RyYP*ns}&>2-pj#OKPx%5!gROn94n`5XAUBx7bBto8+%ap!c^-9^otibE%bh zk@xEPV4K6O!v1PZK$IR6koqt`NjcN{h$Kz^%uCC*#)3#&ww@j!>$3`6Uko0c_>|+N zD@uA&9eS+7B8Q$BdZ{`VrcuK-UFXqbES52&iQ5*ycl7YK1jDxyueT`&*MG@BwUzi0 zJr0au@*=|OYC2%M%@IkeVBX5leffep2zONOL3pa5z=gzI;fx|x=tka>a^}4q*T;NK z7e5WISqm@HLp71OPd})Mg(Nz(Hr_J|`FI)hz$c2Xsx5~y8d~Rv6JkW21$W$;brvNBBMa})cN^jIn3^?u3`3Fv!Zg_4`;#4`XOd$L`_7a^^ z9|EUoVSOYX!}r%08T!=_wHMhyU2~wq9CUQZIdG#n4Uu>rs&24AI6cvzlP38Be9vqg z3vbZ9jsDngX|!M;cI?Cc{vA`Hni_06I8Wnjb6_0ZX`2XdQ_uH`Ae63uFU+?LJ>yXm zGH#{2V|jg&UV6{p@T6lW=DvEJHm!7pUp<8|4cHlp6Eb<{X{_4N_qT+))!|53t%BNd z5*tHcHTtjQ+MP9cuvT7#ey3oMz;ntVy9ILS6uS=G=puVMykxs%?=IjGp>0=~xT;Pb zl2z2aI~LZ_jNMalb3e4(hGug=jE4{DUVI;>uqRS$sF!(-*qU#rqDe3vB$f3>I(`rJ z%yLl8Q5C{$+P)_fzwM^%4bfyf@UyuT(z0pUUOUv%@gM2%o%4|ePSUcEPUAr&XWwM_ zZ+diJrZ%{NsP(8hUoDUdvZ2VJjzeqanoK&rDGY*bi<@x!WwcTn0gJb>2EASnBAi^_K3VL8oGqD$W&>08jz-4;w zKp1>LJr9mWjZ+R9vA_6W7;0=h$dB2F4sO(3wqXEXO;Ac2i@4-vntMoRF5SVC(#>RU z$d^9M%x^Z~w>5s4IZj*VY`yRb-Fs-X*5^H<9*9Ael8r?xNo5i5b3H!P@QDsC+u}Zn z2e?KHJ{HbecU=VHlbS(tg3Y)X|f&BjAFicYLXFB+bj{5AFr_-O2WJl3uoB8vp z0JCVpk+qO$GaOw37)R|FI*j1x7yj69``YiVV`{BDm74@(cq4utHwoc5W%&2+QffHH znK6OB&ICS!35+5;i{vEc9Gi?2@+flo(6(bnPl?NVQR0|H1CAGQgU2O<$GO29(%bEX z(Jb2}c=gmem`_|i+8jx?6iFIzk#r2w31jEbamzAx@d+J%@>HIPfY5`OKdb_L%^FZl zs*9{-dr^NZj`I$@In_!!aTLBvz!^E}t2_v%hrdb(FBXt^Fn<&*q45Ew-G-+nz2hm+R>8`4gV=x#FF2 z|I~6mf_9zy?{;i3Jxt>Id*Bx^4z+FSx4{aY^7DKu?m8a<2WZ>*1zO(^2(Ao*>0{B2 z>;r{KM~u?>!j~?-kR?%-NOf-9lN{$cUn*V<5xFcLAu!CL7pEGWi)JWdotuji7gcv@ zV3_xxG~Z_~aD6Kh>G=`g0l-x+-mIBktZbohc{I$UiI+3sXS(b1fk8>T zu#|3F$r${&GzV4SAtP1T`XOKN@`ZUQWhQ-1oM$+xk`5uVP44|*#LC{EyE4z*gfauk zmU_(7>K8Fy=jjk{4ovCDi8-iip}AL=;bsWeB7{MEXt(QwY4)|@(SaXwMg3~_AsgRu zJ+TEG^D$Vf9M9=WVyyWqypOhB^M`yYUZ1R$b-Z39hhQag2&p8HF1o$|BI*6>I+5$` z)(}TLsiD& z=!Gjm<&7+?Y0dWu;#wE#Xegnz-}{L_IdFsN(eM4?KlH};k>XJoK5rUx(+57L<8K

=>|Ac9Kn-Mkm{=nbSKNx+Va%kXNa5(NGJOfYB98R~b`5_iy89n*qM!eR@ zyeZ17C-5v4gF~%bfas2O41DZm>)H8zut$5Z?Iz3 zx8L!m9zREcj*j?wx_C#D>5DbG^XJjx{=EdRe=6%+sCZ|zI2<8)0H)lD6bm|`^+;RO z3ANuz;NkodDUR>N<^HlvQ?aW4dq zYrgl5cnJ}G-(SOL2LJlwUf^c|#+PwF#Kotw`;l10C+>SYID4A9IDbK!9}WF&3tqjP z{LO+IAN-aO;LISuf@}K8aTv^p7(!5%ru`lv@%gcf4?z$Y{5?SoMB_m22L5j@jsGJO zhS9=5G9}04;d$`KJd~dMKqm)+i&oz4Su9x-WidoC-9kFA2Xg4Zvh*W-|dI-~_7#_z|9FB?9PR z2Wu1%`4zh=KnR>-8oVkOPoW|{_NVM|3g`hajEz?UddmuxsK?5#a_Dmw;09x%fz5P- zENsrXL4w@)GpjrF=M;CK@VOmS5Dy0DQr^$8l=BZszINmu;`>>?kj*mGkg0KIx)2Z4 z=HgUxid|Aey}0pXM+vbq5#q&s3G_C#u&W}BHh+L%e_py$fmKMwrNZLkL3BwbcZ0D3 zt}LH*a26jE{_24zC~wmTY=1XM$7Gnh!yM?(%DO`snAu?tnb}YejI)K+dVn9Y9P&Wq zd=~8qL*OKv>j|-#k)58f5t3QTLzs$Ltnwki`eBD3!m*ikQ1;)Aq)J;1|HVOC*qNaR z_#^Ys9>_e4W%Ph$0qzdwP9~|IRp_H&n#DvfO#3jF;)Ny$ure?BUHkXk63ne$$Yr$} zSRs}<^tG_KhhenuE(iEY$Mb=5-xm{E`7jRZ9@g?O*1;g==8aiC(E!< zuuKd-gyr_;MWKbI_&^6_vlL$#D`q41E!8+vHf!{iYUYM7FtHl3d@x#AVNaMUHaoy% z*4`7mHOD{Y)VLZMtwCpe{a^vS%u4)VtU;d5c&Kq4$K|`7z9y$s3xi%TUDSQzG?CK_ zD>{@_^@4d~Vkg$DML+V;Qa2pw7IsJrqv1Hy^oDeCLnqUs-mp>pq7w}Ehv|^VO8g;H zR7y_r5ZwAenAXn$hNyoQ)_3qv@Sb>2(^!K;>5DalEUAfP`}M$Z8AvhUG^(%{8UR1}jEV(tB~tgBg^5e~p(%*}+c1hVlanC=^MSayxyIb7*zQu1W^vZE$+ zKGNQ9f>=TP(!ug2i?+Z`c#fHa(B@-I69V4s#UPmAIq0)4B}R6blZV;w2f;FcQnvUJ zT-S!ObB|!*T;)R3J+HX%f5{3$P-_#*>5r6{&$~1|!mjq0Cb?%QiZ-#hP@Fxf_L-sR z8ysLI|H6sk#!A9aOnIbB>?h_H4oT3LrG(>3(cfMfjzt3RGVP znuzlp7sgLB-+@T&%SH`^Fj2l7H3F|bXnJsK1IG|L@~Ny=rFgCRjw4jqp7enQL@ z);<`11~t1n1ncUdWBf>Otxz*f3>br*u5$N=Tp8ZiOtHJpQ68go+iCd2NQ40bon<=$to>@)1*WSFc53mY&U z%lFlEIOyox$4!Ha_$xLiSmXu|*{VRCMtZ?wUpyT?RlzIvQCTnFKn8xd&!UQ;7`u46&(0P>A4s;}FM=Q4vAyvQ90P23l>${`n^*~_ zl^CFTGfwX;c4ISco5^NOZ>J*cf%cA2F1krstmsGF|*Ui8k772z1=A5#(&dxt4Oif62>>a0;SDM|#glms6O+BB zOG;6^#^LB4JYkozl=Bd)s$pFWFpljyk0Y?BR5B^tD`kUGiBQ(*uUaw56W=-JI2kOscD`xf5sAyuHtw3P!o z2@sBKmFw`fgv4RwLtf41U&K=0CM8*wy^Zt7%EC3r2s4+ZB;us*{UvS{?h1 zk4zosCi$%57HHiiK*gkrt>*+sDc_a=g41mx+$*^8AAC;^CTb_A0qekW6?V#=OS7TR`?5kwD4(TV#RT}U zTx=8*zU_(-da+#`ckw(9-Ax?23tUW|UXaSP*N|56gMYD2_o_`*Hw%j1hXfOMPkT^oE{n@O7Lduj-`jM@~_zUcuKYDMg@U zW!F(#gMl;XyzD-QqidJJ-bSuOvCK(lM?ROBM_`}qtMDeCs!Tc{{Xyz_6 zs%95J(Q0;KzwHYA;R2{*0=WWJKC@njUaAiyNY0cn$-;JD!%#+saTa;yQk)&&qV~!F z1^e(DT*n@DLFywE?AtRC0PnHf?_nw|WG&xg!jHss@u;rEbh_P}Mc>33y2qY-6Xs<8 E55RM16#xJL delta 10490 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 Q`1d#q-!o@_4~x_P7x=J3WdHyG diff --git a/patch_v2/meow_audiod/meow_audiod.c b/patch_v2/meow_audiod/meow_audiod.c index d62bd76..43dbc1b 100644 --- a/patch_v2/meow_audiod/meow_audiod.c +++ b/patch_v2/meow_audiod/meow_audiod.c @@ -553,9 +553,10 @@ static int amixer_get(int numid, int card) static void dac_vol_set(int pct) { - int dac = 255 - pct * 255 / 100; /* CS43198 寄存器=衰减量(0=最响 255=静音),用户 pct 越大越响 → 反转映射 */ - if (dac < 0) dac = 0; - if (dac > 255) dac = 255; + int t = 100 - pct, dac; + if (pct <= 0) dac = 255; /* 真静音(DS1039:255=-127.5dB) */ + else dac = t * t * 192 / 10000; /* 感知平方锥度:dB 衰减=(1-pct)^2×96dB */ + if (dac > 255) dac = 255; if (dac < 0) dac = 0; /* CS43198=衰减量(0最响255静音)+平方锥度(听感线性) */ amixer_set(1, dac, 1); amixer_set(2, dac, 1); logmsg("DAC vol -> %d%% (L/R=%d)", pct, dac); diff --git a/patch_v2/meow_launcherd/audio.c b/patch_v2/meow_launcherd/audio.c index 98a3c4c..71b6ec2 100644 --- a/patch_v2/meow_launcherd/audio.c +++ b/patch_v2/meow_launcherd/audio.c @@ -102,9 +102,10 @@ int settings_cache_registered = 0; /* M2.24:监听只注册一次 */ * settings_volume(写入 DAC 的映射值)为权威跟踪值。 */ void meow_dac_vol_write(int pct) { - int dac = 255 - pct * 255 / 100; /* CS43198 寄存器=衰减量(0=最响 255=静音),用户 pct 越大越响 → 反转映射 */ - if (dac < 0) dac = 0; - if (dac > 255) dac = 255; + int t = 100 - pct, dac; + if (pct <= 0) dac = 255; /* 真静音(DS1039:255=-127.5dB) */ + else dac = t * t * 192 / 10000; /* 感知平方锥度:dB 衰减=(1-pct)^2×96dB */ + if (dac > 255) dac = 255; if (dac < 0) dac = 0; /* CS43198=衰减量(0最响255静音)+平方锥度(听感线性) */ char cmd[160]; snprintf(cmd, sizeof cmd, "amixer -c 0 cset numid=1 %d >/dev/null 2>&1; amixer -c 0 cset numid=2 %d >/dev/null 2>&1", diff --git a/patch_v2/meow_launcherd/meow_launcherd b/patch_v2/meow_launcherd/meow_launcherd index 301978dc4c9d50e153487f4c0bc3f5c76aa616cf..90d73ac94ac307fd513e3199fae057c849b20122 100755 GIT binary patch delta 936 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 O{C2M%XYTc1O8y^tx@MFB delta 5587 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 BS#$sZ diff --git a/patch_v2/meow_watchdog/meow_watchdog.c b/patch_v2/meow_watchdog/meow_watchdog.c index b651e0b..44663b5 100644 --- a/patch_v2/meow_watchdog/meow_watchdog.c +++ b/patch_v2/meow_watchdog/meow_watchdog.c @@ -356,9 +356,10 @@ static void wd_vol_load(void) /* 写真实 DAC(CS43198, numid 1/2, 0-255),与 launcher meow_dac_vol_write 同路径。 */ static void wd_vol_write(int pct) { - int dac = 255 - pct * 255 / 100; /* CS43198 寄存器=衰减量(0=最响 255=静音),用户 pct 越大越响 → 反转映射 */ - if (dac < 0) dac = 0; - if (dac > 255) dac = 255; + int t = 100 - pct, dac; + if (pct <= 0) dac = 255; /* 真静音(DS1039:255=-127.5dB) */ + else dac = t * t * 192 / 10000; /* 感知平方锥度:dB 衰减=(1-pct)^2×96dB */ + if (dac > 255) dac = 255; if (dac < 0) dac = 0; /* CS43198=衰减量(0最响255静音)+平方锥度(听感线性) */ char cmd[160]; snprintf(cmd, sizeof cmd, "amixer -c 0 cset numid=1 %d >/dev/null 2>&1; amixer -c 0 cset numid=2 %d >/dev/null 2>&1", diff --git a/patch_v2/ncm_app/ncm b/patch_v2/ncm_app/ncm index 0110d5c63c888ac17bc46399c57c1558ecf7c7d3..24b6cf2beb86f2d03ba11c8270e0e027191b8c06 100755 GIT binary patch delta 178 zcmaEJ+2PG)hlUo$Eldpu*cupspr*a;022^112GE_vu(y^A6Un()Ba%{I}mdKF((jn0Wmia R^8hg~5c6&Su#W#v6#yFMK*9h3 delta 173 zcmWN`Jr06E6h_f+Mw9`6pfHhEm;?(;OA4aKHMkbFpfIoj6I(mFfx<)!jYQo6E6^I( zFut3d>Na)U)N!(BXP#7@9jIlNR-CkmLE4wJ>U@9eSl`1N9>o=90oy 255) dac = 255; + int t = 100 - pct, dac; + if (pct <= 0) dac = 255; /* 真静音(DS1039:255=-127.5dB) */ + else dac = t * t * 192 / 10000; /* 感知平方锥度:dB 衰减=(1-pct)^2×96dB */ + if (dac > 255) dac = 255; if (dac < 0) dac = 0; /* CS43198=衰减量(0最响255静音)+平方锥度(听感线性) */ char cmd[160]; snprintf(cmd, sizeof cmd, "amixer -c 0 cset numid=1 %d >/dev/null 2>&1; amixer -c 0 cset numid=2 %d >/dev/null 2>&1", diff --git a/scripts/build/fw_content.conf b/scripts/build/fw_content.conf index 9e606fb..520a483 100644 --- a/scripts/build/fw_content.conf +++ b/scripts/build/fw_content.conf @@ -28,8 +28,8 @@ # ---- 用户态/服务守护二进制(usr/bin,全部 chmod 755 静态 MIPS)---- patch_v2/bootmenu/meow_bootmenu|/usr/bin/meow_bootmenu|4441822d87e76bfce2ce584604ac3830|引导选单 M2.85(sysui让位 agent-216) -patch_v2/meow_launcherd/meow_launcherd|/usr/bin/meow_launcherd|fbb82036566b8808e2449d899ecaf3b0|主屏 launcher M2.95+(§10.5 叠加媒体保活:前台 App 播放中开通知中心不 SIGSTOP,SDK present/输入见 /tmp/meow_notif_active 自抑) -patch_v2/meow_watchdog/meow_watchdog|/usr/bin/meow_watchdog|96e80c855e8ca7fd772a2826adbd2639|应用看门狗 M2.95(+音量反转修复) +patch_v2/meow_launcherd/meow_launcherd|/usr/bin/meow_launcherd|1332c67f4dba8727feae1c93f22fc848|主屏 launcher M2.95+(§10.5 叠加媒体保活:前台 App 播放中开通知中心不 SIGSTOP,SDK present/输入见 /tmp/meow_notif_active 自抑) +patch_v2/meow_watchdog/meow_watchdog|/usr/bin/meow_watchdog|553840cdc79d8d7bed766a5e3981ac57|应用看门狗 M2.95(+音量反转修复) patch_v2/meow_svcd/meow_svcd|/usr/bin/meow_svcd|605646c4cc93f2baf29071ea6bc870ea|服务管理器 M2.77(+崩溃上报 meow_crash agent-187) mips-repo/bins/meow_mdns/bin/meow_mdns|/usr/bin/meow_mdns|d6b0151bda26768f19952dae1342610d|mDNS 应答器 M2.78(启动竞态+换IP重检 agent-194) patch_v2/meow_sysui/meow_sysui|/usr/bin/meow_sysui|173013cc8f0899b3001d0b894ac0d9e6|系统 UI(sysui) @@ -38,7 +38,7 @@ patch_v2/meow_svc_power/meow_svc_power|/usr/bin/meow_svc_power|39ae3aa255695a97f patch_v2/meow_verify/meow_verify|/usr/bin/meow_verify|6c2e8ed24aebe5caf41e7aed391312d5|II期验签 2B(多公钥+v2签名块 agent-221) patch_v2/meow_crash/meow_crash|/usr/bin/meow_crash|62781084445e82351bcadbdadbe4c7fc|系统级崩溃捕获 (agent-187) patch_v2/meow_svc_perf/meow_svc_perf|/usr/bin/meow_svc_perf|7ea196de9d59ab8cbd1e26edb7762772|性能专项服务 M2.75(net_json 补 network 闭合括号,修 /api/system JSON 解析失败) -patch_v2/meow_audiod/meow_audiod|/usr/bin/meow_audiod|ab193a2bd094f2c9f975f0f28ba09cba|独占音频守护 M2.97(+DAC 数字域电平表 rms/peak + 1s 监控日志 audio_monitor_.log) +patch_v2/meow_audiod/meow_audiod|/usr/bin/meow_audiod|176c840d80c3e1161df0cb769185520d|独占音频守护 M2.97(+DAC 数字域电平表 rms/peak + 1s 监控日志 audio_monitor_.log) patch_v2/meow_audiod/meow_audio|/usr/bin/meow_audio|891ab26475ef9e9931bf9147d265dce4|audiod 用户侧 CLI M2.97(+monitor 实时电平表/文本电平条;status 补 rms/peak) # ---- 开机 init 脚本(etc/init.d,数字决定启动顺序,按文件名自然序)----