Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Hi, how can I install the blackmagic driver?
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Unsupported Software
View previous topic :: View next topic  
Author Message
elover
Apprentice
Apprentice


Joined: 20 Nov 2019
Posts: 177
Location: Spain

PostPosted: Thu Mar 27, 2025 6:27 pm    Post subject: Hi, how can I install the blackmagic driver? Reply with quote

I bought an 8k capture machine and I am not able to install the driver.

I leave the programme with the instructions in case someone with more knowledge helps me.
https://drive.google.com/file/d/1289gkpTlaPCxJOzsfW6GUKGJQn1194Hm/view?usp=sharing
Back to top
View user's profile Send private message
xineg
Tux's lil' helper
Tux's lil' helper


Joined: 14 Mar 2006
Posts: 124
Location: Australia.

PostPosted: Fri Mar 28, 2025 7:07 am    Post subject: Reply with quote

elover

I downloaded that file and poked around and it's a whole lot of .deb files, which
are essentially for debian or ubuntu,. however rather than messing around with those,
there's an overlay called megacoffee that has the blackmagic video here:
https://gpo.zugaina.org/Overlays/megacoffee/media-libs/blackmagic-desktop-video.
I would perhaps go that way?
Back to top
View user's profile Send private message
elover
Apprentice
Apprentice


Joined: 20 Nov 2019
Posts: 177
Location: Spain

PostPosted: Fri Mar 28, 2025 8:11 am    Post subject: Reply with quote

xineg wrote:
elover

I downloaded that file and poked around and it's a whole lot of .deb files, which
are essentially for debian or ubuntu,. however rather than messing around with those,
there's an overlay called megacoffee that has the blackmagic video here:
https://gpo.zugaina.org/Overlays/megacoffee/media-libs/blackmagic-desktop-video.
I would perhaps go that way?


Hello, thank you for your reply


Yes, I tried another ebuild and it gave me error, I searched the error on the internet and found the same error on the blackmagic forums, it was related to kernel 6.13. Someone published two patches, I applied them and it compiled perfectly, I can install the binaries from the .deb package manually to my root, run dkms and start modprobe and it worked, what happens is that this last driver is old and it doesn't detect my capture machine, in blackmagig is version 4.15 for mac and windows, but they haven't released yet in linux.


I have to open a post in the blackmagic forums asking why it doesn't detect my card.
Back to top
View user's profile Send private message
xineg
Tux's lil' helper
Tux's lil' helper


Joined: 14 Mar 2006
Posts: 124
Location: Australia.

PostPosted: Fri Mar 28, 2025 9:56 am    Post subject: Reply with quote

elover

elover wrote:
xineg wrote:
elover

I downloaded that file and poked around and it's a whole lot of .deb files, which
are essentially for debian or ubuntu,. however rather than messing around with those,
there's an overlay called megacoffee that has the blackmagic video here:
https://gpo.zugaina.org/Overlays/megacoffee/media-libs/blackmagic-desktop-video.
I would perhaps go that way?


Hello, thank you for your reply


Yes, I tried another ebuild and it gave me error, I searched the error on the internet and found the same error on the blackmagic forums, it was related to kernel 6.13. Someone published two patches, I applied them and it compiled perfectly, I can install the binaries from the .deb package manually to my root, run dkms and start modprobe and it worked, what happens is that this last driver is old and it doesn't detect my capture machine, in blackmagig is version 4.15 for mac and windows, but they haven't released yet in linux.


I have to open a post in the blackmagic forums asking why it doesn't detect my card.


In the link you originally gave (with 14.4) there are many Firmware bin files, perhaps your card requires this firmware?
Back to top
View user's profile Send private message
NeddySeagoon
Administrator
Administrator


Joined: 05 Jul 2003
Posts: 55180
Location: 56N 3W

PostPosted: Fri Mar 28, 2025 10:20 am    Post subject: Reply with quote

elover,

dmesg will tell if you need firmware but it fails to load.

kernel drivers bind to devices by knowing the Vendor and Device ID (mostly).
If you feel lucky, add the Vendor and Device ID to your kernel module and see what happens.

== edit ==

Knowing how your device is connected and its Vendor and Device ID would be good.
I'm not about to download your file from Google. Javascript ... etc. but I might get it from the source, if you post a link.
_________________
Regards,

NeddySeagoon

Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail.
Back to top
View user's profile Send private message
elover
Apprentice
Apprentice


Joined: 20 Nov 2019
Posts: 177
Location: Spain

PostPosted: Fri Mar 28, 2025 12:31 pm    Post subject: Reply with quote

NeddySeagoon wrote:
elover,

dmesg will tell if you need firmware but it fails to load.

kernel drivers bind to devices by knowing the Vendor and Device ID (mostly).
If you feel lucky, add the Vendor and Device ID to your kernel module and see what happens.

== edit ==

Knowing how your device is connected and its Vendor and Device ID would be good.
I'm not about to download your file from Google. Javascript ... etc. but I might get it from the source, if you post a link.


Hello, thank you for replying


I'm sending you the link to the model of the card and the code you are asked to download.

https://www.blackmagicdesign.com/es/support/download/5baba0af3eda41ee9cd0ec7349660d74/Linux

card: DeckLink 8k pro G2
KEY: 13104906


lspci -v
Code:
0c:00.0 Multimedia video controller: Blackmagic Design DeckLink 8K Pro
        Subsystem: Blackmagic Design DeckLink 8K Pro
        Flags: bus master, fast devsel, latency 0, IRQ 189, IOMMU group 19
        Memory at a0400000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: <access denied>
        Kernel driver in use: blackmagic-io
        Kernel modules: blackmagic_io


edit: dmesg | grep blackmagic

Code:
[   17.297658] blackmagic_io: loading out-of-tree module taints kernel.

[   17.297691] blackmagic_io: module license 'Proprietary' taints kernel.

[   17.297704] blackmagic_io: module license taints kernel.

[   17.307536] blackmagic-io 0000:0c:00.0: enabling device (0000 -> 0002)

[   17.323701] BlackmagicIO: DeckLink 8K Pro (1) as blackmagic!io0 [0000:0c:00.0]

[   17.323782] BlackmagicIO: Initialised serial driver for blackmagic!io0

[   17.330688] BlackmagicIO: DeckLink 8K Pro (3) as blackmagic!io1 [0000:0c:00.0]

[   17.330692] BlackmagicIO: Initialised serial driver for blackmagic!io1

[   17.335754] BlackmagicIO: DeckLink 8K Pro (2) as blackmagic!io2 [0000:0c:00.0]

[   17.335757] BlackmagicIO: Initialised serial driver for blackmagic!io2

[   17.341559] BlackmagicIO: DeckLink 8K Pro (4) as blackmagic!io3 [0000:0c:00.0]

[   17.341563] BlackmagicIO: Initialised serial driver for blackmagic!io3


Last edited by elover on Fri Mar 28, 2025 2:24 pm; edited 1 time in total
Back to top
View user's profile Send private message
elover
Apprentice
Apprentice


Joined: 20 Nov 2019
Posts: 177
Location: Spain

PostPosted: Fri Mar 28, 2025 1:31 pm    Post subject: Reply with quote

Hi, I have an ebuild and some patches, can someone create me the ebuild for these patches?

blackmagic-14.4.1a4-001-fix_for_kernel_6.13.patch
Code:
diff -Naur ./blackmagic-14.4.1a4.orig/blackmagic_core.c ./blackmagic-14.4.1a4/blackmagic_core.c
--- ./blackmagic-14.4.1a4.orig/blackmagic_core.c   2025-02-27 10:13:50.096498345 +0100
+++ ./blackmagic-14.4.1a4/blackmagic_core.c   2025-02-27 10:36:01.394582532 +0100
@@ -93,6 +93,12 @@
 static LIST_HEAD(blackmagic_devices);
 static DEFINE_SPINLOCK(blackmagic_devices_lock);
 
+struct blackmagic_device *blackmagic_find_device_by_minor(int minor);
+struct blackmagic_device *blackmagic_find_device_by_id(int id);
+struct blackmagic_device *blackmagic_find_device_by_ptr(void *ptr);
+struct blackmagic_device *blackmagic_create_device(struct pci_dev *pdev);
+void blackmagic_destroy_device(struct blackmagic_device *ddev);
+
 struct blackmagic_device *
 blackmagic_find_device_by_minor(int minor)
 {
diff -Naur ./blackmagic-14.4.1a4.orig/blackmagic_gate.c ./blackmagic-14.4.1a4/blackmagic_gate.c
--- ./blackmagic-14.4.1a4.orig/blackmagic_gate.c   2025-02-27 10:13:50.096498345 +0100
+++ ./blackmagic-14.4.1a4/blackmagic_gate.c   2025-02-27 10:20:50.869524953 +0100
@@ -39,6 +39,7 @@
 #endif
 #include "blackmagic_iml.h"
 #include "blackmagic_core.h"
+#include "blackmagic_gate.h"
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33)
    #define raw_spinlock_t spinlock_t
diff -Naur ./blackmagic-14.4.1a4.orig/blackmagic_gate.h ./blackmagic-14.4.1a4/blackmagic_gate.h
--- ./blackmagic-14.4.1a4.orig/blackmagic_gate.h   2025-02-27 10:13:50.096498345 +0100
+++ ./blackmagic-14.4.1a4/blackmagic_gate.h   2025-02-27 10:42:55.959608748 +0100
@@ -31,7 +31,7 @@
 
 struct blackmagic_gate;
 
-struct blackmagic_gate *dl_alloc_gate();
+struct blackmagic_gate *dl_alloc_gate(void);
 void dl_free_gate(struct blackmagic_gate *gate);
 void dl_gate_set_device(struct blackmagic_gate *gate, void *dev);
 
@@ -40,7 +40,7 @@
 void dl_gate_unlock(struct blackmagic_gate *gate);
 
 int dl_gate_sleep(struct blackmagic_gate *gate, void* key);
-void dl_gate_wakeup(struct blackmagic_gate *gate);
+void dl_gate_wakeup(struct blackmagic_gate *gate, void* key);
 
 
 #endif
diff -Naur ./blackmagic-14.4.1a4.orig/blackmagic_lib.h ./blackmagic-14.4.1a4/blackmagic_lib.h
--- ./blackmagic-14.4.1a4.orig/blackmagic_lib.h   2025-02-27 10:13:50.096498345 +0100
+++ ./blackmagic-14.4.1a4/blackmagic_lib.h   2025-02-27 10:22:57.397532954 +0100
@@ -163,6 +163,8 @@
 extern unsigned int dl_poll_wait(void *filp, struct dl_wait_queue_head_t *queue, void *wait, int write);
 extern void dl_destroy_wait_queue_cache(void);
 
+int dl_thread_wrapper(void *data);
+
 /* FPU save/restore */
 extern void dl_kernel_fpu_begin(void);
 extern void dl_kernel_fpu_end(void);
diff -Naur ./blackmagic-14.4.1a4.orig/blackmagic_serial.c ./blackmagic-14.4.1a4/blackmagic_serial.c
--- ./blackmagic-14.4.1a4.orig/blackmagic_serial.c   2025-02-27 10:13:50.097498345 +0100
+++ ./blackmagic-14.4.1a4/blackmagic_serial.c   2025-02-27 10:22:57.429532956 +0100
@@ -38,6 +38,12 @@
 
 static struct tty_driver *blackmagic_tty_driver = NULL;
 
+void blackmagic_serial_tx_interrupt(void *driver, int continue_tx);
+int blackmagic_serial_probe(struct blackmagic_device *ddev, struct device *dev);
+void blackmagic_serial_remove(struct blackmagic_device *ddev);
+int __init blackmagic_serial_init(void);
+void __exit blackmagic_serial_exit(void);
+
 static inline void *get_driver_from_serial(struct blackmagic_serial *sdev)
 {
    return container_of(sdev, struct blackmagic_device, sdev)->driver;
diff -Naur ./blackmagic-14.4.1a4.orig/Makefile ./blackmagic-14.4.1a4/Makefile
--- ./blackmagic-14.4.1a4.orig/Makefile   2025-02-27 10:13:50.096498345 +0100
+++ ./blackmagic-14.4.1a4/Makefile   2025-02-27 11:21:26.401754853 +0100
@@ -49,3 +49,6 @@
 clean:
    rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions built-in.o Module.symvers Module.markers modules.order
 
+bmd-support.o: bmd-support.o_shipped
+   cp bmd-support.o_shipped bmd-support.o
+


blackmagic-io-14.4.1a4-001-fix_for_kernel_6.13.patch
Code:
diff -Naur ./blackmagic-io-14.4.1a4.orig/bm_util.c ./blackmagic-io-14.4.1a4/bm_util.c
--- ./blackmagic-io-14.4.1a4.orig/bm_util.c   2025-02-27 10:13:40.489497737 +0100
+++ ./blackmagic-io-14.4.1a4/bm_util.c   2025-02-27 10:52:53.343646525 +0100
@@ -120,7 +120,9 @@
 };
 
 #define MEM_ALIGN(mem, align) (((vm_address_t)(mem) + ((align) - 1)) & ~((align) - 1))
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 13, 0)
 #define MAX(a, b) ((a) > (b) ? (a) : (b))
+#endif
 
 void* bm_alloc_aligned(size_t size, uint32_t flags)
 {
diff -Naur ./blackmagic-io-14.4.1a4.orig/Makefile ./blackmagic-io-14.4.1a4/Makefile
--- ./blackmagic-io-14.4.1a4.orig/Makefile   2025-02-27 10:13:40.461497735 +0100
+++ ./blackmagic-io-14.4.1a4/Makefile   2025-02-27 11:21:26.422754854 +0100
@@ -52,3 +52,6 @@
 clean:
    rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions built-in.o Module.symvers Module.markers modules.order
 
+blackmagic.o: blackmagic.o_shipped
+   cp blackmagic.o_shipped blackmagic.o
+


ebuild
Code:

# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit desktop systemd linux-mod-r1 udev

DESCRIPTION="Desktop Video drivers & tools for products by Blackmagic Design (e.g. DeckLink)"
HOMEPAGE="https://www.blackmagicdesign.com/"

# Desktop Video Revision
REV="a6"

# SDK Package Version
SDK_VERSION="${PV}"

SRC_URI="
   Blackmagic_Desktop_Video_Linux_${PV}.tar.gz
   headers? ( Blackmagic_DeckLink_SDK_${SDK_VERSION}.zip )
"
UNPACKED_DIR="desktopvideo-${PV}${REV}-x86_64"

S="${WORKDIR}/${UNPACKED_DIR}"

LICENSE="BlackmagicDesktopVideo"
SLOT="0"
# Some files are precompiled binaries for amd64 only
KEYWORDS="-* ~amd64"
IUSE="autostart +headers X"
# xdg autostart is used, so it won't work on a machine without desktop
REQUIRED_USE="autostart? ( X )"
RESTRICT="fetch"

RDEPEND="
   llvm-runtimes/libcxx
   llvm-runtimes/libcxxabi
   virtual/libusb
   virtual/udev

   X? (
      dev-qt/qtcore:5
      dev-qt/qtnetwork:5
      dev-qt/qtgui:5
      dev-qt/qtdbus:5
      dev-qt/qtwidgets:5
   )
"
BDEPEND="
   app-arch/unzip
"

CONFIG_CHECK="
   SOUND
   SND
   SND_PCM
"

PATCHES=(
   "${FILESDIR}/${P}-fix-c-prototypes.patch"
)

QA_PREBUILT="usr/*"

pkg_nofetch() {
   einfo "Please visit ${HOMEPAGE} and download \"Desktop Video ${PV} for Linux\""
   if use headers; then
      einfo "and \"Desktop Video ${SDK_VERSION} SDK for Linux\""
   fi
   einfo "for your product from the support section and move it to DISTDIR"
   einfo ""
   einfo "  expected filenames: ${SRC_URI}"
   einfo ""
   einfo "The license should be shown and has to be accepted before the download"
   einfo "starts."
}

src_unpack() {
   # shellcheck disable=SC2086
   unpack ${A}

   cd "${WORKDIR}" || die
   tar xfz "Blackmagic_Desktop_Video_Linux_${PV}/other/x86_64/${UNPACKED_DIR}.tar.gz" \
      || die "Failed to unpack driver sources"
}

src_prepare() {
   default
   sed -i "s:usr/lib:usr/$(get_libdir):g" \
      usr/lib/systemd/system/* \
      etc/udev/rules.d/* \
      || die "Failed to correct lib paths in config files"
}

src_compile() {
   # library/tools are binary but kernel module requires compilation
   local modlist=(
      blackmagic="misc:${S}/usr/src/blackmagic-${PV}${REV}"
      blackmagic-io="misc:${S}/usr/src/blackmagic-io-${PV}${REV}"
   )
   local modargs=(
      KERNELRELEASE="${KV_FULL}"
   )
   linux-mod-r1_src_compile
}

src_install() {
   linux-mod-r1_src_install

   udev_dorules etc/udev/rules.d/*.rules

   insinto /etc/dracut.conf.d
   doins etc/dracut.conf.d/*.conf

   dolib.so usr/lib/lib*.so
   dodir "/usr/$(get_libdir)/blackmagic/DesktopVideo"
   cp -vR usr/lib/blackmagic/DesktopVideo/* \
      "${ED}/usr/$(get_libdir)/blackmagic/DesktopVideo" \
      || die "Failed to copy libs and firmware"

   dosym \
      "../$(get_libdir)/blackmagic/DesktopVideo/DesktopVideoUpdateTool" \
      /usr/bin/DesktopVideoUpdateTool
   dosym \
      "../$(get_libdir)/blackmagic/DesktopVideo/DesktopVideoHelper" \
      /usr/sbin/DesktopVideoHelper
   use X && dosym \
      "../$(get_libdir)/blackmagic/DesktopVideo/BlackmagicDesktopVideoSetup" \
      /usr/bin/BlackmagicDesktopVideoSetup

   if use X; then
      domenu usr/share/applications/*.desktop
      dodoc -r usr/share/doc/*

      local icon_size
      for icon_size in 256 128 48 32 16; do
         doicon -s ${icon_size} usr/share/icons/hicolor/${icon_size}x${icon_size}/*
      done
   fi

   doman usr/share/man/man1/*

   newinitd "${FILESDIR}/DesktopVideoHelper.initd" blackmagic-DesktopVideoHelper
   systemd_dounit usr/lib/systemd/system/*

   if use headers; then
      insinto /usr/include/blackmagic
      # The .cpp files are needed as well
      doins "${WORKDIR}/Blackmagic DeckLink SDK ${SDK_VERSION}/Linux/include"/*.{h,cpp}
   fi

   if use autostart; then
      insinto /etc/xdg/autostart
      doins etc/xdg/autostart/*
   fi

   find "${ED}" -iname "*License*.*" -delete || die
   find "${ED}" \( \
      -iname "libc++*.so*" -o \
      -iname "libgcc*.so*" -o \
      -iname "libqt*.so*" -o \
      -iname "libusb*.so*" \
      \) -delete || die "Failed to remove vendored libs"
}

pkg_postinst() {
   linux-mod-r1_pkg_postinst
   udev_reload

   einfo ""
   einfo "Please do *NOT* report any QA errors to Gentoo or Blackmagic!"
   einfo ""
   einfo "The kernel module is simply called blackmagic or blackmagic-io "
   einfo "depends on your BMD device. You may want to modprobe it now to see "
   einfo "if it works (it should print your devices to kernel log)."
   einfo ""
   einfo "Installed tools are DesktopVideoUpdateTool.  !!!! Notice rename. !!!!"
   einfo "maybe you need to add blackmagic-DesktopVideoHelper to autostart, to be able to list devices"
   einfo ""
   if use autostart; then
      einfo "Automated update check has been installed."
   else
      einfo "Automated update check has *not* been installed this time. (set USE flag"
      einfo "autostart if you want that)"
   fi
   einfo ""
   einfo "If your product is not being recognized, you may need to increase the vmalloc"
   einfo "limit in your kernel. You can do that by adding e.g. vmalloc=256M to your kernel"
   einfo "boot line. You can see current usage by running"
   einfo ""
   einfo " # grep VmallocUsed /proc/meminfo"
   einfo ""
}

pkg_postrm() {
   udev_reload
}


Back to top
View user's profile Send private message
NeddySeagoon
Administrator
Administrator


Joined: 05 Jul 2003
Posts: 55180
Location: 56N 3W

PostPosted: Fri Mar 28, 2025 3:10 pm    Post subject: Reply with quote

elover,

Put the patches into /etc/portage/patches/... and emerge your kernel.
Portage will apply the patches for you. just like that to quote Tommy Cooper.

The ebuild goes into your local overlay. That's covered on the Wiki too.
_________________
Regards,

NeddySeagoon

Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Unsupported Software All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum