GithubHelp home page GithubHelp logo

riva-festival-diy-info's Introduction

Riva Festival Second Life (DIY)

RivaFestival

Preamble

Recently got malfunctioned Riva Festival wireless speaker into my hands. Nothing worked except AUX input on the back side. No reaction to the control buttons, etc. RIVA Audio is out-of-business for several years as for now so there are virtually no chances to get any help with repair or parts replacement.

Trying to troubleshoot I managed to disassembly it and connect to the serial console. Inside the box I found Libre Wireless LS9 audio streaming module with custom host/amplifier board. The logic unit responsible for controlling the buttons and LS9 module is located on the host board itself and based on STM32 MCU. All the communication between MCU and LS9 module goes thru UART interface.

LS9

Though there was nothing in the logs directly indicating about MCU or communication interface problems but most probably it was the culprit. So after a week of worthless attempts to fix I decided to go another way - re-implement the same functionality using open source components! :)

Hardware

Component Description Comment
amp TPA3116 50W 2.1 Channel Amplifier Aliexpress A bit hissy but that was the only option I found which fits almost ideally to the existing enclosure
sbc NanoPi NEO Plus2 Allwinner H5/512MB RAM/8GB eMMC SBC Aliexpress NanoPI ARM Cortex A53 Single Board Computer. It has quite decent built-in DAC capable of up to 192kHz/32bit with Line-Out pins
acdc AC-DC 220V to 5V 1000mA Buck Converter Aliexpress To avoid ground line noise I'm using separate power source to supply NanoPI SBC
mosfet High Voltage 12V 24V 36V switch Mosfet Module Aliexpress Used to control amplifier power supply using GPIO (It's a good idea to switch off amplifier during idle time :)
fpc 2x FPC-FFC Adapter 1.0mm-12pin Aliexpress Used to interface extender & buttons/LED plates (connected with flexible flat cables) with SBC GPIO pins
usb OPTIONAL: External USB2.0 Sound Card Aliexpress NanoPI SBC has no SPDIF Rx neither LINE-IN input so for additional wired AUX inputs like SPDIF I'm using external USB card

Case modding

I have to get rid of the metal frame on the removable unit in order to fit the amplifier: frame

Powering up SBC from the same power unit the amplifier will be fed with gives insane amount of electrical line noise/interference. So I decided to plug-in to the AC power supply circuit here in order to connect AC-DC buck converter (220V->5V1A) which will be used to power up NanoPI SBC exclusively: frame

Drilled 3 holes in the top lid for the volume/treble/bass potentiometers: lid

That's basically it about case modding. With NanoPI mounted and horn wires connected it looks like this: frame

All the wires are connected, so this is a final view before assembly the housing: frame

Closer view. Most of the wires here connect extension plates with NanoPI GPIO pins: frame

Software

I decided not to use any existing pre-built Linux distributions like Armbian or whatever else exists to drive NanoPI SBC. They are huge and clumsy, overloaded with the stuff I do not really need.

So my approach was to build a minimal dsitro based on Alpine Linux. I'm not using Buildroot or any similiar tools, just a set of simple shell scripts & plain-text configuration files.

Alpine Linux image build system for various SBCs:

https://github.com/faust93/Alpine-Linux-SBC.git

Control daemon and helper scripts

To configure & control the speaker I use a set of scripts and simple daemon written in Go:

https://github.com/faust93/riva_festival_diy.git

Daemon provides WebUI as well (trying to mimic original UI): ui

Other Components & Dependencies

Shairport Sync is an AirPlay audio player for Linux and FreeBSD. It plays audio streamed from Apple devices:

https://github.com/mikebrady/shairport-sync.git

GMediaRender fork - UPnP/DLNA media renderer for Linux:

https://github.com/hzeller/gmrender-resurrect.git

Alsaequal is a real-time adjustable equalizer plugin for ALSA:

https://github.com/raedwulf/alsaequal.git

riva-festival-diy-info's People

Contributors

faust93 avatar

Watchers

 avatar

riva-festival-diy-info's Issues

Flashing lights?

Hi,

I accidentally pressed the firmware update button. Now it connects to WiFi but the lights are only flashing (green, red, blue) and repeat it from the beginning.

Is there a way to exit this behaviour via serial pins? Do you have a suggestion?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.