DIY controller for Hypex DLCP

Waiting for DLCP.jpg


I love my Hypex DLCP-based integrated amplifier - 6 channels of UcD400 OEM with the original Hypex DLCP input board and controller. I built it almost 5 years ago, and it's been completely reliable and still sounds perfect.

One thing that I always felt, from day one, could have done with some additional features, however, was the controller.

1) Some way to control the amplifier over a wifi connection would be good when, for instance, I'm in the adjacent room and there's no line of sight for the infrared controller.

2) I would have appreciated a way to select a specific input channel directly, rather than having to scroll through the available inputs. This applies in particular to the infrared remote navigation - if I sit down in front of the TV I can barely see the characters on the DLCP display in the corner of the room, so navigating to the input selection menu then scrolling round to the 'Optical' input is a bit hit-and-miss. A dedicated key on the remote to select the optical input would be ideal.

3) It would have been convenient to have a way to turn on the amplifier automatically in response to an external signal. For instance, I use a piCorePlayer as my main audio source, and this has a way to signal that Squeezelite is (soft-)powered on/off via a GPIO pin on the Raspberry Pi. It would be good to be able to use this signal to power the amplifier on/off.

4) I find the physical button panel a little frustrating because the functions of the buttons vary depending on which part of the menu structure you're in - there are no dedicated volume buttons or channel selection buttons. To change the volume you have to use the left/right buttons to navigate to the volume setting, and then the up and down buttons will alter the volume. Similarly, to change input channel you have to use the left/right buttons to navigate to the input setting, and then the up and down buttons will change the input. Perfectly logical, but not great for everyday use. I think this was a consequence of the need to have setup options accessible via the same buttons, but for me the setup is something I did on day one and have never touched again, and I seem to recall that it can be done via a connected computer anyway.

So I've had a go at building my own controller, to achieve all of these features. Hypex technical support have been enormously helpful, and furnished me with schematics for the original controller and the DLCP (for the RJ45 pinouts), as well as a description of the data protocol between the controller and the DLCP. I set about breadboarding a full controller replacement, with the following design goals:

1) All buttons to have a fixed function - e.g. up/down for volume, left/right for channel selection, centre for mute - and the display should always show both the selected input and the volume. This inevitably means that the 'setup' options in the original controller won't be implemented.
2) A wifi enabled processor, running a websocket application so that any connected clients will always see the up-to-date status of the amplifier.
3) Form factor - since I never quite got around to having the front panel machined to accept the original controller, I could have changed the form factor completely (I'm still using a 'temporary' hardboard mock-up front panel). But I like the original form factor, so I wanted my controller to be a drop-in replacement for the original.
4) Specific inputs to be selectable via extra physical buttons, as well as being directly accessible via the infrared remote (the F1, F2, F3 and F4 buttons on the Hypex remote are perfect for this, and are otherwise unused on the DLCP). To ensure that my controller remains a drop-in replacement, the extra buttons would be added via an add-on PCB which can be mounted separately.
5) Logic pins to allow for external triggering.

My proof-of-concept breadboard system uses an ESP32 development board, and an awful lot of jumper wires to implement all the necessary circuitry. I had a button board PCB that I'd developed previously (for a my piCorePlayer) to mirror the layout of the DLCP controller buttons, and I bought a 16x2 display to match the original. I also had a 3-button add-on board that I'd made for use with the piCorePlayer (for preset playlists etc). The controller uses MIDI to speak to the DLCP, so to get me started I bought a couple of MIDI CHIPs (from Roxxxtar Productions: https://www.roxxxtar.com/badassmidi-midi-chip), but once I was up and running I replaced the MIDI CHIP with discrete components. These parts together have allowed me to develop the ESP32 software to a point where I'm happy that all the design goals can be achieved.

Ratsnest.jpg


I've now designed a PCB to replace the rat's nest of jumper wires and integrate everything into something that will use the same mounting holes as the original controller. For my first version, a couple of issues prevented the PCB having exactly the same footprint as the original. Firstly, the ESP32 module is not quite as compact as the processor that Hypex used, so the PCB had to grow in height by approx 8mm, and the ESP32 antenna sits a further 8mm above that. In my amplifier's encolsure, there is room to accommodate the necessary extra 16mm of height. Secondly, the ESP32 draws a bit more current than Hypex's original processor - more than the 100mA available on the RJ45 connection from the DLCP - so this has required me to provide an additional power connection. I've used a microUSB connection for ease of use, and I plan to feed that from the 5V supply I included in my amplifier build to power my Raspberry pi 4B - it's rated at 2.3A, so there should be enough spare capacity. Other than that it should match the original: mounting holes, LCD display location, buttons and IR receiver. The first version of the PCB has been ordered from JLCPCB - It should be here in a week or so, and will require very little assembly when it arrives. I've requested them to do all the SMD soldering, so I'll only have the push buttons and IR receiver to solder in, plus the 16x2 display. Unfortunately I made a bit of a blunder with the display, and didn't make sure to keep all other components out of the way of the display PCB, so for this first version the display will be mounted in front of the PCB, rather than behind, so will protrude a little further forward than the original. Not a show-stopper for this prototype though.

V1 bottom.jpg


When version 1 arrives I'll figure out what else I did wrong and incorporate any necessary changes into version 2. I already have a work-in-progress V2.0 design under way. I've changed the through-hole push buttons to SMD, which has given me a lot more flexibility over component placement on the reverse. This has allowed me to reduce the PCB size to exactly match Hypex's original, and I've moved the ESP32 antenna within the overall footprint by clearing out a section of the PCB around the antenna. I've also added a couple of miniature push buttons to help with programming the ESP32 - not strictly necessary with a fully wired serial adapter, but there was room. I have no idea how well the ESP32 antenna will work inside the metal case of my amplifier. As noted, mine currently has a wooden front, so reception should be ok, but ultimately this will be replaced by a machined metal front. I do have the option to specify an ESP32 module that uses an external antenna, and I've even read of a hack that's possible to fit an external antenna to a module that includes a built-in antenna.

V2 Top.jpg


V2 Bottom.jpg


The software is 90% complete, and fully functional. The following screenshots show the software capabilities. The beauty of having my own software is that I can add extra features that weren't part of the original design goals - I've included a configuration page to rename the input channels for instance (so that the USB input becomes 'Squeezebox', and the optical input becomes 'TV'), and to configure the additional 'preset' buttons to select any of the given inputs. My PCB also includes circuitry to adjust the display brightness and contrast via PWM GPIOs, so this is configurable in the software. And I implemented an alternative volume display (a 'loudness' percentage scale, rather than dB), because the dB display is a little unintuitive for casual users. Finally there is a page to specify wifi credentials - if the ESP32 doesn't find a configured access point within 10 seconds of boot, it launches its own access point so that you can connect to it and tell it your wifi details.

Prototype.jpg


My experience of writing ESP32 software is quite limited, and I have zero experience of building an ESP32 module onto a PCB, so this will probably signal the end of the complete reliability of my amplifier! But it's been a fun and challenging project so far.

Software 1.jpg


Software 2.jpg


Software 3.jpg
 
  • Like
Reactions: 1 user
Looks real cool. I have one also that I am working on getting setup, so I haven't used it yet to discover its control quirks. My front panel is also not yet complete. Mine is in a separate enclosure from the amps.
You won't be disappointed - the DLCP has the potential to tune the sound to an enormous degree. I spent some time making my system measure flat around my normal listening position, because I'd previously not been able to experience such a setup. But once I'd done that I realised I don't really like a flat system! It proved to me that my preference for a bit of treble boost and a bit of bass boost on any system I've ever owned was not merely compensation for deficiencies in those systems, but a genuine preference for that sort of EQ profile. The DLCP has allowed me to set it up exactly as I like it, and I don't care what the audiophile purists would think!

Of the six channels in my amp, I have two pairs running my stereo 2-way transmission line speakers, one running a separate sub, and the sixth one is currently unused.

Good luck with your build. I think having the DLCP in a separate enclosure is the more normal approach - I just fancied having my main source, my pre-amp/processor and my power stages all in one box.
 
My V1 PCBs arrived today and I'm happy to say that they work as expected. Apart from the previously noted blunder with the display mounting area, which has required me to mount the display on the 'wrong' side of the PCB, everything else seems to be working properly.

PCB_V1 2.jpg


I'm almost ready to order V2. It's virtually as pictured in the first post - i.e. with surface mount buttons to reduce the PCB size to match the original - with a few minor changes. I added a filter circuit for the IR receiver, as suggested in the data sheet. It had the effect of pulling the selected pin high at boot, and it just so happens that I'd selected a (the!) pin which causes a boot failure of the ESP32 if pulled high. So I moved it to a different pin, which meant a bit of shuffling of the other pins.

I'll give this one a couple of days in regular use to make sure there's nothing else I've overlooked, then I'll place the order.

In the meantime I've added over-the-air firmware updates to the software. Unfortunately that software still has to be uploaded with a serial adapter for the first run, so it saved me nothing on the PCB, but it does make it a lot easier to update each time I add something to the software. And from the same author of the over-the-air updates library, I added a WebSerial monitor, so I can debug the software without connecting through the serial adapter.
 
I wasn't happy with the quality of the LCD display I used in my V1 PCB above, so I delayed ordering V2 while I spent a bit of time finding a better display. I think I've now found one that matches the original for quality and appearance. I had to use a file to open up the aperture in the PCB for this display, so I'll adjust the PCB shape before ordering V2.
displays.png


I've worked on the web interface a little bit too. I've increased the slider sizes so that they're easier to 'touch' on my phone, I've added a configurable backlight timeout, and I've tidied up the colour scheme so that everything matches - I've gone for a couple of shades of orange everywhere to suit the Hypex look. I've even added a 'dark mode' which comes in according to my phone's setting.
home.png
dark mode.png


I've added a couple more features that I think improve usability. I can now 'uncheck' any sources that aren't connected to anything, so that they're skipped when scrolling through the sources with the buttons or the remote.
config.png


And I've added an option to change the IR codes so that a different remote can be used.
IR_config.png


I think that's about it for the software now.
 
  • Like
Reactions: 1 user
My V2 PCB arrived.

PCB V2.jpg


This version has the surface mount buttons on the front, which meant it became a double sided assembly at JLCPCB, so it came with added edge rails. They snapped off very easily though, and the only soldering I had to do myself was the IR receiver and the display screen.

Even though my V1 PCB had worked perfectly, it's always possible to introduce an error into a revision, so I tested what I could before potentially 'wasting' a display and an IR receiver. Once I'd determined that loading firmware, pressing buttons, and controlling the DLCP all worked, I soldered those bits on and I'm happy to say it all works perfectly.

Here's a comparison shot: Original Hypex controller in the middle, my first attempt above and my second attempt below. This second version is a really good match for the original. It's exactly the same size, with the same mounting holes, and the buttons, display and IR receiver all in exactly the same places. None of that was particularly important, since my front plate isn't machined yet, but I was quite keen on making this a drop-in replacement - just for the challenge! The only thing that prevents it being a drop-in replacement is the fact that it needs a separate 5V micro-usb power supply, but the current draw is within the capabilities of a USB port on the Raspberry Pi I have next to the controller inside my amplifier.

Comparison.jpg


I'm much happier with the display in my second version too - much better quality than the one I used in my first version.

So unless I uncover some sort of fault while using this version in the next few days, I think this little project is finished :)
 
  • Like
Reactions: 1 user
I added a couple of things to improve usability: I can now hide unused (unchecked) sources on the home screen, and I added a link to my Logitech Media Server next to the Squeezebox source. The link takes me to the Material Skin, which works beautifully on my phone - I already have a homescreen link to the same place, but this just saves me having to exit the browser and find that link. I haven't bothered to code this as a configurable link, since my LMS is at a fixed address.

home+LMS.png


Oh, and my son bought me some NFC tags to play with, so I added a hook into the code so that I can turn the amp on and off by tapping my phone on a tag! Because opening the web page might be too much effort sometimes. :ROFLMAO::ROFLMAO::ROFLMAO:
 
Last edited:
  • Thank You
Reactions: 1 user
I decided to add a configuration page for the shortcut to LMS after all, so that I can change the link, and perhaps add other useful links, without having to recompile. I also discovered how to launch an IOS app using its URL scheme, so I found a use for a link next the 'TV' source as well.

quicklinks.png
home_quicklinks.png
 
  • Like
Reactions: 1 users
This looks like just what I need - I got lucky with a used DLCP a bit back but haven't managed to track down an add-on boards. I hadn't got round to asking Hypex if they'd be willing to release enough info to control it either through this interface or via USB. I've just been using it with the input and volume set through the Windows app when I loaded the filter settings.
 
Amazing what you have done. I still use my 3 DLCPs, but sometimes they are a bit troublesome. I now just can not seem te get them back in working order with a newer laptop. The software and USB connection seems to be quirky. Suddenly the the DLCP was connected as a USB audio device and blasted audio full power in my tweeter. I am now getting an old computer back into working order.
 
Last edited by a moderator:
I can sympathise. Unfortunately there is no macOS version of the Hypex software, so I use a Windows virtual machine on my Macbook to access the DLCP over USB. In the last few years I did have to reload the original controller firmware a couple of times after it somehow entered its firmware update mode, but apart from that I haven't had to use that software at all since I originally set up the sound profile.

It would be nice to think that my own controller will not mysteriously enter a firmware update mode, but even if it was to need attention for some reason I'm much happier that I'll remember how to access it, having spent so much time developing the software for it, and moreover I won't need a Windows machine to do so!