
psychlist/docker-airconnect-arm如果树莓派上已安装正常工作的Docker,可忽略此步骤。
以下是使用Docker安装脚本的命令。最后一条命令中,将<your-user>替换为树莓派用户名(通常为pi)。
curl -fsSL [***] -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker <your-user>
启动新终端使最后一条命令生效。可能还需重启设备以正确启动Docker服务。
使用以下命令启动容器:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INCLUDE_AIRCAST=TRUE \ psychlist/docker-airconnect-arm
使用以下命令更新容器:
docker pull psychlist/docker-airconnect-arm && \ docker rm --force airconnect && \ docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INCLUDE_AIRCAST=TRUE \ psychlist/docker-airconnect-arm
本项目提供优秀AirConnect [1]工具的Docker容器版本,适用于树莓派,针对Sonos扬声器优化。容器镜像基于Alpine Linux,总大小约90MB。
docker-airconnect-arm容器运行AirConnect的airupnp-arm服务,为所有Sonos扬声器和设备启用AirPlay功能。默认配置仅包含无原生AirPlay 2功能的Sonos播放器,避免创建重复的AirPlay目标。
AirConnect兼容Sonos S1和S2软件版本,也支持“分离的”S1/S2 Sonos系统。
Docker容器还配置了供Sonos控制器应用显示的图标。
尽管此Docker镜像主要针对和优化Sonos环境,也可额外包含aircast-arm服务,为ChromeCast设备提供AirPlay功能。要在容器中启用AirCast,启动容器时设置环境变量INCLUDE_AIRCAST=TRUE。详见下方使用示例。
镜像已在以下树莓派型号上测试:
可能在其他支持Docker的ARM设备上工作。
Docker镜像名称为Docker Hub上的psychlist/docker-airconnect-arm [3]。
欢迎反馈和建议:可通过[4]提交issue。
树莓派上需有正常工作的Docker环境,且与目标扬声器在同一网络。需互联网访问以下载Docker镜像。
容器启动命令如下:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ psychlist/docker-airconnect-arm
要包含AirCast支持,在docker run命令中设置INCLUDE_AIRCAST环境变量为TRUE:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INCLUDE_AIRCAST=TRUE \ psychlist/docker-airconnect-arm
若后续需更新镜像版本:(1) 拉取新镜像,(2) 删除容器,(3) 启动新容器实例。此操作会中断当前AirPlay流:
docker pull psychlist/docker-airconnect-arm docker rm --force airconnect docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ psychlist/docker-airconnect-arm
若启动容器时出现类似WARNING: The requested image's platform (linux/arm/v7) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested的警告,可在docker run命令中指定platform参数抑制警告:
docker run -d \ --platform=linux/arm/v7 \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INCLUDE_AIRCAST=TRUE \ psychlist/docker-airconnect-arm
容器默认配置适用于大多数Sonos安装。可通过启动容器时传入可选环境变量覆盖配置。
若在Docker命令行中设置SUPPRESS_FLUSH=TRUE(如本页面示例),airupnp服务将以--noflush选项运行,显著提升从Apple应用流式传输时AirConnect的响应性(切换曲目、调整播放位置)。
此选项在Sonos扬声器上效果良好,但可能不适用于其他类型扬声器。
若不使用此选项,从Docker命令行中移除-e SUPPRESS_FLUSH=TRUE即可。
若树莓派有多个网络接口(如同时使用有线和无线接口),可通过BIND_IP环境变量指定AirConnect绑定的接口。
例如,在docker run命令中添加:-e BIND_IP=192.168.0.50,其中IP地址为所选接口的分配地址。
容器默认仅包含无原生AirPlay 2支持的Sonos设备,具体包括:Play:1、Play:3、Play:5(第一代)、PlayBar、ZP80、Connect (ZP90)、ZP100和Connect:Amp (ZP120)。网络上发现的其他Sonos和非Sonos UPnP设备将被忽略。
可使用INC_MODELNUMBERS、EXC_MODELNUMBERS和EXC_MODELNAMES环境变量覆盖此行为。
设置INC_MODELNUMBERS=NONE可禁用特定设备型号的包含;或设为要包含的设备型号列表。
当INC_MODELNUMBERS=NONE时,使用EXC_MODELNUMBERS和EXC_MODELNAMES指定要排除的设备型号和名称列表。
通过docker run命令的-e选项提供环境变量。例如,仅包含Playbar和Play:1扬声器:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INC_MODELNUMBERS=S9,S1,S12 \ psychlist/docker-airconnect-arm
或包含所有UPnP设备,除第二代Play:5:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INC_MODELNUMBERS=NONE \ -e EXC_MODELNUMBERS=S6 \ psychlist/docker-airconnect-arm
注意,需设置-e INC_MODELNUMBERS=NONE才能使其他选项生效。
使用ARTWORK环境变量指定自定义图片URL,替换默认图标。图片需通过HTTP/S供扬声器和控制器访问。例如:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e ARTWORK=[***] \ -e SUPPRESS_FLUSH=TRUE \ psychlist/docker-airconnect-arm
其他可用配置参数:
CODEC, METADATA, LATENCY, DRIFT, MAX_PLAYERS, MAIN_LOG, UPNP_LOG, UTIL_LOG, RAOP_LOG
例如,将编解码器设为MP3 @ 320kb/s,延迟设为500ms/500ms:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e CODEC='mp3:320' \ -e LATENCY='500:500:f' \ psychlist/docker-airconnect-arm
更多配置值信息参见AirConnect文档[1](Config File Parameters部分)。
为在x86主机上构建ARM镜像,Dockerfile利用Balena [2] Alpine Linux基础镜像提供的crossbuild功能,支持在x86环境下构建ARM镜像。(若在原生ARM主机上直接构建,注释或移除两条cross-build RUN语句。)
[1] []
[2] []
[3] []
[4] []
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务