Thanks Cypher for the solution! Did you manage to get a udev rule? I have tried this (stored in /etc/udev/rules.d/99-soloHD.rules)
SUBSYSTEMS=="usb", ATTR{idProduct}=="8268", ATTR{idVendor}=="2040", RUN+="modprobe em28xx card=94", RUN+="echo 2040 8268 > /sys/bus/usb/drivers/em28xx/new_id"
but it does not seem to work on RPi3 with Libreelec. From the test report below the rule seems to be OK, but no matter if I reload the rules or I reboot the system, the device does not appear in Tvheadend, unless I manually run the commands I inserted in the udev rules.
Now, as I am not really an experts in udev, the question is clear: what am I missing?
Thanks!
Max
LibreELEC:~ # udevadm test $(udevadm info -q path -n /dev/bus/usb/001/006)
calling: test
version 232
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
=== trie on-disk ===
tool version: 232
file size: 4864507 bytes
header size 80 bytes
strings 1353939 bytes
nodes 3510488 bytes
Load module index
Found container virtualization none
Created link configuration context.
timestamp of '/etc/udev/rules.d' changed
Reading rules file: /usr/lib/udev/rules.d/30-disable-wakeup.rules
Reading rules file: /usr/lib/udev/rules.d/40-modeswitch.rules
Reading rules file: /usr/lib/udev/rules.d/50-udev-default.rules
Reading rules file: /usr/lib/udev/rules.d/60-block.rules
Reading rules file: /usr/lib/udev/rules.d/60-cdrom_id.rules
Reading rules file: /usr/lib/udev/rules.d/60-drm.rules
Reading rules file: /usr/lib/udev/rules.d/60-evdev.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-input.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /usr/lib/udev/rules.d/60-serial.rules
Reading rules file: /usr/lib/udev/rules.d/61-cdrom.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs.rules
Reading rules file: /usr/lib/udev/rules.d/70-infrared.rules
Reading rules file: /usr/lib/udev/rules.d/70-input-repeat.rules
Reading rules file: /usr/lib/udev/rules.d/70-mouse.rules
Reading rules file: /usr/lib/udev/rules.d/70-power-switch.rules
Reading rules file: /usr/lib/udev/rules.d/70-touchpad.rules
Reading rules file: /usr/lib/udev/rules.d/70-uaccess.rules
Reading rules file: /usr/lib/udev/rules.d/71-seat.rules
Reading rules file: /usr/lib/udev/rules.d/73-seat-late.rules
Invalid rule /usr/lib/udev/rules.d/73-seat-late.rules:15: RUN{builtin}: 'uaccess' unknown
Reading rules file: /usr/lib/udev/rules.d/75-net-description.rules
Reading rules file: /usr/lib/udev/rules.d/75-probe_mtd.rules
Reading rules file: /usr/lib/udev/rules.d/78-sound-card.rules
Reading rules file: /usr/lib/udev/rules.d/80-clock.rules
Reading rules file: /usr/lib/udev/rules.d/80-drivers.rules
Reading rules file: /usr/lib/udev/rules.d/90-alsa-restore.rules
Reading rules file: /usr/lib/udev/rules.d/90-pulseaudio.rules
Reading rules file: /usr/lib/udev/rules.d/90-rpi-add-serial.rules
Reading rules file: /usr/lib/udev/rules.d/95-udevil-mount.rules
Reading rules file: /usr/lib/udev/rules.d/97-hid2hci.rules
Reading rules file: /usr/lib/udev/rules.d/98-eventlircd.rules
Reading rules file: /usr/lib/udev/rules.d/98-lircd.rules
Reading rules file: /storage/.config/udev.rules.d/99-soloHD.rules
Reading rules file: /usr/lib/udev/rules.d/99-systemd.rules
Reading rules file: /usr/lib/udev/rules.d/99-wakeup-eth.rules
rules contain 24576 bytes tokens (2048 * 12 bytes), 13494 bytes strings
2162 strings (27748 bytes), 1447 de-duplicated (14970 bytes), 716 trie nodes used
IMPORT builtin 'usb_id' /usr/lib/udev/rules.d/50-udev-default.rules:13
IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/50-udev-default.rules:13
MODE 0664 /usr/lib/udev/rules.d/50-udev-default.rules:41
RUN 'modprobe em28xx card=94' /storage/.config/udev.rules.d/99-soloHD.rules:1
RUN 'echo 2040 8268 > /sys/bus/usb/drivers/em28xx/new_id' /storage/.config/udev.rules.d/99-soloHD.rules:1
handling device node '/dev/bus/usb/001/006', devnum=c189:5, mode=0664, uid=0, gid=0
preserve permissions /dev/bus/usb/001/006, 020664, uid=0, gid=0
preserve already existing symlink '/dev/char/189:5' to '../bus/usb/001/006'
created db file '/run/udev/data/c189:5' for '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5'
ACTION=add
BUSNUM=001
DEVNAME=/dev/bus/usb/001/006
DEVNUM=006
DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5
DEVTYPE=usb_device
DRIVER=usb
ID_BUS=usb
ID_MODEL=soloHD
ID_MODEL_ENC=soloHD
ID_MODEL_ID=8268
ID_REVISION=0100
ID_SERIAL=HCW_soloHD_0013953608
ID_SERIAL_SHORT=0013953608
ID_USB_INTERFACES=:ff0000:
ID_VENDOR=HCW
ID_VENDOR_ENC=HCW
ID_VENDOR_FROM_DATABASE=Hauppauge
ID_VENDOR_ID=2040
MAJOR=189
MINOR=5
PRODUCT=2040/8268/100
SUBSYSTEM=usb
TYPE=0/0/0
USEC_INITIALIZED=7794291
run: 'modprobe em28xx card=94'
run: 'echo 2040 8268 > /sys/bus/usb/drivers/em28xx/new_id'
Unload module index
Unloaded link configuration context.