This is harmless and can be ignored. It comes from generic code and is technically correct: Amlogic does not have regulators on the mali supply so there are none to be found.
If you get the error the drivers are present in the kernel and hardware probed. You need to set the audio routing via mixer settings. In a generic distro which needs to support many different boards this is best done with a script that runs early in boot (as pre the script I linked). Some vendors who only support a couple of specific packages have .deb packages that restore alsactl state to set the routing correctly.
Thanks for your help Christian, I get this kernel message after install mate desktop on ubuntu hirsute:
fe.dai-link-0: ASoC: no backend DAIs enabled for fe.dai-link-0
I’m not an expert on building kernel, so I apreciate if you can helpme to solve this issue. I’m using mainline kernel 5.14 from here:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/snapshot/linux-5.14.tar.gz
By the way, thanks for share the u-boot for BPI-M5. I’d like to kown how you done that to build my own ou-boot for BPI-M5. I tried to doit from here:
With this steps:
https://u-boot.readthedocs.io/en/latest/board/amlogic/odroid-c4.html
but it don’t work.
Amlogic u-boot instructions (almost) always follow the same sequence:
- build vendor u-boot to compile the FIP sources used for signing
- import the FIP sources to the mainline u-boot build folder
- build mainline u-boot for the board
- sign the u-boot binary with the FIPs and tools you imported
https://github.com/LibreELEC/amlogic-boot-fip has pre-compiled/pre-extracted FIP sources for most SBC boards (including M5) and some TV box devices. You can use them to skip the first bit. So just build mainline u-boot using the M5 defconfig, download the M5 FIPs, and sign.
The audio issue is simple and has nothing to do with kernel configuration or device-tree. The audio card has three sets of inputs and outputs; and unless you configure the audio mixer (amixer) with a mapping of input to output (an audio route) there is no back end digital-audio-interface (DAI) visible and the driver complains (continuously). So you need to run the amixer commands I flagged several posts ago and the errors will instantly stop, and if you want the config to be persistent, either put the amixer commands in a startup script or use alsactl to save the configuraion to a persistent location.
Thanks for your instructions and the fip files Christian, but ¿How I sign the u-boot.bin builded from mainline?
Follow the C4 recipe https://u-boot.readthedocs.io/en/latest/board/amlogic/odroid-c4.html … it uses the same files and tools.
Hi Christian, I follow the instructions to sign but it doesn’t work. Here is my console output:
consoleoutput.txt (3,5 KB)
I’m doing something wrong?
Thanks Christian, I changed the settings using alsa-utils and works properly. There’s a way to change those parameters before building kernel?
Hi Christian, I get this kernel message:
bpim5 login: [ 60.405123] irq 39: nobody cared (try booting with the “irqpoll” option) [ 60.406336] handlers: [ 60.408436] [<0000000076cdcc06>] irq_default_primary_handler threaded [<00000 000c1ea32d7>] phy_interrupt [ 60.417836] Disabling IRQ #39 bpim5 login: [ 60.405123] irq 39: nobody cared (try booting with the “irqpoll” option)
Ubuntu 21.04 bpim5 ttyAML0
bpim5 login:
Do you know why it could be?
The blx_fix.sh
script requires bash, but your Ubuntu VM links /bin/bash to /bin/dash which does not support declare
so the script errors. Switch the VM to bash … Google the problem, it’s a common issue with Ubuntu.
No you cannot fix userspace routing via kernel configuration. Go read previous comments on how to make it persistent (alsactl is probably easiest).
No idea about the IRQ issue, I never boot generic kernels or use desktop distros.
Have you tried adding this to your bootopts in uboot (to be passed as cmdline to kernel)?
Btw do you used script above or did you call the commands alone (have used 0 as card)?
Hi Christian, I want to thank you for all your support with this matter. I find out that the IRQ 39 issue is only with Kernel 5.13 and 5.14, I builded Kernel 5.10 and works well. By now, for testing, I’m using a simple boot commands but I have to research to improveit. I’m newbe buildig linux OS so I have many other questions. I don’t know how to get the initrd and vmlinuz from builded linux mainline folder. When I boot debian or ubuntu distros, I just put the headers on include folder and module on lib folder and works well but I see that many other use initrd file or vmlinux. I appreciate if you giveme some ideas to how do that. The other thing is that I can’t do change manually the screen resolution on boot commands.
have you tried cat /proc/interrupts to find out a bit more about irq39?
can you post your commands for audio?
arm(64) devices mostly don’t use vmlinux, more uImage or itb. vmlinux is used for x86/64
initrd id only needed if you need to do something before rootfs is mounted (e.g. setup a overlay_fs,encryption,…)
Hi, Frank, I used irqpoll option and the kernel warning is gone. Now I find out that the gpio acces is more simple by installing the package gpiod but I dot’ know how to use i2c for rtc rtc ds3231.
apt install alsa-utils -y
alsactl init
alsactl store
amixer sset ‘FRDDR_A SINK 1 SEL’ ‘OUT 1’
amixer sset ‘FRDDR_A SRC 1 EN’ on
amixer sset ‘TDMOUT_B SRC SEL’ ‘IN 0’
amixer sset ‘TOHDMITX’ on
amixer sset ‘TOHDMITX I2S SRC’ ‘I2S B’
alsactl store
reboot
Do you have acces to /dev/i2cX? in debian there are i2c tools with i2cdetect to communicate with i2c devices.
https://www.fw-web.de/dokuwiki/doku.php?id=en/bpi-r2/gpio#i2c
Maybe there is also an linux kernel-module for rtc which only needs to configured in userspace
Hi Frank I did it but doesn’t detect any device on the i2c bus, there isn’t mistakes with the connection because I already test with the debian distro by Sinovoip and works well. I suppose is something todo with my kernel build or the overlay files, by the way, I try to use Sinovoip overlays but it doesn’t work with my kernel build, I suppose that is happen because they are diferent kernel versions.
This is my otuput with my kernel build:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – -- – -- – -- – -- – -- – -- –
10: – -- – -- – -- – -- – -- – -- – -- – --
20: – -- – -- – -- – -- – -- – -- – -- – --
30: 30 – -- – -- – -- – -- – -- – -- – -- –
40: – -- – -- – -- – -- – -- – -- – -- – --
50: 50 – -- – -- – -- – -- – -- – -- – -- –
60: – -- – -- – -- – -- – -- – -- – -- – --
70: – -- – -- – -- – --
This is my otuput with Sinovoip kernel build:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – -- – -- – -- – -- – -- – -- –
10: – -- – -- – -- – -- – -- – -- – -- – --
20: – -- – -- – -- – -- – -- – -- – -- – --
30: – -- – -- – -- – -- – -- – -- – -- – --
40: – -- – -- – -- – -- – -- – -- – -- – --
50: – -- – -- – -- – 57 – -- – -- – -- – --
60: – -- – -- – -- – -- 68 – -- – -- – -- –
70: – -- – -- – -- – --
Any ideas?
Hi Frank, I’m trying to load i2c overlay but I got an error:
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND base fdt does did not have a /symbols node make sure you’ve compiled with -@
The console log is attached in this post.
overlay boot log.txt (1,4 KB)
Mhm, i thought i had it documented somewhere,but have not found it…as your message says you need to compile your dtb with -@ flag. Afair i had modified the Makefile in arch/arm/boot
You can first modify your dts instead of creating an dtb…just for testing
My steps were here: Set MAC-Address on boot
This is dtbo
dtc -@ -I dts -O dtb -o bpi-r2-mac.dtb bpi-r2-mac.dts
And you have to compile your main dtb with -@ too…have done it this way:
added
export DTC_FLAGS=-@
to my build.sh and now i see the symbols
Where I add this line?