[GH-ISSUE #135] no sound per air play 1 on V4 beta #74

Closed
opened 2026-02-27 19:28:15 +03:00 by kerem · 21 comments
Owner

Originally created by @jurajs5 on GitHub (Jan 25, 2026).
Original GitHub issue: https://github.com/lox-audioserver/lox-audioserver/issues/135

Tested on V4 beta 2 and 3.

I am using an AirPlay speaker, Bowers & Wilkins Zeppelin Air, for one zone. This is an AirPlay v1 device. After I try to play a radio stream, the device powers on, but no sound is produced. From a system point of view, it looks like the stream is coming through. I can see that there is an update available for AirPlay v1, but the update button is disabled.

Here is addtional info and log

Image Image

[2026-01-25T09:06:20.851Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=108864 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=12 zoneId=6] airplay flow metrics
[2026-01-25T09:06:22.862Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=110880 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=14 zoneId=6] airplay flow metrics
[2026-01-25T09:06:23.167Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token
[2026-01-25T09:06:23.184Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token
[2026-01-25T09:06:23.886Z][DEBUG][Output|AirPlaySender] [host=192.168.3.237 zoneId=6 zoneName=Pracovna] Receiving request: 192.168.3.237 OPTIONS
[2026-01-25T09:06:24.873Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=112896 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=16 zoneId=6] airplay flow metrics
[2026-01-25T09:06:26.885Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=114912 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=18 zoneId=6] airplay flow metrics
[2026-01-25T09:06:28.896Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=116928 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=20 zoneId=6] airplay flow metrics
[2026-01-25T09:06:30.909Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=118944 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=22 zoneId=6] airplay flow metrics
[2026-01-25T09:06:31.171Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token
[2026-01-25T09:06:31.191Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token
[2026-01-25T09:06:32.919Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=120960 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=24 zoneId=6] airplay flow metrics
[2026-01-25T09:06:34.931Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=122976 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=26 zoneId=6] airplay flow metrics
[2026-01-25T09:06:36.942Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=124992 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=28 zoneId=6] airplay flow metrics
[2026-01-25T09:06:38.886Z][DEBUG][Output|AirPlaySender] [host=192.168.3.237 zoneId=6 zoneName=Pracovna] Receiving request: 192.168.3.237 OPTIONS
[2026-01-25T09:06:38.953Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=127008 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=30 zoneId=6] airplay flow metrics
[2026-01-25T09:06:39.174Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token
[2026-01-25T09:06:39.197Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token
[2026-01-25T09:06:39.485Z][DEBUG][Output|AirPlaySender] [host=192.168.3.237 zoneId=6 zoneName=Pracovna] disconnected
[2026-01-25T09:06:39.492Z][DEBUG][Output|AirPlaySender] [event=device host=192.168.3.237 message=stopped zoneId=6 zoneName=Pracovna] airplay sender event

Originally created by @jurajs5 on GitHub (Jan 25, 2026). Original GitHub issue: https://github.com/lox-audioserver/lox-audioserver/issues/135 Tested on V4 beta 2 and 3. I am using an AirPlay speaker, Bowers & Wilkins Zeppelin Air, for one zone. This is an AirPlay v1 device. After I try to play a radio stream, the device powers on, but no sound is produced. From a system point of view, it looks like the stream is coming through. I can see that there is an update available for AirPlay v1, but the update button is disabled. Here is addtional info and log <img width="1121" height="800" alt="Image" src="https://github.com/user-attachments/assets/f9eaf6b0-70cf-4dc3-9dc3-e7e5c8f4b95f" /> <img width="1186" height="846" alt="Image" src="https://github.com/user-attachments/assets/57336e66-81c1-4993-94f2-ce239c1dd41d" /> [2026-01-25T09:06:20.851Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=108864 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=12 zoneId=6] airplay flow metrics [2026-01-25T09:06:22.862Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=110880 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=14 zoneId=6] airplay flow metrics [2026-01-25T09:06:23.167Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token [2026-01-25T09:06:23.184Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token [2026-01-25T09:06:23.886Z][DEBUG][Output|AirPlaySender] [host=192.168.3.237 zoneId=6 zoneName=Pracovna] Receiving request: 192.168.3.237 OPTIONS [2026-01-25T09:06:24.873Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=112896 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=16 zoneId=6] airplay flow metrics [2026-01-25T09:06:26.885Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=114912 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=18 zoneId=6] airplay flow metrics [2026-01-25T09:06:28.896Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=116928 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=20 zoneId=6] airplay flow metrics [2026-01-25T09:06:30.909Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=118944 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=22 zoneId=6] airplay flow metrics [2026-01-25T09:06:31.171Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token [2026-01-25T09:06:31.191Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token [2026-01-25T09:06:32.919Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=120960 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=24 zoneId=6] airplay flow metrics [2026-01-25T09:06:34.931Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=122976 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=26 zoneId=6] airplay flow metrics [2026-01-25T09:06:36.942Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=124992 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=28 zoneId=6] airplay flow metrics [2026-01-25T09:06:38.886Z][DEBUG][Output|AirPlaySender] [host=192.168.3.237 zoneId=6 zoneName=Pracovna] Receiving request: 192.168.3.237 OPTIONS [2026-01-25T09:06:38.953Z][DEBUG][Output|AirPlayFlow] [backlogBytes=2096640 chunkQueueBytes=127008 clients=1 clientStats=[{"id":"192.168.3.237:1024","ready":true,"bufferBytes":0,"feedBytes":0}] preloadComplete=true ready=1 streamedSeconds=30 zoneId=6] airplay flow metrics [2026-01-25T09:06:39.174Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token [2026-01-25T09:06:39.197Z][WARN][Audio|@lox-audioserver/node-librespot] [hasAccessToken=false hasClientId=false] native connect skipped; missing access token [2026-01-25T09:06:39.485Z][DEBUG][Output|AirPlaySender] [host=192.168.3.237 zoneId=6 zoneName=Pracovna] disconnected [2026-01-25T09:06:39.492Z][DEBUG][Output|AirPlaySender] [event=device host=192.168.3.237 message=stopped zoneId=6 zoneName=Pracovna] airplay sender event
kerem closed this issue 2026-02-27 19:28:15 +03:00
Author
Owner

@rudyberends commented on GitHub (Jan 25, 2026):

Could you run a test build and check if you can reproduce the issue there?
• Native: use the testing branch
• Docker: ghcr.io/rudyberends/lox-audioserver:testing-20260125114926

<!-- gh-comment-id:3796512027 --> @rudyberends commented on GitHub (Jan 25, 2026): Could you run a test build and check if you can reproduce the issue there? • Native: use the testing branch • Docker: ghcr.io/rudyberends/lox-audioserver:testing-20260125114926
Author
Owner

@jurajs5 commented on GitHub (Jan 25, 2026):

I did it reprodeced in every beta v4. not able to test in docker as i dont have any enviroment for it. issue is clearly with airplay 1 as all devices with airplay 2 are ok. With old virtual music server its working fine.

<!-- gh-comment-id:3797077641 --> @jurajs5 commented on GitHub (Jan 25, 2026): I did it reprodeced in every beta v4. not able to test in docker as i dont have any enviroment for it. issue is clearly with airplay 1 as all devices with airplay 2 are ok. With old virtual music server its working fine.
Author
Owner

@rudyberends commented on GitHub (Jan 25, 2026):

yes I understand the issue. I made some changes and I need you to verify them. They are in the testing branch.

<!-- gh-comment-id:3797082372 --> @rudyberends commented on GitHub (Jan 25, 2026): yes I understand the issue. I made some changes and I need you to verify them. They are in the testing branch.
Author
Owner

@jurajs5 commented on GitHub (Jan 25, 2026):

ok, clear do i install test branch?

<!-- gh-comment-id:3797085237 --> @jurajs5 commented on GitHub (Jan 25, 2026): ok, clear do i install test branch?
Author
Owner

@jurajs5 commented on GitHub (Jan 25, 2026):

nevermind, i see it - installing now

<!-- gh-comment-id:3797097475 --> @jurajs5 commented on GitHub (Jan 25, 2026): nevermind, i see it - installing now
Author
Owner

@jurajs5 commented on GitHub (Jan 25, 2026):

Issue is there even in test branch.

Maybe way out is to change node-libraop to Shairport‑sync service.

<!-- gh-comment-id:3797208289 --> @jurajs5 commented on GitHub (Jan 25, 2026): Issue is there even in test branch. Maybe way out is to change node-libraop to Shairport‑sync service.
Author
Owner

@rudyberends commented on GitHub (Jan 25, 2026):

That package is used for input, not for sending to an airplay device.

Could you get me a spam loglevel log on that test branch from the reproduced issue?

<!-- gh-comment-id:3797226199 --> @rudyberends commented on GitHub (Jan 25, 2026): That package is used for input, not for sending to an airplay device. Could you get me a spam loglevel log on that test branch from the reproduced issue?
Author
Owner

@jurajs5 commented on GitHub (Jan 25, 2026):

lox-audioserver-logs-2026-01-25T20-58-07-846Z.txt

<!-- gh-comment-id:3797228083 --> @jurajs5 commented on GitHub (Jan 25, 2026): [lox-audioserver-logs-2026-01-25T20-58-07-846Z.txt](https://github.com/user-attachments/files/24849081/lox-audioserver-logs-2026-01-25T20-58-07-846Z.txt)
Author
Owner

@rudyberends commented on GitHub (Jan 25, 2026):

Thanks. It already looks different. could you als share your config? I would like to see just the zeppelin zone part, especially the output.

Unfortunately I am not able to reproduce this myself, so we need might not fix it in one go.

<!-- gh-comment-id:3797248042 --> @rudyberends commented on GitHub (Jan 25, 2026): Thanks. It already looks different. could you als share your config? I would like to see just the zeppelin zone part, especially the output. Unfortunately I am not able to reproduce this myself, so we need might not fix it in one go.
Author
Owner

@jurajs5 commented on GitHub (Jan 25, 2026):

lox-audioserver-config.json

<!-- gh-comment-id:3797249188 --> @jurajs5 commented on GitHub (Jan 25, 2026): [lox-audioserver-config.json](https://github.com/user-attachments/files/24849205/lox-audioserver-config.json)
Author
Owner

@rudyberends commented on GitHub (Jan 25, 2026):

So its zone 6 (Pracovna) right?

Somehow discovery sets the port of that device to 1024. I dont think it is correct. Or that device is advertising an unusual port.

Could you try changing that port to 5000?

so;

"transports": [
{
"id": "airplay",
"host": "192.168.3.237",
"port": 5000,
"name": "EC66D103739D@Pracovna",
"forceAp2": false
}

<!-- gh-comment-id:3797266385 --> @rudyberends commented on GitHub (Jan 25, 2026): So its zone 6 (Pracovna) right? Somehow discovery sets the port of that device to 1024. I dont think it is correct. Or that device is advertising an unusual port. Could you try changing that port to 5000? so; "transports": [ { "id": "airplay", "host": "192.168.3.237", "port": 5000, "name": "EC66D103739D@Pracovna", "forceAp2": false }
Author
Owner

@jurajs5 commented on GitHub (Jan 25, 2026):

in which file?

<!-- gh-comment-id:3797272642 --> @jurajs5 commented on GitHub (Jan 25, 2026): in which file?
Author
Owner

@rudyberends commented on GitHub (Jan 25, 2026):

its in your config.json. if you have direct access you can edit it. Otherwise you have to upload it

<!-- gh-comment-id:3797277214 --> @rudyberends commented on GitHub (Jan 25, 2026): its in your config.json. if you have direct access you can edit it. Otherwise you have to upload it
Author
Owner

@jurajs5 commented on GitHub (Jan 25, 2026):

tried with 5000 and 7000, as 2nd device have 7000 setup - still no luck.

<!-- gh-comment-id:3797304754 --> @jurajs5 commented on GitHub (Jan 25, 2026): tried with 5000 and 7000, as 2nd device have 7000 setup - still no luck.
Author
Owner

@rudyberends commented on GitHub (Jan 25, 2026):

For AirPlay 1 the default port is 5000. The other one is for AirPlay 2. It could also be that that zeppelin truly uses that other port that was in there.

You do need to restart the server for the config to have effect.

If it still happens after a restart, show me the log again.

<!-- gh-comment-id:3797323736 --> @rudyberends commented on GitHub (Jan 25, 2026): For AirPlay 1 the default port is 5000. The other one is for AirPlay 2. It could also be that that zeppelin truly uses that other port that was in there. You do need to restart the server for the config to have effect. If it still happens after a restart, show me the log again.
Author
Owner

@jurajs5 commented on GitHub (Jan 25, 2026):

i stop server, edit config, than save and start server again

diff for ports is:

  • port 1024 wake up device, no sound comes
  • port 5000 even dont wake up device
<!-- gh-comment-id:3797326717 --> @jurajs5 commented on GitHub (Jan 25, 2026): i stop server, edit config, than save and start server again diff for ports is: - port 1024 wake up device, no sound comes - port 5000 even dont wake up device
Author
Owner

@jurajs5 commented on GitHub (Jan 25, 2026):

lox-audioserver-logs-2026-01-25T22-21-32-297Z.txt

here is new log

<!-- gh-comment-id:3797328960 --> @jurajs5 commented on GitHub (Jan 25, 2026): [lox-audioserver-logs-2026-01-25T22-21-32-297Z.txt](https://github.com/user-attachments/files/24849642/lox-audioserver-logs-2026-01-25T22-21-32-297Z.txt) here is new log
Author
Owner

@jurajs5 commented on GitHub (Jan 26, 2026):

@rudyberends any luck with new log?

<!-- gh-comment-id:3800660459 --> @jurajs5 commented on GitHub (Jan 26, 2026): @rudyberends any luck with new log?
Author
Owner

@rudyberends commented on GitHub (Jan 27, 2026):

I might have a solution, but I am not sure yet.

Although it’s a strange port, it’s possible your AirPlay port is actually 1024, so you may need to revert to that value.

You can also force the zone to refresh its discovered device settings:
1. Temporarily select a different output for the zone.
2. Select the AirPlay 1 device again.

That restores the auto-discovered settings.

Then upgrade the AirPlay sender from your application root:
npm install @lox-audioserver/node-airplay-sender@latest

validate it with the following command. it should now be on 0.4.7
npm ls @lox-audioserver/node-airplay-sender

Restart the server and check whether playback behavior changes.

<!-- gh-comment-id:3807024106 --> @rudyberends commented on GitHub (Jan 27, 2026): I might have a solution, but I am not sure yet. Although it’s a strange port, it’s possible your AirPlay port is actually 1024, so you may need to revert to that value. You can also force the zone to refresh its discovered device settings: 1. Temporarily select a different output for the zone. 2. Select the AirPlay 1 device again. That restores the auto-discovered settings. Then upgrade the AirPlay sender from your application root: `npm install @lox-audioserver/node-airplay-sender@latest` validate it with the following command. it should now be on 0.4.7 `npm ls @lox-audioserver/node-airplay-sender` Restart the server and check whether playback behavior changes.
Author
Owner

@jurajs5 commented on GitHub (Jan 27, 2026):

cool, thx for sollution - its working now

<!-- gh-comment-id:3807196524 --> @jurajs5 commented on GitHub (Jan 27, 2026): cool, thx for sollution - its working now
Author
Owner

@rudyberends commented on GitHub (Jan 27, 2026):

great. To make sure it keeps working, stay on this version until a new beta comes out.

<!-- gh-comment-id:3807206941 --> @rudyberends commented on GitHub (Jan 27, 2026): great. To make sure it keeps working, stay on this version until a new beta comes out.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/lox-audioserver#74
No description provided.