ES9028Q2M driver for Raspbian based distro

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Please comment out 'dtoverlay=lirc-rpi' and try again.
No audio output, no lock light on dac, lcd 20x4 display shows "paused" but web page shows playing and router shows activity if using webradio.

May I ask what board are you using?
Pi3 and ebay 9038Q2m ver1.4

It is probably helpful to find out the function of GPIO27
Using as activity pin for I/R sensor.

After several reboots I have output... the UI Audio page still shows rpi-dac as does the 'System-info' drop-down.

However, whilst Webstreams play ok the Koz test track is now garbage noise and there are huge thumps switching between these which has not been present using the rpi-dac generic driver in the past.....
so maybe something is happening and not being reflected in the UI ??
 
No audio output, no lock light on dac, lcd 20x4 display shows "paused" but web page shows playing and router shows activity if using webradio.


Pi3 and ebay 9038Q2m ver1.4


Using as activity pin for I/R sensor.

After several reboots I have output... the UI Audio page still shows rpi-dac as does the 'System-info' drop-down.

However, whilst Webstreams play ok the Koz test track is now garbage noise and there are huge thumps switching between these which has not been present using the rpi-dac generic driver in the past.....
so maybe something is happening and not being reflected in the UI ??

It seems like the DAC is not properly configured. The driver is developed assuming the DAC is fully controlled by I2C and the address should be 0x48 (ADDR of the chip == L). If yours is different I might need to recompile it for your case. We need to run some tests.

1. install I2C-tools by 'apt-get install i2c-tools'
2. 'modprobe i2c_dev'
3. 'i2cdetect -y 1'

You should see the i2c bus detection results and a 'UU' should locate at address 0x48.

If you do see it, then do
'i2cget -f 1 0x48 0x07'

This commend read I2C device at 0x48, register 0x07. Please post the result.
 
No audio output, no lock light on dac, lcd 20x4 display shows "paused" but web page shows playing and router shows activity if using webradio.


Pi3 and ebay 9038Q2m ver1.4


Using as activity pin for I/R sensor.

After several reboots I have output... the UI Audio page still shows rpi-dac as does the 'System-info' drop-down.

However, whilst Webstreams play ok the Koz test track is now garbage noise and there are huge thumps switching between these which has not been present using the rpi-dac generic driver in the past.....
so maybe something is happening and not being reflected in the UI ??

Ha, I see the reason. Your DAC is 9038Q2M, it has different internal register definition as 9028Q2M. The driver writes wrong values to the wrong register, causing the DAC's failure. To fully solve your problem, I need the datasheet of ES9038Q2M. If anyone can send me one copy I can make a driver for it. By the way I have already signed the NDA with ESS.
 
Yes 9038....thought it was worth a try.... happy to be a tester..

screenshot of i2cdetect attached. Seems at 0x48 so shall I try 'i2cget -f 1 0x48 0x07'

Dac seems to play but only 24 bit files.... resampling works but still horrendous switching thumps between tracks...
 

Attachments

  • Screenshot from 2018-03-07 16-34-05.png
    Screenshot from 2018-03-07 16-34-05.png
    12 KB · Views: 279
Last edited:
Yes 9038....thought it was worth a try.... happy to be a tester..

screenshot of i2cdetect attached.

Dac seems to play but only 24 bit files.... resampling works but still horrendous switching thumps between tracks...

Yeap, the behavior is expected. A register needs to be set according to the input bit depth, and its default value is for 24/32-bit file, that's why you can still play it. You can try to resample everything to 32 bit then all the files should be able to play. As for the switch pop, it is because the DAC is not properly muted when the switching is happening.
 
Had the opportunity for some more listening and it is going to be very hard to return to the generic driver...:(

Your driver brings a great improvement in SQ.

Just thinking about this 9038Q2m board... it has an onboard mcu that currently allows volume and some filter adjustments so even if the registers are found and your code modified I wonder if the mcu would negate those functions....?
 
Had the opportunity for some more listening and it is going to be very hard to return to the generic driver...:(

Your driver brings a great improvement in SQ.

Just thinking about this 9038Q2m board... it has an onboard mcu that currently allows volume and some filter adjustments so even if the registers are found and your code modified I wonder if the mcu would negate those functions....?

I am glad you are enjoying it.

For the DAC with MCU, no the MCU won't negate the functions. These boards with MCU basically have an open source driver that MPD can talk to, then MCU translates the MPD command to the ESS DAC command. In this way, they can open source their driver while hiding the ESS related information. When you unload their driver, MPD never has the chance to talk to the MCU so MCU won't do anything. When you load my driver, MPD will talk directly to ESS DAC if the DAC is connected to the I2C bus. If the board manufacturer uses their own I2C bus between the MCU and ESS DAC then we have no chance to get around the MCU.
 
I'd be very very careful using such a driver.

If you do it for your own private installation it might do.
Putting that driver out into public might not be such a good idea though!


There's a reason why all DACs running advanced Sabre chips have an MCU onboard and providing their own driver managing that MCU.


I doubt that the PI kernel folks knowingly would support such an approach. I mean - if you'd intend to upload that driver into the PI kernel git!

And all PI distros around should be very careful to offer this driver on their custom kernels!


My recommendation. Stay away from it!
 
I'd be very very careful using such a driver.

If you do it for your own private installation it might do.
Putting that driver out into public might not be such a good idea though!


There's a reason why all DACs running advanced Sabre chips have an MCU onboard and providing their own driver managing that MCU.


I doubt that the PI kernel folks knowingly would support such an approach. I mean - if you'd intend to upload that driver into the PI kernel git!

And all PI distros around should be very careful to offer this driver on their custom kernels!


My recommendation. Stay away from it!

I am not sure why putting the binary out publicly is not a good idea. After all, the original source files are all publically available and you can check it if you are afraid of security problems.

The reason why all DACs running advanced Sabre chips have an MCU onboard is that the NDA prohibits them from opening the driver sources. They can, however, provide binary drivers only but it will require users to have a certain level of Linux skill to install it. It will also lead to higher development and support cost since they have to compile the binary for all the popular distros. In summary, nothing technical.

I do not intend to put the source to any distros' git so they do not anything to stay away from~. According to the NDA, 'the confidential information does not include information ... (ii) is now or hereafter becomes available to the public through no fault of the Receiving party.' It means anyone who wants to develop the driver based on these two git repos can freely do so without worrying any legal problem.
 
I'd be very very careful using such a driver.

If you do it for your own private installation it might do.
Putting that driver out into public might not be such a good idea though!


There's a reason why all DACs running advanced Sabre chips have an MCU onboard and providing their own driver managing that MCU.


I doubt that the PI kernel folks knowingly would support such an approach. I mean - if you'd intend to upload that driver into the PI kernel git!

And all PI distros around should be very careful to offer this driver on their custom kernels!


My recommendation. Stay away from it!

Can you explain your statements further ???

I note that you previously supplied ES90xx drivers/custom kernels ....

I am sure you are aware of the large number of sellers offering cheap ES90xx boards and no driver support. It is rather hit and miss using most distro's official drivers and often the only workable option is to use a 'crippled' version.

Having a guided 'use at your own risk' alternative is at the heart of DIY and these forums raison d'être and should be applauded... Well done Gandolf !.

Perhaps, instead of alarmist hand-wringing, you could be part of the solution and not the problem....?? we know from your long history here that you have the skills and information to apply...;)
 
Member
Joined 2002
Paid Member
And all PI distros around should be very careful to offer this driver on their custom kernels

Hi soundcheck,

I think they have ALL been through this before and know to "run for the hills". :) As far as I know, there is no "approved by ESS" open source drivers available and therefore no ESS DAC drivers are included in Linux.:confused:

I hope it changes one day and some hardware manufacturer succeeds in getting their ESS driver into the Linux distros.

regards
 
Can you explain your statements further ???

I note that you previously supplied ES90xx drivers/custom kernels ....

I am sure you are aware of the large number of sellers offering cheap ES90xx boards and no driver support. It is rather hit and miss using most distro's official drivers and often the only workable option is to use a 'crippled' version.

Having a guided 'use at your own risk' alternative is at the heart of DIY and these forums raison d'être and should be applauded... Well done Gandolf !.

Perhaps, instead of alarmist hand-wringing, you could be part of the solution and not the problem....?? we know from your long history here that you have the skills and information to apply...;)

As Greg said. It's ESS, which is the problem here.
Not the few of us, willing to put hundreds of hours into community work.

There's no solution to the restricted ESS approach. I doubt that ESS will change their policy. They are successfully running it for years.
And yes, DACs that violated the rules just disappeard!

You guys can do something about it though! Just do not buy Sabre DACs anymore! Obviously that's not gonna happen. ;)
There still some manufacturers out there willing to walk the extra mile - "mcu and custom driver". Not sure if ESS is
appreciating that huge extra effort.

Everybody who starts working on such a driver project is usually well aware of the situation!

The ES9023 driver which was integrated into the custom Moode-Audio kernels was supplied and copyrighted by Clive Messer.
I just did the integration for Moode.
That driver was related to the entry level ES9023 only. These DACs are very basic DACs and usually work in HW mode - without a need for an MCU.
A driver that's supporting the HW mode wouldn't collide with the ESS NDA/Copyright regulations.
That's how I understood and still understand the situation.
What such a driver does is basically nothing more than setting the stream parameters right from the outside.

Since the Moode project is not offering custom kernels anymore, even that ES9023 HW support driver is gone.
Not sure if PcP has it still in.

A driver that supports the SW mode, with numerous more options to manipulate the chip operation, features and performance
from the inside is a complete different story. And that's what we're talking about here - right!?!?
I havn't looked into the driver myself and don't know how far it goes.

My "warning", to be taken as advise - and not a threat or bashing - refers to drivers running these DACs in SW mode.

Without approval of ESS I would not put such a driver out into public.



Enjoy.
 
Last edited:
gandolf PRi driver is working for ES9028Q2M DAC HAT

Hi, I have a good news:

I integrated gandolf Raspberry Pi driver with Moode4.0 today by following his instructions here
http://www.diyaudio.com/forums/pc-b...driver-raspbian-based-distro.html#post5361108

It works!

My ES9028Q2M DAC receives control package from I2C bus. Both volume control and 44.1KHz 16bit format are functional.

The sound quality is very good. I've noticed that you optimized filter settings, bandwidth and something else.

I'll go ahead with more tests. I may have some questions later.

Thanks gandolf, you did great job.

Regards,
Ian
 

Attachments

  • 9028Q2MI2Ctiming.PNG
    9028Q2MI2Ctiming.PNG
    8.8 KB · Views: 279
  • ES9028Q2MDAC4.jpg
    ES9028Q2MDAC4.jpg
    322.2 KB · Views: 270
Last edited:
Hi, I have a good news:

I integrated gandolf Raspberry Pi driver with Moode4.0 today by following his instructions here
http://www.diyaudio.com/forums/pc-b...driver-raspbian-based-distro.html#post5361108

It works!

My ES9028Q2M DAC receives control package from I2C bus. Both volume control and 44.1KHz 16bit format are functional.

The sound quality is very good. I've noticed that you optimized filter settings, bandwidth and something else.

I'll go ahead with more tests. I may have some questions later.

Thanks gandolf, you did great job.

Regards,
Ian

Glad that I can help
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.