I have a DVB-T device I want to use within a docker app.
My problem is that the device requires a firmware file placed at /lib/firmware.
This path is Read Only in scale.
How can I get around this?
With a VM.
Thank you for quick answer. But I would like it to be within apps/docker is that not possible or do you just prefer VM?
It’s possible, it’s not advised.
The root file system can be remounted as rw, but it’s easy to shoot yourself in the foot by doing that. And when you do, you’re going to have a harder time getting help.
TrueNAS is not a Linux distro, it’s a package of tuned software marketed as appliance software.
You CAN tinker with it, but when you do so you’re on your own. This is fine for advanced users, less so for newcomers. It comes down to being able to make an informed choice about it.
In this particular instance I would rather use the DVB-T tuner with a STB appliance, and give the appliance access to a share on the NAS.
How do you remount the filesystem as rw?
I only need to copy one file to /lib/firmware. I do understand that the file i properbly lost when upgradeing my nas software. But if its only one file I think I can mange that.
Can you tell the system to look for the driver in another location?
like /home/username/lib/firmware
Solution found. But is not recommend to use in a production enviroment.
make Writable:
sudo /usr/sbin/zfs set readonly=off boot-pool/ROOT/24.10.2/usr
do your edit
sudo cp ~/dvb-demod-si2168-b40-01.fw /usr/lib/firmware
make Readonly again:
sudo /usr/sbin/zfs set readonly=on boot-pool/ROOT/24.10.2/usr
I’m late to the party, but found this when searching for a solution myself.
Rather than messing with the filesystem, you can set additional firmware directories to load from by writing to a /sys location at runtime.
Create (eg) /mnt/tank/firmware_blobs and dump the firmware in there. Create load_dvb_firmware.sh in the same folder, add the following and set it executable. Use a post-init script from the gui to trigger the script.
Here’s what I’m using for a Haupage WinTV Tuner
#!/bin/bash
# Tell the kernel firmware loader to check this custom directory first
echo -n "/mnt/tank/firmware_blobs" > /sys/module/firmware_class/parameters/path
# Unload the Hauppauge bridge and frontend drivers
modprobe -r em28xx_dvb em28xx_rc em28xx
# Reload the DVB module (this automatically pulls in the parent em28xx)
modprobe em28xx_dvb
# Optional: Reload the remote control module if you use the Hauppauge remote
modprobe em28xx_rc
Thanks for your input!
I will try this next time I need to update the core