ES9018k2m Build Completed

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
I thought I would post some pictures and info about the diyinhk ES9018k2m DAC that I just finished building.

IMG_0239.jpg IMG_0240.jpg IMG_0241.jpg IMG_0242.jpg
IMG_0243.jpg IMG_0246.jpg

I used a negative LCD for use with the Hifiduino controller, looks good in fairly dim lighting but is no use in direct sunlight as you see here.

IMG_0244.jpg

I have an older board so there is 3.3v and 5v diyink TPS7A4700 power supplies. The opamp is powered by a fairly basic bipolar LT1084 supply from Analog Metric.

USB input is from a diyinhk CM6661A board and optical input uses a twisted pear toslink receiver.

Hifiduino code has been adjusted to use a generic IR library as I could not get my apple remote to function with the standard code. The benefit of this is that I can use pretty much any remote by changing a few values in the code if needed.

IMG_0249.jpg

I have found that the i2c ports on the ES9018k2m are indeed 5V tolerant and there is no need to use a logic level converter. I found this out by accident when my level converter board stopped working and just put out 5V (4.8 actually) to the chip. The chip still worked so now I have just removed the wiring for the level converter and go direct to the arduino.

By wiring the toslink board to the spdif input on the DAC I am able to switch between USB and toslink in the software. One thing to note is that the pad with the square is ground and the other pad is signal input, this confused me for a while until I looked at a photo of the bare board and could see the trace going from the round pad straight to the DAC pin.

I found I needed to set the DPLL to low settings in order to get a nominal sample rate to display, at higher settings it wouldn't work. Lowest works for me with both i2s and spdif so that is where I set it.

I am quite impressed with the audio quality, all of the filters sound slightly different, the only one that is of no use is the NOS mode. This sounds dreadful. I prefer the slow roll off filter but there is not much difference, nice to be able to choose though.
 
Hi Fred,

You don't need to know how to code to use the Hifiduino code as long as it works with your setup when you put it all together. If it doesn't quite work as it didn't for me then you will need to learn the basics of C++ and the arduino development environment if you want to alter the basic code. With some help from another forum member and some arduino tutorials I was able to make the changes I needed even though I had no idea what I was doing when I started.

There is a lot of good info on the hifiduino site start here and follow the links for the different parts.

https://hifiduino.wordpress.com/introduction-and-guide-to-hifiduino/

Try and stick to the parts recommendations and it should be easy.

You don't need to use the level converter if you don't want to 5V i2c works without problem.

I used a prototype shield for my arduino to make it easier to connect the display and give a place to mount the transistor and trimmer needed for LCD brightness control. You might need an LCD contrast trimmer as well but this made no difference to my negative lcd.

The cost of the components is quite low if you get them from ebay or similar places and is definitely worth it when you get it all working.

Give it a try and if you run into any trouble, let me know and I will try to help you out.
 
Thanks, I haven't really compared the difference as I am not sure what the default hardware setting is for the filters etc. so it probably wouldn't be an exact comparison anyway.

Being able to control the filters and the DPLL bandwidth allows you to choose which settings are preferred for you and these do make a subtle difference.

I would probably have to try and measure the noise and thd and see if there is any difference.

The only difference is having the arduino connected to the same ground as the DAC via i2c as I haven't used an isolator, but then the computers ground is also connected to the DAC when using usb and the usb input sounded slightly better to me than the optical so I'm not sure it matters.

I have done my testing with an O2 headphone amp and AKG712 headphones and I really like the way this DAC sounds so for now I don't plan to do any ground isolation.
 
Hi Fred,

You don't need to know how to code to use the Hifiduino code as long as it works with your setup when you put it all together. If it doesn't quite work as it didn't for me then you will need to learn the basics of C++ and the arduino development environment if you want to alter the basic code. With some help from another forum member and some arduino tutorials I was able to make the changes I needed even though I had no idea what I was doing when I started.

There is a lot of good info on the hifiduino site start here and follow the links for the different parts.

https://hifiduino.wordpress.com/introduction-and-guide-to-hifiduino/


Give it a try and if you run into any trouble, let me know and I will try to help you out.

Thanks Fluid for your response. I will try to give it a shot.

Fred
 
Hi
Could you share ino file to controller?
I have some dac from ali, i have connected i2c lines and communication works, but i can not setup this chip to cooperate with i2s lines.
I have bluethooth chip connected to dac, and no sound..
I tested all ino for es9018k2m and no effect.
Could you tell me how to setup this dac chip to works with i2s lines?

20180526_100820.jpg

20180526_100813.jpg
 
Last edited:
I used the code from Hifiduino and tweaked it slightly for my apple remote. The standard code should work with hardware controls without issues.

The hifiduino code allows you to choose between spdif and i2s inputs in the software.

Have you tested your bluetooth module with anything else to see if it is working or putting out any signal via i2s?
 
Hi
I tested wt32 with this dac:

Assembled PCM5102 DAC Decoder Module I2S Raspberry Pi Support 32bit 384K
Assembled PCM5102 DAC Decoder Module I2S Raspberry Pi Support 32bit 384K-in Amplifier from Consumer Electronics on Aliexpress.com | Alibaba Group

Works only on right justified but works.
I tested signals using oscilloscope, tested differed setup ( 16bits, 24, 32, LJ RJ) on the wt32 and any of them not work with sebre.
I have also selealogic analyzer and communication on the i2c looks ok.

One of the code ( i do not remember number has auto pll, then on the display i had locked and shows bitrate and clock bits but no audio..
Could you write how to setup using this code this dac?
I choice i2s and other parameters but no luck...
Wt32 can generate clock 2.82MHz and lower, bit rate 44.1 kHz (fps).
Regards
 
Last edited:
The Sabre doesn't need MCLK as it can run asynchronously.

I followed the guide at Hifiduino, I made a basic shield to attach the rotary trimmers etc. and connected a screen, rotary encoder with pushbutton to the arduino and loaded up the k2m code from hifiduino's website. Connected via i2c and I was able to control the DAC straight away, the only issue I had was related to the remote control from my apple remote as it was not recognised by the stock code, but that shouldn't be an issue for you if you just want audio.

If the bluetooth is outputting right justified data then you will need to change the register settings to get audio as it is not set to that as standard.

Register 10 sets that data here are some screen shots from the ES9018 manual that show the values they should be the same for the k2m.

attachment.php


attachment.php


This is from the hifiduino code where you can see the value that has been set for register 10. Changing that value should allow you to set it to right justified. There is another section in the code where the I2S type can be changed so if you look through it you may be able to make those changes elsewhere to work in with the menu structure.

attachment.php


I haven't looked at this sort of stuff for a while and it was all new to me when I built this DAC so I can't offer much more help :eek:
 

Attachments

  • Screen Shot 2018-05-29 at 8.55.43 pm.png
    Screen Shot 2018-05-29 at 8.55.43 pm.png
    97.4 KB · Views: 751
  • Screen Shot 2018-05-29 at 8.56.04 pm.png
    Screen Shot 2018-05-29 at 8.56.04 pm.png
    158.2 KB · Views: 744
  • Screen Shot 2018-05-29 at 9.00.06 pm.png
    Screen Shot 2018-05-29 at 9.00.06 pm.png
    107.9 KB · Views: 504
hi again
i read the data sheet and i am a litle crestfallen, how to read this.
An externally hosted image should be here but it was not working when we last tested it.


I have to setup register 8 input as i2s.(arduinohifi has SPDIF)"
byte reg8=0x81; // GPIO configuration. GPIO1 set to DPLL Lock; GPIO2 set to input (for SPDIF).
default is 00010000 = 10 hex.
81 = 10000001.

ES9018-2M DS Rev 0.9_????
could someone explain what author has on main write this doc?:confused:
There is 15 values, from 4'd0 to 4'd15.
3:0 this is GPIO1 7:4 GPIO 2
15 = f hex = 1111.
i need 4'd9, so i have to setup for GPIO 2 =>10010000 ?? (1001=9).
this doc is strange :)


but away, software k2m051 do not work with i2s, only spdif..
all project is only for spdif, or setup is only for this input.
 
Last edited:
Last edited:
but away, software k2m051 do not work with i2s, only spdif..
all project is only for spdif, or setup is only for this input.

I'm not sure from your last few posts if you have it working or not, but I can select spdif or i2s with the hifiduino code from the menu and it works fine.

Register 8 sets the input as you say and register 10 the type of data to decode.

From line 905 onwards in the k2m051 code you can see the case switches for the different input options in the menu these change both registers to adjust the settings.
 
Yea, i had some other problems with this dac board and this post i wrote to fast;)
Now i see what i had to correct (add resistors on i2s lines ).
Now works, but i have some strange things.
After power up controller stops on the start message, i thing the es is not ready yet.
Did you have the same?
When i wait some time without power on all works after power on.
I'll check it to next step.
The first add RJ to menu.
 
I can't remember if the dac needed to be powered up before the controller or the other way round. I did have a similar issue but it has been a long time since I switched my DAC on to know.

Most arduino's have inbuilt pull up resistors so strange you would need extras.
 
I wrote resistors on the i2s line not in arduino (dac boards has pullup resistors on i2c line).
Without resistors on i2s line i have oscilation when digital level changed, this resistors eliminate this isue (30ohm serial on clock,ws,data lines).
After added this 30ohm signals looks better (no oscilations) and dac lock to signal.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.