声卡修复:SOF 固件缺失 (Arrow Lake)
故障现象系统设置中无声音输出/输入设备PulseAudio 只有 auto_null伪输出没有真实声卡aplay -l / arecord -l 报 “找不到音效卡”cat /proc/asound/cards 显示 “— no soundcards —”排查过程确认硬件存在$ lspci -nn | grep audio00:1f.3 Multimedia audio controller [0401]: Intel Corporation Device [8086:7728]设备存在PCI ID 为 8086:7728。检查驱动状态$ lsmod | grep sofsnd_sof_pci_intel_mtl 40960 0 # SOF 驱动已加载但 0 用户snd_sof_intel_hda_generic 36864 1…snd_hda_intel 65536 0 # HDA 传统驱动也是 0 用户SOF 和 HDA 驱动都已加载但未绑定到设备。查看内核日志关键$ sudo dmesg | grep -i sof输出关键信息sof-audio-pci-intel-mtl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100sof-audio-pci-intel-mtl 0000:00:1f.3: DMICs detected in NHLT tables: 2sof-audio-pci-intel-mtl 0000:00:1f.3: SOF firmware and/or topology file not found.sof-audio-pci-intel-mtl 0000:00:1f.3: Supported default profilessof-audio-pci-intel-mtl 0000:00:1f.3: - ipc type 1 (Requested):sof-audio-pci-intel-mtl 0000:00:1f.3: Firmware file: intel/sof-ipc4/arl/sof-arl.risof-audio-pci-intel-mtl 0000:00:1f.3: Topology file: intel/sof-ace-tplg/sof-hda-generic-2ch.tplgsof-audio-pci-intel-mtl 0000:00:1f.3: Check if you have ‘sof-firmware’ package installed.sof-audio-pci-intel-mtl 0000:00:1f.3: error: sof_probe_work failed err: -2驱动需要 intel/sof-ipc4/arl/sof-arl.ri — Arrow Lake 固件需要 intel/sof-ace-tplg/sof-hda-generic-2ch.tplg — 拓扑文件error: -2 ENOENT文件不存在4. 确认本地固件缺失$ ls /lib/firmware/intel/sof-ipc4/arl/ls: 无法访问 ‘/lib/firmware/intel/sof-ipc4/arl/’: 没有那个文件或目录系统只有 MTL (Meteor Lake) 固件缺 ARL (Arrow Lake)$ ls /lib/firmware/intel/sof-ipc4/mtl # 只有 Meteor Lake$ apt-cache policy firmware-sof-signed已安装2.0-1ubuntu4.7 # 2022 年版本不包含 Arrow Lake5. 成功方案ARL 固件实际上就是 MTL 固件 — Arrow Lake 和 Meteor Lake 共享相同的 DSP 固件二进制。新版 firmware-sof-signed 包的做法是创建符号链接。创建 ARL 固件目录sudo mkdir -p /lib/firmware/intel/sof-ipc4/arl/{intel-signed,community}创建符号链接到已有 MTL 固件sudo ln -sf intel-signed/sof-arl.ri /lib/firmware/intel/sof-ipc4/arl/sof-arl.risudo ln -sf …/…/mtl/intel-signed/sof-mtl.ri /lib/firmware/intel/sof-ipc4/arl/intel-signed/sof-arl.risudo ln -sf …/…/mtl/community/sof-mtl.ri /lib/firmware/intel/sof-ipc4/arl/community/sof-arl.ri重载 SOF 驱动sudo modprobe -r snd_sof_pci_intel_mtl snd_sof_intel_hda_common snd_sofsudo modprobe snd_sof_pci_intel_mtl修复验证$ cat /proc/asound/cards0 [sofhdadsp ]: sof-hda-dsp - sof-hda-dspLENOVO-83ND-XiaoXinPro16cIAH10-LNVNB161216$ aplay -lcard 0: sofhdadsp [sof-hda-dsp], device 0: HDA Analog () [] # 扬声器card 0: sofhdadsp [sof-hda-dsp], device 3: HDMI1 () [] # HDMIcard 0: sofhdadsp [sof-hda-dsp], device 4: HDMI2 () []card 0: sofhdadsp [sof-hda-dsp], device 5: HDMI3 () []card 0: sofhdadsp [sof-hda-dsp], device 31: Deepbuffer HDA Analog (*) []$ arecord -lcard 0: sofhdadsp [sof-hda-dsp], device 0: HDA Analog () [] # 模拟麦克风card 0: sofhdadsp [sof-hda-dsp], device 6: DMIC Raw () [] # 数字麦克风dmesg 确认sof-audio-pci-intel-mtl: Loaded firmware library: ADSPFW, version: 2.8.1.1sof-audio-pci-intel-mtl: Booted firmware version: 2.8.1.1snd_hda_codec_conexant ehdaudio0D0: SN6140: BIOS auto-probing.snd_hda_codec_conexant ehdaudio0D0: autoconfig for SN6140:line_outs1 (0x17/…) type:speakerhp_outs1 (0x16/…) # 耳机inputs: Mic0x19 # 麦克风声卡根因分析层级 问题直接原因 /lib/firmware/intel/sof-ipc4/arl/ 目录不存在为什么其他 Meteor Lake 机器没问题 MTL 固件存在且 ARL 固件就是 MTL 的符号链接根本原因 内核 6.12 的 SOF 驱动根据 PCI ID (8086:7728) 判定为 Arrow Lake 平台需要 arl/ 路径的固件Ubuntu 22.04 的 firmware-sof-signed (v2.0) 不包含 Arrow Lake 目录SOF 固件目录结构/lib/firmware/intel/sof-ipc4/├── mtl/ # Meteor Lake已有│ ├── sof-mtl.ri → intel-signed/sof-mtl.ri│ ├── intel-signed/│ │ └── sof-mtl.ri # 实际固件二进制 (879KB)│ └── community/│ └── sof-mtl.ri│└── arl/ # Arrow Lake需创建├── sof-arl.ri → intel-signed/sof-arl.ri├── intel-signed/│ └── sof-arl.ri → …/…/mtl/intel-signed/sof-mtl.ri # → MTL 固件└── community/└── sof-arl.ri → …/…/mtl/community/sof-mtl.ri关键经验通用原则升级主线内核后必须同步升级固件新驱动需要新版固件旧发行版的固件包往往不匹配Ubuntu 22.04 的固件包普遍偏旧均为 2022 年版本linux-firmware → 20220329firmware-sof-signed → 2.0对于 2023 的 Intel 硬件平台需要从 Debian testing 获取更新固件Debian 的拆分固件包是更好的下载源firmware-iwlwifi23MBvs 整个 linux-firmware repo1GBfirmware-sof-signed2MB包含完整的 SOF 固件排查固件问题的标准流程1. 确认硬件lspci -nn | grep -iE “network|audio”2. 看内核日志关键sudo dmesg | grep -iE “iwlwifi|sof|firmware”3. 对比固件文件ls /lib/firmware/iwlwifi-* # WiFils /lib/firmware/intel/sof-ipc4/*/ # 声卡4. 检查固件包版本apt-cache policy linux-firmware firmware-sof-signedWiFi 专项RF 变体必须完全匹配fm-c0/gf-a0/hr-b0 是不同射频硬件固件不通用WiFi 固件命名格式iwlwifi-{平台}-{芯片步进}-{RF类型}-{RF步进}-{API版本}.ucode声卡专项SOF 固件跨平台共享Arrow Lake 和 Meteor Lake 使用相同 DSP 固件通过符号链接即可声卡固件路径intel/sof-ipc4/{平台}/sof-{平台}.ri 拓扑文件 intel/sof-ace-tplg/sof-hda-generic-*.tplg一键修复脚本见 fix-firmware.sh可自动诊断并修复常见的固件缺失问题。chmod x fix-firmware.shsudo ./fix-firmware.sh脚本内容#!/bin/bash#fix-firmware.sh — 一键诊断并修复 Intel WiFi / 声卡固件缺失问题适用场景- Ubuntu/Debian 系统自行升级了主线内核- WiFi 消失iwlwifi 固件缺失- 声卡消失SOF 固件缺失用法sudo ./fix-firmware.sh # 自动诊断并修复sudo ./fix-firmware.sh --dry-run # 仅诊断不修复sudo ./fix-firmware.sh --wifi # 仅修复 WiFisudo ./fix-firmware.sh --audio # 仅修复声卡#set -euo pipefail— 颜色定义 —RED‘\033[0;31m’GREEN‘\033[0;32m’YELLOW‘\033[1;33m’BLUE‘\033[0;34m’CYAN‘\033[0;36m’BOLD‘\033[1m’NC‘\033[0m’ # No Color— 配置 —DEBIAN_MIRROR“DEBIANMIRROR:−https://mirrors.tuna.tsinghua.edu.cn/debianFIRMWAREIWLWIFIURL{DEBIAN_MIRROR:-https://mirrors.tuna.tsinghua.edu.cn/debian} FIRMWARE_IWLWIFI_URLDEBIANM​IRROR:−https://mirrors.tuna.tsinghua.edu.cn/debianFIRMWAREI​WLWIFIU​RL{DEBIAN_MIRROR}/pool/non-free-firmware/f/firmware-nonfree/firmware-iwlwifi_20260519-1_all.deb”FIRMWARE_SOF_URLDEBIANMIRROR/pool/non−free−firmware/f/firmware−sof/firmware−sof−signed2025.12.2−2all.debTEMPDIR{DEBIAN_MIRROR}/pool/non-free-firmware/f/firmware-sof/firmware-sof-signed_2025.12.2-2_all.deb TEMP_DIRDEBIANM​IRROR/pool/non−free−firmware/f/firmware−sof/firmware−sof−signed2​025.12.2−2a​ll.debTEMPD​IR(mktemp -d)DRY_RUNfalseFIX_WIFItrueFIX_AUDIOtrueFOUND_ISSUES0FIXED_ISSUES0— 辅助函数 —cleanup() {rm -rf “$TEMP_DIR”}trap cleanup EXITlog_info() { echo -e “BLUE[INFO]{BLUE}[INFO]BLUE[INFO]{NC}KaTeX parse error: Expected EOF, got } at position 5: *; }̲ log_ok() …{GREEN}[OK]${NC}KaTeX parse error: Expected EOF, got } at position 5: *; }̲ log_warn() …{YELLOW}[WARN]${NC}KaTeX parse error: Expected EOF, got } at position 5: *; }̲ log_error() …{RED}[ERROR]${NC}KaTeX parse error: Expected EOF, got } at position 5: *; }̲ log_section() …{BOLD}${CYAN}═══∗═══* ═══∗═══{NC}”; }check_root() {if [ “$(id -u)” -ne 0 ]; thenlog_error “请用 sudo 运行此脚本sudo $0 $*”exit 1fi}need_download() {# 检查系统是否能联网下载if ! command -v curl /dev/null ! command -v wget /dev/null; thenlog_warn “未找到 curl 或 wget将跳过需要下载的操作”return 1fireturn 0}download() {local url“$1” output“KaTeX parse error: Expected EOF, got at position 27: …ommand -v curl ̲/dev/null; the…url” -o “KaTeX parse error: Expected EOF, got at position 34: …ommand -v wget ̲/dev/null; the…url” -O “$output”fi}— WiFi 诊断与修复 —diagnose_wifi() {log_section “WiFi 固件诊断”# 1. 找出所有 Intel WiFi PCI 设备 local wifi_devs wifi_devs$(lspci -nn 2/dev/null | grep -i Network controller.*Intel || true) if [ -z $wifi_devs ]; then log_info 未检测到 Intel WiFi 硬件跳过 WiFi 诊断 return 0 fi echo $wifi_devs | while read -r line; do echo -e ${line} done # 2. 快速检查WiFi 接口是否已存在 # 如果接口已经正常工作就不需要看历史 dmesg旧日志可能误报 if ip link show 2/dev/null | grep -q wl; then local wl_iface wl_iface$(ip link show 2/dev/null | grep -oP wl[^ :] | head -1) log_ok WiFi 接口已存在 ($wl_iface)驱动工作正常跳过 return 0 fi # 3. WiFi 接口不存在 → 检查 iwlwifi 模块 if ! lsmod | grep -q iwlwifi; then log_info iwlwifi 模块未加载尝试加载... modprobe iwlwifi 2/dev/null || true sleep 2 fi # 4. 从 dmesg 提取缺失的固件文件名 # 用本次启动后产生的日志取最后出现的错误避免旧日志干扰 local missing_fw missing_fw$(dmesg 2/dev/null | grep iwlwifi.*Direct firmware load for.*failed \ | grep -oP iwlwifi-[^ ]\.ucode | sort -u || true) if [ -z $missing_fw ]; then # 也检查 /var/log/syslog只取最近的启动日志 missing_fw$(grep iwlwifi.*Direct firmware load for.*failed /var/log/syslog 2/dev/null \ | grep $(uname -r) | grep -oP iwlwifi-[^ ]\.ucode | sort -u || true) fi # 5. 对于找到的 缺失 固件检查是否已经存在且只是 API 版本不同 # 例如 dmesg 说缺 -93但 -96 已存在且驱动支持 if [ -n $missing_fw ]; then local actually_missing for fw in $missing_fw; do # 检查这个文件是否现在已存在 if [ -f /lib/firmware/$fw ]; then log_info 固件 $fw 已存在可能已修复跳过 continue fi # 检查同前缀的其他版本是否存在 local fw_prefix fw_count fw_prefix$(echo $fw | sed -E s/-[0-9]\.ucode$//) fw_count$(ls /lib/firmware/${fw_prefix}-*.ucode 2/dev/null | wc -l) if [ $fw_count -gt 0 ]; then log_info 固件 $fw 不存在但有同系列其他版本跳过 continue fi actually_missing$actually_missing $fw done missing_fw$(echo $actually_missing | xargs -r echo) fi # 6. 也检查 no suitable firmware found 错误 if [ -z $missing_fw ]; then local no_suitable no_suitable$(dmesg 2/dev/null | grep iwlwifi.*no suitable firmware | tail -1 || true) if [ -n $no_suitable ]; then log_warn iwlwifi 报告 no suitable firmware found local max_ver max_ver$(dmesg 2/dev/null | grep maximum version supported: | grep -oP iwlwifi-[^ ] | head -1 || true) if [ -n $max_ver ] [ ! -f /lib/firmware/$max_ver ]; then missing_fw$max_ver log_info 需要固件: $missing_fw fi fi fi if [ -z $missing_fw ]; then # 可能是模块重载后已修复再检查一次 WiFi 接口 if ip link show 2/dev/null | grep -q wl; then log_ok WiFi 接口已出现修复成功 return 0 fi log_info 未检测到明确的 WiFi 固件缺失跳过 return 0 fi echo -e \n${YELLOW}检测到缺失的 WiFi 固件文件:${NC} for fw in $missing_fw; do echo -e ${RED}✗${NC} $fw done FOUND_ISSUES$((FOUND_ISSUES 1)) # 提取固件前缀去除版本号确定需要的 pnvm 文件 local fw_prefix fw_prefix$(echo $missing_fw | head -1 | sed -E s/-[0-9]\.ucode$//) echo -e \n${YELLOW}将修复以下固件文件:${NC} echo → ${fw_prefix}-*.ucode 系列 echo → ${fw_prefix}.pnvm (射频配置) if [ $DRY_RUN true ]; then log_info [DRY RUN] 将下载 firmware-iwlwifi 包并安装缺失的固件 return 0 fi if ! need_download; then log_warn 无法联网下载跳过 WiFi 固件修复 return 1 fi # 下载 firmware-iwlwifi Debian 包 log_info 下载 firmware-iwlwifi 包 (~23MB)... local deb_file$TEMP_DIR/firmware-iwlwifi.deb if ! download $FIRMWARE_IWLWIFI_URL $deb_file; then log_error 下载失败请检查网络连接 return 1 fi log_ok 下载完成 ($(du -h $deb_file | cut -f1)) # 提取并安装固件 log_info 提取并安装固件... local extract_dir$TEMP_DIR/iwlwifi-extract mkdir -p $extract_dir dpkg-deb -x $deb_file $extract_dir 2/dev/null # 查找需要的固件文件 local installed0 local fw_base fw_base$(echo $missing_fw | head -1) # 先查找所有匹配的 .ucode 文件 local found_files found_files$(find $extract_dir -name ${fw_prefix}*.ucode -o -name ${fw_prefix}*.pnvm 2/dev/null || true) if [ -z $found_files ]; then log_warn 下载的包中未找到 ${fw_prefix}* 固件尝试查找最接近的版本... # 显示包里有什么 find $extract_dir -name iwlwifi-*${fw_prefix##iwlwifi-}* 2/dev/null | head -10 || true log_info 可用的 hr/gf/fm 变体: find $extract_dir -name iwlwifi-* 2/dev/null | grep -oP iwlwifi-[^-]-[^-]-[^-]-[^-] | sort -u | head -20 fi for fw_file in $found_files; do local fname fname$(basename $fw_file) cp $fw_file /lib/firmware/$fname log_ok 已安装: $fname installed$((installed 1)) done if [ $installed -eq 0 ]; then log_error 未找到匹配的固件文件 log_info 请手动从以下地址下载 log_info https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git return 1 fi # 重载 iwlwifi 模块 log_info 重载 iwlwifi 模块... modprobe -r iwlwifi 2/dev/null || true sleep 1 modprobe iwlwifi 2/dev/null || true sleep 3 # 验证 if ip link show 2/dev/null | grep -q wl; then local wl_iface wl_iface$(ip link show 2/dev/null | grep -oP wl[^ :] | head -1) log_ok WiFi 接口已出现: $wl_iface FIXED_ISSUES$((FIXED_ISSUES 1)) else log_warn WiFi 接口尚未出现可能需要重启 log_info 新的固件文件已安装: ls -la /lib/firmware/${fw_prefix}* 2/dev/null dmesg 2/dev/null | grep -i iwl | tail -5 fi}— 声卡诊断与修复 —diagnose_audio() {log_section “声卡固件诊断”# 1. 找出 Intel 音频 PCI 设备 local audio_devs audio_devs$(lspci -nn 2/dev/null | grep -i Audio.*Intel || true) if [ -z $audio_devs ]; then log_info 未检测到 Intel 音频硬件跳过声卡诊断 return 0 fi echo $audio_devs | while read -r line; do echo -e ${line} done # 2. 检查声卡是否存在 if [ -f /proc/asound/cards ] grep -q \[.*\] /proc/asound/cards 2/dev/null; then local card_count card_count$(grep -c \[ /proc/asound/cards 2/dev/null || echo 0) log_ok 已有 $card_count 张声卡在工作跳过 cat /proc/asound/cards 2/dev/null | while read -r l; do echo $l; done return 0 fi # 3. 从 dmesg 检查 SOF 固件错误 local sof_err sof_err$(dmesg 2/dev/null | grep SOF firmware and/or topology file not found || true) if [ -z $sof_err ]; then sof_err$(grep SOF firmware and/or topology file not found /var/log/syslog 2/dev/null || true) fi if [ -z $sof_err ]; then log_info 未检测到 SOF 固件错误跳过 return 0 fi FOUND_ISSUES$((FOUND_ISSUES 1)) # 4. 提取需要的固件路径 local fw_path tplg_path fw_dir ipc_type fw_path$(dmesg 2/dev/null | grep Firmware file: | grep sof | tail -1 | grep -oP intel/[^ ] || true) tplg_path$(dmesg 2/dev/null | grep Topology file: | grep sof | tail -1 | grep -oP intel/[^ ] || true) if [ -z $fw_path ]; then fw_path$(grep Firmware file: /var/log/syslog 2/dev/null | grep sof | tail -1 | grep -oP intel/[^ ] || true) fi echo -e \n${YELLOW}检测到 SOF 固件缺失:${NC} echo -e ${RED}✗${NC} Firmware: $fw_path echo -e ${YELLOW}?${NC} Topology: $tplg_path if [ -z $fw_path ]; then log_warn 无法从 dmesg 提取固件路径 return 1 fi # 5. 分析固件路径确定需要的平台 # 典型路径: intel/sof-ipc4/arl/sof-arl.ri local platform fw_dir_name fw_file_name

相关新闻

UE5多显示器开发实战:命令行与代码精准控制程序窗口显示

UE5多显示器开发实战:命令行与代码精准控制程序窗口显示

1. 项目概述:为什么UE程序启动时选择显示器是个“技术活”很多刚接触Unreal Engine 5的朋友,可能都遇到过这样一个看似简单却让人头疼的问题:我明明有两台显示器,为什么UE编辑器或者打包后的程序,总是“固执”地跑在主…

2026/10/18 6:16:13 阅读更多 →
Druid SQL核心功能与性能优化实战

Druid SQL核心功能与性能优化实战

1. Druid SQL支持概述Apache Druid作为一款实时分析型数据库,其原生查询语言虽然强大但学习曲线陡峭。2020年推出的SQL支持功能彻底改变了这一局面,让熟悉传统关系型数据库的分析师也能快速上手。这个功能并非简单的语法转换层,而是深度集成在…

2026/10/17 1:05:55 阅读更多 →
边界监督在离线安全强化学习中的创新应用

边界监督在离线安全强化学习中的创新应用

1. 项目概述:边界监督在离线安全强化学习中的创新应用这个标题指向的是强化学习领域一个非常前沿的研究方向——如何在完全离线的训练环境中确保智能体的安全性。2025年NIPS会议论文《Boundary to region supervision for offline safe reinforcement learning》提出…

2026/10/18 13:19:40 阅读更多 →

最新新闻

AI+Wireshark智能抓包:从过滤表达式到异常定位的排障实战

AI+Wireshark智能抓包:从过滤表达式到异常定位的排障实战

Wireshark 用了快十年,前几年我碰上问题,基本都是靠逮住一个包啃半天来定位。但这段时间我的工作习惯变了:AI 和 Wireshark 抓包放在一起之后,很多过去靠肉眼硬看才能发现的规律,秒级就能出来。这篇文章不是讲怎么装 W…

2026/10/20 16:30:14 阅读更多 →
GPIO驱动能力与输出摆率详解:信号质量、功耗与EMI的平衡秘诀

GPIO驱动能力与输出摆率详解:信号质量、功耗与EMI的平衡秘诀

你打开单片机厂商的图形化配置工具,看到一个引脚的下拉菜单里躺着“驱动能力”和“输出摆率”两个选项,旁边默认写着 Low 或 High。大部分人跟着感觉选了最大档,觉得“越大越稳”。我在项目里吃过亏之后才意识到,这两个参数是 GPI…

2026/10/20 16:30:14 阅读更多 →
基于单片机的智能窗帘控制系统设计与实现:从硬件到调试

基于单片机的智能窗帘控制系统设计与实现:从硬件到调试

先说结论:这类项目真正的难点不在单片机代码,而在机械装配和现场调试。很多人看到"基于单片机的智能窗帘控制系统设计"这个题目,第一反应是"单片机接个电机转起来就完事了",其实远没有这么简单。我自己做这套…

2026/10/20 16:30:14 阅读更多 →
增量Delaunay三角剖分C++实现:点定位、翻边与避坑指南

增量Delaunay三角剖分C++实现:点定位、翻边与避坑指南

简介:本资源面向计算几何与图形学方向的 C 开发者,提供一套增量 Delaunay 三角剖分算法的完整实现,可用于最大化三角网格中所有三角形的最小内角,改善网格质量。项目采用顾贤峰教授提出的「半边」数据结构组织拓扑关系&#xff0c…

2026/10/20 16:30:14 阅读更多 →
DSP28335 XINTF外扩SRAM完整指南:从时序配置到CMD段分配

DSP28335 XINTF外扩SRAM完整指南:从时序配置到CMD段分配

做DSP开发的人,迟早会撞上内存不够用的墙。28335虽然带浮点单元,可内部那块SARAM总共也就三十几K字,跑个FFT、存一组采集数据、塞个查找表,说满就满。这时候最顺手的解法就是走XINTF外扩SRAM。这个实验在普中DSP28335开发攻略里被…

2026/10/20 16:30:14 阅读更多 →
从Softmax到混淆矩阵:分类模型标签转换与可视化实战

从Softmax到混淆矩阵:分类模型标签转换与可视化实战

分类模型训练完之后,真正让你睡不着的往往不是loss降不降得下去,而是模型在验证集上到底把哪些类别搞混了。而要把这个问题看清楚,就绕不开一个基础动作:把模型最后一层算出来的softmax概率,转成真正能拿来跟标注做对比…

2026/10/20 16:29:13 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →