Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

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.