1

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/$DEVNAME

Tutaj 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.