Compilation of CrazyCat's media_build

  • Hi,

    I have a TechnoTrend TT-4600 DVB-S2 USB box and figured out that it only works with CrazyCat's Firmware/Drivers.

    I use LibreElec as client but want to use Manjaro ARM as server. For this reason I've tried to compile CrazyCat's media_build .

    Unfortunately it always completes with errors.

    Here is the full log of the process:

    External Content pastebin.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Some details of my System:

    Manjar ARM

    Release: 19.06

    Kernel:

    Linux vdr01 5.1.16-1-MANJARO-ARM #1 SMP Fri Jul 5 07:42:44 UTC 2019 aarch64 GNU/Linux

    Code
    pacman -Q | grep linux
    archlinuxarm-keyring 20140119-1
    libutil-linux 2.34-3
    linux-aarch64 5.1.16-1
    linux-aarch64-headers 5.1.16-1
    linux-api-headers 5.1-1
    linux-firmware 20190628.70e4394-1
    util-linux 2.34-3

    I'd hope that someone could give me a hint on this.

    EDIT: might have something to do with this?

    Mailing List Archive: [PATCH v3] ARM: tegra: Enable Tegra VDE driver in tegra_defconfig

    Best regards,

    schnere

  • Thanks for your reply. As you can see in the log, that's exactly what I did.

    But the compilation fails.

    Code
    /home/vdr/media_build/v4l/trace.h:30:18: warning: 'struct tegra_vde' declared inside parameter list will not be visible outside of this definition or declaration
    ...
    /home/vdr/media_build/v4l/../linux/include/uapi/../../drivers/staging/media/tegra-vde/trace.h: In function 'trace_event_get_offsets_register_access':
    /home/vdr/media_build/v4l/../linux/include/uapi/../../drivers/staging/media/tegra-vde/trace.h:16:21: error: implicit declaration of function 'tegra_vde_reg_base_name'; did you mean 'try_to_release_page'? [-Werror=implicit-function-declaration]

    grep -r TEGRA_VDE:

  • What about

    Code
    cd media_build
    make download
    make untar
    make -C v4l allyesconfig
    sed -e 's/CONFIG_TEGRA_VDE=m/# CONFIG_TEGRA_VDE is not set/g' -i v4l/.config
    make
  • Mhm, make after changing the CONFIG_TEGRA_VDE value did not work:

    External Content pastebin.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    After 'make distclean' I'm now compiling as you suggested in your last post.
    Thanks for your help, I really appreciate it!

  • Nope, same error :(

    EDIT: in you sed command, sed CONFIG_TEGRA_VDE=m should get replaced with # CONFIG_TEGRA_VDE is not set .

    Assumed it the other way, because # CONFIG_TEGRA_VDE is not set is the default value. Changed it now and it's again compiling...

  • Try

    Code
    sed -e 's/CONFIG_VIDEO_CODA=m/# CONFIG_VIDEO_CODA is not set/g' -i v4l/.config

    And it is not the same error :)

    If is not set is default value then you don't need to use sed on that one.

  • Omg, I was stuck on researching for tegra_vde so that I didn't think about disalbing coda .

    Got another error:

    Code
    make[3]: *** Keine Regel vorhanden, um das Ziel „/home/vdr/media_build/v4l/vdec/vdec_h264_if.o“, 
      benötigt von „/home/vdr/media_build/v4l/mtk-vcodec-dec.o“, zu erstellen.  Schluss.

    So, disabled that, too:

    Code
    sed -e 's/CONFIG_VIDEO_MEDIATEK_VCODEC=m/# CONFIG_VIDEO_MEDIATEK_VCODEC is not set/g' -i v4l/.config

    After that compilation went through. So I did a "make install" and rebootet, but now by DVB-S2 box is not getting detected:

    Code
    dvb_usb: Unknown symbol dvb_create_media_graph (err -2)

    I assume this could be caused by using distcc for compilation ?

    Code
    DISTCC_HOSTS="192.168.0.11:3636,lzo,cpp" pump make -j5 CC="distcc aarch64-unknown-linux-gnu-gcc"

    So, compiling again - without distcc - will take some time now :)

    Code
    cd media_build
    make distclean
    make download
    make untar
    make -C v4l allyesconfig
    sed -e 's/CONFIG_VIDEO_CODA=m/# CONFIG_VIDEO_CODA is not set/g' -i v4l/.config
    sed -e 's/CONFIG_VIDEO_MEDIATEK_VCODEC=m/# CONFIG_VIDEO_MEDIATEK_VCODEC is not set/g' -i v4l/.config
    make KERNELRELEASE=$(uname -r) KDIR26="/lib/modules/$(uname -r)/updates" -j5

    Edited 2 times, last by schnere (July 13, 2019 at 11:30 AM).

  • Mhm, still no luck :(

    Code
    $ dmesg | grep dvb
    [   11.307058] usb 1-1.4: Product: dvb-s2
    [   16.866654] dvb_usb: Unknown symbol dvb_create_media_graph (err -2)
    Code
    $ modprobe -v dvb_usb
    insmod /lib/modules/5.1.16-1-MANJARO-ARM/kernel/drivers/media/usb/dvb-usb/dvb-usb.ko 
    modprobe: ERROR: could not insert 'dvb_usb': Unknown symbol in module, or unknown parameter (see dmesg)
  • Yes:

    Code
    $ grep CONFIG_MEDIA_CONTROLLER_DVB v4l/.config 
    CONFIG_MEDIA_CONTROLLER_DVB=y

    External Content pastebin.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

  • If I use upstream linux-tv git repository instead of CrazyCat's I get a different error:

    Code
    [   68.705948] mc: exports duplicate symbol __media_device_register (owned by kernel)

    I've tried modprobe m88ds3103 dvb_core i2c_mux before, but that didn't work either.

  • Okay, dvb_create_media_graph is defined in dev-core: Linux source code: drivers/media/dvb-core/dvbdev.c (v5.2) - Bootlin


    lsmod | grep dvb has no output, so dvb-core is not loaded which must cause the problem with dvb-usb.

    But when I do modprobe dvb-core I get no output, but it still isn't loaded.

    Code
    $ modprobe --show-depends dvb-usb
    insmod /lib/modules/5.1.16-1-MANJARO-ARM/kernel/drivers/media/rc/rc-core.ko 
    insmod /lib/modules/5.1.16-1-MANJARO-ARM/kernel/drivers/media/media.ko 
    insmod /lib/modules/5.1.16-1-MANJARO-ARM/kernel/drivers/media/v4l2-core/videodev.ko 
    insmod /lib/modules/5.1.16-1-MANJARO-ARM/kernel/drivers/media/common/videobuf2/videobuf2-common.ko 
    insmod /lib/modules/5.1.16-1-MANJARO-ARM/kernel/drivers/media/common/videobuf2/videobuf2-memops.ko 
    insmod /lib/modules/5.1.16-1-MANJARO-ARM/kernel/drivers/media/common/videobuf2/videobuf2-vmalloc.ko 
    insmod /lib/modules/5.1.16-1-MANJARO-ARM/kernel/drivers/media/dvb-core/dvb-core.ko 
    insmod /lib/modules/5.1.16-1-MANJARO-ARM/kernel/drivers/media/usb/dvb-usb/dvb-usb.ko

    As i can see dvb-core depends on media which is also not loaded.

  • I think you are mixing modules from a system and modules from media_build. Maybe you are using dvb-core from a system but you should from media_build (it needs higher priority) - that's why you are missing symbols.

    As I remember modules from media_build should be put in some special folder under /lib/.