Dienst (rtl_stick.service) aktivieren funktioniert nicht (Raspberry Pi Zero mit Raspbian GNU/Linux 10 (buster) )

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Forum,

    auf einem Raspberry Pi Zero mit Raspbian GNU/Linux 10 (buster) habe ich "rtl-sdr" installiert u. einen RTL-Stick angeschlossen.

    Wenn ich die Software mit rtl_tcp -a 192.168.178.89 starte, kann ich über einen WinPC mit SDR# verschiedene Frequenzen tunen.

    Wenn ich den Dienst dauerhaft aktivieren möchte: sudo systemctl enable rtl_stick.service

    bekomme ich foldenden Fehlermeldung: Failed to enable unit: File rtl_stick.service: Invalid argument

    Die Datei rtl_stick.service liegt unter: /etc/systemd/system/

    -rw-r--r-- 1 root root 456 May 1 15:57 /etc/systemd/system/rtl_stick.service

    u. hat folgenden Inhalt:

    Ich wäre dankbar, wenn mir jemand erklären könnte, wie ich den Dienst dauerhaft aktivieren kann (dies ist mein erster Beitrag u. ich hoffe, das der Beitrag so weit OK ist...)

    Danke u. Gruß

    Kuno

  • Dienst (rtl_stick.service) aktivieren funktioniert nicht (Raspberry Pi Zero mit Raspbian GNU/Linux 10 (buster) )? Schau mal ob du hier fündig wirst!

  • Zur hilfreichsten Antwort springen
  • Was geben die folgenden Befehle aus?

    /sbin/ip l

    /sbin/ip -o -4 addr show dev eth0 | awk '{ print $4; }' | cut -d/ -f1

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Hallo Ilutz,

    Code
    pi@raspberrypi:~ $ /sbin/ip l
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DORMANT group default qlen 1000
        link/ether b8:27:eb:1a:52:10 brd ff:ff:ff:ff:ff:ff
    Code
    pi@raspberrypi:~ $ /sbin/ip -o -4 addr show dev eth0 | awk '{ print $4; }' | cut -d/ -f1
    Device "eth0" does not exist.
  • Du musst Zeile 10 im o.g. service-File (systemctl edit rtl_stick.service) ändern, "wlan0" statt "eth0". eth0 existiert nicht und deswegen die sysytemd Fehlermeldung.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (1. Mai 2021 um 18:26)

  • Nach der Anpassung:

    Code
    pi@raspberrypi:~ $ /sbin/ip -o -4 addr show dev wlan0 | awk '{ print $4; }' | cut -d/ -f1
    192.168.178.89
    pi@raspberrypi:~ $ sudo systemctl enable rtl_stick.service
    Failed to enable unit: File rtl_stick.service: Invalid argument
  • Ok, und wenn du deinen 1. Beitrag (Code..) ansiehst, siehst du, dass dort ein Zeilenumbruch drin ist, der da nicht hingehört.

    Korrigiere das, führe systemctl daemon-reload aus und dann systemctl start rtl_stick.service .

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Moin,

    also bei mir laufen aktuell 2 pi Zero w als sdr scanner.

    Aber ich frage mich, warum man den Server nicht in der rc.local einträgt? Bin da gerade etwas ratlos den letztlich ist der PI so ausgelastet das er eh nichts anderes mehr machen kann und der Zero W bringt eine hammer Latenz da spricht man locker von 30sec im Netzwerk bis mal eine reaktion kommt.

    Lars

  • Aber ich frage mich, warum man den Server nicht in der rc.local einträgt?

    Es wäre der derzeit empfohlene und universelle Weg Systemd zu nutzen. Allerdings sollte der Autor des Service-Files dann besser darauf verzichten, ein hart kodiertes Interface zu nutzen.

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • @Ilutz,

    für

    systemctl daemon-reload

    war ich "zu schnell"

    Code
    pi@raspberrypi:~ $ sudo systemctl enable rtl_stick.service
    Created symlink /etc/systemd/system/multi-user.target.wants/rtl_stick.service → /etc/systemd/system/rtl_stick.service.

    also ehrlich, ich hätte das nicht gewusst, aber der entsprechende Link wurde nun erzeugt, vielen Dank!

    Nach einem Neustart de Pi läuft der Service allerding nicht:

    pi@raspberrypi:~ $ ps -e | grep rtl_tcp

    pi@raspberrypi:~ $

    Manuell gestartet:

    pi@raspberrypi:~ $ ps -e | grep rtl_tcp

    1177 pts/0 00:00:06 rtl_tcp

    MagicBird

    sry, meinst Du den Link auf die "Installationsdoku" die ich verwendet habe?

  • Nach einem Neustart de Pi läuft der Service allerding nicht:

    Was sagen nach einem Neustart

    systemctl status rtl_stick.service

    journalctl -b -u rtl_stick.service dazu?

    Was passiert bei manuellem Aufruf von systemctl restart rtl_stick.service ?

    Evtl. ist das Netzwerk noch nicht komplett initialisiert, wenn die service-Unit gestartet wird.

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • pi@raspberrypi:~ $ systemctl status rtl_stick.service

    ● rtl_stick.service - RTL_Stick Service

    Loaded: loaded (/etc/systemd/system/rtl_stick.service; enabled; vendor preset

    Active: failed (Result: exit-code) since Sat 2021-05-01 19:20:09 BST; 13h ago

    Process: 410 ExecStart=/bin/bash -c /usr/bin/rtl_tcp -a $(/sbin/ip -o -4 addr

    Main PID: 410 (code=exited, status=1/FAILURE)

    May 01 19:20:09 raspberrypi bash[410]: [-f frequency to tune to [Hz]]

    May 01 19:20:09 raspberrypi bash[410]: [-g gain (default: 0 for auto)]

    May 01 19:20:09 raspberrypi bash[410]: [-s samplerate in Hz (default: 20

    May 01 19:20:09 raspberrypi bash[410]: [-b number of buffers (default: 1

    May 01 19:20:09 raspberrypi bash[410]: [-n max number of linked list buf

    May 01 19:20:09 raspberrypi bash[410]: [-d device index (default: 0)]

    May 01 19:20:09 raspberrypi bash[410]: [-P ppm_error (default: 0)]

    May 01 19:20:09 raspberrypi bash[410]: [-T enable bias-T on GPIO PIN 0 (

    May 01 19:20:09 raspberrypi systemd[1]: rtl_stick.service: Main process exited,

    May 01 19:20:09 raspberrypi systemd[1]: rtl_stick.service: Failed with result 'e

    lines 1-16/16 (END)


    pi@raspberrypi:~ $ journalctl -b -u rtl_stick.service

    -- Logs begin at Sat 2021-05-01 19:19:33 BST, end at Sun 2021-05-02 08:25:05 BST

    May 01 19:20:06 raspberrypi systemd[1]: Started RTL_Stick Service.

    May 01 19:20:09 raspberrypi bash[410]: /usr/bin/rtl_tcp: option requires an argu

    May 01 19:20:09 raspberrypi bash[410]: rtl_tcp, an I/Q spectrum server for RTL28

    May 01 19:20:09 raspberrypi bash[410]: Usage: [-a listen address]

    May 01 19:20:09 raspberrypi bash[410]: [-p listen port (default: 1234)]

    May 01 19:20:09 raspberrypi bash[410]: [-f frequency to tune to [Hz]]

    May 01 19:20:09 raspberrypi bash[410]: [-g gain (default: 0 for auto)]

    May 01 19:20:09 raspberrypi bash[410]: [-s samplerate in Hz (default: 20

    May 01 19:20:09 raspberrypi bash[410]: [-b number of buffers (default: 1

    May 01 19:20:09 raspberrypi bash[410]: [-n max number of linked list buf

    May 01 19:20:09 raspberrypi bash[410]: [-d device index (default: 0)]

    May 01 19:20:09 raspberrypi bash[410]: [-P ppm_error (default: 0)]

    May 01 19:20:09 raspberrypi bash[410]: [-T enable bias-T on GPIO PIN 0 (

    May 01 19:20:09 raspberrypi systemd[1]: rtl_stick.service: Main process exited,

    May 01 19:20:09 raspberrypi systemd[1]: rtl_stick.service: Failed with result 'e

    lines 1-16/16 (END)


    pi@raspberrypi:~ $ sudo systemctl restart rtl_stick.service

    pi@raspberrypi:~ $ systemctl status rtl_stick.service

    ● rtl_stick.service - RTL_Stick Service

    Loaded: loaded (/etc/systemd/system/rtl_stick.service; enabled; vendor preset

    Active: active (running) since Sun 2021-05-02 08:28:30 BST; 21s ago

    Main PID: 1159 (rtl_tcp)

    Tasks: 2 (limit: 877)

    CGroup: /system.slice/rtl_stick.service

    └─1159 /usr/bin/rtl_tcp -a 192.168.178.89

    May 02 08:28:30 raspberrypi systemd[1]: Started RTL_Stick Service.

    May 02 08:28:30 raspberrypi bash[1159]: Found 1 device(s):

    May 02 08:28:30 raspberrypi bash[1159]: 0: Realtek, RTL2838UHIDIR, SN: 000000

    May 02 08:28:30 raspberrypi bash[1159]: Using device 0: Generic RTL2832U OEM

    May 02 08:28:30 raspberrypi bash[1159]: Detached kernel driver

    May 02 08:28:31 raspberrypi bash[1159]: Found Rafael Micro R820T tuner

    May 02 08:28:31 raspberrypi bash[1159]: [R82XX] PLL not locked!

    May 02 08:28:31 raspberrypi bash[1159]: Tuned to 100000000 Hz.

    Wäre es -in diesem Fall- ggf. sinvoller, den Pi per LAN anzubinden?

  • Das Problem ist, dass das Netzwerk zur Zeit des Start der service-Unit nicht komplett initialisiert ist und deswegen die IP-Abfrage ein leeres/falsches Ergebnis an rtl_tcp liefert. Eigentlich sollte das After=network-online,target dafür sorgen, dass das alles funktioniert, tut es aber meist nicht.

    Ändere die service-Unit mal ab und füge eine Wartezeit ein:

    Code
    ExecStart=/usr/bin/sleep 30; /bin/bash -c "/usr/bin/rtl_tcp -a $(/sbin/ip -o -4 addr show dev eth0 | awk '{ print $4; }' | cut -d/ -f1) "

    Alternativ (aus RE: Systemd und Netzwerk) die Abhängigkeiten anders definieren, könntest du auch mal testen.

    Code
    Requires=time-sync.target
    Requires=systemd-time-wait-sync.service
    After=time-sync.target
    After=systemd-time-wait-sync.service

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (2. Mai 2021 um 09:52)

  • @Ilutz

    das sieht gut aus:

    pi@raspberrypi:~ $ sudo ExecStart=/usr/bin/sleep 30; /bin/bash -c "/usr/bin/rtl_tcp -a $(/sbin/ip -o -4 addr show dev wlan0 | awk '{ print $4; }' | cut -d/ -f1) "

    sudo: 30: command not found

    Found 1 device(s):

    0: Realtek, RTL2838UHIDIR, SN: 00000001

    Using device 0: Generic RTL2832U OEM

    Detached kernel driver

    Found Rafael Micro R820T tuner

    [R82XX] PLL not locked!

    Tuned to 100000000 Hz.

    listening...

    Use the device argument 'rtl_tcp=192.168.178.89:1234' in OsmoSDR (gr-osmosdr) source

    to receive samples in GRC and control rtl_tcp parameters (frequency, gain, ...).


    pi@raspberrypi:~ $ systemctl status rtl_stick.service

    ● rtl_stick.service - RTL_Stick Service

    Loaded: loaded (/etc/systemd/system/rtl_stick.service; enabled; vendor preset

    Active: active (running) since Sun 2021-05-02 09:01:48 BST; 59s ago

    Main PID: 421 (rtl_tcp)

    Tasks: 2 (limit: 877)

    CGroup: /system.slice/rtl_stick.service

    └─421 /usr/bin/rtl_tcp -a 192.168.178.89

    May 02 09:01:48 raspberrypi systemd[1]: Started RTL_Stick Service.

    May 02 09:01:51 raspberrypi bash[421]: Found 1 device(s):

    May 02 09:01:51 raspberrypi bash[421]: 0: Realtek, RTL2838UHIDIR, SN: 0000000

    May 02 09:01:51 raspberrypi bash[421]: Using device 0: Generic RTL2832U OEM

    May 02 09:01:51 raspberrypi bash[421]: Detached kernel driver

    May 02 09:01:52 raspberrypi bash[421]: Found Rafael Micro R820T tuner

    May 02 09:01:52 raspberrypi bash[421]: [R82XX] PLL not locked!

    May 02 09:01:52 raspberrypi bash[421]: Tuned to 100000000 Hz.

    lines 1-16/16 (END)

    pi@raspberrypi:~ $ journalctl -b -u rtl_stick.service

    -- Logs begin at Sun 2021-05-02 09:01:15 BST, end at Sun 2021-05-02 09:04:11 BST

    May 02 09:01:48 raspberrypi systemd[1]: Started RTL_Stick Service.

    May 02 09:01:51 raspberrypi bash[421]: Found 1 device(s):

    May 02 09:01:51 raspberrypi bash[421]: 0: Realtek, RTL2838UHIDIR, SN: 0000000

    May 02 09:01:51 raspberrypi bash[421]: Using device 0: Generic RTL2832U OEM

    May 02 09:01:51 raspberrypi bash[421]: Detached kernel driver

    May 02 09:01:52 raspberrypi bash[421]: Found Rafael Micro R820T tuner

    May 02 09:01:52 raspberrypi bash[421]: [R82XX] PLL not locked!

    May 02 09:01:52 raspberrypi bash[421]: Tuned to 100000000 Hz.

    Nach dem Neustart kann ich von SDR# die Frequenzen einstellen, m.a.W. das war die Lösung für mein Problem!

    Bei einer LAN-Anbindung hätte ich die Probleme vermutlich nicht gehabt?

    Ich möchte mich recht herzlich bei Dir für die schnelle u. aus meiner Sicht kompetente Hilfe u. Lösung bedanken!

  • das sieht gut aus:

    Alternativ kannst Du auch mit:

    Code
    net.ipv4.ip_nonlocal_bind = 1

    in der sysctl.conf (oder gleichwertig) testen.

    Denn Du willst einen Prozess an eine IP-Adresse "binden", die evtl. zum Zeitpunkt des starten des Prozesses noch nicht zugewiesen ist. Mit "ip_nonlocal_bind" sollte das möglich sein.

    Eine andere Alternative wäre eine timer-unit, mit der z. B. 30 Sekunden nach dem booten, die (deaktivierte) service-unit gestartet werden kann.

    EDIT:

    BTW: Als abhängigkeit für die service-unit, kannst Du hier zusätzlich auch das Vorhandensein der NIC (wlan0) setzen. Z. B.:

    Code
    After=sys-subsystem-net-devices-wlan0.device

    Siehe z. B. jetzt die Ausgabe von:

    Code
    systemctl status sys-subsystem-net-devices-wlan0.device

    Evtl. (für "Gürtel und Hosenträger") auch:

    Code
    Requires=systemd-time-wait-sync.service
    After=systemd-time-wait-sync.service

    , denn:

    Zitat


    systemd-time-wait-sync.service - Wait Until Kernel Time Synchronized

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (2. Mai 2021 um 10:32)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!