From time to time, after a Linux kernel update (mostly after an automatic kernel update), we may see that we cannot load our ddbridge module. While we try to do:
modprobe ddbridge
we may see in dmesg logs something like:
dmesg:... dvb_core: Unknown symbol media_devnode_remove (err -2)dvb_core: Unknown symbol media_create_intf_link (err -2)dvb_core: Unknown symbol media_create_pad_links (err -2)dvb_core: Unknown symbol media_create_pad_link (err -2)dvb_core: Unknown symbol media_device_register_entity (err -2)dvb_core: Unknown symbol media_entity_pads_init (err -2)dvb_core: Unknown symbol media_get_pad_index (err -2)dvb_core: Unknown symbol media_device_unregister_entity (err -2)...
dmesg: ... ddbridge: Unknown symbol dvb_dmxdev_init (err -22) ddbridge: Unknown symbol dvb_ca_en50221_init (err -22) ddbridge: Unknown symbol dvb_register_adapter (err -22) ddbridge: Unknown symbol dvb_unregister_device (err -22) ddbridge: Unknown symbol dvb_net_init (err -22) ...
Unfortunately a simple dddvb drivers rebuild does not help in this case. Fastest way is to reinstall Linux. But if that is not an option for you, then better to make a kernel update. For Ubuntu/Debian I usually use the mainline-kernel.sh
Before manual kernel upgrade, better to run the system update command to ensure all the system packages are up to date. After that also install wget, we will need it further.
wget,
sudo apt update && sudo apt upgrade
sudo apt install wget
Firstly we need to download the Ubuntu Mainline Kernel script available on GitHub. Here is a command to download it on your Ubuntu system.
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
Then make it executable and move it to /usr/local/bin to use it in the future to get the latest version of the kernel.
/usr/local/bin
chmod +x ubuntu-mainline-kernel.sh
sudo mv ubuntu-mainline-kernel.sh /usr/local/bin/
To list available Kernel versions that you can install using the script, use this command:
ubuntu-mainline-kernel.sh -r
Usually to fix the dvb_core: Unknown symbol media_... (err -2) you just need to update kernel to higher version.
For instance we have Kernel 5.15.xxx -> better to try 5.5.xxx or 5.6.xx
Be aware: If you update it from 5.x to 6.x like 6.2.xxx or higher, you will need to install the GCC 12 (or higher) as well in order build dddvb drivers. That may be a little tricky if you have Ubuntu 20.04. There is no GCC 12 in default package manager. You will need to add a third party repo for installing GCC 12(or higher) or build it from sources.
In order to install required kernel version, indicate it after the -i parameter (copy the one you saw in list above). For example to install v5.5.35, we can use:
sudo ubuntu-mainline-kernel.sh -i v5.5.35
If you have installed multiple Linux kernel versions using this script, then to list all of them we can use:
sudo ubuntu-mainline-kernel.sh -l
Restart your system to let it use the kernel version you have just configured
sudo reboot
After the system reboots, check your current version by using:
uname -r
This time you should see the one you have just installed. Just installed kernel will be loaded automatically only if it is a higher version than it was before.
Now we may rebuild our dddvb drivers and load ddbridge module.
Fastest way for that is using of dddvb_build.sh script from this article:
https://support.digital-devices.eu/index.php?article=184#dddvb_build.sh
Note:
If issue still persists, try to install higher kernel version. Sometimes it may take even 2-3 installations before you find the right one.
More about the mainline-kernel.sh script, you may read here.
---------------------------------------
If you find any mistakes or have something to add/ask, please write to the author and he will correct the article)
Palii Dmytro
paliydmn@digitaldevices.de
« Zurück
Datenschutzerklärung | Impressum