Hello!
In this little How To I will describe what is necessary to use the Fan and the Power button of the Argon One Case for the Raspberry Pi 4B together with a piCorePLayer (7.x) installation.
I assume that the Raspberry Pi 4B is installed inside the case and piCorePlayer (7.x) is installed. Also you know the IP-address or the name of this Pi.
For the first step we need to login to the Pi via ssh. This can be done on the Mac with the normal Terminal.app or on a Windows PC with eg. putty. I will describe her only the way to get to the Pi for a Mac.
So start the Terminal.app, then input:
(without the "<" and ">"!)Code:ssh tc@<IP or name of the Pi>
You will then be asked for the password of the user "tc" which is "piCore" if you didn't change it.
Then we create the daemon file which is later used to watch for the temperature and for the Power button presses:
Once it is started (you see only a few lines with "~" and at the end the filename and a few other things) you press "i".Code:vi argononed.py
Then you change back to this browser window and select the text of the following python file:
Then you press "Command-C" (on the PC it would be "Control-C") and change back to the Terminal.app window.Code:#!/usr/bin/python import smbus import RPi.GPIO as GPIO import os import time from threading import Thread rev = GPIO.RPI_REVISION bus = smbus.SMBus(1) GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) shutdown_pin=4 GPIO.setup(shutdown_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) def shutdown_check(): while True: pulsetime = 1 GPIO.wait_for_edge(shutdown_pin, GPIO.RISING) time.sleep(0.01) while GPIO.input(shutdown_pin) == GPIO.HIGH: time.sleep(0.01) pulsetime += 1 if pulsetime >=2 and pulsetime <=3: os.system("pcp rb") elif pulsetime >=4 and pulsetime <=5: os.system("pcp sd") def get_fanspeed(tempval, configlist): for curconfig in configlist: curpair = curconfig.split("=") tempcfg = float(curpair[0]) fancfg = int(float(curpair[1])) if tempval >= tempcfg: return fancfg return 0 def load_config(fname): newconfig = [] try: with open(fname, "r") as fp: for curline in fp: if not curline: continue tmpline = curline.strip() if not tmpline: continue if tmpline[0] == "#": continue tmppair = tmpline.split("=") if len(tmppair) != 2: continue tempval = 0 fanval = 0 try: tempval = float(tmppair[0]) if tempval < 0 or tempval > 100: continue except: continue try: fanval = int(float(tmppair[1])) if fanval < 0 or fanval > 100: continue except: continue newconfig.append( "{:5.1f}={}".format(tempval,fanval)) if len(newconfig) > 0: newconfig.sort(reverse=True) except: return [] return newconfig def temp_check(): address=0x1a prevblock=0 while True: fanconfig = ["65=100", "60=55", "57=30", "55=10", "30=0"] tmpconfig = load_config("/home/tc/argononed.conf") if len(tmpconfig) > 0: fanconfig = tmpconfig temp = os.popen("vcgencmd measure_temp").readline() temp = temp.replace("temp=","") val = float(temp.replace("'C","")) block = get_fanspeed(val, fanconfig) if block < prevblock: time.sleep(30) prevblock = block try: bus.write_byte(address,block) except IOError: temp="" time.sleep(30) try: t1 = Thread(target = shutdown_check) t2 = Thread(target = temp_check) t1.start() t2.start() except: t1.stop() t2.stop() GPIO.cleanup()
There you simply press "Command-V" (on the PC it would be "Control-V").
Now you should see the python file inside your editor.
Now press "ESC", then ":wq"
Then we create the fan configuration file which is later used to control at which temperature the fan should be set to which fan speed:
Once it is started (you see only a few lines with "~" and at the end the filename and a few other things) you press "i".Code:vi argononed.conf
Then you change back to this browser window and select the text of the following configuration file:
Then you press "Command-C" (on the PC it would be "Control-C") and change back to the Terminal.app window.Code:# # Argon One Fan Configuration # # List below the temperature (Celsius) and fan speed (in percent) pairs # Use the following form: # min.temperature=speed # # Example: # 30=0 # 55=10 # 57=30 # 60=55 # 65=100 # # NOTE: Lines beginning with # are ignored # # Start below: 30=0 55=10 57=30 60=55 65=100
There you simply press "Command-V" (on the PC it would be "Control-V").
Now you should see the python file inside your editor.
Now press "ESC", then ":wq"
You can now close the Terminal.app, as you have done everything that is needed to be done on the shell.
If you want you can change the temperatures and the corresponding percent values of the fan in the configuration file.
You have there the temperature in °C and after the "=" the percent value of the fan. You can experiment with them.
Now all other things have to be done in a browser, so open one and input:
(without the "<" and ">"!)Code:http://<IP or name of your Pi>
On the piCorePlayer page chose "Main":
At the bottom of the page chose "Beta":
Then chose "Extensions":
On the following page wait until all the five green checkmarks appear and then chose "Available":
There you have to chose first:
rpi-vc.tcz
then press on "Load", then you have to chose:
i2c-tools.tcz
then press on "Load", then you have to chose:
python3.8-rpi-gpio.tcz
then press "Load" again, then you have to chose:
python3.8-smbus.tcz
then press "Load" again.
If some of these extension are already installed, it is OK, you don't have to load them again.
Then you have to chose "Tweaks" at the top:
Read further in the next message.
Results 1 to 10 of 78
-
2020-12-31, 19:14 #1
[How To] Using the Argon One case for the Pi 4B together with piCorePlayer (7.x)
Last edited by carsten_h; 2021-02-05 at 09:56.
Pi4 4GB piCorePlayer with LMS and Squeezelite for USB inside an Argon One case
Pi3B+ (7" Display, Hifiberry DAC+ Pro) piCorePlayer with Squeezlite/Jivelite for Hifiberry and Bluetooth headphone inside a SmartiPi touch case
Two Airport Express
Ikea Symfonisk
-
2020-12-31, 19:14 #2
On that page input the following "User Commands" into the appropriate fields:
Code:User Command #1: modprobe i2c-dev User Command #2: python3 /home/tc/argononed.py
Now "Reboot" via the Main page and now everything should be working:
Short press (ca. 3 seconds) of the Power button: Shutdown
Double press of the Power button: Reboot
Long press of the Power button: Hard switching the Pi off
The fan should be working also, when the temperature reaches the values of the table in the python script/the configuration file if there is one.
If you later make changes to the script argononed.py or to the argononed.conf file, you have to use the button "Backup" on the Main page again, to save the changes to your bootdevice!
If you make changes to the argononed.conf file, they will be loaded after 30 seconds and you will hear the changes in fanspeed directly.
Here is one addition of @chill:
If you want that every time the Shutdown or the Reboot is done via the power button the actual configuration of piCorePlayer is saved, you can change theses lines at the beginning of the argononed.py script:
Code:def shutdown_check(): while True: pulsetime = 1 GPIO.wait_for_edge(shutdown_pin, GPIO.RISING) time.sleep(0.01) while GPIO.input(shutdown_pin) == GPIO.HIGH: time.sleep(0.01) pulsetime += 1 if pulsetime >=2 and pulsetime <=3: os.system("pcp rb") elif pulsetime >=4 and pulsetime <=5: os.system("pcp sd")
Code:def shutdown_check(): while True: pulsetime = 1 GPIO.wait_for_edge(shutdown_pin, GPIO.RISING) time.sleep(0.01) while GPIO.input(shutdown_pin) == GPIO.HIGH: time.sleep(0.01) pulsetime += 1 if pulsetime >=2 and pulsetime <=3: os.system("pcp br") elif pulsetime >=4 and pulsetime <=5: os.system("pcp bs")
Last edited by carsten_h; 2021-01-18 at 04:52.
Pi4 4GB piCorePlayer with LMS and Squeezelite for USB inside an Argon One case
Pi3B+ (7" Display, Hifiberry DAC+ Pro) piCorePlayer with Squeezlite/Jivelite for Hifiberry and Bluetooth headphone inside a SmartiPi touch case
Two Airport Express
Ikea Symfonisk
-
2020-12-31, 23:08 #3
[How To] Using the Argon One case for thePi 4B together with piCorePlayer (7.x)
> In this little How To I will describe what is necessary to use the Fan
> and the Power button of the Argon One Case for the Raspberry Pi 4B
> together with a piCorePLayer (7.x) installation.
You should try to get this on docs.picoreplayer.org. See
https://forums.slimdevices.com/showt...-Documentation
--
Michael
-
2021-01-01, 03:45 #4Pi4 4GB piCorePlayer with LMS and Squeezelite for USB inside an Argon One case
Pi3B+ (7" Display, Hifiberry DAC+ Pro) piCorePlayer with Squeezlite/Jivelite for Hifiberry and Bluetooth headphone inside a SmartiPi touch case
Two Airport Express
Ikea Symfonisk
-
2021-01-01, 11:02 #5
- Join Date
- Nov 2009
- Location
- Seattle, WA USA
- Posts
- 882
Hi Carsten,
I think I screwed something up, but I'm pretty sure I know what I did.
Is there any way I can delete everything and start over?? Also, if I have the extensions already loaded, and user commands already saved, do I need to delete them, too.
Also, when I try again and think it's all done, and picCorePlayer is rebooted, etc., is there any way to verify via SSH that everything installed correctly?
Thanks.Last edited by rgro; 2021-01-01 at 12:11.
Rg
System information
------------------------
Main: RPI4B/PiCorePlayer/LMS> RPI4B/piCoreplayer/Squeezelite > USB>RME ADI-2 DAC > Benchmark AHB2 > Revel Performa F208 speakers, 2X REL R-305 subs.
Home Theatre: RPI4 B/HifiBerry Dac+ Pro>Pioneer VSX 919 > Energy Take 5 Classic 5.1.
LMS 8.1.2 - 1612773843 on RPI4B with 1tb Samsung T5 SSD.
-
2021-01-01, 13:28 #6
You can try to call "sudo modprobe i2c-dev" on the shell. Normally there should nothing be seen. If there is something missing, I would expect an error.
But I found an error I think, the second command should be "sudo python3 /home/tc/argononed.py". I don't know why I had it working without "sudo".
So, if you call this second command also nothing should be visible and it should not come back to the prompt. If you press "Control-c" then, there should be this message:
"Exception ignored in sys.unraisablehook: <built-in function unraisablehook>
KeyboardInterrupt" and you should be back at the prompt.
You can also try if the temperature measurement is working by calling: "sudo vcgencmd measure_temp"
You should get back something like: "temp=42.8'C".
You can look if the file argononed.py is existing with "ll", there should be this line shown: "-rw-r--r-- 1 tc staff 2288 Dec 11 12:20 argononed.py".
And if you call "cat argononed.py" you should see the contents of the file like it is shown in the first post here.
That's all I can think of in the moment.Last edited by carsten_h; 2021-01-01 at 13:32.
Pi4 4GB piCorePlayer with LMS and Squeezelite for USB inside an Argon One case
Pi3B+ (7" Display, Hifiberry DAC+ Pro) piCorePlayer with Squeezlite/Jivelite for Hifiberry and Bluetooth headphone inside a SmartiPi touch case
Two Airport Express
Ikea Symfonisk
-
2021-01-01, 15:26 #7
- Join Date
- Nov 2009
- Location
- Seattle, WA USA
- Posts
- 882
Hi Carsten,
Thanks again. I tried the first four things and here is what I got:
1.) tc@piCoreLMS:~$ sudo modprobe i2c-dev YES, NOTHING SEEN.
2.) tc@piCoreLMS:~$ sudo python3 /home/tc/argononed.py
File "/home/tc/argononed.py", line 102
while True:
^
IndentationError: unexpected indent
3.) tc@piCoreLMS:~$ ^C NOTHING HAPPENED.
4.) tc@piCoreLMS:~$ sudo vcgencmd measure_temp THIS SEEMS FINE.
temp=36.5'C
5.) Then, I typed in "cat argonone.py" and see this:
tc@piCoreLMS:~$ cat argononed.py
i
#!/usr/bin/python
import smbus
import RPi.GPIO as GPIO
import os
import time
from threading import Thread
rev = GPIO.RPI_REVISION
if rev == 2 or rev == 3:
bus = smbus.SMBus(1)
else:
bus = smbus.SMBus(0)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
shutdown_pin=4
GPIO.setup(shutdown_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
def shutdown_check():
while True:
pulsetime = 1
GPIO.wait_for_edge(shutdown_pin, GPIO.RISING)
time.sleep(0.01)
while GPIO.input(shutdown_pin) == GPIO.HIGH:
time.sleep(0.01)
pulsetime += 1
if pulsetime >=2 and pulsetime <=3:
os.system("pcp rb")
elif pulsetime >=4 and pulsetime <=5:
os.system("pcp sd")
def get_fanspeed(tempval, configlist):
for curconfig in configlist:
curpair = curconfig.split("=")
tempcfg = float(curpair[0])
fancfg = int(float(curpair[1]))
if tempval >= tempcfg:
return fancfg
return 0
def load_config(fname):
newconfig = []
try:
with open(fname, "r") as fp:
for curline in fp:
if not curline:
continue
tmpline = curline.strip()
if not tmpline:
continue
if tmpline[0] == "#":
continue
tmppair = tmpline.split("=")
if len(tmppair) != 2:
continue
tempval = 0
fanval = 0
try:
tempval = float(tmppair[0])
if tempval < 0 or tempval > 100:
continue
except:
continue
try:
fanval = int(float(tmppair[1]))
if fanval < 0 or fanval > 100:
continue
except:
continue
newconfig.append( "{:5.1f}={}".format(tempval,fanval))
if len(newconfig) > 0:
newconfig.sort(reverse=True)
except:
return []
return newconfig
def temp_check():
fanconfig = ["65=100", "60=55", "57=30", "55=10", "30=0"]
tmpconfig = load_config("etc/argononed.conf")
if len(tmpconfig) > 0:
fanconfig = tmpconfig
address=0x1a
prevblock=0
while True:
temp = os.popen("vcgencmd measure_temp").readline()
temp = temp.replace("temp=","")
val = float(temp.replace("'C",""))
block = get_fanspeed(val, fanconfig)
if block < prevblock:
time.sleep(30)
prevblock = block
try:
bus.write_byte(address,block)
except IOError:
temp=""
time.sleep(30)
try:
t1 = Thread(target = shutdown_check)
t2 = Thread(target = temp_check)
t1.start()
t2.start()
except:
t1.stop()
t2.stop()
GPIO.cleanup()
ck=0
while True:
temp = os.popen("vcgencmd measure_temp").readline()
temp = temp.replace("temp=","")
val = float(temp.replace("'C",""))
block = get_fanspeed(val, fanconfig)
if block < prevblock:
time.sleep(30)
prevblock = block
try:
bus.write_byte(address,block)
except IOError:
temp=""
time.sleep(30)
try:
t1 = Thread(target = shutdown_check)
t2 = Thread(target = temp_check)
t1.start()
t2.start()
except:
t1.stop()
t2.stop()
GPIO.cleanup()
- argononed.py 100/100 100%
tc@piCoreLMS:~$
I tried to type in "||" (two vertical bars), but it didn't accept this command. Maybe it's not supposed to be vertical bars???
tc@piCoreLMS:~$ ||
-sh: syntax error: unexpected "||"
Finally, to check and see if I could change the fan settings, I typed in "fanconfig", but this is what came back. What am I doing wrong?
tc@piCoreLMS:~$ fanconfig
-sh: fanconfig: not found
So, maybe it looks like things are more o.k. than I thought??
CheersLast edited by rgro; 2021-01-01 at 15:30.
Rg
System information
------------------------
Main: RPI4B/PiCorePlayer/LMS> RPI4B/piCoreplayer/Squeezelite > USB>RME ADI-2 DAC > Benchmark AHB2 > Revel Performa F208 speakers, 2X REL R-305 subs.
Home Theatre: RPI4 B/HifiBerry Dac+ Pro>Pioneer VSX 919 > Energy Take 5 Classic 5.1.
LMS 8.1.2 - 1612773843 on RPI4B with 1tb Samsung T5 SSD.
-
2021-01-01, 15:44 #8
That looks like the file is not correctly on the Pi. Maybe putty is handling things other than the Terminal.app on the Mac and strips or changes some characters (TAB in spaces).
The other possibility to get that file into the Pi is to use WinSCP. Do you know how to handle this?
The login is the same as in putty and you normally get a two pane view where you copy a file from one side to the other.
No, these are two l (lowercase L). :-)Pi4 4GB piCorePlayer with LMS and Squeezelite for USB inside an Argon One case
Pi3B+ (7" Display, Hifiberry DAC+ Pro) piCorePlayer with Squeezlite/Jivelite for Hifiberry and Bluetooth headphone inside a SmartiPi touch case
Two Airport Express
Ikea Symfonisk
-
2021-01-01, 17:55 #9
- Join Date
- Nov 2009
- Location
- Seattle, WA USA
- Posts
- 882
Rg
System information
------------------------
Main: RPI4B/PiCorePlayer/LMS> RPI4B/piCoreplayer/Squeezelite > USB>RME ADI-2 DAC > Benchmark AHB2 > Revel Performa F208 speakers, 2X REL R-305 subs.
Home Theatre: RPI4 B/HifiBerry Dac+ Pro>Pioneer VSX 919 > Energy Take 5 Classic 5.1.
LMS 8.1.2 - 1612773843 on RPI4B with 1tb Samsung T5 SSD.
-
2021-01-01, 18:55 #10
- Join Date
- Nov 2009
- Location
- Seattle, WA USA
- Posts
- 882
O.K. I tried again. All of the commands you suggested:
1.) tc@piCoreLMS:~$ sudo modprobe i2c-dev YES, NOTHING SEEN.
2.) tc@piCoreLMS:~$ sudo python3 /home/tc/argononed.py NOTHING SEEN
4.) tc@piCoreLMS:~$ sudo vcgencmd measure_temp THIS SEEMS FINE.
temp=35.5'C
5.) I typed in "cat argonone.py" and see the contents of the file.
6. tc@piCoreLMS:~$ ll and now see the following:
total 12
-rw-r--r-- 1 tc staff 2288 Jan 1 17:23 argononed.py
-rwxr-xr-x 1 tc staff 2135 Dec 23 08:15 pcp-powerbutton.sh
-rwxr-xr-x 1 tc staff 713 Dec 23 08:15 powerscript.sh
Do you think everything is o.k., now???
I found that I could change and save the fan configuration values using the WinSCP editor. I double clicked on the argononed.py file, opened it, changed the fan and temp values, and saved. Is that an acceptable way to experiment with different the different temperature triggers and fan speeds??Last edited by rgro; 2021-01-01 at 22:26.
Rg
System information
------------------------
Main: RPI4B/PiCorePlayer/LMS> RPI4B/piCoreplayer/Squeezelite > USB>RME ADI-2 DAC > Benchmark AHB2 > Revel Performa F208 speakers, 2X REL R-305 subs.
Home Theatre: RPI4 B/HifiBerry Dac+ Pro>Pioneer VSX 919 > Energy Take 5 Classic 5.1.
LMS 8.1.2 - 1612773843 on RPI4B with 1tb Samsung T5 SSD.