Home of the Squeezebox™ & Transporter® network music players.
Page 1 of 9 123 ... LastLast
Results 1 to 10 of 88
  1. #1
    Senior Member carsten_h's Avatar
    Join Date
    Apr 2019
    Location
    Wunstorf, Germany
    Posts
    588

    [How To] Using the Argon One case for the Pi 4B together with piCorePlayer (7.x)

    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:
    Code:
    ssh tc@<IP or name of the Pi>
    (without the "<" and ">"!)
    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:
    Code:
    vi argononed.py
    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".

    Then you change back to this browser window and select the text of the following python file:
    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()
    Then you press "Command-C" (on the PC it would be "Control-C") and change back to the Terminal.app window.
    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:
    Code:
    vi argononed.conf
    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".

    Then you change back to this browser window and select the text of the following configuration file:
    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
    Then you press "Command-C" (on the PC it would be "Control-C") and change back to the Terminal.app window.
    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:
    Code:
    http://<IP or name of your Pi>
    (without the "<" and ">"!)

    On the piCorePlayer page chose "Main":
    Name:  Schritt 0.png
Views: 674
Size:  12.3 KB

    At the bottom of the page chose "Beta":
    Name:  Beta.png
Views: 673
Size:  9.6 KB

    Then chose "Extensions":
    Name:  Schritt 1.png
Views: 675
Size:  37.1 KB

    On the following page wait until all the five green checkmarks appear and then chose "Available":
    Name:  Schritt 2.png
Views: 673
Size:  53.0 KB

    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:
    Name:  Schritt 3.png
Views: 678
Size:  12.3 KB

    Read further in the next message.
    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

  2. #2
    Senior Member carsten_h's Avatar
    Join Date
    Apr 2019
    Location
    Wunstorf, Germany
    Posts
    588
    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
    And now press "Save" (at this place the argononed.py script and the argononed.conf file are also saved to the bootdevice):
    Name:  Schritt 4.png
Views: 355
Size:  37.3 KB

    Now "Reboot" via the Main page and now everything should be working:
    Name:  Schritt 5.png
Views: 355
Size:  49.4 KB

    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!
    Name:  Schritt 6.png
Views: 350
Size:  35.8 KB

    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")
    into:
    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

  3. #3
    Babelfish's Best Boy mherger's Avatar
    Join Date
    Apr 2005
    Location
    Switzerland
    Posts
    20,545

    [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

  4. #4
    Senior Member carsten_h's Avatar
    Join Date
    Apr 2019
    Location
    Wunstorf, Germany
    Posts
    588
    Quote Originally Posted by mherger View Post
    You should try to get this on docs.picoreplayer.org.
    Oh, yes thatĹs a good idea! Thank you!
    I will try,
    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

  5. #5
    Senior Member
    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.

  6. #6
    Senior Member carsten_h's Avatar
    Join Date
    Apr 2019
    Location
    Wunstorf, Germany
    Posts
    588
    Quote Originally Posted by rgro View Post
    is there any way to verify via SSH that everything installed correctly?
    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

  7. #7
    Senior Member
    Join Date
    Nov 2009
    Location
    Seattle, WA USA
    Posts
    882
    Quote Originally Posted by carsten_h View Post
    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.
    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??

    Cheers
    Last 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.

  8. #8
    Senior Member carsten_h's Avatar
    Join Date
    Apr 2019
    Location
    Wunstorf, Germany
    Posts
    588
    Quote Originally Posted by rgro View Post
    2.) tc@piCoreLMS:~$ sudo python3 /home/tc/argononed.py
    File "/home/tc/argononed.py", line 102
    while True:
    ^
    IndentationError: unexpected indent
    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.

    Quote Originally Posted by rgro View Post
    I tried to type in "||" (two vertical bars), but it didn't accept this command. Maybe it's not supposed to be vertical bars???
    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

  9. #9
    Senior Member
    Join Date
    Nov 2009
    Location
    Seattle, WA USA
    Posts
    882
    Quote Originally Posted by carsten_h View Post
    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). :-)
    Heheh...I thought I might've got that wrong.

    O.K...I got WinSCP installed and saw that there were two different python files installed, so I deleted both and will try to get that file installed from Argon. Will let you know...
    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.

  10. #10
    Senior Member
    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.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •