Re: Startup-/Shutdown Button for the Raspberry Pi 4

Jedi Tek'Unum <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
> On Jul 12, 2022, at 8:17 PM, Dr. Rolf Jansen - freebsd-rj at cyclaero.com <nxtzmchnyjrirskcrisaafakxcekosgmhdcricnnjyxomsvwpn@simplelogin.co> wrote:
> 
> One week ago I started with exploring the Raspberry Pi 4 B, which might be a substitute for the aging BeagleBone Blacks for my future projects.
> 
> I very much like the built-in power button facility of the BBB, and unfortunately the RPi 4 has nothing comparable - the one button to rule it all.
> 
> I read a lot of howtos and blog posts (mostly for Linux) and nothing was really worth to give it even a try, compared to live without the button. Well, this is not becoming an elaborated question, but here I am going to elaborate my solution for FreeBSD.
> 
> 1. I Prepared a momentary push button for connecting it to the RPi:
>            ___ 
>             | /
>             |/
>             /
>            /
>         +-o      o--------+
>         |        |        |
>         |       [R] 100 Ω |
>         |        |        |
>         o        o        o
>       Pin 5    Pin 6    Pin 13
>      (SCL 1)   (GND)   (GPIO 27)

Ok, I’ll bite. I’m not understanding this.

I imagine that the resistor is a current limit for the gpio pin and not the pullup.

Regardless of how it is wired, why use SCL1 which is pulsing? And how can any of this cause a boot?

Is this “magic” dependent on some quirk(s) of RPi? Will it work with others, like Rock64?

> 2. I created a shutdown daemon in C for FreeBSD, lurking for push button
>   events on a GPIO port: https://github.com/cyclaero/shutdd
> 
>   clang -g0 -O3 -fsigned-char -Wno-empty-body -Wno-parentheses shutdd.c -lgpio -s -o /usr/local/bin/shutdd
> 
>   shutdd [-p file] [-f] [-n] [-b] [-g] [-h]  
>    -p file    the path to the pid file [default: /var/run/shutdd.pid]  
>    -f         foreground mode, don't fork off as a daemon.  
>    -n         no console, don't fork off as a daemon.  
>    -b         GPIO bank id [default: 0].  
>    -g         GPIO line id [default: 27].  
>    -h         shows these usage instructions.  
> 
>   echo "/usr/local/bin/shutdd" >> /etc/rc.local 
> 
> Restart and ready for testing the RPi's Power Button.
> 
> shutdd does not poll the state of the GPIO port, but instead utilizes FreeBSD's user space interface for GPIO interrupts for lurking on state changes of the GPIO line - default GPIO.0.27. Therefore, no significant load is imposed on the CPU's.
> 
> After 2 hs of operation, in output of ps -ax:
> ...
> 550  -  Is     0:00.03 /usr/local/bin/shutdd
> ...
> 
> - No CPU load !!!
> 
> - Pressing the power button does the same as shutdown -p now
> 
> - Pressing the power button when the RPi is down but still connected to the 5 V power supply lets it starting up.
> 
> BTW, I left the RTC DS3231 on I2C 1. That means, the RTC and the power button share the same pins for SCL 1 and GND.
> 
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.