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/1289gkp ... sp=sharing
Hello, thank you for your replyxineg 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/megaco ... ktop-video.
I would perhaps go that way?
In the link you originally gave (with 14.4) there are many Firmware bin files, perhaps your card requires this firmware?elover wrote:Hello, thank you for your replyxineg 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/megaco ... ktop-video.
I would perhaps go that way?
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.

Hello, thank you for replyingNeddySeagoon 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.
Code: Select all
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
Code: Select all
[ 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!io3Code: Select all
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
+
Code: Select all
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
+
Code: Select all
# 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
}
