Temat: Uruchamianie rtl_433 na zwykłym użytkowniku (nie root)
Postanowiłem wypróbować pakiet rtl_433 i zobaczyć czy uda mi się wykorzystując starą malinkę odczytać temperatury z kilku bezprzewodowych czujników temperatury i wysłać do Home Assistanta. Przy okazji dowiedziałem się jak uruchomić rtl_433 na zwykłym koncie (nie root).
Generalnie rtl_433 wykorzystuje bibliotekę rtlsdr. Ta z kolei biblioteka wykorzystuje bibliotekę libusb. libusb komunikuje się z urządzeniami USB poprzez urządzenia w katalogu /dev/bus/usb. W przypadku Debiana reguły udev nadają tym urządzeniom odpowiednie uprawnienia. W przypadku OpenWRT nie ma niestety udev więc zrobiłem prosty skrypt hotplug który to robi dla moich dongli.
#
# location: /etc/hotplug.d/usb/50-rtl-sdr
#
# idVendor 0x0bda
# idProduct 0x2838
# bcdDevice 1.00
#
# idVendor 0x1d19
# idProduct 0x1101
# bcdDevice 1.00
#
[ "$PRODUCT" = 'bda/2838/100' -o "$PRODUCT" = '1d19/1101/100' ] || exit 0
[ "$ACTION" = add ] || exit 0
DEVSERIAL=$(cat /sys/$DEVPATH/serial)
echo "RTL-SDR[$PRODUCT,$DEVSERIAL]: /dev/$DEVNAME" > /dev/kmsg
chmod 0660 /dev/$DEVNAME
chown root:plugdev /dev/$DEVNAMETutaj postępuję jak w Debianie - utworzyłem systemową grupę plugdev i zmieniam uprawnienia i właściciela do urządzenia tak by członek tej grupy miał dostęp do urządzenia. Najprościej oczywiście nadać prawa 0666.
Przy okazji warto może wspomnieć, że skrypty hotplug w trybie "coldplug" (czyli przy starcie systemu) wykonywane są zanim uruchomiona zostanie usługa logowania. Komenda logger więc nie zadziała. Można wysłać komunikat do logera kernela tak jek to widać w powyższym skrypcie. Można też przekierować sobie komunikaty do jakiegoś pliku najlepiej w katalogu /tmp.