summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configs/os/udev/v0-hdmiusb-rpi2.rules2
-rw-r--r--configs/os/udev/v0-hdmiusb-rpi3.rules2
-rw-r--r--configs/os/udev/v2-hdmiusb-rpi4.rules2
-rwxr-xr-xscripts/kvmd-udev-hdmiusb-check56
4 files changed, 59 insertions, 3 deletions
diff --git a/configs/os/udev/v0-hdmiusb-rpi2.rules b/configs/os/udev/v0-hdmiusb-rpi2.rules
index ce6d1b3c..244f7ce4 100644
--- a/configs/os/udev/v0-hdmiusb-rpi2.rules
+++ b/configs/os/udev/v0-hdmiusb-rpi2.rules
@@ -1,4 +1,4 @@
# https://unix.stackexchange.com/questions/66901/how-to-bind-usb-device-under-a-static-name
# https://wiki.archlinux.org/index.php/Udev#Setting_static_device_names
-KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", KERNELS=="1-1.5:1.0", ATTR{index}=="0", GROUP="kvmd", SYMLINK+="kvmd-video"
+KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", PROGRAM="/usr/bin/kvmd-udev-hdmiusb-check rpi2 %b", ATTR{index}=="0", GROUP="kvmd", SYMLINK+="kvmd-video"
KERNEL=="ttyAMA0", SYMLINK+="kvmd-hid"
diff --git a/configs/os/udev/v0-hdmiusb-rpi3.rules b/configs/os/udev/v0-hdmiusb-rpi3.rules
index cf0dd48d..bd96d232 100644
--- a/configs/os/udev/v0-hdmiusb-rpi3.rules
+++ b/configs/os/udev/v0-hdmiusb-rpi3.rules
@@ -1,4 +1,4 @@
# https://unix.stackexchange.com/questions/66901/how-to-bind-usb-device-under-a-static-name
# https://wiki.archlinux.org/index.php/Udev#Setting_static_device_names
-KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", KERNELS=="1-1.2:1.0", ATTR{index}=="0", GROUP="kvmd", SYMLINK+="kvmd-video"
+KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", PROGRAM="/usr/bin/kvmd-udev-hdmiusb-check rpi3 %b", ATTR{index}=="0", GROUP="kvmd", SYMLINK+="kvmd-video"
KERNEL=="ttyAMA0", SYMLINK+="kvmd-hid"
diff --git a/configs/os/udev/v2-hdmiusb-rpi4.rules b/configs/os/udev/v2-hdmiusb-rpi4.rules
index 1cdb3ca7..08e0666a 100644
--- a/configs/os/udev/v2-hdmiusb-rpi4.rules
+++ b/configs/os/udev/v2-hdmiusb-rpi4.rules
@@ -1,5 +1,5 @@
# https://unix.stackexchange.com/questions/66901/how-to-bind-usb-device-under-a-static-name
# https://wiki.archlinux.org/index.php/Udev#Setting_static_device_names
-KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", KERNELS=="1-1.4:1.0", ATTR{index}=="0", GROUP="kvmd", SYMLINK+="kvmd-video"
+KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", PROGRAM="/usr/bin/kvmd-udev-hdmiusb-check rpi4 %b", ATTR{index}=="0", GROUP="kvmd", SYMLINK+="kvmd-video"
KERNEL=="hidg0", GROUP="kvmd", SYMLINK+="kvmd-hid-keyboard"
KERNEL=="hidg1", GROUP="kvmd", SYMLINK+="kvmd-hid-mouse"
diff --git a/scripts/kvmd-udev-hdmiusb-check b/scripts/kvmd-udev-hdmiusb-check
new file mode 100755
index 00000000..dd948291
--- /dev/null
+++ b/scripts/kvmd-udev-hdmiusb-check
@@ -0,0 +1,56 @@
+#!/bin/bash
+# ========================================================================== #
+# #
+# KVMD - The main Pi-KVM daemon. #
+# #
+# Copyright (C) 2018 Maxim Devaev <[email protected]> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <https://www.gnu.org/licenses/>. #
+# #
+# ========================================================================== #
+
+
+set -x
+
+# udevadm info -a -p $(udevadm info -q path -n /dev/video0)
+
+board="$1"
+port="$2"
+
+# https://gist.github.com/mdevaev/6eb65be689142e5ac16da7542f50830f
+model="`tr < /proc/device-tree/model -d '\000'`"
+
+case "$board" in
+ "rpi2")
+ case "$model" in
+ "Raspberry Pi 2 Model B Rev 1.1")
+ if [ "$port" == "1-1.5:1.0" ]; then exit 0; else exit 1; fi;;
+ *) exit 0;;
+ esac;;
+ "rpi3")
+ case "$model" in
+ "Raspberry Pi 3 Model B Rev 1.2")
+ if [ "$port" == "1-1.5:1.0" ]; then exit 0; else exit 1; fi;;
+ "Raspberry Pi 3 Model B Plus Rev 1.3")
+ if [ "$port" == "1-1.2:1.0" ]; then exit 0; else exit 1; fi;;
+ *) exit 0;;
+ esac;;
+ "rpi4")
+ case "$model" in
+ "Raspberry Pi 4 Model B Rev 1.1")
+ if [ "$port" == "1-1.4:1.0" ]; then exit 0; else exit 1; fi;;
+ *) exit 0;;
+ esac;;
+ *) exit 1;;
+esac