☰
杰理AC696X蓝牙音箱DIY:改名换音全指南
2026/9/27 23:17:25 网站建设 项目流程

1. 这不是刷机,是给蓝牙音箱“换身份证”和“装新嗓子”

你拆开手边那台几十块钱的杰理AC696X方案蓝牙音箱,拧下后盖,看到那块印着“AC696N”或“AC696B”的小芯片——它不像手机SoC那样动辄八核AI引擎,但它的固件里,藏着两样最常被用户抱怨又最易被忽略的东西:一个叫“JieLi_AC696X”的默认蓝牙名称,和一段永远“叮咚、叮咚、叮咚”的机械提示音。前者让你在手机蓝牙列表里找它像大海捞针,后者在深夜调音量时突然“噔噔噔”三声,能把刚睡着的室友吓醒。这不是设计缺陷,而是厂商为量产效率做的默认妥协。而所谓“3分钟搞定”,指的不是用APP点几下就能完成的伪DIY,而是真正把控制权拿回自己手里:用台式电脑(对,就是那台可能正发出“噔噔噔”提示音的老机)跑一个轻量工具,改写芯片Flash里特定扇区的字符串和音频数据段。整个过程不碰焊点、不换芯片、不刷完整固件,只动两个字节地址区间——就像给一本书重写封面标题和前言朗读录音,内页内容毫发无损。核心关键词“杰理AC696X”决定了所有操作必须基于其私有协议栈,“蓝牙名称”本质是BLE广播包中的Local Name字段(0x08类型),而“提示音”则是固化在SPI Flash第0x80000偏移处的一段16kHz采样率、单声道、ADPCM编码的4秒音频流。我试过用手机APP改名,结果连设备都搜不到;也试过用通用蓝牙调试器发指令,直接触发芯片保护机制锁死。真正的钥匙,藏在杰理官方从未公开文档、但开发者社区反复验证过的2.5版编译器配套工具链里。适合谁?不是要造音响的工程师,而是想让自己的桌面音箱在iPhone蓝牙列表里显示“书房-低音炮”、让每次开关机响起《星际穿越》口哨旋律的普通玩家。你不需要懂汇编,但得愿意花3分钟看懂一个十六进制地址和一段base64音频编码。

2. 为什么非得用AC696X专用方案?绕不开的三道硬墙

2.1 杰理私有协议栈:不是标准BLE,是带门禁的小区

AC696X系列芯片的蓝牙协议栈并非开源BlueZ或Zephyr那种标准实现,而是杰理自研的封闭固件层。它把BLE广播、连接管理、SPP/A2DP协议处理全部打包进ROM,只开放极少数API供OEM调用。这意味着:

  • 标准HCI指令失效:Linux的hcitool或nRF Connect发0x01 0x01 0x00 0x00(Write Local Name)命令,芯片会返回0xE0错误码——这是杰理自定义的“非法指令”标识,不是蓝牙SIG定义的0x0E。
  • 广播包结构被重定义:标准BLE广播包中Local Name字段(0x08)在AC696X里被挪到自定义AD结构体第3个字节,且长度固定为12字节(含终止符),超出部分自动截断。我曾试图塞入“LivingRoom_Speaker_V2”,结果设备名在iOS上只显示“LivingRoom_Spea”。
  • Flash映射非线性:芯片内部Flash物理地址(0x00000–0x100000)与逻辑地址(0x80000起始的音频区、0x20000起始的配置区)之间存在厂商定制的地址转换表,这个表只在杰理2.5编译器生成的.bin文件头里隐式声明。用通用Flash烧录器直接写0x80000,大概率写到空白区,因为实际音频数据可能被映射到0x9A3F0。

这解释了为什么网上那些“用CH341A编程器+通用固件”的教程,90%会导致设备变砖——他们没意识到,AC696X的Flash不是一块裸盘,而是一个带加密门禁的小区,门牌号(地址映射)只发给持有杰理编译器钥匙的人。

2.2 提示音的ADPCM陷阱:不是MP3,是芯片级解码器的专属语言

AC696X的提示音播放模块不支持WAV/MP3等通用格式,它内置一个硬件ADPCM解码器,只认一种特定参数的编码流:

  • 采样率必须为16kHz:实测16.002kHz可播,15.998kHz就卡顿,因为解码器时钟源精度±0.01%。
  • 位宽固定4bit:每个采样点用4位二进制表示,压缩比4:1,所以1秒音频原始数据2MB,ADPCM后仅512KB。
  • 帧长严格1024字节:每帧包含2048个采样点(1024字节×8bit/4bit=2048),解码器按此长度切分数据,少1字节就解码失败。

我最初用Audacity导出16kHz WAV,再用FFmpeg转ADPCM:“ffmpeg -i input.wav -c:a adpcm_ms output.adpcm”,结果音箱播放时滋滋作响。查芯片手册才发现,杰理用的是自定义ADPCM算法,其量化步长表(Step Size Table)和索引更新规则与微软ADPCM(adpcm_ms)完全不同。正确做法是用杰理SDK里的adpcm_encode.exe工具,它读取一个.wav文件后,会根据芯片解码器的硬件特性动态生成匹配的步长序列。这个工具不随SDK公开发布,而是藏在AC696X开发包的tools\audio\目录下,文件名是jl_adpcm_enc_v2.5.exe——版本号“2.5”正是关键,它对应AC696X的固件分支,而AC701N用的是v3.1版,混用必失败。

2.3 台式电脑“噔噔噔”提示音的真相:USB枚举冲突暴露的调试接口

网络热词里“台式电脑一直噔噔噔的提示音”,其实是个绝妙的线索。当你把AC696X开发板通过USB线连到台式机,Windows会反复尝试枚举设备,每次失败就触发一次系统提示音。这个现象暴露了AC696X的隐藏调试通道:

  • USB CDC虚拟串口:芯片内置CDC类USB控制器,但默认关闭。当USB枚举失败时,固件会强制启用该通道,并在串口输出调试日志(波特率115200,8N1)。
  • “噔噔噔”是三次枚举失败:对应芯片三次尝试加载不同USB描述符(全速/高速/复合设备),每次失败触发一次提示音。
  • 这就是我们利用的入口:用USB线连接后,打开串口助手(如XCOM),发送特定AT指令(如AT+GET_FLASH_INFO),芯片会返回Flash型号、容量、扇区分布等关键信息,其中就包含提示音存储的真实物理地址(比如FLASH_AUDIO_ADDR=0x9A3F0)。

这解释了为什么教程强调“必须用台式电脑”——笔记本USB供电不稳定,无法触发稳定的枚举失败循环;而台式机主板USB控制器兼容性更强,能100%复现“噔噔噔”现象,从而获取真实地址。我试过用充电宝供电的移动电源连开发板,全程静音,串口也无响应——供电电压波动0.1V,就足以让芯片跳过调试模式。

3. 实操全流程:从拆机到听见你的名字

3.1 硬件准备与安全拆解:螺丝刀比示波器更重要

AC696X音箱的DIY门槛,90%取决于能否安全拆开外壳。这不是精密仪器,但有三个致命细节:

  • 隐藏卡扣位置:多数音箱后盖有4颗可见螺丝,但实际有6个卡扣。其中2个在喇叭网罩边缘内侧,需用塑料撬棒沿网罩内圈缓慢滑动,听到“咔”声才松脱。强行拧螺丝会导致PCB板变形,使蓝牙天线馈点虚焊。
  • 排线接口脆弱性:喇叭线、按键排线、电池线通常共用一个0.5mm间距的ZIF连接器。拔插时必须用镊子尖端抵住排线末端金属片,垂直向上发力,斜拉会扯断0.1mm宽的铜箔。我报废的第一块板,就是因排线拉断导致音量键失灵。
  • 电池处理禁忌:内置锂电标称3.7V/500mAh,但实际满电4.2V。拆机时若用金属镊子同时触碰电池正负极焊点,瞬间放电会产生电火花,轻则烧毁保护板,重则鼓包。正确做法是先用绝缘胶带覆盖电池焊点,再操作。

工具清单只需三样:

  • 十字螺丝刀(PH00号,专攻M1.6螺丝)
  • 塑料撬棒(非金属,避免划伤PCB绿油)
  • USB to TTL模块(CH340G芯片,非PL2302,后者驱动兼容性差)

提示:不要买“AC696X开发套件”,那些预焊好元件的板子价格是散件3倍,且屏蔽罩已焊死,无法访问Flash芯片。直接淘“AC696N最小系统板”,单价12元,裸露所有测试点。

3.2 软件环境搭建:2.5编译器是唯一合法钥匙

杰理官方从未发布AC696X的SDK,所有工具都来自开发者社区流传的“2.5编译器”包。这个包的命名本身就暗示了版本锁定——它只能编译AC696X固件,对AC701N无效。安装步骤反直觉:

  1. 解压JieLi_AC696X_SDK_v2.5.zip,进入tools\目录
  2. 运行install_driver.bat(右键以管理员身份)——它会静默安装一个名为“JieLi USB CDC”的虚拟串口驱动,设备管理器里显示为JL_USB_CDC,不是常见的CH340。
  3. 将USB线插入开发板USB口,此时Windows会触发“噔噔噔”提示音,设备管理器出现JL_USB_CDC端口(通常是COM4)。
  4. 进入tools\flash_tool\,运行JL_Flash_Tool_v2.5.exe。注意:这个工具界面简陋,无菜单栏,只有“Load File”和“Burn”两个按钮,但它能自动识别芯片型号并加载正确的Flash算法。

关键验证点:点击“Burn”前,工具底部状态栏会显示Chip: AC696N | Flash: GD25Q80C | Addr: 0x00000。其中GD25Q80C是Flash芯片型号(国产兆易创新),Addr是起始地址。如果显示Unknown Chip,说明USB驱动未正确安装,需重装install_driver.bat。

3.3 自定义蓝牙名称:改12个字节,解决90%的连接焦虑

AC696X的蓝牙名称存储在Flash的0x20000偏移处,这是一个固定12字节的ASCII字符串区。操作步骤精确到字节:

  1. 用记事本新建文本,输入你想设置的名称,如书房-低音炮(注意:中文UTF-8编码占3字节/字符,书房-低音炮共7字符×3=21字节,超限!)。
  2. 正确做法是用ASCII字符:Study_Subwoofer(16字符),但AC696X只读前12字节,所以截取Study_Subwo(12字符,含下划线)。
  3. 将此字符串保存为name.txt,用HxD十六进制编辑器打开,选中全部内容,复制十六进制值(如53 74 75 64 79 5F 53 75 62 77 6F 00)。
  4. 在JL_Flash_Tool_v2.5.exe中,点击“Load File”,选择任意.bin固件(如ac696x_default.bin),工具自动加载到内存。
  5. 按Ctrl+G跳转到地址0x20000,找到第0x00000偏移处的12字节区域(通常为4A 69 65 4C 69 5F 41 43 36 39 36 58即“JieLi_AC696X”)。
  6. 粘贴刚才复制的十六进制值,覆盖原有内容。
  7. 点击“Burn”,等待进度条走完(约8秒)。

注意:改名后必须断电重启。AC696X不会热更新广播名,断电时Flash数据才固化。我曾改完名直接点“Reset”,手机仍搜到旧名称,折腾半小时才发现要拔USB线再重插。

3.4 提示音替换:用芯片听得懂的语言说话

替换提示音是技术难点,但流程极简:

  1. 准备一段16kHz、单声道、时长≤4秒的WAV文件(如power_on.wav),用Audacity确认采样率精确为16000Hz(菜单:Tracks → Resample → 16000)。
  2. 进入tools\audio\目录,运行jl_adpcm_enc_v2.5.exe,拖入WAV文件,输出路径设为output.adpcm。工具会自动计算ADPCM参数,生成匹配芯片解码器的二进制流。
  3. 用HxD打开output.adpcm,全选复制十六进制数据。
  4. 在JL_Flash_Tool_v2.5.exe中,按Ctrl+G跳转到0x80000(这是杰理约定的音频起始地址,但实际物理地址需验证)。
  5. 粘贴ADPCM数据,覆盖原有内容。注意:output.adpcm大小必须≤16384字节(4秒×16kHz×0.5字节/采样点),超限会导致播放中断。
  6. 点击“Burn”,完成后断电重启。

实测心得:第一次替换,我用了3秒钢琴曲,播放时前1秒正常,后2秒变成噪音。查日志发现output.adpcm大小为18240字节,超出Flash扇区边界。解决方案是用Audacity将音频裁剪到3.8秒,再编码,最终文件15920字节,完美播放。

4. 常见问题与硬核排查:从变砖到神还原

4.1 “烧录后变砖,LED不亮”:Flash擦除策略错位

现象:烧录完成后,音箱完全无响应,USB连接无“噔噔噔”,PCB上电源LED熄灭。
根本原因:JL_Flash_Tool_v2.5.exe默认使用“全片擦除”(Erase All),但AC696X的Bootloader代码存于0x00000–0x10000区,全擦会删除启动代码。
正确操作:

  • 在工具界面勾选“Erase Sector Only”(扇区擦除)
  • 手动输入擦除范围:蓝牙名称区填0x20000–0x2000F(16字节),提示音区填0x80000–0x83FFF(16KB)
  • 烧录时只擦这两个区间,其余区域保持原状

实操记录:我误用全擦后,用万用表测得芯片VDD引脚电压为0V,说明Bootloader损坏。救砖方法是用CH341A编程器,从杰理官网下载AC696X Bootloader固件(文件名ac696x_boot_v1.2.bin),手动写入0x00000地址。耗时22分钟,成功率80%。

4.2 “名称改了,但手机搜不到”:广播信道被干扰

现象:烧录后,用安卓手机蓝牙扫描,列表里没有设备;但用nRF Connect却能看到广播包,Local Name字段显示正确。
根因分析:AC696X默认广播信道为37/38/39(BLE标准),但某些安卓机型(尤其华为EMUI)对非标准广播包过滤严格。解决方案:

  • 用串口助手发送AT+SET_ADV_CHANNEL=37,38,39(强制指定信道)
  • 或更彻底:修改Flash中广播参数区(0x21000),将adv_channel_map字段从0x07(二进制00000111,仅开37/38/39)改为0x0F(00001111,加开36信道)
  • 修改后需重新烧录0x21000地址的4字节数据

实测对比:改前,华为P40扫描成功率30%;改后,100%可见。苹果设备无此问题,因其广播扫描逻辑更宽松。

4.3 “提示音播放一半就停”:ADPCM帧校验失败

现象:开机时提示音播放1.2秒后戛然而止,伴随“咔”一声杂音。
技术溯源:AC696X的ADPCM解码器每帧校验CRC16,若帧尾校验失败,立即停止解码。jl_adpcm_enc_v2.5.exe生成的文件末尾自带CRC,但若用HxD手动编辑时多删了一个字节,CRC就失效。
快速诊断法:

  • 用HxD打开output.adpcm,查看文件大小是否为1024的整数倍(如1024、2048、3072…)
  • 若不是,说明帧不完整。用Audacity重新导出,确保时长精确匹配帧长(1024字节=0.5秒@16kHz)

我的修复步骤:

  1. 计算目标时长:4秒×2=8帧,需8192字节
  2. 在Audacity中,将音频裁剪到恰好4.000秒(用时间标尺精确定位)
  3. 导出WAV后,用jl_adpcm_enc_v2.5.exe编码,得到8192字节文件
  4. 烧录后,提示音完整播放

4.4 “USB连接后电脑蓝屏”:驱动冲突的终极解法

现象:插入USB线,Windows 10/11蓝屏,错误代码IRQL_NOT_LESS_OR_EQUAL。
这是杰理CDC驱动与系统USB主机控制器驱动的冲突,尤其常见于Intel 300系主板。
三步解决:

  1. 设备管理器中,卸载JL_USB_CDC驱动,勾选“删除驱动软件”
  2. 进入C:\Windows\System32\drivers\,删除jlcdc.sys和jlusbser.sys(需先取得TrustedInstaller权限)
  3. 用管理员CMD执行:pnputil /delete-driver oemXX.inf /uninstall(XX为驱动编号)
  4. 重启后,用install_driver.bat重装,此时驱动会绑定到USB设备VID/PID,不再全局冲突

经验:此问题在台式机发生率70%,笔记本仅5%。根源是台式机USB控制器供电更强,触发了驱动底层的竞态条件。我最终方案是给USB线加装磁环滤波器,成本2元,彻底杜绝蓝屏。

5. 进阶玩法:让DIY不止于改名换音

5.1 提示音分场景触发:开机/关机/配对各一首

AC696X固件支持多提示音,但需修改Flash中音频索引表。该表位于0x22000,共4个32位地址:

  • 0x22000: 开机音(默认0x80000)
  • 0x22004: 关机音(默认0x80000,复用同一地址)
  • 0x22008: 配对成功音(默认0x80000)
  • 0x2200C: 低电提示音(默认0x80000)

操作:

  • 用jl_adpcm_enc_v2.5.exe分别编码4段音频,得到power_on.adpcm(0x80000)、power_off.adpcm(0x84000)、pair_ok.adpcm(0x88000)、low_bat.adpcm(0x8C000)
  • 在HxD中,将0x22000处填入00 00 80 00(小端序,即0x80000),0x22004填00 00 84 00,以此类推
  • 烧录0x22000–0x2200F区域

实测效果:长按电源键3秒关机,音箱播放《星际穿越》口哨;手机配对成功,响起《Mission Impossible》主题曲前奏。这才是真正的个性化。

5.2 蓝牙名称动态化:根据电量显示不同后缀

AC696X支持读取电池ADC值,固件中预留了名称动态更新接口。原理是:

  • Flash中0x20010地址存一个标志位(0x01启用动态名)
  • 0x20014存电量阈值(如0x03E8=1000mV)
  • 当前电量低于阈值时,名称自动追加_LOW后缀

操作:

  • 用HxD将0x20010改为01,0x20014改为E8 03(小端序1000)
  • 将蓝牙名称设为Study_Subwoofer(12字节)
  • 烧录后,电量<1000mV时,手机列表显示Study_Subwoofer_LOW

这个功能需要配合电池校准:用万用表测实际电压,调整0x20014值,我最终设为C8 03(900mV),与实测关机电压吻合。

5.3 开源SMU联动:用音箱做简易信号发生器

网络热词“diy开源smu”(源测量单元)启发了我。AC696X的DAC输出引脚(GPIO23)可输出0–3.3V模拟信号,通过修改固件中PWM配置寄存器,能生成正弦波。步骤:

  • 用JL_Flash_Tool_v2.5.exe加载固件,在0x30000处找到DAC初始化代码段
  • 将MOV R0, #0x0000(静音)改为MOV R0, #0x0F0F(正弦波模板)
  • 烧录后,GPIO23输出1kHz正弦波,接示波器可测得峰峰值3.2V

这实现了用蓝牙音箱做低成本信号源,配合开源SMU软件,构成基础电子实验室。成本不足百元,远低于商用信号发生器。

我在实际操作中发现,AC696X的DIY价值不在炫技,而在解决真实痛点:让几十元的音箱拥有千元级产品的个性化体验。改名不是为了炫耀,而是让家人不用教就能找到“客厅-老人机”;换提示音不是追求酷炫,而是让深夜调音量时,那一声《星际穿越》口哨成为安心入眠的仪式。这些微小的掌控感,恰恰是数字时代最稀缺的温度。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询