Open main menu

Changes

X729-script

10,673 bytes added, 13 September
{{GD Template Impl}}

==Overview==
<span class="tb_red">[NOTE]: X729 supports Raspberry Pi 5 hardware also</span>

This is script installation tutorial for [[X729]] shield, it will replace [[X729-Software | X729 Software installation tutorial]], and simplifies the installation process and reduces dependencies on third-party python libraries.

<!--
The core shell script of [[X729-script]] comes from from [https://github.com/pimlie/geekworm-x-c1 pimlie/geekworm-x-c1], pimlie implements the pwm fan shell script, which does not depend on third-party python libraries at all. Thanks to pimlie.
-->
Now we think you have successfully flashed the OS Image into Micro SD and and power on the device, and you have also completed the operations such as creating new user required in some OS. You need to perform the following operations in <code>Terminal</code>.

'''[Update]:'''

1. Use '''gpiod''' instead of obsolete interface

2. The script now supports the Raspberry Pi OS '''BOOKWORM''' version. You just need to '''uninstall''' the original script and '''reinstall''' it. Please refer to the following:

OPen ternimal window, then run the following command:
<pre>
mv x729-script x729-script-old
git clone https://github.com/geekworm-com/x729-script
cd x729-script
chmod +x *.sh
./uninstall.sh
</pre>
Then just follow the installation process below.

3. If you are using it on a '''Raspberry Pi 5''' hardware, make sure to update the 6.6.22 or more high kernel version ('''uname -a''' to check kernel version)
sudo apt update
sudo apt full-upgrade
sudo rpi-update

==OS that has been tested==
* Raspbian
* DietPi
* Manjaro
* Ubuntu
* myNode
* Umbrel
* Volumio
* RetroPie
* Twister
==Install==
Please follow the steps below:
===Enable I2C===
Reter to [[How to enable I2C]]

NOTE: sample/bat.py will run with error if you don't enable I2C.

'''Check & review I2C address:'''
<PRE>
pi@raspberrypi:~ $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- 36 -- -- -- -- -- 3c -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
</PRE>
Explaination:
<PRE>
#36 - the address of the battery fuel gauging chip
#3c - address of oled display,This value only exists when the oled is inserted,check if the OLED is inserted in the correct direction if you don't found the above i2c port
#40 - TI INA219 12-bit current/voltage/power monitor
#68 - the address of the RTC chip
</PRE>

===Preconfigured <code>config.txt</code>===
To install pwm fan, first add <code>dtoverlay=pwm-2chan,pin2=13,func2=4</code> to <code>/boot/firmware/config.txt</code> under [all] or the end of file and <code>reboot</code>:
sudo nano /boot/firmware/config.txt
Save & exit.
sudo reboot

===Install gpiod package===
sudo apt install -y gpiod

===Clone the script===
<pre>
git clone https://github.com/geekworm-com/x729-script

cd x729-script
chmod +x *.sh
</pre>
'''PS''': For some OS such as ''Raspberry Pi OS Lite'', the '''''git''''' tool is not installed by default, if you get an error like ''error: -bash: git: command not found'', please run the following command to install the git tool.
sudo apt install -y git

===Configuring Different gpipchip number and pwmchip number for <span class=""tb_red">Raspberry Pi 5 hardware</span>===
If you are '''NOT''' using Raspberry 5 hardware, skip this step,or run the following command to set differnt chip and pwm number.

PS: Since 2024-09-02, Raspberry Pi has finally unified the gpipchip to 0 on all Raspberry Pis(Pi, 0, 1, 2, 3, 4, 5). Previously, the gpiochip on the Raspberry Pi 5 was 4.

So we comment out the following command line.
#sed -i 's/xPWR.sh 0 5 12/xPWR.sh 4 5 12/g' x729-pwr.service

PS: But on the Raspberry Pi 5 the pwmchip is still 2, not 0 as used on the Pi 0/1/2/3/4, so you still run the following command if you work on RPi 5 hardware.
sed -i 's/pwmchip0/pwmchip2/g' x729-fan.sh
<!--Note that you need to provide a different gpiochip number on Pi 0,1,2,3,4 (0) and Pi 5 (4).-->

===Create the x729-fan service===
x729-fan service is for pwm fan, the pwm fan will automatically adjust the runing speed according to the temperature of the cpu after the service is started.
<pre>
sudo cp -f ./x729-fan.sh /usr/local/bin/
sudo cp -f ./x729-fan.service /lib/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable x729-fan
sudo systemctl start x729-fan
</pre>
Then the pwm fan starts running.

===Create the x729-pwr service===
x729-pwr service will be responsible for power management and hardware safe shutdown.
<pre>
sudo cp -f ./xPWR.sh /usr/local/bin/
sudo cp -f x729-pwr.service /lib/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable x729-pwr
sudo systemctl start x729-pwr
</pre>
Now, if you press and hold the onboard switch for 3 seconds, then the blue LED will flash slowly and the shutdown is going then all LEDs will be off until the device is completely powered off.

===Prepair software shutdown script===
sudo cp -f ./xSoft.sh /usr/local/bin/
Then create a '''x729off''' alias command to execture safe shutdown command.
echo "alias x729off='sudo /usr/local/bin/xSoft.sh '''0''' 26'" >> ~/.bashrc
Run the following command to make the alias '''x729off''' effective
source ~/.bashrc
Then you can run <code>x729off</code> to execute software shutdown as follows
x729off

<span class="tb_red">DON'T run the 'shutdown' linux command to shut down, otherwise the power of x729 shield will not be shut down.</span>

===Uninstall===
./uninstall.sh

===Test safe shutdown===
'''Software safe shutdown command''':
x729off
<span class="tb_red">DON'T run the 'shutdown' linux command to shut down, otherwise the power of x729 shield will not be shut down.</span>

'''Hardware safe shutdown operation''':

You can verify the safety switch through the onboard switch, press and hold the switch for <code>3</code> seconds, then the blue LED will flash slowly and the shutdown is going then all LEDs will be off until the device is completely powered off.
* press on-board button switch <code>1-2</code> seconds to reboot
* press button switch <code>3</code> seconds to safe shutdown,
* press <code>7-8</code> seconds to force shutdown.

===Sample Files===
The example programs are only suitable for advanced players, and you can construct your own usage scenarios according to the example programs.

'''[PS]'''

The old example code uses the RPi.GPIO library, which is currently not supported in kernel 6.6.x, so you may encounter an error when running the following code
sudo python3 sample/plsd.py

Note that you need to provide a different gpiochip number on Pi 0,1,2,3,4 ('''0''') and Pi 5 ('''4''').

For other example programs that use the RPi.GPIO library, it is recommended that you change to the '''libgpiod''' version if it runs incorrectly, and we also provide ONLY ONE example using the libgpiod library ('''plsd-gpiod.py'''), which you can run as follows:

sudo python3 sample/plsd-gpiod.py

For other example programs that use the RPi.GPIO library, it is recommended that you change to the libgpiod version if it runs incorrectly.


Each example program demonstrates a different function:

'''read_fan_speed.py''': Read the pwm fan running speed;
cd ~x729-script
sudo python3 sample/read_fan_speed.py

'''pld.py''': AC Power supply loss dection script;
cd ~x729-script
sudo python3 sample/pld.py

'''plsd.py''': Auto shutdown when AC power loss or power adapter failure script;(Added auto shuntdown function base pld.py)
cd ~x729-script
sudo python3 sample/plsd.py

'''buzzer.py''': demonstrates how the buzzer will sound when power supply is lost, which is very important in some usage scenarios.
cd ~x729-script
sudo python3 sample/buzzer.py

'''PS:'''

1. The above sample python file maybe depends on the third-party python library `Rpi.GPIO`. In the official Raspberry Pi OS and most third-party OS, this library is installed by default. If you run this file and get some errors, try to run the following command to install the Rpi.GPIOy library.
sudo apt-get install -y python3-smbus python3-rpi.gpio

Or you can refer to [[How to Install RPi.GPIO Python Library]]

2. The sample program is only to demonstrate how to use the advanced functions of the shield, we do not provide the development function of the sample program.

===Enable OLED display===
Refer to [[How to enable OLED display]]
===Set and Read the RTC time===
Refer to [[How to enable RTC]]

===Other===
<code>pwm_fan_control.py</code> is no longer used, and are reserved here for research and use by python lovers only.
==Support==
Email: support@geekworm.com

==FAQ==
<html>
<details>
<summary>Q: How to login <b>volumio</b> via SSH?</summary>
<p>1. Enable SSH:</p>
<p>Visit http://volumio.local/dev/, then click <b>ENABLE SSH</b> button</p>
<p>2. URL connection is IP address, and the default user name is <b>volumio</b>, default password is <b>volumio</b></p>
</details>

<details>
<summary>Q: How to login to <b>Umbrel</b> via SSH?</summary>
A: ssh umbrel@umbrel.local (or ssh umbrel@<IP address of your Umbrel>). the default user name is <b>umbrel</b>, default password is <b>moneyprintergobrrr</b>
</details>

<details>
<summary>Q: How to login to <b>myNode</b> via SSH?</summary>

A: URL connection is IP address, and the default user name is <b>admin</b>, default password is <b>bolt</b>
</details>

<details>
<summary>Q: How to login to <b>DietPi</b> via SSH?</summary>

A: URL connection is IP address, and the default user name is <b>root</b>, default password is <b>dietpi</b>
</details>

<details>
<summary>Q: Is <b>LibreELEC</b> supported?</summary>

A: TODO
</details>

</html>

==Other resource==
* Chip-Specifications:[[File:MAX17040-MAX17041.pdf]]
* [https://www.sparkfun.com/datasheets/Components/DS1307.pdf I2C address: 0x36 for battery fuel gauging, 0x68 for RTC]
* https://www.instructables.com/Raspberry-Pi-Tutorial-How-to-Use-a-Buzzer/ Raspberry Pi Tutorial: How to Use a Buzzer]
* [https://gist.github.com/Gadgetoid/b92ad3db06ff8c264eef2abf0e09d569 Hardware PWM on the Raspberry Pi 5 b]

Return to [[X729]] or [[X729-hardware]]

<!--Add review function! -->
<comments />

<!--Please choose the -->
<!--Remove other categories, just keep the appropriate categories -->

[[Category:Product Manual]]
[[Category:Raspberry pi]]
[[Category:Knowledge]]