Close
0%
0%

Modular Open-Source AV Receiver

A specification and reference implementation for a modular audio/visual receiver

Similar projects worth following
I'm building a modular open-source audio (video later!) receiver platform, with the following features:
- Receive digital audio from TV via HDMI ARC
- Share control signals via HDMI CEC
- Multi-channel audio decoding and amplification
- Multiple outputs
- Apply DSP effects

Use-cases:
- Start with a 2.0 system, later upgrade to 5.1, then 7.2
- Allow your TV remote to seamlessly control an existing analog amplifier/receiver
- Send a mono mixdown from your home cinema to the bathroom & kitchen so you never miss anything
- Room/speaker compensation

*I have decided to abandon the backplane design.*
Please see [flexible audio hub](https://hackaday.io/project/138339-flexible-audio-hub) for current work towards the same end, by a slightly different path.


  • 4 × PCA9500 I2C EEPROM & I/O Expander
  • 8 × 74HC157 Logic ICs / Decoders, Encoders, Multiplexers, Demultiplexers
  • 1 × EP91H0 HDMI ARC rx/tx
  • 1 × CS8416 SPDIF decoder
  • 1 × Raspberry Pi As a source of I2S audio

View all 6 components

  • Still Alive

    Andrew Bolin07/20/2017 at 23:55 0 comments

    No progress to report, I've been stuck doing less fun things. Hoping to wrap those up this week and resume here.

    Also failing to get proper datasheets for some HDMI chips...

  • EEPROM Woes

    Andrew Bolin06/20/2017 at 10:44 0 comments

    Trying to confirm the operation of my EEPROMs (module identification), not much luck yet.

    Soldered a jumper on one board to enable writing, and it seemingly accepts write commands but refuses to reply to a read request. Except it worked once. No idea why.

    On the positive side, the I/O expanders work OK, I've wired a couple of pins together to confirm that (these are part of the same chip as the EEPROM, PCA9500)

  • ARC Module Construction Underway

    Andrew Bolin06/01/2017 at 11:08 0 comments

    I've got most of the bits on the ARC module, still waiting for an HDMI breakout to arrive (the damn plug is too hard to hand solder). In the interim, I can maybe rig up an SPDIF signal into the CS8416. More easily, I can confirm the bus switches are doing the right thing under control from the I2C I/O expander...

  • As Seen on HaD.com

    Andrew Bolin05/30/2017 at 23:04 0 comments

    Thanks to @Jenny List for the write-up on the blog, and hello to all the new visitors here.

    I will have some progress to report later this week - most of the parts are in for the ARC module. I am a bit worried that it won't work, because I don't understand the HDMI spec enough (I'm not willing to spend $5k to buy a copy). But I've got a cheap commercial ARC audio extractor to sacrifice/copy if needed, so I'll get that damn ARC data somehow.

    I've also got an STM32 dev board to start doing some DSP on.

    Having second thoughts about the whole backplane concept, it's going to be hard to make power amp modules work (big heatsinks). I may later change to a "hub" board with lots of plugs and some kind of switching logic.

  • Proof of Concept

    Andrew Bolin05/09/2017 at 10:40 0 comments

    Some good progress over the last few days. PCBs arrived, and I've assembled them - cut down a bit, I left out the bus switches for two reasons:

    1. they aren't needed with only one input & one output.

    2. I didn't have them.

    So the first modules are essentially a weird looking Raspberry Pi add-on. One mistake I did make - no +5V. My backplane spec didn't include 5V because most parts I'm looking at using are quite happy at 3.3V. But maybe that was a mistake. Anyway, easily fixed for now with a piece of wire, and music now comes out of my DAC!

    Next: I2C comms from the Pi to the IO Expander / EEPROM chip that will eventually serve as module ID & control.

  • ARC module layout

    Andrew Bolin04/23/2017 at 06:24 0 comments

    First draft of the HDMI ARC module PCB layout is done. All parts are on the top side, but I did have to use one wire jumper (for the "module enable" signal, very low speed so no problem). It's up on github.

    I realised I could make the ARC chip (Explore EP91H0) function as either transmit or receive by adding a couple of resistors, so I did that. Might come in handy for testing (rather than risking damage to my far-too-expense TV, the only device I have that currently supports ARC).

    I'm using the good old CS8416 for SPDIF to I2S conversion, because I still have one in my parts drawer from my last DAC project.

    The Raspberry Pi adapter boards and backplane are apparently in transit. So, if I'm lucky they'll be here in a couple of weeks...

    Next move: finish the layout of the ARC module (cuts & silkscreen). Might throw in a few guard traces around the high speed clocks if I remember to...

  • Starting the HDMI (ARC) input module

    Andrew Bolin04/11/2017 at 11:32 2 comments

    I'm using the Explore EP91H0 chip, because it's the simplest way I could find to add HDMI ARC (that's all the chip does, no video stuff).

    What's ARC? "Audio Return Channel". When you plug your amplifier to your TV with an HDMI cable, the TV is able to send audio *back* to the amplifier, despite the TV's HDMI socket being an input (in HDMI parlance the TV is a "sink", and the amplifier is supposedly a "source").

    I've also made the schematics a bit modular, using a common sheet for stuff that I expect to be used on most modules (in future I will refine this with further sub-sheets for mandatory / optional bits).

  • PCB Prototype Unit 0 - Design Files

    Andrew Bolin04/10/2017 at 10:59 0 comments

    PCB designs are now up on github, and manufacture is underway, hope to get them in a couple of weeks time.

    Module

    Backplane

  • v0 PCB Production Underway

    Andrew Bolin04/06/2017 at 22:07 0 comments

    After a minor glitch (forgot to export the soldermask layers), the first PCBs are now being made at @Seeed Studio.

    The backplane has four PCIe 1x slots, plus debug headers.

    The modules are just adapters from Raspberry Pi header to my draft PCIe 1x specification. During the process of designing the PCBs I found a few signals were pretty hard to route (I'm only using 2 layers to keep the costs down), so I think I'll re-map some pins and go to a bigger connector for the next version.

    PCB designs are not updated in Github yet, I'll do that this weekend.

  • Starting on a test PCB

    Andrew Bolin03/26/2017 at 06:08 0 comments

    Today I worked on a PCB for proof-of-concept, essentially it will be an adapter to a Raspberry Pi header.

    One module will have a Raspberry Pi, one module will have a Pi DAC module.

    Once this is working, I will be able to use it to check other custom modules.

    So far I have discovered one problem, that using a PCIe x1 connector probably isn't going to allow me to use more than one signal source. Pretty much all the pins are used up with 8 channels of audio, all using the same clocks. I suspect it will be impractical to sync multiple sources with the same clock (although I will look into it), so I will probably have to go to a bigger connector to allow multiple sets of 8 audio channels. Maybe I'll go for a few sets of stereo and a couple of 8 channel sets (or is stereo falling out of favour?)

    Schematics are on github, unfinished, not laid-out yet.

    Next: Finish schematic, layout, send for manufacture.

View all 11 project logs

Enjoy this project?

Share

Discussions

spinnerglitter wrote 05/25/2021 at 23:00 point

I’ve been searching for a product like this for years! I hope I understood well and you’re trying to create an AV Receiver that has all the 3 stages in separate boxes. 1. Dolby Atmos decoder/DSP 2. DAC 3. Amp... 

  Are you sure? yes | no

Sven-v-Beuningen wrote 07/17/2020 at 08:41 point

Hi Andrew,

I was diving through the internet to find out if someone is already building an open source AVR. That's how I came across your project. 

I really like the idea and I think it would be great to have an open source AVR which can be upgraded in the future.

Can you share some insights of the current state of your project?

  Are you sure? yes | no

xlisec wrote 09/25/2018 at 11:45 point

Hi, 

  nice project. This is exactly what I looking for. Is it still alive? I builded stereo audio receiver but I want build multichanel audio receiver in future. I can't find proper HDMI multichanel audio extractor. Maybe this project can be solution.

  Are you sure? yes | no

F.J. wrote 07/27/2017 at 08:47 point

Hi! Awesome project, if you manage to follow through with it this could have long lasting repercussions.

Is the interface between the DSP and output module already fixed in your mind, and would you consider having the power for the system come from a separate power supply module rather than integrating it into the output module?

I'm asking this because something amazing to have --something I and several others have been searching for a long time, that would make the system truly modular-- would be a complete multichannel system without amplification, i.e. a receiver outputting line level, for those who use a separate amplification stage for each channel or active studio monitors.

In any case I wish I could be more helpful than making feature requests. Best of luck to you!

  Are you sure? yes | no

Andrew Bolin wrote 09/06/2017 at 00:44 point

Hey there, apologies for the very late reply! I've been overwhelmed with other things sadly.

Yes, a system that does all the decoding and no amplification is definitely one of the possibilities I have in mind.

  Are you sure? yes | no

Grzegorz Drozd wrote 05/30/2017 at 19:15 point

Hi.

Great idea! :) 

How do you plan to create hdmi switch/matrix? Because multiple inputs/outputs are the only reason I bought my receiver :/ I have way more sources than my tv has inputs and even current 5 is not enough for me :/

Have a nice day.

  Are you sure? yes | no

Andrew Bolin wrote 05/30/2017 at 22:56 point

HDMI switching is not an immediate plan. For now, I'm focussing on the audio.

There are many chips available or HDMI switching, it's not conceptually difficult, but it is hard to design & assemble: more complex PCB layouts, higher speed signals, small pitch, etc.

  Are you sure? yes | no

K.C. Lee wrote 05/31/2017 at 00:08 point

FYI: I have reverse engineered 3-to-1 hdmi switch from China ($5) here: 

https://hackaday.io/project/20326-low-cost-kvm-switch/log/55100-hdmi-switch-reverse-engineering

The switch can be controlled with logic level signals if you desoldered off the 8-pin microcontroller.  I have the... more

  Are you sure? yes | no

Andrew Bolin wrote 06/01/2017 at 11:12 point

Awesome, thanks for sharing. Looks like your info could come in handy later!

  Are you sure? yes | no

AVR wrote 05/30/2017 at 18:32 point

as an audio fanatic I salute your effort!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates