GitHub - VinnyLorrin/Rpi-ES9018K2M-DAC
Only tested on ES9028Q2M DAC, current known issue located at post#57
To use,
1. copy 'es9018k2m.ko' to /lib/modules/4.9.79-v7+/kernel/sound/soc/codecs/
2. copy 'rpi-es9018k2m-dac.ko' to /lib/modules/4.9.79-v7+/kernel/sound/soc/bcm
3. copy 'rpi-es9018k2m-dac.dtbo' to /boot/overlays/
4. execute 'depmod -a'
5. add 'dtparam=i2s=on', 'dtparam=i2c_arm=on' and 'dtoverlay=rpi-es9018k2m-dac' to /boot/config.txt, and remove the old DAC overlay entry.
6. reboot.
The code is developed based on GitHub - SatoruKawase/I-Sabre-K2M: Audiophonics I-Sabre K2M DAC Board ALSA Driver. The register definition is based on GitHub - luoyi/Rpi-ES9018K2M-DAC.
Enjoy
Attachment removed by moderation as requested by OP
Only tested on ES9028Q2M DAC, current known issue located at post#57
To use,
1. copy 'es9018k2m.ko' to /lib/modules/4.9.79-v7+/kernel/sound/soc/codecs/
2. copy 'rpi-es9018k2m-dac.ko' to /lib/modules/4.9.79-v7+/kernel/sound/soc/bcm
3. copy 'rpi-es9018k2m-dac.dtbo' to /boot/overlays/
4. execute 'depmod -a'
5. add 'dtparam=i2s=on', 'dtparam=i2c_arm=on' and 'dtoverlay=rpi-es9018k2m-dac' to /boot/config.txt, and remove the old DAC overlay entry.
6. reboot.
The code is developed based on GitHub - SatoruKawase/I-Sabre-K2M: Audiophonics I-Sabre K2M DAC Board ALSA Driver. The register definition is based on GitHub - luoyi/Rpi-ES9018K2M-DAC.
Enjoy

Last edited:
9028 specific ? would it work for 9018K2m or 9038Q2m.?
Since the Moode advanced kernels have been dropped from 4.0 the only i2s driver I can make work on 9038Q2m is rpi-dac.....
Since the Moode advanced kernels have been dropped from 4.0 the only i2s driver I can make work on 9038Q2m is rpi-dac.....
9028 specific ? would it work for 9018K2m or 9038Q2m.?
Since the Moode advanced kernels have been dropped from 4.0 the only i2s driver I can make work on 9038Q2m is rpi-dac.....
I am not sure if 9038Q2M has the same register definition as ES9028Q2M. But ES9018K2M definitely does not work. You can download the datasheet for 9018 from https://myl8test.files.wordpress.com/2013/05/download-es9018-datasheet-here.pdf and modify the source file accordingly to compile your own driver. Or you can download the source from GitHub - SatoruKawase/I-Sabre-K2M: Audiophonics I-Sabre K2M DAC Board ALSA Driver, I think it was made specific to 9018K2M.
hi gandolf,
Have you read your ESS NDA?
ESS will not let you open source drivers. That's why there are not any included in any of the Linux distributions.
regards
Have you read your ESS NDA?
ESS will not let you open source drivers. That's why there are not any included in any of the Linux distributions.
regards
hi gandolf,
Have you read your ESS NDA?
ESS will not let you open source drivers. That's why there are not any included in any of the Linux distributions.
regards
Let me put it in this way.
1. All the sources are taken from the other GitHub repos, no new information from me.
2. The NDA indeed prohibits me from disclosing any information related to their datasheet, but I have never received any datasheets from ESS, I cannot violate the NDA by disclosing the information that I don't have, can I?
@gandolf
You did good job! Very nice indeed. Hopefully I can try it on my ES9028Q2M DAC.
By power on default, ES9028Q2M DAC doesn't support 44.1KHz 16bit I2S format. You need to address this issue by setting corresponding registers according to the music format.
Regards,
Ian
You did good job! Very nice indeed. Hopefully I can try it on my ES9028Q2M DAC.
By power on default, ES9028Q2M DAC doesn't support 44.1KHz 16bit I2S format. You need to address this issue by setting corresponding registers according to the music format.
Regards,
Ian
@gandolf
You did good job! Very nice indeed. Hopefully I can try it on my ES9028Q2M DAC.
By power on default, ES9028Q2M DAC doesn't support 44.1KHz 16bit I2S format. You need to address this issue by setting corresponding registers according to the music format.
Regards,
Ian
The necessary register is set according to the audio format.
The necessary register is set according to the audio format.
That's great. I saw it in your source code. Thank you for the very professional design.
By the way, can I install your driver in Volumio?
Regards,
Ian
Last edited:
That's great. I saw it in your source code. Thank you for the very professional design.
By the way, can I install your driver in Volumio?
Regards,
Ian
You are welcome. I believe most of credits should go to SatoruKawase and luoyi on github. Anyway, to use it in Volumio, please verify your kernel version is 4.9.79-v7+. If Volumio uses the same kernel, it should work.
Updates:
Fixed several small bugs
Add alsamixer control for THD compensation coefficients.
Minimize pop
Attachment removed by moderation as requested by OP.
Fixed several small bugs
Add alsamixer control for THD compensation coefficients.
Minimize pop

How did you upgrade to the 4.9.79-v7+ kernel needed to run your driver...? (rpi-update ?)
My moode 4 shows as kernel 4.9.78-v7+
My moode 4 shows as kernel 4.9.78-v7+
I didn’t do anything special to upgrade the kernel, maybe you can try apt-get update then apt-get upgrade. I didn’t test the driver with other kernel but you can give it a try on 4.9.78
Yes I did an apt update and apt upgrade with no progress in kernel....
Ok, then should I amend your instructions and substitute 4.9.78-v7+ for any instances of 4.9.79-v7+ ?
Ok, then should I amend your instructions and substitute 4.9.78-v7+ for any instances of 4.9.79-v7+ ?
Yes I did an apt update and apt upgrade with no progress in kernel....
Ok, then should I amend your instructions and substitute 4.9.78-v7+ for any instances of 4.9.79-v7+ ?
Yes.
Ok, found how to upgrade kernel...
from here...raspbian - Why I can't update kernel version? - Raspberry Pi Stack Exchange
Go to [ Commits * Hexxeh/rpi-firmware * GitHub ] and find the commit key for the version you want.
Then use the following command will update to the last version.
sudo rpi-update <commit key here>
I think Tim had regressed the kernel version due to some problems elsewhere.
You must have an earlier build with the first kernel whereas I built today and got the regression.
from here...raspbian - Why I can't update kernel version? - Raspberry Pi Stack Exchange
Go to [ Commits * Hexxeh/rpi-firmware * GitHub ] and find the commit key for the version you want.
Then use the following command will update to the last version.
sudo rpi-update <commit key here>
I think Tim had regressed the kernel version due to some problems elsewhere.
You must have an earlier build with the first kernel whereas I built today and got the regression.
Ok, found how to upgrade kernel...
from here...raspbian - Why I can't update kernel version? - Raspberry Pi Stack Exchange
Go to [ Commits * Hexxeh/rpi-firmware * GitHub ] and find the commit key for the version you want.
Then use the following command will update to the last version.
sudo rpi-update <commit key here>
I think Tim had regressed the kernel version due to some problems elsewhere.
You must have an earlier build with the first kernel whereas I built today and got the regression.
Yeap, my Moode was built right after he officially released the 4.0
Well I have installed as per instructions but no new driver shows in the i2s list. Previously selected driver remains as current....
Any hints as to how to proceed from here...?
Any hints as to how to proceed from here...?
Well I have installed as per instructions but no new driver shows in the i2s list. Previously selected driver remains as current....
Any hints as to how to proceed from here...?
Would you please post your /boot/config.txt content?
disable_splash=1
hdmi_drive=2
dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=audio=off
max_usb_current=1
# Enable the lirc-rpi module
dtoverlay=lirc-rpi
# Override the defaults for the lirc-rpi module
dtparam=gpio_in_pin=27
dtoverlay=hifibunny-q2m
dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt
hdmi_drive=2
dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=audio=off
max_usb_current=1
# Enable the lirc-rpi module
dtoverlay=lirc-rpi
# Override the defaults for the lirc-rpi module
dtparam=gpio_in_pin=27
dtoverlay=hifibunny-q2m
dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt
disable_splash=1
hdmi_drive=2
dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=audio=off
max_usb_current=1
# Enable the lirc-rpi module
dtoverlay=lirc-rpi
# Override the defaults for the lirc-rpi module
dtparam=gpio_in_pin=27
dtoverlay=hifibunny-q2m
dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt
Please comment out 'dtoverlay=lirc-rpi' and try again. May I ask what board are you using? It is probably helpful to find out the function of GPIO27.
- Home
- Source & Line
- PC Based
- ES9028Q2M driver for Raspbian based distro