当前位置: 首页 > article >正文

【一文吃透】相控传感器阵列:从波束形成到工程落地的全链路实战指南(附Python仿真代码)

文章目录一、相控阵列到底是什么——用雷达测速仪讲清楚原理1.1 为什么需要相控传统传感器的盲区痛点1.2 相位差如何操控信号方向——水波干涉的直觉理解二、波束形成的数学本质——别被公式吓到2.1 阵列响应向量每个传感器的权重密码2.2 方向图为什么旁瓣会漏信号三、工程落地的三大选型陷阱3.1 阵元间距选错白做奈奎斯特采样在空间的延伸3.2 相位校准被忽略硬件一致性的隐形杀手四、Python手撕波束形成代码——从仿真到可视化4.1 均匀线阵的指向性仿真4.2 动图展示波束扫描全过程五、从实验室到产品——避坑清单与调试技巧5.1 多径干扰的识别与抑制5.2 温度漂移的补偿策略一、相控阵列到底是什么——用雷达测速仪讲清楚原理1.1 为什么需要相控传统传感器的盲区痛点想象你在一个漆黑的夜晚想用手电筒照亮远处的一棵树。如果只用一个普通手电筒光会散开一大片照到树上的光很弱周围也被照得通亮。但如果你把几个手电筒绑在一起通过调整每个手电筒照射的微小角度差就能让它们的光重叠在同一片区域形成一束更亮、更集中的光——这就是相控阵列的直觉原型。传统单传感器如单个麦克风、单根天线有个致命问题它的接收方向是固定的。就像一只耳朵只能听到四面八方的混响无法区分信号从哪来。而相控阵列通过多个传感器按特定几何排布相位加权实现了信号的电子转向——不用机械转动就能让阵列看向任意方向。工程场景中的刚需场景应用场景单传感器痛点相控阵列优势无人机避障雷达只能测正前方距离扫描前方扇区构建3D点云会议室麦克风阵列远端发言听不清自动追踪发言人方向5G基站天线全向发射功率浪费波束指向用户提升信噪比超声医学成像单探头分辨率低电子聚焦实现断层扫描1.2 相位差如何操控信号方向——水波干涉的直觉理解相控的核心原理可以一句话概括通过控制各阵元接收/发射信号的相位差让特定方向的信号同相叠加增强其他方向反相抵消。用池塘里的水波做类比你和朋友站在池塘两侧同时用手指点水。如果节奏同步同相两列波在中间相遇时会叠加成更高的波峰如果节奏相反反相波峰遇波谷就会相互抵消水面平静。相控阵列就是这个原理的工程化假设一个均匀线阵有N NN个阵元间距为d dd。当平面波以角度θ \thetaθ入射时相邻阵元接收到的信号存在波程差Δ d d ⋅ sin ⁡ θ \Delta d d \cdot \sin\thetaΔdd⋅sinθ对应的相位差为Δ ϕ 2 π d ⋅ sin ⁡ θ λ \Delta\phi \frac{2\pi d \cdot \sin\theta}{\lambda}Δϕλ2πd⋅sinθ​其中λ \lambdaλ是信号波长。如果我们给每个阵元施加一个补偿相位w n e − j n Δ ϕ w_n e^{-jn\Delta\phi}wn​e−jnΔϕ就能让θ \thetaθ方向的信号在所有阵元上同相对齐叠加后输出最大。改变补偿相位就能电子扫描不同方向。二、波束形成的数学本质——别被公式吓到2.1 阵列响应向量每个传感器的权重密码波束形成的数学框架其实非常优雅。假设阵列接收信号为x ( t ) [ x 1 ( t ) , x 2 ( t ) , . . . , x N ( t ) ] T \mathbf{x}(t) [x_1(t), x_2(t), ..., x_N(t)]^Tx(t)[x1​(t),x2​(t),...,xN​(t)]T我们希望找到一个权重向量w [ w 1 , w 2 , . . . , w N ] H \mathbf{w} [w_1, w_2, ..., w_N]^Hw[w1​,w2​,...,wN​]H使得输出y ( t ) w H x ( t ) y(t) \mathbf{w}^H \mathbf{x}(t)y(t)wHx(t)在期望方向θ 0 \theta_0θ0​上增益最大。对于均匀线阵阵列响应向量也叫导向向量定义为a ( θ ) [ 1 , e j 2 π d λ sin ⁡ θ , e j 2 π d λ 2 sin ⁡ θ , . . . , e j 2 π d λ ( N − 1 ) sin ⁡ θ ] T \mathbf{a}(\theta) [1, e^{j\frac{2\pi d}{\lambda}\sin\theta}, e^{j\frac{2\pi d}{\lambda}2\sin\theta}, ..., e^{j\frac{2\pi d}{\lambda}(N-1)\sin\theta}]^Ta(θ)[1,ejλ2πd​sinθ,ejλ2πd​2sinθ,...,ejλ2πd​(N−1)sinθ]T这个向量描述了信号从θ \thetaθ方向入射时各阵元的相对相位关系。如果我们把权重设为w a ( θ 0 ) \mathbf{w} \mathbf{a}(\theta_0)wa(θ0​)这就是常规波束形成器Conventional Beamformer也叫延时-求和波束形成器。它的物理意义是对每个阵元的信号施加与入射方向相反的相位补偿让它们对齐后相加。2.2 方向图为什么旁瓣会漏信号波束形成器的方向图Beam Pattern定义为B ( θ ) ∣ w H a ( θ ) ∣ 2 B(\theta) |\mathbf{w}^H \mathbf{a}(\theta)|^2B(θ)∣wHa(θ)∣2它描述了阵列对不同方向信号的响应增益。画出来你会发现除了主瓣期望方向的高增益区域还有一系列旁瓣Sidelobes。旁瓣的工程危害假设你在做麦克风阵列降噪主瓣对准发言人0°方向但旁边30°方向有个空调噪音。如果30°正好落在第一旁瓣的峰值位置噪声会被漏进来信噪比急剧下降。旁瓣抑制的实战技巧加窗处理对权重向量w \mathbf{w}w施加汉明窗、切比雪夫窗可以压低旁瓣代价是主瓣展宽增加阵元数N NN越大主瓣越窄旁瓣相对越低非均匀间距打破周期性可以抑制栅瓣Grating Lobe三、工程落地的三大选型陷阱3.1 阵元间距选错白做奈奎斯特采样在空间的延伸这是新手最容易踩的坑。很多人以为阵元越多越好、间距越小越好结果要么出现栅瓣虚假方向峰要么方向图混叠。临界间距公式为了避免栅瓣阵元间距必须满足d ≤ λ 2 d \leq \frac{\lambda}{2}d≤2λ​这和时域采样的奈奎斯特准则完全对应空间采样频率1 / d 1/d1/d必须大于信号空间频率带宽2 / λ 2/\lambda2/λ。真实踩坑案例某团队做2.4GHz的WiFi相控阵列波长λ 12.5 cm \lambda 12.5\text{cm}λ12.5cm他们选了d 8 cm d 8\text{cm}d8cm小于半波长看起来安全。但实际部署时发现90°方向总有莫名其妙的干扰峰——原因是互耦效应阵元太近电磁耦合改变了理想阵列模型导致方向图畸变。选型建议一般取d 0.4 λ ∼ 0.5 λ d 0.4\lambda \sim 0.5\lambdad0.4λ∼0.5λ留足余量高频段毫米波注意加工精度PCB走线长度误差会引入额外相位差超声阵列要考虑介质中的波长水中声速约1500m/s是空气的1/5波长更短间距要更小3.2 相位校准被忽略硬件一致性的隐形杀手理论公式假设所有阵元完全一致同样的增益、同样的延迟、同样的相位响应。但现实中射频前端器件LNA、混频器、滤波器的离散性会让这个假设崩塌。未校准的典型症状主瓣方向偏移指向不准旁瓣电平抬高噪声抑制能力下降零点深度不足干扰抑制失效校准的实战方案出厂校准在微波暗室中将标准信号源依次置于多个已知角度测量各通道响应建立校准矩阵C diag ( c 1 , c 2 , . . . , c N ) \mathbf{C} \text{diag}(c_1, c_2, ..., c_N)Cdiag(c1​,c2​,...,cN​)后续数据用C − 1 x ( t ) \mathbf{C}^{-1}\mathbf{x}(t)C−1x(t)补偿在线校准利用阵列中某个参考阵元或已知方向的导频信号实时估计通道误差温度补偿射频器件的相位响应随温度漂移工业级产品需要在-40°C到85°C范围内做温度系数标定四、Python手撕波束形成代码——从仿真到可视化4.1 均匀线阵的指向性仿真下面这段代码可以直接运行帮你直观理解波束形成的效果importnumpyasnpimportmatplotlib.pyplotasplt# 参数设置N8# 阵元数d0.5# 间距波长归一化theta_target30# 目标方向度theta_scannp.linspace(-90,90,1000)# 扫描角度范围# 阵列响应向量计算函数defarray_response(theta,N,d):theta_radnp.deg2rad(theta)nnp.arange(N)anp.exp(1j*2*np.pi*d*n*np.sin(theta_rad))returna.reshape(-1,1)# 常规波束形成权重a_targetarray_response(theta_target,N,d)wa_target/np.linalg.norm(a_target)# 归一化# 计算方向图beam_pattern[]forthetaintheta_scan:a_thetaarray_response(theta,N,d)gainnp.abs(w.conj().T a_theta)**2beam_pattern.append(10*np.log10(gain.squeeze()1e-10))# 绘图plt.figure(figsize(10,6))plt.plot(theta_scan,beam_pattern,linewidth2)plt.axvline(theta_target,colorr,linestyle--,labelf目标方向{theta_target}°)plt.xlabel(角度 (度),fontsize12)plt.ylabel(增益 (dB),fontsize12)plt.title(f均匀线阵波束方向图 (N{N}, d/λ{d}),fontsize14)plt.ylim([-30,5])plt.grid(True,alpha0.3)plt.legend()plt.tight_layout()plt.show()# 输出关键指标mainlobe_width2*np.rad2deg(np.arcsin(0.443/(N*d)))# 3dB波束宽度近似print(f理论3dB波束宽度:{mainlobe_width:.2f}°)print(f第一旁瓣电平: 约-13.2dB (均匀加权理论值))运行结果会显示一个明显的主瓣指向30°方向两侧有逐渐衰减的旁瓣结构。你可以尝试修改N和d的值观察它们对方向图的影响增大N主瓣变窄分辨率提升减小d扫描范围受限大角度方向图恶化但栅瓣风险降低4.2 动图展示波束扫描全过程如果你想做一个演示Demo展示波束如何电子扫描可以用以下代码生成动图importnumpyasnpimportmatplotlib.pyplotaspltfrommatplotlib.animationimportFuncAnimation N16d0.5theta_scannp.linspace(-90,90,1000)fig,axplt.subplots(figsize(10,6))line,ax.plot([],[],linewidth2,color#2E86AB)ax.set_xlim(-90,90)ax.set_ylim(-30,5)ax.set_xlabel(角度 (度),fontsize12)ax.set_ylabel(增益 (dB),fontsize12)ax.set_title(波束扫描演示,fontsize14)ax.grid(True,alpha0.3)target_lineax.axvline(0,colorr,linestyle--,alpha0.7)defarray_response(theta,N,d):theta_radnp.deg2rad(theta)nnp.arange(N)returnnp.exp(1j*2*np.pi*d*n*np.sin(theta_rad)).reshape(-1,1)defupdate(frame):theta_target-60frame*1.2# 从-60°扫描到60°warray_response(theta_target,N,d)ww/np.linalg.norm(w)pattern[]forthetaintheta_scan:aarray_response(theta,N,d)gainnp.abs(w.conj().T a)**2pattern.append(10*np.log10(gain.squeeze()1e-10))line.set_data(theta_scan,pattern)target_line.set_xdata([theta_target,theta_target])ax.set_title(f波束扫描演示 - 当前指向:{theta_target:.1f}°,fontsize14)returnline,target_line aniFuncAnimation(fig,update,frames100,interval100,blitTrue)plt.tight_layout()plt.show()# 保存为gif需要安装pillow# ani.save(beam_scan.gif, writerpillow, fps10)这段代码生成的动画可以直观展示波束如何在空间中电子转动而不需要任何机械结构。这也是相控阵雷达、5G Massive MIMO的核心优势。五、从实验室到产品——避坑清单与调试技巧5.1 多径干扰的识别与抑制室内场景会议室、工厂车间的多径效应是相控阵列的噩梦。信号经墙壁、地面反射后从多个方向到达阵列导致方向图估计出现虚假峰。识别多径的特征方向谱出现多个相近的强峰真实信号反射信号信号协方差矩阵的特征值分布多径环境下会有多个大特征值抑制方案空间平滑Spatial Smoothing将阵列划分为多个子阵利用子阵协方差矩阵平均来解相干MUSIC算法利用噪声子空间与导向向量的正交性实现超分辨率DOA估计分辨多径成分时域滤波如果信号有特定调制特征可以在时域先分离直达径和反射径5.2 温度漂移的补偿策略射频前端的相位响应随温度变化典型值在0.01°/°C 到 0.1°/°C量级。对于16阵元阵列如果各通道漂移不一致整体方向图会严重畸变。温度补偿的工程实践分段线性补偿在-40°C、-20°C、0°C、25°C、60°C、85°C几个温度点做全通道校准存储校准系数运行时根据温度传感器插值参考通道法选定一个阵元作为参考其他通道的相对相位误差通过实时比较来估计闭环校准在系统空闲时通过内置校准源如耦合器注入已知信号周期性更新校准矩阵你在相控传感器阵列的工程实践中遇到过哪些棘手问题是方向图畸变找不到原因还是相位校准总是做不准欢迎在评论区分享你的踩坑经历一起探讨解决方案

相关文章:

【一文吃透】相控传感器阵列:从波束形成到工程落地的全链路实战指南(附Python仿真代码)

文章目录一、相控阵列到底是什么?——用雷达测速仪讲清楚原理1.1 为什么需要"相控"?传统传感器的盲区痛点1.2 相位差如何"操控"信号方向——水波干涉的直觉理解二、波束形成的数学本质——别被公式吓到2.1 阵列响应向量:…...

3分钟搞定:IDM无限试用重置工具完整使用指南

3分钟搞定:IDM无限试用重置工具完整使用指南 【免费下载链接】idm-trial-reset Use IDM forever without cracking 项目地址: https://gitcode.com/gh_mirrors/id/idm-trial-reset 你是否曾因Internet Download Manager(IDM)试用期结束…...

国产最强开源模型 GLM-5.1 来了!Ollama 一键部署,开启 8 小时自主 AI 工作

引言 GLM-5.1的开源,确实是近期AI圈的一则重磅消息。为了让内容更充实,我将上一版的介绍与GLM-5的详细对比融合在了一起,这样能更清晰地看到它的进化。 一图看懂:GLM-5 vs. GLM-5.1 为了让你直观感受GLM-5.1的进化幅度&#xff…...

开源工具助力音频内容管理:打破平台限制的跨平台解决方案

开源工具助力音频内容管理:打破平台限制的跨平台解决方案 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 你是否曾遇到…...

5分钟快速上手BilibiliDown:跨平台B站视频下载终极指南

5分钟快速上手BilibiliDown:跨平台B站视频下载终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/…...

OpenStack中cinder-volume服务异常排查与时间同步修复指南

1. 当cinder-volume服务突然罢工时 最近在维护OpenStack集群时,遇到一个挺典型的问题:cinder-volume服务状态突然变成了down。这直接导致云平台上的块存储功能无法正常使用,虚拟机创建、卷挂载等操作都受到了影响。经过排查,发现问…...

突破网盘下载限速的效率工具:技术突破与提速方案全解析

突破网盘下载限速的效率工具:技术突破与提速方案全解析 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

docker-2025-tech-blog

Docker 零基础入门:2026 年还值不值得学?一篇讲清镜像、容器与 Compose DockerDocker 零基础入门:2026 年还值不值得学?一篇讲清镜像、容器与 Compose前言一、Docker 到底能解决什么问题?二、什么是 Docker&#xff1f…...

3步彻底优化:如何让Windows系统性能飙升30%?

3步彻底优化:如何让Windows系统性能飙升30%? 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirrors/w…...

微服务为什么会走到 RPC,以及 gRPC 到底解决了什么

大多数 gRPC 文章都从 .proto、代码生成、四种调用模式开始讲,读完之后你通常知道“怎么写”,但不一定真的明白“为什么会有这套东西”。 而工程里真正棘手的,恰恰不是语法,而是当系统从单体走向微服务之后,原来那些理…...

从监控盲区到业务洞察:深入解读 APMPlus 生产指标

在数字化浪潮席卷各行各业的今天,企业系统规模持续扩张,服务间调用关系日益交错,这使得许多“看不见的问题”正逐渐成为业务稳定性的巨大隐患。 你是否也曾遇到过这些棘手的场景? 偶发错误难量化:用户反馈“系统偶尔会…...

代码随想录 Day22 | 回溯算法-part01(77. 组合、216.组合总和III、17.电话号码的字母组合)

今日总结 回溯和组合问题、剪枝 题目 77. 组合 题目链接 题目题解 第一想法 自己实现 class Solution:def combine(self, n: int, k: int) -> List[List[int]]:# 回溯,用一个path数组存储路径res []def dfs(i,path):if len(path) k:res.append(path.copy())return…...

0基础Go语言Eino框架智能体实战-chatModel

0基础Go语言Eino框架智能体实战-chatModel 摘要:本文详细介绍如何使用Go语言、Eino框架和Gin框架构建一个完整的智能聊天服务。涵盖环境搭建、大模型调用、API创建、日志输出、异常处理等核心知识点,适合零基础入门人工智能应用开发,源码在此…...

代码随想录算法训练营Day-21 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树1.递归函数作用:返回修剪后的二叉树的新的根节点2.终止条件:遇到空节点返回NULL;遇到范围之外的节点执行删除操作:如果该节点值小于最小值,说明右子树有可能还有符合要求的节点,所以返回…...

飞腾D2000/FT2000全国产化标准COMe模块

板贴DDR4,有8GB 16GB 32GB等容量,标准type6 COMe模块,有少量现货。...

OneDrive-Uninstaller:Windows 10 平台 OneDrive 彻底卸载工具

OneDrive-Uninstaller:Windows 10 平台 OneDrive 彻底卸载工具 【免费下载链接】OneDrive-Uninstaller Batch script to completely uninstall OneDrive in Windows 10 项目地址: https://gitcode.com/gh_mirrors/on/OneDrive-Uninstaller 项目价值&#xff…...

BilibiliDown终极指南:3步掌握B站视频下载完整流程

BilibiliDown终极指南:3步掌握B站视频下载完整流程 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/B…...

AI赋能表情包创作:从Midjourney到微信变现全流程解析

1. 为什么AI表情包创作是普通人也能玩的赚钱机会 记得去年帮朋友设计一套生日主题表情包,光是草图就改了七八遍,前后折腾两周才勉强能用。现在用Midjourney生成类似质量的素材,从输入提示词到导出成品,实测最快9分38秒就能完成——…...

douyin-downloader完全指南:批量下载抖音无水印视频高效采集工具零门槛上手

douyin-downloader完全指南:批量下载抖音无水印视频高效采集工具零门槛上手 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and br…...

csv文件生成与读取

1.csv 文件解析入库方法(少量) private boolean doProcessNew(FileInputStream fileInputStream) {long start System.currentTimeMillis();List<JtComplaintPredictionResultEntity> csvFileList new ArrayList<>();try (BufferedReader reader new BufferedRe…...

构建企业级视频监控平台:WVP-GB28181-Pro的3大技术架构突破

构建企业级视频监控平台&#xff1a;WVP-GB28181-Pro的3大技术架构突破 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR接入。…...

py每日spider案例之网pan搜索接口

import requests import jsonheaders = {"accept": "application/json","accept-language": "zh-CN,zh;q=0.9","cache-control": "no-cache","content-type":...

英雄联盟终极工具箱:League Akari 完整使用指南与功能解析

英雄联盟终极工具箱&#xff1a;League Akari 完整使用指南与功能解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟客户端的…...

长清大学城AI大模型培训公司哪家强?

在长清大学城&#xff0c;AI大模型技术培训公司如雨后春笋般涌现&#xff0c;大家都想找一家靠谱的公司提升自己的技能。到底哪家强呢&#xff1f;今天就来好好唠唠。教学质量对比教学质量可是培训公司的核心。像达内教育&#xff0c;它在IT培训领域是老牌子了&#xff0c;有一…...

VideoDownloadHelper:一站式网页视频下载神器,告别视频保存烦恼

VideoDownloadHelper&#xff1a;一站式网页视频下载神器&#xff0c;告别视频保存烦恼 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为…...

零基础部署Clawdbot+Qwen3-32B:一键开启智能对话Web界面

零基础部署ClawdbotQwen3-32B&#xff1a;一键开启智能对话Web界面 1. 为什么选择这个方案 你是否遇到过这样的困境&#xff1a;好不容易在本地部署了大语言模型&#xff0c;却卡在了如何让团队成员方便使用的环节&#xff1f;传统的API调用方式对非技术人员极不友好&#xf…...

MATLAB与ROS2 Humble跨平台通信实战:从零搭建联合仿真环境

1. 环境准备&#xff1a;搭建跨平台通信的基础 在开始MATLAB与ROS2 Humble的联合仿真之前&#xff0c;我们需要确保两个平台的环境配置正确。这里我以Windows 11上的MATLAB 2024a和Ubuntu 22.04上的ROS2 Humble为例&#xff0c;分享我实际搭建过程中的经验。 1.1 MATLAB环境配置…...

突破硬件限制的开源游戏串流方案:Sunshine跨设备游戏体验指南

突破硬件限制的开源游戏串流方案&#xff1a;Sunshine跨设备游戏体验指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 当你拥有一台高性能游戏PC&#xff0c;却只能在固定位置享…...

Git-RSCLIP图文检索实战:根据文字描述快速找到对应卫星图

Git-RSCLIP图文检索实战&#xff1a;根据文字描述快速找到对应卫星图 1. 为什么需要遥感图文检索&#xff1f; 在遥感图像分析领域&#xff0c;我们经常面临这样的挑战&#xff1a;面对海量卫星图像&#xff0c;如何快速找到符合特定描述的场景&#xff1f;传统方法需要人工标…...

如何让AirPods在非苹果设备发挥全部潜能?AirPodsDesktop跨平台支持方案解析

如何让AirPods在非苹果设备发挥全部潜能&#xff1f;AirPodsDesktop跨平台支持方案解析 【免费下载链接】AirPodsDesktop ☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP) 项目地址: https://gitcode.com/gh_mirrors/ai/AirPodsDesk…...