fzonno
Posts: 5
Joined: Thu Mar 26, 2020 11:53 am

Far partire LIRC automaticamente all'avvio del Rasberry

Thu Mar 26, 2020 12:01 pm

Ciao a tutti
ho un Rasberry Pi 4 che uso come server per Openhab.
Per comandare il televisore tramite infrarossi uso LIRC che funziona benissimo.
Ogni qualvolta va via la luce e quindi il Rasberry si riavvia sono costretto da riga di comando ad avviare LIRC tramite il comando
sudo /etc/init.d/lircd start.

Vorrei far fare questo in automatico al BOOT del Rasberry.
Come posso fare?
Potete aiutarmi?
Grazie

willy_pinguino
Posts: 774
Joined: Sun Jan 22, 2017 9:11 pm

Re: Far partire LIRC automaticamente all'avvio del Rasberry

Sat Mar 28, 2020 12:51 am

puoi provare ad inserire il comando in init.d o usare cron, entrambe le vie sono percorribili, però non ti do altre indicazioni altrimenti diventa troppo facile :-P

fzonno
Posts: 5
Joined: Thu Mar 26, 2020 11:53 am

Re: Far partire LIRC automaticamente all'avvio del Rasberry

Sat Mar 28, 2020 8:58 am

Ciao
partiamo da zero
Appeto faccio il reboot ho la seguente situazione

Code: Select all

[09:42:08] [email protected]:~$ systemctl list-units --type service --all | grep -i lirc
  irexec.service                                              loaded    inactive dead    Handle events from IR remotes decoded by lircd(8)
● lircd-setup.service                                         loaded    failed   failed  lircd(8) initialization helper tool
  lircd-uinput.service                                        loaded    inactive dead    Forward LIRC button presses as uinput events
● lircd.service                                               loaded    failed   failed  Flexible IR remote input/output application support
  lircmd.service                                              loaded    inactive dead    Convert IR remotes button presses to mouse movements and clicks
[09:42:14] [email protected]:~$
Ho provato a creare uno script avvio_lirc.sh in /etc/init.d/

Code: Select all

#!/bin/bash
### BEGIN INIT INFO
# Provides:          avvio_lirc.sh
# Required-Start:    hal
# Required-Stop:     
# Should-Start:      
# Should-Stop:       
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Avvio automatico LIRC
# Description:      Avvio automatico LIRC
### END INIT INFO

/etc/init.d/lircd start


exit 0

ho eseguito lo script

Code: Select all

 
 sudo chmod +x /etc/init.d/avvio_lirc.sh
 sudo systemctl enable avvio_lirc.sh
 sudo update-rc.d avvio_lirc.sh defaults
 
alla fine la situazione è la seguente

Code: Select all

[09:52:33] [email protected]:~$ systemctl list-units --type service --all | grep -i lirc
  avvio_lirc.service                                          loaded    inactive dead    LSB: Avvio automatico LIRC
  irexec.service                                              loaded    inactive dead    Handle events from IR remotes decoded by lircd(8)
● lircd-setup.service                                         loaded    failed   failed  lircd(8) initialization helper tool
  lircd-uinput.service                                        loaded    inactive dead    Forward LIRC button presses as uinput events
● lircd.service                                               loaded    failed   failed  Flexible IR remote input/output application support
  lircmd.service                                              loaded    inactive dead    Convert IR remotes button presses to mouse movements and clicks
[09:52:38] [email protected]:~$

riavvio il tutto e rilancio il comando

Code: Select all

[09:54:39] [email protected]:~$ systemctl list-units --type service --all | grep -i lirc
  avvio_lirc.service                                          loaded    active   exited  LSB: Avvio automatico LIRC
  irexec.service                                              loaded    inactive dead    Handle events from IR remotes decoded by lircd(8)
● lircd-setup.service                                         loaded    failed   failed  lircd(8) initialization helper tool
  lircd-uinput.service                                        loaded    inactive dead    Forward LIRC button presses as uinput events
● lircd.service                                               loaded    failed   failed  Flexible IR remote input/output application support
  lircmd.service                                              loaded    inactive dead    Convert IR remotes button presses to mouse movements and clicks
[09:54:59] [email protected]:~$

In sostanza avvio_lirc va ma lircd non ancora.

se provo ad avviarlo manualmente ho

[code]
[09:55:04] [email protected]:~$ sudo service avvio_lirc.sh start
[sudo] password for openhabian:
[09:56:18] [email protected]:~$ systemctl list-units --type service --all | grep -i lirc
  avvio_lirc.service                                          loaded    active   exited  LSB: Avvio automatico LIRC
  irexec.service                                              loaded    inactive dead    Handle events from IR remotes decoded by lircd(8)
● lircd-setup.service                                         loaded    failed   failed  lircd(8) initialization helper tool
  lircd-uinput.service                                        loaded    inactive dead    Forward LIRC button presses as uinput events
● lircd.service                                               loaded    failed   failed  Flexible IR remote input/output application support
  lircmd.service                                              loaded    inactive dead    Convert IR remotes button presses to mouse movements and clicks
[09:56:44] [email protected]:~$ ^C

Se attivo LIRCD manualmente va

[code]
[09:57:18] [email protected]:~$ sudo /etc/init.d/lircd start
[ ok ] Starting lircd (via systemctl): lircd.service.
[09:57:47] [email protected]:~$ systemctl list-units --type service --all | grep -i lirc
  avvio_lirc.service                                          loaded    active   exited  LSB: Avvio automatico LIRC
  irexec.service                                              loaded    inactive dead    Handle events from IR remotes decoded by lircd(8)
  lircd-setup.service                                         loaded    inactive dead    lircd(8) initialization helper tool
  lircd-uinput.service                                        loaded    inactive dead    Forward LIRC button presses as uinput events
  lircd.service                                               loaded    active   running Flexible IR remote input/output application support
  lircmd.service                                              loaded    inactive dead    Convert IR remotes button presses to mouse movements and clicks
[09:57:49] [email protected]:~$

Last edited by fzonno on Sat Mar 28, 2020 9:15 am, edited 4 times in total.

fzonno
Posts: 5
Joined: Thu Mar 26, 2020 11:53 am

Re: Far partire LIRC automaticamente all'avvio del Rasberry

Sat Mar 28, 2020 9:00 am

Ho provato anche a mettere in /etc/rc.local prima di exit 0 il comando

Code: Select all

sudo /etc/init.d/lircd start
ma al riavvio non parte automaticamente dicendomi sempre che

Code: Select all

[09:54:39] [email protected]:~$ systemctl list-units --type service --all | grep -i lirc
  avvio_lirc.service                                          loaded    active   exited  LSB: Avvio automatico LIRC
  irexec.service                                              loaded    inactive dead    Handle events from IR remotes decoded by lircd(8)
● lircd-setup.service                                         loaded    failed   failed  lircd(8) initialization helper tool
  lircd-uinput.service                                        loaded    inactive dead    Forward LIRC button presses as uinput events
● lircd.service                                               loaded    failed   failed  Flexible IR remote input/output application support
  lircmd.service                                              loaded    inactive dead    Convert IR remotes button presses to mouse movements and clicks
[09:54:59] [email protected]:~$ ^C
Cron non l'ho provato e non so neanche come usarlo ma penso che il problema sia un altro.

Potete aiutarmi per favore?

fzonno
Posts: 5
Joined: Thu Mar 26, 2020 11:53 am

Re: Far partire LIRC automaticamente all'avvio del Rasberry

Sat Mar 28, 2020 9:01 am

willy_pinguino wrote:
Sat Mar 28, 2020 12:51 am
puoi provare ad inserire il comando in init.d o usare cron, entrambe le vie sono percorribili, però non ti do altre indicazioni altrimenti diventa troppo facile :-P
A me non sembra cosi facile :roll:

fzonno
Posts: 5
Joined: Thu Mar 26, 2020 11:53 am

Re: Far partire LIRC automaticamente all'avvio del Rasberry

Sat Mar 28, 2020 9:31 am

Comunque ho risolto

ho aggiunto nello script prima del comando l'attesa "sleep 20".

Code: Select all

#!/bin/bash
### BEGIN INIT INFO
# Provides:          avvio_lirc.sh
# Required-Start:    hal
# Required-Stop:     
# Should-Start:      
# Should-Stop:       
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Avvio automatico LIRC
# Description:      Avvio automatico LIRC
### END INIT INFO

sleep 20
/etc/init.d/lircd start


exit 0
Probabilmente c'era qualche altro servizio che me lo buttava giù.

willy_pinguino
Posts: 774
Joined: Sun Jan 22, 2017 9:11 pm

Re: Far partire LIRC automaticamente all'avvio del Rasberry

Sat Mar 28, 2020 10:14 pm

Intanto mi ero confuso, ed il comando (come hai giustamente trovato) andava inserito in rc.local

giusto anche mettere la riga di chiamata allo script subito prima di

Code: Select all

exit 0
perchè altre chiamate in rc.local potrebbero essere necessarie al funzionamento stesso dello script che richiami tu.

se ancora non funziona, come hai scoperto basta inserire un timeout, lo

Code: Select all

sleep 20
che dice al raspi di aspettare 20 secondi prima di eseguire le righe successive... non credo ci fosse concorrenza con qualche altro servizio, ma probabilmente per essere lanciato lircd ha bisogno che altri servizi siano già lanciati e funzionanti prima di poter essere lanciato con successo.

lo script che hai creato direi che fa la stessa cosa dello script originale, il problema era sempre che bisognava che tutti i servizi e le risorse fossero disponibili prima di dare il comando quindi lo sleep che hai dato risolve il problema.

magari non era immediato, ma non era difficile e come vedi hai imparato parecchio di più su come partono i demoni e su come inserire l'avvio automatico di un servizio :)

cron è la chiamata ad un servizio che si basa sul demone crond, quindi viene lanciato all'avvio del sistema operativo come tutti gli altri demoni, tra gli ultimi, e si occupa di svolgere dei compiti in base alle preferenze che gli imposti.
può far partire programmi o servizi, svolgere operazioni o lanciare script in rapporto ad avvenimenti quali avvio, riavvio o spegnimento del computer, tipo: appena avviato, 10 minuti dopo l'avvio o riavvio, prima di spegnersi, ogni 10 minuti, ogni 2 giorni, 2 volte all'anno... e cose del genere.
siccome è uno degli ultimi servizi ad essere lanciato in avvio e tra i primi ad essere chiuso in spegnimento o riavvio, dire a cron di eseguire uno script come il lancio di lirc al riavvio, dovrebbe bastare a garantire che il comando venga eseguito solo quando tutti gli altri servizi di sistema sono già avviati e dovrebbe bastare a garantirne il funzionamento, senza il bisogno del delay di 20 secondi che gli hai dato con il comando sleep in rc.local

Return to “Italiano”