Home Forums Product Discussion & Questions BeoPlay Upcycling a Beoplay A8

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #53522
    Fjvzrk
    BRONZE Member

    Hi all,

    I have a Beoplay A8. It is a great sounding speaker but unfortunately only supports Airplay 1.

    Over the last month I have been working on a project to upcycle it to make it compatible with Airplay 2.

    I have decided to use a Raspberry pi combined with the application Shairport-sync, connecting the Beoplay A8 through the usb port, to take advantage of the built in DAC in the beoplay A8

    It works great. I can stream music and have even been able to write a script such that the โ€œpreviousโ€, โ€œnextโ€ and โ€œplay/pauseโ€ buttons on the Beoplay A8 are mapped to the corresponding airplay 2 functions. Furthermore I have figured out a way whereby the Beoplay A8 is unbinded from the raspberry piโ€™s usb port when music isnโ€™t playing. This toggles off the Beoplay A8. When music starts playing usb port is binded again, turning on the Beoplay A8.

    Only thing I can get to work is getting access to the Beoplay A8โ€™s hardware volume control. I can control the music volume theough software but not use the built in volume control.

    I can find the Beoplay A8โ€™s mixer by using Alsamixer. But changing the volume level has no effect.

    I used the application EVTEST to detect the button presses to write the script for โ€œpreviousโ€, โ€œnextโ€, โ€œplay/pauseโ€. According to this application the Beoplay A8 also has โ€œvolumeupโ€ and โ€œvolumedownโ€ buttons, but when pushing these buttons on the Beoplay A8 nothing is detected, instead the hardware volume control is triggered up / down.

    Any ideaโ€™s? Basically I see two ways forward:
    (1) Get access to change the volmue of the hardware volume (as I have tried with Alsamixer, but not been able to succeed with)
    (2) Set the Beoplay A8โ€™s hardware volume to a fixed level and then expose the physical buttons on the Beoplay A8 such that they trigger the volumeup / volumedown command that I can see exists when using EVTEST. I can then map these commands to the software volume control.

    I know that the default volume level of the Beoplay A8 (when turned on) can be set by using a Beo4 remote. Perhaps there is an IR command to โ€˜lockโ€™ the volume?

    #53523
    Millemis
    GOLD Member

    My Beoplay A8 – upcycled – setup is somewhat simpler.
    I use the PL-out of an Essence MK2 to the R/L line-in on the A8.
    The line-in has autosense, which means that the A8 is activated, when starting playback on the Essence – both go into standby after a while of not being used.

    The Essence is controlled by a BROne or by the B&O app.
    The A8 has a fixed startup level and the volume is controlled via the Essence.
    The A8 is basicly โ€˜justโ€™ a set of speakers.

    The big advantage is that the setup this way is part of my B&O Link setup in the house.

    MM

    Location: Flensborgโ€”โ€”โ€”โ€”Danmark
    #53524
    Fjvzrk
    BRONZE Member

    Understood. The disadvantage of that setup is that the buttons on the A8 do not function.

    #63971
    Laurent Martin-Desile
    BRONZE Member

    @fjvzrk, would you mind sharing your shairport-sync script to use buttons, please.

    I have tried this script:

    #!/bin/bash
    # Configuration
    SHAIRPORT_HOST="localhost"
    SHAIRPORT_PORT="5000"
    INPUT_DEVICE="/dev/input/event0" # Adjust this to your Beoplay A8's event device
    
    # Function to send commands to shairport-sync
    send_shairport_command() {
    echo "$1" | nc "$SHAIRPORT_HOST" "$SHAIRPORT_PORT"
    }
    
    # Function to handle evtest output
    handle_evtest_output() {
    local line
    while IFS= read -r line; do
    if [[ "$line" =~ code\ 165\ \(KEY_PREVIOUSSONG\),\ value\ 1 ]]; then
    send_shairport_command "player.previousitem"
    elif [[ "$line" =~ code\ 163\ \(KEY_NEXTSONG\),\ value\ 1 ]]; then
    send_shairport_command "player.nextitem"
    elif [[ "$line" =~ code\ 164\ \(KEY_PLAYPAUSE\),\ value\ 1 ]]; then
    send_shairport_command "player.toggle" # or player.pause or player.play, change as needed.
    fi
    done
    }
    
    # Start evtest and handle its output
    evtest "$INPUT_DEVICE" | handle_evtest_output

    But it returns this error message:

    RTSP/1.0 400 Bad Request
    Server: AirTunes/105.1
    #63974

    Can’t you also use the later version of AirPort Express?

    Location: Toronto, Canada
Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.