Compile driver for Elgato 4K MK.2

Hi all.

I’m trying to figure out a way to compile a reverse enginering driver created fot this capture card.

Custom GIT Driver

I’m aware of the riscs and warning about how this IS a bad ideia and etc. But I aprecciate all help.

I don’t have too much experience with linux and none with compiling anything else from AUR with YAY or similar helper.

Like a noob, I’ve followed the basic ideia of a git “regular installation”:

git clone https://github.com/stoth68000/sc0710
cd sc0710
make
make install

A childsh hope of a miraculous solution, but it doesn’t work.

[EDITED: forgot to comment about SUDO]
SUDO MAKE or MAKE output:

make -C /lib/modules/5.18.6-1-MANJARO/build M=/home/gits/sc0710 modules
make[1]: Entrando no diretório '/usr/lib/modules/5.18.6-1-MANJARO/build'

  CC [M]  /home/gits/sc0710/sc0710-cards.o
  CC [M]  /home/gits/sc0710/sc0710-core.o
  CC [M]  /home/gits/sc0710/sc0710-i2c.o
/home/gits/sc0710/sc0710-i2c.c: In function ‘sc0710_i2c_read_hdmi_status’:
/home/gits/sc0710/sc0710-i2c.c:177:13: warning: unused variable ‘i’ [-Wunused-variable]
  177 |         int i;
      |             ^
  CC [M]  /home/gits/sc0710/sc0710-dma-channel.o
/home/gits/sc0710/sc0710-dma-channel.c: In function ‘sc0710_dma_channel_alloc’:
/home/gits/sc0710/sc0710-dma-channel.c:428:22: error: implicit declaration of function ‘pci_alloc_consistent’ [-Werror=implicit-function-declaration]
  428 |         ch->pt_cpu = pci_alloc_consistent(dev->pci, ch->pt_size, &ch->pt_dma);
      |                      ^~~~~~~~~~~~~~~~~~~~
/home/gits/sc0710/sc0710-dma-channel.c:428:20: warning: assignment to ‘u64 *’ {aka ‘long long unsigned int *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
  428 |         ch->pt_cpu = pci_alloc_consistent(dev->pci, ch->pt_size, &ch->pt_dma);
      |                    ^
/home/gits/sc0710/sc0710-dma-channel.c: In function ‘sc0710_dma_channel_resize’:
/home/gits/sc0710/sc0710-dma-channel.c:532:20: warning: assignment to ‘u64 *’ {aka ‘long long unsigned int *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
  532 |         ch->pt_cpu = pci_alloc_consistent(dev->pci, ch->pt_size, &ch->pt_dma);
      |                    ^
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:288: /home/gits/sc0710/sc0710-dma-channel.o] Erro 1
make[1]: *** [Makefile:1838: /home/gits/sc0710] Erro 2
make[1]: Saindo do diretório '/usr/lib/modules/5.18.6-1-MANJARO/build'

make: *** [Makefile:14: all] Erro 2

[EDITED: forgot to comment about SUDO]
SUDO MAKE INSTALL or MAKE INSTALL outup:

make: *** no rule to process the target 'install' . Stop

(this is a translated output, since my system doens’t run in english).

PCI card is installed on PCI port, but no ideia if is listened or not.

MHWD -LA output:

> All PCI configs:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
video-hybrid-intel-nvidia-prime            2021.12.18               false            PCI
           video-linux            2018.05.04                true            PCI
    video-nvidia-470xx            2021.12.18               false            PCI
            video-vesa            2017.03.12                true            PCI
       video-rendition            2020.01.18                true            PCI
      video-openchrome            2020.01.18                true            PCI
  video-virtualmachine            2021.07.26                true            PCI
          video-voodoo            2017.03.12                true            PCI
              video-s3            2020.01.18                true            PCI
    video-nvidia-390xx            2021.12.18               false            PCI
video-hybrid-amd-nvidia-470xx-prime            2021.12.18               false            PCI
video-hybrid-amd-nvidia-prime            2021.12.18               false            PCI
          video-nvidia            2021.12.18               false            PCI
video-hybrid-intel-nvidia-470xx-prime            2021.12.18               false            PCI
     video-modesetting            2020.01.13                true            PCI
          video-sisusb            2020.01.18                true            PCI
video-hybrid-intel-nvidia-390xx-bumblebee            2021.12.18               false            PCI
     network-rt3562sta            2013.12.07                true            PCI
       network-slmodem            2013.12.07                true            PCI
   network-broadcom-wl            2018.10.07               false            PCI
         network-r8168            2016.04.20                true            PCI


Warning: No USB configs found!

Any help is welcome, and of course, if this is the wrong way to compile a driver, I’ll accept instructions.

TY.

Have you searched the AUR (Arch User Repository)? There are multiple results for elgato.

If it’s not there, then you could install it manually from that repo. The failures in your build log are due to not running the commands with elevated privileges. You’re building a DKMS module that needs to write to the system to install.

The problem with installing things manually is you’ll have to make sure you maintain it manually. Install everything via the system package manager (Add/Remove Sofware aka Pamac that uses Pacman).

I’ve tryied AUR.

HD packes: USB capture cards, they work with a 19820x1280 max resolution.
KeyLight: is literally a lamp.
Stream Deck: is a custom mini keyboard that store shortcuts and some inks to applications commands, like switch screen on OBS, open specific apps.

At first look, I don’t mind in have a little work to maintain the updates, I also don’t care to start over in any if I have some weird issue.

My biggest issue with all the reading is find out a way to put everything in place.

So, if I’m not asking for too much of your help, can you give some basic instructions to help me to figure out the steps I should follow? Just reading about DKMS doens’t ring any bell.

Like:

  1. install this
  2. hook the file
  3. type this command and look for error

I just mentioned that.

I’ve forgot to post that I’ve tryied to run the command like a SU, and that the result are the same for both.

So when you sayed:

I just started to ask my self what can have higher privileges than a SU. I’ll try to figure out tomorrow.

TY.

Your log neither indicated you ran the commands with sudo nor su.

If you did, the issue lies elsewhere.

For one thing, you need the base-devel group installed just like you would installing AUR (Arch User Repository) packages.

It’s also possible the driver will not work with every kernel version, try different versions.